微机原理与接口技术课程设计报告车灯控制系统.doc

上传人:laozhun 文档编号:2960234 上传时间:2023-03-05 格式:DOC 页数:23 大小:465.50KB
返回 下载 相关 举报
微机原理与接口技术课程设计报告车灯控制系统.doc_第1页
第1页 / 共23页
微机原理与接口技术课程设计报告车灯控制系统.doc_第2页
第2页 / 共23页
微机原理与接口技术课程设计报告车灯控制系统.doc_第3页
第3页 / 共23页
微机原理与接口技术课程设计报告车灯控制系统.doc_第4页
第4页 / 共23页
微机原理与接口技术课程设计报告车灯控制系统.doc_第5页
第5页 / 共23页
点击查看更多>>
资源描述

《微机原理与接口技术课程设计报告车灯控制系统.doc》由会员分享,可在线阅读,更多相关《微机原理与接口技术课程设计报告车灯控制系统.doc(23页珍藏版)》请在三一办公上搜索。

1、信息科学与技术学院微机原理与接口技术课程设计报告 题目名称: 车灯控制系统 学生姓名: 郭丽 学 号: 2009082210 专业年级: 计科09级 指导教师: 裘祖旗 时 间: 2012年1月 目录1.课程设计题目及要求-31.1课程设计的目的-31.2课程设计的题目-31.3课程设计的要求-32.功能设计-32.1功能设计-32.2系统流程图-43.详细设计-5 3.1设计方法-53.2各功能模块及流程图-54.运行结果-94.1开始界面-94.2按W键小车前进-94.3按A键小车左拐-94.4按D键小车右拐-94.5按S键小车后退-94.6按B键小车停止-95.课程总结-126.参考文献

2、-137.附录-131.课程设计的目的、题目及要求1.1课程设计的目的进行程序设计方法和技能的基本训练,巩固在课堂上学到的有关程序设计和芯片的基本知识和基本方法,通过实际动手能力的培养,进一步熟悉汇编语言的结构和使用方法,进一步的了解常用芯片的用法,达到能独立阅读、编制和调试一定规模的汇编语言程序的水平。1.2课程设计的题目汽车车灯控制系统1.3课程设计的要求(1)实现停止时的指示灯;(2)实现汽车转向时指示(3)实现倒车指示扩展功能:实现倒车的声音提示2.功能设计2.1功能设计本程序将实现用键盘的ASDWB键控制小车的转向,前进,停止及后退。当小车左拐是实现小车左边的前后灯亮,当小车右拐是实

3、现小车的右边的前后灯亮,当小车前进的时候不需要指示灯,当小车后退的时候后边的两个灯同时亮,同时伴随着音乐提示。其功能模块图如下所示:汽车车灯控制系统实现停止时指示灯提示实现后退时音乐提示实现后退时指示灯提示实现右拐指示灯提示实现左拐指示灯提示2.2系统流程图开始N检测键盘是否有控制键按下YY是否为向上键W向上处理N是否为向下键SY向下处理N是否为向左键AY向左处理N是否为向右键DY向右处理N是否为空格键Y结束退出NYN是否为停止键B停止处理3.详细设计3.1设计方法 该课程设计通过测试是否有键盘输入及测试输入的字符来执行相应的功能。在数据段中存放着绘制小车形状所需要的各个字符的相对位置及其颜色

4、属性的数据段CARS,以及要实现小车倒车提示音乐时所需要的音乐数据段MUS_FREG和MUS_TIME 。 在程序中通过跳转到相应的程序段和调用相应的子程序来完成相应的功能。 子程序DIRECTION检测是否有键盘输入以及判断是何种输入子程序CAR绘制小车的形状及擦出小车子程序MUSIC实现一段音乐播放3.2各功能模块及流程图(1) 向上处理向上处理清除原来的小车调用CLEAR 子程序行值减1,DEC ROW重新画小车 CALL DRAW画小车检测键盘输入(2) 向下处理向下处理清除原来的小车调用CLEAR 子程序行值加1,DEC ROW重新画小车 CALL DRAW_DD先定位光标将小车的两

