当前位置:文档之家› 汽车车灯控制系统DOC

汽车车灯控制系统DOC

信息科学与技术学院微机原理与接口技术课程设计报告题目名称:汽车车灯控制系统目录1.题目及要求 (1)1.1 题目 (1)1.2 要求 (1)2.功能设计 (1)2.1 汽车图形 (1)2.2 汽车左转 (1)2.3 汽车右转 (1)2.4 汽车前进 (1)2.5 汽车倒退 (1)2.6 汽车停止 (1)2.7 响铃模块 (1)3.主流程图 (2)4.详细设计 (3)4.1 汽车图形显示 (3)3.2 汽车停止、转向、倒车的指示 (3)5.结果显示 (4)5.总结 (7)6、程序代码 (8)1.题目及要求1.1 题目汽车车灯控制系统1.2 要求1)实现停止时的指示灯;2)实现汽车转向时指示3)实现倒车指示4)扩展功能:实现倒车的声音提示2.功能设计2.1 汽车图形功能:用汇编语言在dos下实现一个汽车的图形,和四盏灯。

2.2 汽车左转功能:按’A’键,实现汽车的左转,左前、左后指示灯亮,右前、右后指示灯灭。

2.3 汽车右转功能:按’D’键,实现汽车的右转,左前、左后指示灯灭,右前、右后指示灯亮。

2.4 汽车前进功能:按’W’键,实现汽车的向前行驶,并且四盏指示灯全灭。

2.5 汽车倒退功能:按’S’键,实现汽车的倒退行驶,并且后面2盏指示灯全亮,前面2盏指示灯全灭。

2.6 汽车停止功能:按’B’键,实现汽车的停止,并且四盏指示灯全亮和倒车提示音。

2.7 响铃模块功能:汽车停止时,提供倒车提示音。

3.主流程图4.详细设计4.1 汽车图形显示字符图形既可以在显示器上以简单的黑白图形字符显示,也可以在彩色显示器上以彩色的图形字符显示。

通过调用INT 10H的AH=0,AL=0~7可设置不同的显示方式,调用INT 10H的AH=09H,AH=0AH等可显示字符。

在屏幕上显示出汽车的效果,可分5步进行:1)在屏幕上显示图形(单字符或多字符图形)2)延迟一个时间周期,这样图形更清晰3)清除图形4)改变图形的行列坐标5)返回第一步,重复上述过程。

“汽车”各字符的相对位移量:4.2 汽车停止、转向、倒车的指示首先是检测键盘的输入,根据输入的字符(A,D,W,S,B)来调用相应的函数,执行相应的操作实现:在屏幕上显示小车,延迟一个时间周期这样图形更清晰,清除图形,改变汽车图形的行列坐标,返回第一步,重复上述过程。

5.结果显示1、开始2、左转3.右转4、前进5、后退和响铃6、停止5.总结两周的课程设计结束了,在这次的课程设计中不仅检验了我所学习的知识,也培养了我如何去把握一件事情,如何去做一件事情,又如何完成一件事情。

在设计过程中,和同学们相互探讨,相互学习,相互监督。

学会了合作,学会了运筹帷幄,学会了宽容,学会了理解,也学会了做人与处世。

课程设计是我们专业课程知识综合应用的实践训练,着是我们迈向社会,从事职业工作前一个必不少的过程.”千里之行始于足下”,通过这次课程设计,我深深体会到这句千古名言的真正含义.我今天认真的进行课程设计,学会脚踏实地迈开这一步,就是为明天能稳健地在社会大潮中奔跑打下坚实的基础.课程设计是培养学生综合运用所学知识,发现,提出,分析和解决实际问题,锻炼实践能力的重要环节,是对学生实际工作能力的具体训练和考察过程.随着科学技术发展的日新日异,当今计算机应用在是生活中可以说得是无处不在。

因此作为二十一世纪的大学来说掌握计算机开发技术十分重要的。

我的题目是汽车车灯控制系统,对于我们这些新手来说,这是很大的考验,我一千次一万次的问自己,怎么才能找到课堂所学与实际应用的最佳结合点?怎么才能让自己的程序在篇幅上简单,在使用价值上丰富?怎样让自己的业余更靠近专业?怎样让自己的计划更具有序性,而不会忙无一用?机会是老师,学校,以及无数代教育工作者给的,而能力是自己的,耐性是需要的。

