汽车车灯控制系统.pdf

上传人:白大夫 文档编号:5492733 上传时间:2020-05-23 格式:PDF 页数:20 大小:352.04KB
返回 下载 相关 举报
汽车车灯控制系统.pdf_第1页
第1页 / 共20页
汽车车灯控制系统.pdf_第2页
第2页 / 共20页
汽车车灯控制系统.pdf_第3页
第3页 / 共20页
汽车车灯控制系统.pdf_第4页
第4页 / 共20页
汽车车灯控制系统.pdf_第5页
第5页 / 共20页
点击查看更多>>
资源描述

《汽车车灯控制系统.pdf》由会员分享,可在线阅读,更多相关《汽车车灯控制系统.pdf(20页珍藏版)》请在三一文库上搜索。

1、信息科学与技术学院 微机原理与接口技术 课程设计报告 题目名称:汽车车灯控制系统 目录 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 题目 汽车车灯控制系统 1.2 要求 1)实现停止时的指示灯; 2)实现汽车转向时指示 3)实

2、现倒车指示 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、 响铃模块 功能:汽车停止时,提供倒车提示音。 2 3. 主流程图 No Yes Yes RET No Yes RET No Yes RET No Yes RET No YesRET No 非定义字符 RET Yes 开始 与 W 比较 有无按健 退出 等待 与 A 比较 与 D 比较 调用 DRAW_W 调用 DRAW_A 调用 DRAW_D 与 S 比较 调用 DRAW_S 和响铃函数 与 B 比较调用 STOP 与空格比较 3 4. 详细设计 4.1 汽车图形显示 字符图形既可以在显示器上以简单的黑白图形字符显示,也可以在彩色显 示器上以彩色的图形字符显示。通过调用INT 10H的AH=

4、0 ,AL=07 可设置不同的 显示方式,调用 INT 10H 的AH=09H ,AH=0AH 等可显示字符。 在屏幕上显示出汽车的效果,可分5步进行: 1)在屏幕上显示图形(单字符或多字符图形) 2)延迟一个时间周期,这样图形更清晰 3)清除图形 4)改变图形的行列坐标 5)返回第一步,重复上述过程。 “汽车”各字符的相对位移量: 4.2 汽车停止、转向、倒车的指示 首先是检测键盘的输入,根据输入的字符(A,D,W ,S,B)来调用相应的 函数,执行相应的操作实现:在屏幕上显示小车,延迟一个时间周期这样图形 更清晰,清除图形,改变汽车图形的行列坐标,返回第一步,重复上述过程。 4 5. 结果

5、显示 1、开始 2、左转 5 3右转 4、前进 6 5、后退和响铃 6、停止 7 5. 总结 两周的课程设计结束了,在这次的课程设计中不仅检验了我所学习的知识, 也培养了我如何去把握一件事情,如何去做一件事情, 又如何完成一件事情。 在 设计过程中,和同学们相互探讨,相互学习,相互监督。学会了合作,学会了运 筹帷幄,学会了宽容,学会了理解,也学会了做人与处世。 课程设计是我们专业课程知识综合应用的实践训练,着是我们迈向社会, 从 事职业工作前一个必不少的过程” 千里之行始于足下 ” ,通过这次课程设计,我 深深体会到这句千古名言的真正含义我今天认真的进行课程设计, 学会脚踏实 地迈开这一步,就

6、是为明天能稳健地在社会大潮中奔跑打下坚实的基础 课程设计是培养学生综合运用所学知识,发现,提出,分析和解决实际问题 ,锻 炼实践能力的重要环节 ,是对学生实际工作能力的具体训练和考察过程.随着科学 技术发展的日新日异, 当今计算机应用在是生活中可以说得是无处不在。因此作 为二十一世纪的大学来说掌握计算机开发技术十分重要的。 我的题目是汽车车灯控制系统,对于我们这些新手来说,这是很大的考验, 我一千次一万次的问自己, 怎么才能找到课堂所学与实际应用的最佳结合点?怎 么才能让自己的程序在篇幅上简单, 在使用价值上丰富?怎样让自己的业余更靠 近专业?怎样让自己的计划更具有序性,而不会忙无一用?机会是

7、老师,学校, 以及无数代教育工作者给的, 而能力是自己的, 耐性是需要的。经过自己的琢磨, 听取了师姐,师兄们的建议,还查阅了很多书籍,才做到了心中有数,才了解了 接口课程设计的真正用意培养自学能力,养成程序编辑的好习惯。 我从来不 相信车到山前必有路的说法, 认为那只是懒惰者自寻懒惰的借口,我要积极, 要 把握,要努力。 回顾起此次课程设计, 至今我仍感慨颇多, 的确,从从拿到题目到完成整个 编程,从理论到实践,在整整半个月的日子里,可以学到很多很多的的东西,同 时不仅可以巩固了以前所学过的知识,而且学到了很多在书本上所没有学到过的 知识。通过这次课程设计使我懂得了理论与实际相结合是很重要的