5、个后灯画为红色并输出一段音乐检测键盘输入(3) 左拐处理左拐处理清除原来的小车调用CLEAR 子程序行值减1,DEC ROW列减1DEC COLUMN重新画小车 CALL DRAW_L将小车左边的前后灯至为红色检测键盘输入(4) 右拐处理右拐处理清除原来的小车调用CLEAR 子程序行值减1,DEC ROW列加1DEC COLUMN重新画小车 CALL DRAW_L将小车右边的前后灯至为红色检测键盘输入(5) 停止处理左拐处理清除原来的小车调用CLEAR 子程序重新画小车 CALL DRAW_L将小车前后灯全部至为红色检测键盘输入4.运行结果4.1开始界面4.2按W键小车前进4.3按A键小车左拐

6、4.4按D键小车右拐4.5按S键小车后退4.6按B键小车停止5.课程总结在临近期末,正值我们带着喜悦回家的时候,我们搞了一个微机原理与接口技术的课程设计。以前还以为这个课程设计很神秘,对它充满着期待。搞完这个之后,才知道这个东西也没什么,只要你认真做你就会明白怎么做的。刚开始选题的时候,我看到这个题目很有意思,因为以前没有用汇编语言做过关于动画这方面的程序,所以就选了这个题目。说实话,刚开始下手的时候,我还真是一头雾水,不知道该怎么做,老师上课的时候也没有讲过。于是,我就到网上查了一些相关的资料,看完动画设计那块的时候,我才明白了该怎么做。动画无非分两种动画,一种是逐帧动画,另一种是实时动画,

7、当然,这里是逐帧动画。逐帧动画设计起来相对来说比较简单,就是一组图像按一定的频度连续播放,给人一种视觉上的效应,好像这个东西真的动起来了!其实,做这个题之前,我也从网上下了一些别人以前做过的关于这方面的程序,我发现他们的程序代码比较多,可读性比较差,代码冗长,于是,我决定自己做一个代码较少,可读性较好的程序。搞完这次课程设计,我更加明白数学和逻辑推理对程序设计的重要性,找到简单、合适及高效的算法可以大大节约程序运行的时间和空间,优化了程序,提高了程序运行的效率,这对于一个优秀的程序设计员来说非常重要。老师,说实话,你让我们搞课程设计其实是给了我们一个自己动手的设计机会。也许大学的意义不在于整体

8、,而在于个人,看自己怎么学,不可能像中学那样让老师天天督促我们,毕竟,我们是成年人了!6.参考文献1 IBM-PC汇编语言程序设计 沈美明 清华大学出版社 2001年8月第2版 3 微机系统和接口应用技术朱世鸿 著 清华大学出版社 2006年9月第1版 7.附录:源代码.MODEL SMALL.DATACARS DW 10DB 0,0,4FH,7,0,1,4FH,7DB 1,0,0DBH,7,0,-1,0DBH,7DB 1,-1,0DBH,7,0,1,0DBH,7DB 0,1,0DBH,7,0,1,0DBH,7DB 1,0,4FH,7,0,-3,4FH,7 ;定义小车形状ROW DB ? CO

9、LUMN DB ?MODE DB ?;MODE=1时画小车,MODE=0时清除小车 MUS_FREG dw 262,262,294,262,349,330 dw 262,262,294,262,392,349 dw 262,262,523,440,349,330,294 dw 466,466,440,262,392,349 dw -1 MUS_TIME dw 50,50,100,100,100,200 dw 50,50,100,100,100,200 dw 50,50,100,100,100,100,300 dw 50,50,100,100,100,200.CODESTART:MOV AX,D

10、ATA MOV DS,AX;初始化 MOV ROW,13 ;小车的初始行坐标 MOV COLUMN,38;小车的初始列坐标CALL DRAW;画小车CALL DIRECTION;检查是否有控制键按下? MOV AX,4C00H;退出程序 INT 21H;DIRECTION PROC NEAR;键盘检测子程序DRAW_U:MOV AH,0;接收键盘输入 INT 16H CMP AL,57H;向上? JNZ DRAW_D;没有则转移CALL CLEAR;清除小车 DEC ROW;行坐标减1CALL DRAW;画小车CMP ROW,1 ;小车在最上边吗?JNZ DRAW_D;不是则转移CALL CL