经过自己的琢磨,听取了师姐,师兄们的建议,还查阅了很多书籍,才做到了心中有数,才了解了接口课程设计的真正用意——培养自学能力,养成程序编辑的好习惯。

我从来不相信车到山前必有路的说法,认为那只是懒惰者自寻懒惰的借口,我要积极,要把握,要努力。

回顾起此次课程设计,至今我仍感慨颇多,的确,从从拿到题目到完成整个编程,从理论到实践,在整整半个月的日子里,可以学到很多很多的的东西,同时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的知识。

通过这次课程设计使我懂得了理论与实际相结合是很重要的,只有理论知识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论,才能真正为社会服务,从而提高自己的实际动手能力和独立思考的能力。

在设计的过程中遇到问题,可以说得是困难重重,这毕竟第一次做的,难免会遇到过各种各样的问题,同时在设计的过程中发现了自己的不足之处,对以前所学过的知识理解得不够深刻,掌握得不够牢固,比如说结构体……通过这次课程设计之后,一定把以前所学过的知识重新温故。

在课程设计过程中,我学到了很多人生的哲理,懂得怎么样去制定计划,怎么样去实现这个计划,并掌握了在执行过程中怎么样去克服心理上的不良情绪,黑夜过去了,我们收获的是黎明。

谢谢老师的指导。