8、,只有理论知 识是远远不够的,只有把所学的理论知识与实践相结合起来,从理论中得出结论, 才能真正为社会服务, 从而提高自己的实际动手能力和独立思考的能力。在设计 的过程中遇到问题, 可以说得是困难重重, 这毕竟第一次做的, 难免会遇到过各 种各样的问题, 同时在设计的过程中发现了自己的不足之处,对以前所学过的知 识理解得不够深刻,掌握得不够牢固,比如说结构体通过这次课程设计之后, 一定把以前所学过的知识重新温故。 在课程设计过程中, 我学到了很多人生的哲理, 懂得怎么样去制定计划, 怎 么样去实现这个计划,并掌握了在执行过程中怎么样去克服心理上的不良情绪, 黑夜过去了,我们收获的是黎明。谢谢老

9、师的指导。 8 6、程序代码 .MODEL SMALL .DATA message 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,0dh db If you want to quit, please hit kongge!,0ah,0dh,$ CARS DW 15 DB 0,0,4FH,7,0,1,4FH,7 DB 1,0,0BBH,6,0,-1,0BBH,6 DB 1,-1,0B

10、BH,6,0,1,0BBH,6 DB 0,1,0BBH,6,0,1,0BBH,6 DB 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,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 10,20,20,20,20,100 dw 10,20,20

11、,20,20,100 dw 10,20,20,20,20,20,200 dw 10,20,20,20,20,100 .CODE START: MOV AX,DATA MOV DS,AX ;初始化 MOV ROW,13 ;小车的初始行坐标 MOV COLUMN,38 ;小车的初始列坐标 mov ah,09h ;显示系统提示信息 mov dx,seg message mov ds,dx mov dx,offset message int 21h CALL DRAW ; 画小车 CALL DIRECTION ;检查是否有控制键按下? MOV AX,4C00H ;退出程序 9 INT 21H ; DI

12、RECTION PROC NEAR ;键盘检测子程序 DRAW_U: MOV AH,0 ;接收键盘输入 INT 16H CMP AL,57H ;向上 ? JNZ DRAW_D ;没有则转移 CALL CLEAR ;清除小车 DEC ROW ;行坐标减1 CALL DRAW ; 画小车 CMP ROW,1 ;小车在最上边吗? JNZ DRAW_D ;不是则转移 CALL CLEAR ;是则清除小车 MOV ROW,24 ;把小车置于最下边 DRAW_D: CMP AL,53H ;向下? JNZ DRAW_L ;没有则转移 CALL CLEAR ;清除小车 INC ROW ;行坐标加1 CALL

13、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 ;列坐标减1 CALL DRAW_LL ;画小车 CMP COLUMN,0 ;小车在最左边吗? JNZ DRAW_R ;不是则转移 CALL CLEAR ;清除小车 MOV COLUMN,76 ;把小车

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

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

16、DE,0 ;MODE=1 时画小车, MODE=0 时清除小车 JNE SKIP MOV BL,0 SKIP: PUSH CX MOV CX,1 MOV AH,09H INT 10H POP CX ADD DI,4 LOOP ONE RET CAR ENDP ;左拐的处理 DRAW_LL: ;画小车 MOV MODE,1 CALL CAR_L RET CAR_L PROC NEAR ;小车图形子程序 MOV DH,ROW MOV DL,COLUMN MOV CX,10 LEA DI,CARS+2 ONE_L: ADD DH,DI+0 ;置光标行 ADD DL,DI+1 ;置光标列 MOV AH

17、,2 INT 10H MOV AL,DI+2 ;显示字符的ASCII 码 MOV BL,DI+3 ;显示字符的属性 SKIP_L: PUSH CX MOV CX,1 MOV AH,09H INT 10H POP CX ADD DI,4 LOOP ONE_L MOV DH,ROW ;左前灯亮 MOV DL,COLUMN LEA DI,CARS+2 ADD DH,DI+0 ;置光标行 ADD DL,DI+1 ;置光标列 12 MOV AH,02H INT 10H MOV AL,DI+2 ;显示字符的ASCII 码 MOV BL,4 ;显示字符的属性 MOV CX,1 MOV AH,09H INT

18、10H POP CX ADD DH,3 ;左后灯亮 ADD DL,-1 MOV AH,02H INT 10H MOV AL,DI+2 ;显示字符的ASCII 码 MOV BL,4 ;显示字符的属性 PUSH CX MOV CX,1 MOV AH,09H INT 10H POP CX RET CAR_L ENDP ;右拐的处理 DRAW_RR: ;画小车 MOV MODE,1 CALL CAR_R RET CAR_R PROC NEAR ;小车图形子程序 MOV DH,ROW MOV DL,COLUMN MOV CX,10 LEA DI,CARS+2 ONE_R: ADD DH,DI+0 ;置光

