接口技术课程设计汽车信号灯控制系统Word格式文档下载.docx
《接口技术课程设计汽车信号灯控制系统Word格式文档下载.docx》由会员分享,可在线阅读,更多相关《接口技术课程设计汽车信号灯控制系统Word格式文档下载.docx(19页珍藏版)》请在冰豆网上搜索。
![接口技术课程设计汽车信号灯控制系统Word格式文档下载.docx](https://file1.bdocx.com/fileroot1/2022-10/9/0a62004f-2c36-477a-bfce-c0be088ff0ec/0a62004f-2c36-477a-bfce-c0be088ff0ec1.gif)
汽车行驶时一共有五种状况:
汽车左转
汽车右转
汽车出现紧急状况
汽车刹车
汽车停靠
在进行课程设计时,可以考虑到10种组合模式如下:
输入状态输出状态
左转左头灯,左尾灯,仪表左灯亮
右转右头灯,右尾灯,仪表右灯亮
紧急左右头灯,左右尾灯,仪表左右灯同时闪烁
刹车左右尾灯亮
左转+刹车左头灯,左尾灯,仪表左灯亮
右转+刹车右头灯,右尾灯,仪表右灯亮
刹车+紧急左右头灯,左右尾灯,仪表左右灯同时亮
左转+刹车+紧急左右头灯,左右尾灯,仪表左右灯同时亮
右转+刹车+紧急左右头灯,左右尾灯,仪表左右灯同时亮
停靠左右头灯,左右尾灯同时闪烁
当退出汽车系统时,在点阵LED显示器上双色显示“BYE”信息。
2.问题的解决方案分析
(1)通过6个发光二级管模拟两个头灯、两个尾灯和仪表盘上的两个指示灯。
(2)利用4个开关可产生的16种情况的前10种组合来分别模拟左转、右转、紧急,刹车,停靠的状态,使发光二极管信号灯相应亮、灭或闪烁。
(3)通过程序或者定时/计数器控制灯的闪烁频率。
考虑到程序设计比较简便,所以本次课程设计一旦涉及到信号灯的闪烁,都为程序控制。
在对任务需求进行详细分析以后,决定主要控制芯片采用实验箱上的8255A,由于本次设计中对信号灯闪烁的频率并没有严格的要求,所以就没必要采用8253来进行定时,采用程序来进行定时。
退出系统信息“BYE”则点阵LED显示器来控制。
3.系统的主要功能
(1)当用户置开关状态为01H时,也即左转,表左转开关闭合,则仪表左灯、左头灯、左尾灯同时亮,其他灯灭。
(2)当用户置开关状态为02H时,也即右转,表右转开关闭合,则仪表右灯、右头灯、右尾灯同时亮,其他灯灭。
(3)当用户置开关状态为03H时,表紧急开关闭合,也即出现紧急状态时,则所有灯闪烁。
(4)当用户置开关状态为04H时,表踩刹车(合上刹车开关),则左尾灯、右尾灯亮,其它灯灭。
(5)当用户置开关状态为05H时,表示汽车左转刹车,则仪表左灯、左头灯、左尾灯同时亮,其它灯灭。
(6)当用户置开关状态为06H时,表示汽车右转刹车,则仪表右灯、右头灯、右尾灯同时亮,其它灯灭。
(7)当用户置开关状态为07H时,表示汽车此时处于紧急刹车状态,则全部指示灯亮。
(8)当用户置开关状态为08H时,表示汽车此时处于左转紧急刹车状态,则全部指示灯亮。
(9)当用户置开关状态为09H时,表示汽车此时处于右转紧急刹车状态,则全部指示灯亮。
(10)当用户置开关状态为0AH时,表示汽车此时在停靠,则仪表左右灯灭,左右头灯亮,左右尾灯闪烁。
所以,可以设置实验箱上的6个发光二极管的对应情况为:
L0:
右尾灯L1:
左尾灯L2:
右头灯L3:
左头灯L4:
仪表右灯L5:
仪表左灯
通过4个开关(K0、K1、K2、K3的组合)产生的16种情况的前10种来作为输入选择,影响6个指示灯的输出,对应关系如下表:
灯状态
开关状态
仪表左灯(L5)
仪表右灯
(L4)
左头灯
(L3)
右头灯
(L2)
左尾灯
(L1)
右尾灯(L0)
1左转(01h)
亮
灭
2右转(02h)
3紧急(03h)
闪
4刹车(04h)
5左转+刹车(05h)
6右转+刹车(06h)
7刹车+紧急(07h)
8左转+刹车+紧急(08h)
9右转+刹车+紧急(09h)
10停靠(0Ah)
表1开关状态与灯状态对应表
(11)当用户退出该系统时,双色点阵LED显示器显示“BYE”字样,由实验箱上设有一个共阳极8×
8点阵的红黄两色LED显示器,若使某一种颜色、某一个LED发光,只要将与其相连的行线加高电平,列线加低电平即可。
三、课程设计原理及原理图
1.并行I/O接口芯片8255
端口A:
PA0~PA7,A组,支持工作方式0、1、2
端口B:
PB0~PB7,B组,支持工作方式0、1
端口C:
PC0~PC7,仅支持工作方式0、A组控制高4位PC4~PC7、B组控制低4位PC0~PC3
硬件连接图:
2.双色点阵LED显示器
实验仪上设有一个共阳极8×
8点阵的红黄两色LED显示器,其点阵结构如图所示。
该点阵对外引出24条线,其中8条行线,8条红色列线,8条黄色列线。
若使某一种颜色、某一个LED发光,只要将与其相连的行线加高电平,列线加低电平即可。
如欲显示汉字,采用逐列循环发光。
“BYE”点阵代码:
①行代码输出99H;
红色列代码输01H;
第一列1个红色LED发光。
②行代码输出0FFH;
红色列代码输02H;
第二列5个红色LED发光。
③行代码输出0F0H;
红色列代码输04H;
第三列1个红色LED发光。
④行代码输出0FH;
红色列代码输08H;
第四列3个红色LED发光。
⑤行代码输出0F0H;
红色列代码输10H;
第五列5个红色LED发光。
⑥行代码输出0FFH;
红色列代码输20H;
第六列1个红色LED发光。
⑦行代码输出99H;
红色列代码输40H;
第七列3个红色LED发光。
⑧行代码输出0ffH;
红色列代码输80H;
第八列1个红色LED发光。
在步骤①~⑧之间可插入几ms的延时,重复进行①~⑧即可在LED上稳定的显示出红色“BYE”字。
若想显示黄色“BYE”,只需把红色列码改为黄色列码即可。
其设计布局如下所示:
接线方法:
行片选信号“行选”接280H;
红列片选信号“红选”接288H;
绿列片选信号“绿选”接290H,“WR”接总线区的“IOW”,“总线D7~D0”接总线区的“D7~D0”。
四、流程图
1、双色点阵显示流程图
2、汽车灯系统流程图
五、程序源代码
datasegment;
数据段
prothequ280h
protlrequ298h
protlyequ290h
io8255aequ288H;
8255的A口地址
io8255bequ289H;
8255的B口地址
io8255cequ28aH;
8255的C口地址
io8255conequ28bH
min1DB00h,01h,02h,03h,04h,05h,06h,07h
countdb0
BUFFDB99h,0ffh,0f0h,0fh,0f0h,0ffh,99h,0ffh;
8255A的控制口地址
ctrdb'
enterckeytocontinue!
'
0ah,0dh;
程序初始提示信息
db'
enterotherkeystoexittodos!
0ah,0dh,'
$'
ctr01db'
1.zuozhuanwan...'
;
左转弯时提示信息(以下类似)
ctr02db'
2.youzhuanwan.....'
ctr03db'
3.jinjikaiguan.....'
ctr04db'
4.shache.....'
ctr05db'
5.zuozhuanwanshache.....'
ctr06db'
6.youzhuanwanshache.....'
ctr07db'
7.jinjishache.....'
ctr08db'
8.jinjizuozhuanshache.....'
ctr09db'
9.jinjiyouzhuanshache.....'
ctr10db'
10.tingkao.....'
dataends
stacksegmentstack;
堆栈段
stadw50dup(?
)
stackends
codesegment;
代码段
assumecs:
code,ds:
data,es:
data,ss:
stack
mainprocfar
start:
pushds
subax,ax
pushax
movax,data
movds,ax
moves,ax
ccc:
movdx,offsetctr;
显示提示信息
movah,09h
int21h
movah,01h
cmpal,'
c'
;
若输入'
C'
,则继续执行,否则返回到DOS
jzeee
agn:
movcx,80h
d2:
pushcx
movcx,0008h
movsi,offsetmin1
next:
moval,[si]
movbx,offsetbuff
xlat;
得到第一行码
movdx,proth
outdx,al
moval,ah
movdx,protlr
outdx,al;
显示第一行红
moval,0
shlah,01
incsi
movcx,0ffh;
ffh
delay2:
loopdelay2;
延时
popcx
loopnext
calldelay00
loopd2
moval,00
outdx,al
agn1:
movcx,80h;
agn1为显示黄色
d1:
movah,01
next1:
moval,[s