6、程序代码.MODEL SMALL.DATAmessage db 'Switch A is for zuozhuan,switch D is for youzhuan,switch W is for qianjin,switch S is for houtui,switch B is for shache!'db 0ah,0dhdb 'If you want to quit, please hit ''kongge''!',0ah,0dh,'$'CARS DW 15DB 0,0,4FH,7,0,1,4FH,7DB 1,0,0BBH,6,0,-1,0BBH,6DB 1,-1,0BBH,6,0,1,0BBH,6DB 0,1,0BBH,6,0,1,0BBH,6DB 1,0,4FH,7,0,-3,4FH,7;定义汽车形状ROW DB ?COLUMN DB ?MODE DB ? ;MODE=1时画小车,MODE=0时清除小车MUS_FREG dw 262,262,294,262,349,330dw 262,262,294,262,392,349dw 262,262,523,440,349,330,294dw 466,466,440,262,392,349dw -1MUS_TIME dw 10,20,20,20,20,100dw 10,20,20,20,20,100dw 10,20,20,20,20,20,200dw 10,20,20,20,20,100.CODESTART: MOV AX,@DATAMOV DS,AX ;初始化MOV ROW,13 ;小车的初始行坐标MOV COLUMN,38 ;小车的初始列坐标mov ah,09h ;显示系统提示信息mov dx,seg messagemov ds,dxmov dx,offset messageint 21hCALL DRAW ;画小车CALL DIRECTION ;检查是否有控制键按下?MOV AX,4C00H ;退出程序INT 21H;DIRECTION PROC NEAR ;键盘检测子程序DRAW_U:MOV AH,0 ;接收键盘输入INT 16HCMP AL,57H ;向上?JNZ DRAW_D ;没有则转移CALL CLEAR ;清除小车DEC ROW ;行坐标减1CALL DRAW ;画小车CMP ROW,1 ;小车在最上边吗?JNZ DRAW_D ;不是则转移CALL CLEAR ;是则清除小车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_LA1:jmp DRAW_UDRAW_L:CMP AL,41H ;向左?JNZ DRAW_R ;没有则转移CALL CLEAR ;清除小车DEC ROW ;行坐标减1DEC COLUMN ;列坐标减1CALL DRAW_LL ;画小车CMP COLUMN,0 ;小车在最左边吗?JNZ DRAW_R ;不是则转移CALL CLEAR ;清除小车MOV COLUMN,76 ;把小车置于最右边MOV ROW,24DRAW_R:CMP AL,44H ;向右?JNZ DRAW_STOP ;没有则转移CALL CLEAR ;清除小车INC COLUMN ;列坐标加1DEC ROW ;行坐标减1CALL DRAW_RR ;画小车CMP COLUMN,76 ;小车在最右边吗?JNZ DRAW_STOP ;不是则转移CALL CLEAR ;清除小车MOV COLUMN,0 ;把小车置于最左边MOV ROW,24DRAW_STOP:CMP AL,42HJNZ EXITCALL CLEARCALL DRAW_SSEXIT:CMP AL,20H ;空格?JNZ A1 ;没有则返回RET ;退出DIRECTION ENDPDRAW: ;画小车MOV MODE,1CALL CARRETCLEAR: ;清除小车MOV MODE,0CALL CARRETCAR PROC NEAR ;小车图形子程序MOV DH,ROWMOV DL,COLUMNMOV CX,10LEA DI,CARS+2ONE: ADD DH,[DI+0] ;置光标列ADD DL,[DI+1] ;置光标行MOV AH,2INT 10HMOV AL,[DI+2] ;显示字符的ASCII码MOV 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 P ROC NEAR ;小车图形子程序MOV DH,ROWMOV DL,COLUMNMOV CX,10LEA DI,CARS+2ONE_L: ADD DH,[DI+0] ;置光标行ADD DL,[DI+1] ;置光标列MOV AH,2INT 10HMOV AL,[DI+2] ;显示字符的ASCII码MOV BL,[DI+3] ;显示字符的属性SKIP_L: PUSH CXMOV CX,1MOV AH,09HINT 10HPOP CXADD DI,4LOOP ONE_LMOV 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 CXADD DH,3 ;左后灯亮ADD DL,-1MOV AH,02HINT 10HMOV AL,[DI+2] ;显示字符的ASCII码MOV BL,4 ;显示字符的属性PUSH CXMOV CX,1MOV AH,09HINT 10HPOP CXRETCAR_L ENDP;右拐的处理DRAW_RR: ;画小车MOV MODE,1CALL CAR_RRETCAR_R PROC NEAR ;小车图形子程序MOV DH,ROWMOV DL,COLUMNMOV CX,10LEA DI,CARS+2ONE_R: ADD DH,[DI+0] ;置光标行ADD DL,[DI+1] ;置光标列MOV AH,2INT 10HMOV AL,[DI+2] ;显示字符的ASCII码MOV BL,[DI+3] ;显示字符的属性SKIP_R: PUSH CXMOV CX,1MOV AH,09HINT 10HPOP CXADD DI,4LOOP ONE_R;右前灯亮MOV DH,ROWMOV 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] ;显示字符的ASCII码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,ROWMOV DL,COLUMNMOV CX,10LEA 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: P USH CXMOV CX,1MOV AH,09HINT 10HPOP CXADD DI,4LOOP ONE_DMOV DH,ROWMOV DL,COLUMNADD 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 musicRETCAR_D ENDPDRAW_SS: ;画小车MOV MODE,1CALL CAR_STOPRETCAR_STOP PROC NEAR ;小车图形子程序MOV DH,ROWMOV DL,COLUMNMOV CX,10LEA 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;右前灯亮MOV DH,ROWMOV 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,ROWMOV DL,COLUMNADD 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 CXRETCAR_STOP ENDPmusic proc nearONE_m:LEA SI,MUS_FREGLEA BP,DS:MUS_TIME freq:mov di,[si]cmp di,-1je ENDMUSmov bx,ds:[bp]call soundfadd si,2add bp,2jmp freqENDMUS:RETmusic endp;*************************************************** soundf proc nearpush axpush bxpush cxpush dxpush dimov al,0b6hout 43h,almov dx,12hmov ax,348chdiv diout 42h,almov al,ahout 42h,alin al,61hmov ah,alor al,3out 61h,alwait1:mov cx,663call waitfdelay:loop delaydec bxjnz wait1mov al,ahout 61h,alpop dipop dxpop cxpop bxpop axretsoundf endpq0 proc nearmov ah,2sub bh,bhmov dh,0mov dl,0int 10hretq0 endpwaitf proc nearpush axwaitf1: in al,61hand al, 10hcmp al, ahje waitf1mov ah,alloop waitf1pop axretwaitf endp;*************************************************** END START。

相关主题