设计任务
项目分析
项目使用8255接口,发光二极管、LED数码 显示管、蜂鸣器,来指示汽车的启动、转弯、 停止。三个灯全亮代表安全启动同时LED显 示S字母,绿灯亮代表直行同时LED显示字 母H,黄灯亮代表转弯向左转LED显示L字母 蜂鸣器响,向右转LED显示R字母蜂鸣器响, 红灯亮代表停止LED显示—,全不亮代表熄 火。用LED显示0-9来控制行驶距离。
设备 8088CPU 8255A芯片 发光二极管
数量 1 1 3
LED数码管 蜂鸣器 导线
8 1 若干
JP42
CS1 (0F000H)
JP42
A1 A0 蜂 鸣 器
发光 二极 管
JP41 JP41
程序流程图
开始 设置8255A芯片A口B口C口为输出 程序初始化 三个灯全亮,LED显示字母S 绿灯亮,LED显示字母H,然后依次显示0~9 绿灯黄灯亮,LED显示字母R,蜂鸣器响 绿灯亮,LED依次显示0~9 绿灯黄灯亮,LED显示字母L,蜂鸣器响
合 格 绿灯亮,LED依次显示0~9
红灯亮,LED显示“-”
三个灯全灭
程序代码
? .model small ? .stack ? .data ? Led db 3fh,06h,5bh,4fh,66h ;定义LED显示管的 ? db 6dh,7dh,07h,7fh,6fh ,0ffh :显示代码 ? .code ? start: mov ax,@data ? mov ds,ax ? mov dx,0f003h ? mov al,80h ;写入8255A的方式控制字ABC口 ? out dx,al ;都工作在方式0都为输出
? ? ? ? ? ? ? ? ? ? ? ? ?
mov dx,0f002h mov al,11111111b out dx,al ;程序初始化所有灯都灭。 mov bx,05h call delay mov dx,0f002h mov al,10001111b out dx,al;汽车启动,红黄绿三个灯全亮 mov dx,0f001h mov ax,6dh out dx,al;LED显示字母S mov bx,05h call delay
? ? ? ? ? ? ? ? ? ? ? ? ?
mov dx,0f002h mov al ,11101111b out dx,al;汽车直行,绿灯亮 mov dx,0f001h mov al,76h out dx,al;LED显示字母H mov dx,0f000h mov al,00h out dx,al mov bx,05h call delay;调用延时子程序 call LEDT;调用显示数字的子程序 mov dx,0f002h
? ? ? ? ? ? ? ? ? ? ? ? ?
mov al,11001111b out dx,al ;汽车右拐,黄灯亮,蜂鸣器响 mov dx,0f001h mov al,77h out dx,al,LED显示字母R mov bx,05h call delay mov dx,0f002h mov al,11101111b out dx,al ;汽车直行,绿灯亮 call LEDT mov dx,0f002h mov al,11001111b
?
? ? ? ? ? ? ? ? ? ? ? ?
out dx,al;汽车左拐,黄灯亮
mov dx,0f001h mov al,38h out dx,al;LED显示字母L mov bx,05h call delay mov dx,0f002h mov al,11101111b out dx,al 汽车直行,绿灯亮 call LEDT mov dx,0f002h mov al,10111111b out dx,al;停车,红灯亮
?
? ? ? ? ? ? ? ? ? ? ? ?
mov dx,0f001h
mov al,40h out dx,al ;LED显示‘-’ mov bx,0005h call delay mov dx,0f002h mov al,11111111b out dx,al;汽车熄火 mov dx,0f000h mov al,11111111b out dx,al ;LED 显示管全灭 mov ax,4c00h int 21h
? ? ? ? ? ? ? ? ? ? ? ? ? ?
delay delay1: delay2:
delay LEDT again:
proc;延时子程序 xor cx,cx l
oop delay2 dec bx jnz delay1 ret endp proc;显示数字0-9的子程序 mov si,offset LED mov dx,0f001h mov al,[si] cmp al,0ffh jz next out dx ,al
? mov bx,03h ? call delay ? inc si ? loop again ? next: ret ? LEDT endp ? end start
实验结果
启动
直行
右拐
左拐
停车
熄火
结果和问题
? 所编程序基本满足题目要求内容。 缺点是由于时间紧迫没有编写遇到 紧急情况的处理程序,在实际工程 操作中,还应加上紧急情况处理系 统,遇到故障自动处理,处理完毕 再继续进行下面的操作。
感想
刚开始老师留这项目的时候,很发愁,不知 道怎么做,也不想去做,但是真正做完回头看看, 这项目也不是那么枯燥,能把你课本学到的东西 联系起来,加深你对这门课的理解,不用去凭空 想像啦。这说明了一个道理“眼是孬包,手是好 汉”生活中也是这样,往往吓倒我们的不是困难, 而是我们自己,在我们遇到困难挫折时候,我们 要尝试着去解决,而不是逃避,可能就这一小步 就会为你打开一扇窗,而窗外就是另一番风景。