还剩18页未读,继续阅读
本资源只提供10页预览,全部文档请下载后查看!喜欢就下载吧,查找使用更方便
文本内容:
信息科学与技术学院微机原理与接口技术课程设计报告题目名称汽车车灯控制系统目录TOC\o1-3\h\z\u1.题目及要求
11.1题目
11.2要求
12.功能设计
12.1汽车图形
12.2汽车左转
12.3汽车右转
12.4汽车前进
12.5汽车倒退
12.6汽车停止
12.7响铃模块
13.主流程图
24.详细设计
34.1汽车图形显示
33.2汽车停止、转向、倒车的指示
35.结果显示
45.总结
76、程序代码81.题目及要求
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.主流程图NoYesYesRETNoYesRETNoYesRETNoYesRETNoYesRETNo非定义字符RETYes
4.详细设计
4.1汽车图形显示字符图形既可以在显示器上以简单的黑白图形字符显示,也可以在彩色显示器上以彩色的图形字符显示通过调用INT10H的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、程序代码.MODELSMALL.DATAmessagedbSwitchAisforzuozhuanswitchDisforyouzhuanswitchWisforqianjinswitchSisforhoutuiswitchBisforshache!db0ah0dhdbIfyouwanttoquitpleasehitkongge!0ah0dh$CARSDW15DB004FH7014FH7DB100BBH60-10BBH6DB1-10BBH6010BBH6DB010BBH6010BBH6DB104FH70-34FH7;定义汽车形状ROWDBCOLUMNDBMODEDB;MODE=1时画小车,MODE=0时清除小车MUS_FREGdw262262294262349330dw262262294262392349dw262262523440349330294dw466466440262392349dw-1MUS_TIMEdw1020202020100dw1020202020100dw102020202020200dw
1020202020100.CODESTART:MOVAX@DATAMOVDSAX;初始化MOVROW13;小车的初始行坐标MOVCOLUMN38;小车的初始列坐标movah09h;显示系统提示信息movdxsegmessagemovdsdxmovdxoffsetmessageint21hCALLDRAW;画小车CALLDIRECTION;检查是否有控制键按下?MOVAX4C00H;退出程序INT21H;DIRECTIONPROCNEAR;键盘检测子程序DRAW_U:MOVAH0;接收键盘输入INT16HCMPAL57H;向上JNZDRAW_D;没有则转移CALLCLEAR;清除小车DECROW;行坐标减1CALLDRAW;画小车CMPROW1;小车在最上边吗?JNZDRAW_D;不是则转移CALLCLEAR;是则清除小车MOVROW24;把小车置于最下边DRAW_D:CMPAL53H;向下?JNZDRAW_L;没有则转移CALLCLEAR;清除小车INCROW;行坐标加1CALLDRAW_DD;画小车CMPROW24;小车在最下边吗?JNZDRAW_L;不是则转移CALLCLEAR;清除小车MOVROW1;把小车置于最上边jmpDRAW_LA1:jmpDRAW_UDRAW_L:CMPAL41H;向左?JNZDRAW_R;没有则转移CALLCLEAR;清除小车DECROW;行坐标减1DECCOLUMN;列坐标减1CALLDRAW_LL;画小车CMPCOLUMN0;小车在最左边吗?JNZDRAW_R;不是则转移CALLCLEAR;清除小车MOVCOLUMN76;把小车置于最右边MOVROW24DRAW_R:CMPAL44H;向右?JNZDRAW_STOP;没有则转移CALLCLEAR;清除小车INCCOLUMN;列坐标加1DECROW;行坐标减1CALLDRAW_RR;画小车CMPCOLUMN76;小车在最右边吗?JNZDRAW_STOP;不是则转移CALLCLEAR;清除小车MOVCOLUMN0;把小车置于最左边MOVROW24DRAW_STOP:CMPAL42HJNZEXITCALLCLEARCALLDRAW_SSEXIT:CMPAL20H;空格?JNZA1;没有则返回RET;退出DIRECTIONENDPDRAW:;画小车MOVMODE1CALLCARRETCLEAR:;清除小车MOVMODE0CALLCARRETCARPROCNEAR;小车图形子程序MOVDHROWMOVDLCOLUMNMOVCX10LEADICARS+2ONE:ADDDH[DI+0];置光标列ADDDL[DI+1];置光标行MOVAH2INT10HMOVAL[DI+2];显示字符的ASCII码MOVBL[DI+3];显示字符的属性CMPMODE0;MODE=1时画小车,MODE=0时清除小车JNESKIPMOVBL0SKIP:PUSHCXMOVCX1MOVAH09HINT10HPOPCXADDDI4LOOPONERETCARENDP;左拐的处理DRAW_LL:;画小车MOVMODE1CALLCAR_LRETCAR_LPROCNEAR;小车图形子程序MOVDHROWMOVDLCOLUMNMOVCX10LEADICARS+2ONE_L:ADDDH[DI+0];置光标行ADDDL[DI+1];置光标列MOVAH2INT10HMOVAL[DI+2];显示字符的ASCII码MOVBL[DI+3];显示字符的属性SKIP_L:PUSHCXMOVCX1MOVAH09HINT10HPOPCXADDDI4LOOPONE_LMOVDHROW;左前灯亮MOVDLCOLUMNLEADICARS+2ADDDH[DI+0];置光标行ADDDL[DI+1];置光标列MOVAH02HINT10HMOVAL[DI+2];显示字符的ASCII码MOVBL4;显示字符的属性MOVCX1MOVAH09HINT10HPOPCXADDDH3;左后灯亮ADDDL-1MOVAH02HINT10HMOVAL[DI+2];显示字符的ASCII码MOVBL4;显示字符的属性PUSHCXMOVCX1MOVAH09HINT10HPOPCXRETCAR_LENDP;右拐的处理DRAW_RR:;画小车MOVMODE1CALLCAR_RRETCAR_RPROCNEAR;小车图形子程序MOVDHROWMOVDLCOLUMNMOVCX10LEADICARS+2ONE_R:ADDDH[DI+0];置光标行ADDDL[DI+1];置光标列MOVAH2INT10HMOVAL[DI+2];显示字符的ASCII码MOVBL[DI+3];显示字符的属性SKIP_R:PUSHCXMOVCX1MOVAH09HINT10HPOPCXADDDI4LOOPONE_R;右前灯亮MOVDHROWMOVDLCOLUMNLEADICARS+6ADDDH[DI+0];置光标行ADDDL[DI+1];置光标列MOVAH02HINT10HMOVAL[DI+2];显示字符的ASCII码MOVBL4;显示字符的属性MOVCX1MOVAH09HINT10HPOPCXADDDH3;左后灯亮ADDDL+1MOVAH02HINT10HMOVAL[DI+2];显示字符的ASCII码MOVBL4;显示字符的属性PUSHCXMOVCX1MOVAH09HINT10HPOPCXRETCAR_RENDP;后退的处理DRAW_DD:;画小车MOVMODE1CALLCAR_DRETCAR_DPROCNEAR;小车图形子程序MOVDHROWMOVDLCOLUMNMOVCX10LEADICARS+2ONE_D:ADDDH[DI+0];置光标行ADDDL[DI+1];置光标列MOVAH2INT10HMOVAL[DI+2];显示字符的ASCII码MOVBL[DI+3];显示字符的属性SKIP_D:PUSHCXMOVCX1MOVAH09HINT10HPOPCXADDDI4LOOPONE_DMOVDHROWMOVDLCOLUMNADDDH3;左后灯亮ADDDL-1MOVAH02HINT10HMOVAL4FH;显示字符的ASCII码MOVBL4;显示字符的属性PUSHCXMOVCX1MOVAH09HINT10HPOPCX;右后灯亮ADDDL+3MOVAH02HINT10HMOVAL4FH;显示字符的ASCII码MOVBL4;显示字符的属性PUSHCXMOVCX1MOVAH09HINT10HPOPCXcallmusicRETCAR_DENDPDRAW_SS:;画小车MOVMODE1CALLCAR_STOPRETCAR_STOPPROCNEAR;小车图形子程序MOVDHROWMOVDLCOLUMNMOVCX10LEADICARS+2ONE_STOP:ADDDH[DI+0];置光标行ADDDL[DI+1];置光标列MOVAH2INT10HMOVAL[DI+2];显示字符的ASCII码MOVBL[DI+3];显示字符的属性SKIP_STOP:PUSHCXMOVCX1MOVAH09HINT10HPOPCXADDDI4LOOPONE_STOP;右前灯亮MOVDHROWMOVDLCOLUMNLEADICARS+6ADDDH[DI+0];置光标行ADDDL[DI+1];置光标列MOVAH02HINT10HMOVAL[DI+2];显示字符的ASCII码MOVBL4;显示字符的属性MOVCX1MOVAH09HINT10HPOPCX;左前灯亮ADDDL-1MOVAH02HINT10HMOVAL4FH;显示字符的ASCII码MOVBL4;显示字符的属性PUSHCXMOVCX1MOVAH09HINT10HPOPCXMOVDHROWMOVDLCOLUMNADDDH3;左后灯亮ADDDL-1MOVAH02HINT10HMOVAL4FH;显示字符的ASCII码MOVBL4;显示字符的属性PUSHCXMOVCX1MOVAH09HINT10HPOPCX;右后灯亮ADDDL+3MOVAH02HINT10HMOVAL4FH;显示字符的ASCII码MOVBL4;显示字符的属性PUSHCXMOVCX1MOVAH09HINT10HPOPCXRETCAR_STOPENDPmusicprocnearONE_m:LEASIMUS_FREGLEABPDS:MUS_TIMEfreq:movdi[si]cmpdi-1jeENDMUSmovbxds:[bp]callsoundfaddsi2addbp2jmpfreqENDMUS:RETmusicendp;***************************************************soundfprocnearpushaxpushbxpushcxpushdxpushdimoval0b6hout43halmovdx12hmovax348chdivdiout42halmovalahout42halinal61hmovahaloral3out61halwait1:movcx663callwaitfdelay:loopdelaydecbxjnzwait1movalahout61halpopdipopdxpopcxpopbxpopaxretsoundfendpq0procnearmovah2subbhbhmovdh0movdl0int10hretq0endpwaitfprocnearpushaxwaitf1:inal61handal10hcmpalahjewaitf1movahalloopwaitf1popaxretwaitfendp;***************************************************ENDSTART开始有无按健等待调用DRAW_W与W比较与A比较调用DRAW_A与D比较调用DRAW_D调用DRAW_S和响铃函数与S比较与B比较调用STOP与空格比较退出。