11、EAR;是则清除小车MOV ROW,24;把小车置于最下边 DRAW_D:CMP AL,53H;向下? JNZ DRAW_L;没有则转移CALL CLEAR;清除小车 INC ROW;行坐标加1CALL DRAW_DD;画小车CMP ROW,24;小车在最下边吗?JNZ DRAW_L;不是则转移CALL CLEAR;清除小车MOV ROW,1;把小车置于最上边jmp DRAW_L A1:jmp DRAW_U DRAW_L:CMP AL,41H;向左? JNZ DRAW_R;没有则转移CALL CLEAR;清除小车 DEC ROW;行坐标减1 DEC COLUMN;列坐标减1CALL DRAW_

12、LL;画小车CMP COLUMN,0;小车在最左边吗?JNZ DRAW_R;不是则转移CALL CLEAR;清除小车MOV COLUMN,76;把小车置于最右边MOV ROW,24 DRAW_R:CMP AL,44H ;向右? JNZ DRAW_STOP;没有则转移CALL CLEAR;清除小车 INC COLUMN ;列坐标加1 DEC ROW;行坐标减1CALL DRAW_RR;画小车CMP COLUMN,76;小车在最右边吗?JNZ DRAW_STOP;不是则转移CALL CLEAR;清除小车MOV COLUMN,0;把小车置于最左边MOV ROW,24DRAW_STOP:CMP AL,

13、42H JNZ EXIT CALL CLEAR CALL DRAW_SS EXIT:CMP AL,20H;空格?JNZ A1;没有则返回RET;退出DIRECTION ENDP DRAW: ;画小车MOV MODE,1CALL CARRETCLEAR:;清除小车MOV MODE,0CALL CARRETCAR PROC NEAR;小车图形子程序 MOV DH,ROW MOV DL,COLUMN MOV CX,10 LEA DI,CARS+2ONE: ADD DH,DI+0;置光标列ADD DL,DI+1;置光标行MOV AH,2INT 10HMOV AL,DI+2;显示字符的ASCII码MOV

14、 BL,DI+3;显示字符的属性CMP MODE,0;MODE=1时画小车,MODE=0时清除小车JNE SKIPMOV BL,0SKIP:PUSH CXMOV CX,1MOV AH,09HINT 10HPOP CXADD DI,4LOOP ONERETCAR ENDP;左拐的处理DRAW_LL: ;画小车MOV MODE,1CALL CAR_LRETCAR_L PROC NEAR;小车图形子程序 MOV DH,ROW MOV DL,COLUMN MOV CX,10 LEA DI,CARS+2ONE_L: ADD DH,DI+0;置光标行ADD DL,DI+1;置光标列MOV AH,2INT

15、10HMOV AL,DI+2;显示字符的ASCII码MOV BL,DI+3;显示字符的属性SKIP_L:PUSH CXMOV CX,1MOV AH,09HINT 10HPOP CXADD DI,4LOOP ONE_L MOV DH,ROW;左前灯亮 MOV DL,COLUMNLEA DI,CARS+2ADD DH,DI+0;置光标行ADD DL,DI+1;置光标列MOV AH,02HINT 10HMOV AL,DI+2;显示字符的ASCII码 MOV BL,4;显示字符的属性MOV CX,1MOV AH,09HINT 10HPOP CX ADD DH,3;左后灯亮 ADD DL,-1MOV A

16、H,02HINT 10HMOV AL,DI+2;显示字符的ASCII码MOV BL,4;显示字符的属性PUSH CXMOV CX,1MOV AH,09HINT 10HPOP CX RETCAR_L ENDP;右拐的处理DRAW_RR: ;画小车MOV MODE,1CALL CAR_RRETCAR_R PROC NEAR;小车图形子程序 MOV DH,ROW MOV DL,COLUMN MOV CX,10 LEA DI,CARS+2ONE_R: ADD DH,DI+0;置光标行ADD DL,DI+1;置光标列MOV AH,2INT 10HMOV AL,DI+2;显示字符的ASCII码MOV BL

17、,DI+3;显示字符的属性SKIP_R:PUSH CXMOV CX,1MOV AH,09HINT 10HPOP CXADD DI,4LOOP ONE_R ;右前灯亮 MOV DH,ROW MOV DL,COLUMNLEA DI,CARS+6ADD DH,DI+0;置光标行ADD DL,DI+1;置光标列MOV AH,02HINT 10HMOV AL,DI+2;显示字符的ASCII码 MOV BL,4;显示字符的属性MOV CX,1MOV AH,09HINT 10HPOP CXADD DH,3;左后灯亮 ADD DL,+1MOV AH,02HINT 10HMOV AL,DI+2;显示字符的ASC

