汽车车灯控制系统课程设计报告990887

汽车车灯控制系统课程设计报告990887
汽车车灯控制系统课程设计报告990887

汽车车灯控制系统课程设计报告990887

信息科学与技术学院微机原理与接口技术课程设计报告

题目名称:汽车车灯控制系统

目录

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

.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,0BBH,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,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 ;退出程序

INT 21H

;

DIRECTION 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 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 ;把小车置于最右边MOV ROW,24

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 ;空格?

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

MOV AL,[DI+2] ;显示字符的ASCII码

MOV BL,[DI+3] ;显示字符的属性

CMP MODE,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,2

INT 10H

MOV AL,[DI+2] ;显示字符的ASCII码

相关主题
相关文档
最新文档