19、标行 ADD DL,DI+1 ;置光标列 MOV AH,2 INT 10H MOV AL,DI+2 ;显示字符的ASCII 码 MOV BL,DI+3 ;显示字符的属性 SKIP_R: PUSH CX MOV CX,1 MOV AH,09H INT 10H POP CX 13 ADD DI,4 LOOP ONE_R ;右前灯亮 MOV DH,ROW MOV DL,COLUMN LEA DI,CARS+6 ADD DH,DI+0 ;置光标行 ADD DL,DI+1 ;置光标列 MOV AH,02H INT 10H MOV AL,DI+2 ;显示字符的ASCII 码 MOV BL,4 ;显示字符的

20、属性 MOV CX,1 MOV AH,09H INT 10H POP CX ADD DH,3 ;左后灯亮 ADD DL,+1 MOV AH,02H INT 10H MOV AL,DI+2 ;显示字符的ASCII 码 MOV BL,4 ;显示字符的属性 PUSH CX MOV CX,1 MOV AH,09H INT 10H POP CX RET CAR_R ENDP ;后退的处理 DRAW_DD: ;画小车 MOV MODE,1 CALL CAR_D RET CAR_D PROC NEAR ;小车图形子程序 MOV DH,ROW MOV DL,COLUMN MOV CX,10 LEA DI,CA

21、RS+2 14 ONE_D: ADD DH,DI+0 ;置光标行 ADD DL,DI+1 ;置光标列 MOV AH,2 INT 10H MOV AL,DI+2 ;显示字符的ASCII 码 MOV BL,DI+3 ;显示字符的属性 SKIP_D: PUSH CX MOV CX,1 MOV AH,09H INT 10H POP CX ADD DI,4 LOOP ONE_D MOV DH,ROW MOV DL,COLUMN ADD DH,3 ;左后灯亮 ADD DL,-1 MOV AH,02H INT 10H MOV AL,4FH ;显示字符的ASCII 码 MOV BL,4 ;显示字符的属性 PU

22、SH CX MOV CX,1 MOV AH,09H INT 10H POP CX ;右后灯亮 ADD DL,+3 MOV AH,02H INT 10H MOV AL,4FH ;显示字符的ASCII 码 MOV BL,4 ;显示字符的属性 PUSH CX MOV CX,1 MOV AH,09H INT 10H POP CX call music RET CAR_D ENDP 15 DRAW_SS: ;画小车 MOV MODE,1 CALL CAR_STOP RET CAR_STOP PROC NEAR ;小车图形子程序 MOV DH,ROW MOV DL,COLUMN MOV CX,10 LEA

23、 DI,CARS+2 ONE_STOP: ADD DH,DI+0 ;置光标行 ADD DL,DI+1 ;置光标列 MOV AH,2 INT 10H MOV AL,DI+2 ;显示字符的ASCII 码 MOV BL,DI+3 ;显示字符的属性 SKIP_STOP: PUSH CX MOV CX,1 MOV AH,09H INT 10H POP CX ADD DI,4 LOOP ONE_STOP ;右前灯亮 MOV DH,ROW MOV DL,COLUMN LEA DI,CARS+6 ADD DH,DI+0 ;置光标行 ADD DL,DI+1 ;置光标列 MOV AH,02H INT 10H MO

24、V AL,DI+2 ;显示字符的ASCII 码 MOV BL,4 ;显示字符的属性 MOV CX,1 MOV AH,09H INT 10H POP CX ;左前灯亮 ADD DL,-1 MOV AH,02H INT 10H MOV AL,4FH ;显示字符的ASCII 码 MOV BL,4 ;显示字符的属性 16 PUSH CX MOV CX,1 MOV AH,09H INT 10H POP CX MOV DH,ROW MOV DL,COLUMN ADD DH,3 ;左后灯亮 ADD DL,-1 MOV AH,02H INT 10H MOV AL,4FH ;显示字符的ASCII 码 MOV B

25、L,4 ;显示字符的属性 PUSH CX MOV CX,1 MOV AH,09H INT 10H POP CX ;右后灯亮 ADD DL,+3 MOV AH,02H INT 10H MOV AL,4FH ;显示字符的ASCII 码 MOV BL,4 ;显示字符的属性 PUSH CX MOV CX,1 MOV AH,09H INT 10H POP CX RET CAR_STOP ENDP music proc near ONE_m: LEA SI,MUS_FREG LEA BP,DS:MUS_TIME freq: mov di,si 17 cmp di,-1 je ENDMUS mov bx,d

26、s: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,al wait1: mov cx,663 call waitf delay: loop delay dec bx jnz wait1 mov al,ah out 61h,al pop di pop dx pop cx pop bx 18 pop ax ret soundf endp q0 proc near mov ah,2 sub bh,bh mov dh,0 mov dl,0 int 10h ret q0 endp waitf proc near push ax waitf1: in al,61h and al, 10h cmp al, ah je waitf1 mov ah,al loop waitf1 pop ax ret waitf endp ;* END START

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

当前位置:首页 > 其他


经营许可证编号:宁ICP备18001539号-1