18、II码MOV BL,4;显示字符的属性PUSH CXMOV CX,1MOV AH,09HINT 10HPOP CXRETCAR_R ENDP;后退的处理DRAW_DD: ;画小车MOV MODE,1CALL CAR_DRETCAR_D PROC NEAR;小车图形子程序 MOV DH,ROW MOV DL,COLUMN MOV CX,10 LEA DI,CARS+2ONE_D: ADD DH,DI+0;置光标行ADD DL,DI+1;置光标列MOV AH,2INT 10HMOV AL,DI+2;显示字符的ASCII码MOV BL,DI+3;显示字符的属性SKIP_D:PUSH CXMOV CX

19、,1MOV AH,09HINT 10HPOP CXADD DI,4LOOP ONE_DMOV DH,ROW MOV DL,COLUMN ADD DH,3;左后灯亮 ADD DL,-1MOV AH,02HINT 10HMOV AL,4FH;显示字符的ASCII码MOV BL,4;显示字符的属性PUSH CXMOV CX,1MOV AH,09HINT 10HPOP CX ;右后灯亮 ADD DL,+3MOV AH,02HINT 10HMOV AL,4FH;显示字符的ASCII码MOV BL,4;显示字符的属性PUSH CXMOV CX,1MOV AH,09HINT 10HPOP CXcall mu

20、sic RETCAR_D ENDPDRAW_SS: ;画小车MOV MODE,1CALL CAR_STOPRETCAR_STOP PROC NEAR;小车图形子程序 MOV DH,ROW MOV DL,COLUMN MOV CX,10 LEA DI,CARS+2ONE_STOP: ADD DH,DI+0;置光标行ADD DL,DI+1;置光标列MOV AH,2INT 10HMOV AL,DI+2;显示字符的ASCII码MOV BL,DI+3;显示字符的属性SKIP_STOP:PUSH CXMOV CX,1MOV AH,09HINT 10HPOP CXADD DI,4LOOP ONE_STOP

21、;右前灯亮 MOV DH,ROW MOV DL,COLUMNLEA DI,CARS+6ADD DH,DI+0;置光标行ADD DL,DI+1;置光标列MOV AH,02HINT 10HMOV AL,DI+2;显示字符的ASCII码 MOV BL,4;显示字符的属性MOV CX,1MOV AH,09HINT 10HPOP CX;左前灯亮ADD DL,-1MOV AH,02HINT 10HMOV AL,4FH;显示字符的ASCII码MOV BL,4;显示字符的属性PUSH CXMOV CX,1MOV AH,09HINT 10HPOP CXMOV DH,ROW MOV DL,COLUMN ADD D

22、H,3;左后灯亮 ADD DL,-1MOV AH,02HINT 10HMOV AL,4FH;显示字符的ASCII码MOV BL,4;显示字符的属性PUSH CXMOV CX,1MOV AH,09HINT 10HPOP CX ;右后灯亮 ADD DL,+3MOV AH,02HINT 10HMOV AL,4FH;显示字符的ASCII码MOV BL,4;显示字符的属性PUSH CXMOV CX,1MOV AH,09HINT 10HPOP CX RETCAR_STOP ENDPmusic proc near ONE_m: LEA SI,MUS_FREG LEA BP,DS:MUS_TIMEfreq:

23、mov di,si cmp di,-1 je ENDMUS mov bx,ds:bp call soundf add si,2 add bp,2 jmp freq ENDMUS: RET music endp;*soundf proc near push ax push bx push cx push dx push di mov al,0b6h out 43h,al mov dx,12h mov ax,348ch div di out 42h,al mov al,ah out 42h,al in al,61h mov ah,al or al,3 out 61h,alwait1: mov cx

24、,663 call waitfdelay: loop delay dec bx jnz wait1 mov al,ah out 61h,al pop di pop dx pop cx pop bx pop ax retsoundf endpq0 proc near mov ah,2 sub bh,bh mov dh,0 mov dl,0 int 10h retq0 endpwaitf proc near push axwaitf1: in al,61h and al, 10h cmp al, ah je waitf1 mov ah,al loop waitf1 pop ax retwaitf endp;*END START

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 教育教学 > 成人教育


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号