收藏 分享(赏)

接口技术课程设计汽车信号灯控制系统.doc

上传人:dreamzhangning 文档编号:2300898 上传时间:2018-09-10 格式:DOC 页数:18 大小:4.71MB
下载 相关 举报
接口技术课程设计汽车信号灯控制系统.doc_第1页
第1页 / 共18页
接口技术课程设计汽车信号灯控制系统.doc_第2页
第2页 / 共18页
接口技术课程设计汽车信号灯控制系统.doc_第3页
第3页 / 共18页
接口技术课程设计汽车信号灯控制系统.doc_第4页
第4页 / 共18页
接口技术课程设计汽车信号灯控制系统.doc_第5页
第5页 / 共18页
点击查看更多>>
资源描述

1、河南理工大学微 机 原 理 与 接 口 设 计课 程 设 计 报 告2013 2014 学年第 2 学期课程名称 微 机 原 理 与 接 口 技 术 课 程 设 计 报告题目 汽车信号灯控制系统 学生姓名 单鹏飞 学 号 310909010207 专业班级 计算机 1002 任课教师 李长青 2014 年 3 月 7 日- 1 -一、课程设计目的1、了解汽车信号灯的控制原理。2、掌握 8086CPU 和并行接口芯片 8255A 逻辑功能及使用方法。3、掌握一定的汇编语言知识,培养自己的动手操作能力。4、学习程序设计的基本思路和方法二、课程设计要求汽车上有一转弯控制杆。此控制杆有三个位置:1、中

2、间位置时,汽车不转弯;2、向上时,汽车左转;3、向下时,汽车右转;4、汽车转弯时,要求左右尾灯、左右头灯和仪表板上的 2 个指标灯相应地发出闪烁信号;5、当应急开关合上时,所有 6 个信号灯都应闪烁;6、汽车刹车时,2 个尾灯发出不闪烁的信号;7、如刹车时正在转弯,则相应的转弯闪烁信号不受影响。8、汽车转弯或应急状态下,外部信号灯和仪表板指示灯的闪烁频率为 1HZ。9、停靠(合上停靠开关):头灯、尾灯以 30Hz 的频率闪烁。三、课程设计方案1.在进行课程设计时,可以考虑到 10 种组合模式如下: 输入状态 输出状态 左转 左头灯,左尾灯,仪表左灯亮 右转 右头灯,右尾灯,仪表右灯亮 紧急 左

3、右头灯,左右尾灯,仪表左右灯同时闪烁 刹车 左右尾灯亮左转+刹车 左头灯,左尾灯,仪表左灯亮 右转+刹车 右头灯,右尾灯,仪表右灯亮刹车+紧急 左右头灯,左右尾灯,仪表左右灯同时亮 左转+刹车+紧急 左右头灯,左右尾灯,仪表左右灯同时亮右转+刹车+紧急 左右头灯,左右尾灯,仪表左右灯同时亮 停靠 左右头灯,左右尾灯同时闪烁 当退出汽车系统时,在点阵 LED 显示器上双色显示“BYE”信息。2.课程设计方案分析(1)通过 6 个发光二级管模拟两个头灯、两个尾灯和仪表盘上的两个指示灯。- 2 -(2)利用 4 个开关可产生的 16 种情况的前 10 种组合来分别模拟左转、右转、紧急,刹车,停靠的状

4、态,使发光二极管信号灯相应亮、灭或闪烁。(3)通过程序或者定时/计数器控制灯的闪烁频率。考虑到程序设计比较简便,所以本次课程设计一旦涉及到信号灯的闪烁,都为程序控制。在对任务需求进行详细分析以后,决定主要控制芯片采用实验箱上的8255A,由于本次设计中对信号灯闪烁的频率并没有严格的要求,所以就没必要采用 8253 来进行定时,采用程序来进行定时。退出系统信息“BYE”则点阵LED 显示器来控制。3. 系统的主要功能(1) 当用户置开关状态为 01H 时,也即左转,表左转开关闭合,则仪表左灯、左头灯、左尾灯同时亮,其他灯灭。(2) 当用户置开关状态为 02H 时,也即右转,表右转开关闭合,则仪表

5、右灯、右头灯、右尾灯同时亮,其他灯灭。(3) 当用户置开关状态为 03H 时,表紧急开关闭合,也即出现紧急状态时,则所有灯闪烁。(4) 当用户置开关状态为 04H 时, 表踩刹车(合上刹车开关),则左尾灯、右尾灯亮,其它灯灭。(5) 当用户置开关状态为 05H 时,表示汽车左转刹车,则仪表左灯、左头灯、左尾灯同时亮,其它灯灭。(6) 当用户置开关状态为 06H 时,表示汽车右转刹车,则仪表右灯、右头灯、右尾灯同时亮,其它灯灭。(7) 当用户置开关状态为 07H 时,表示汽车此时处于紧急刹车状态,则全部指示灯亮。(8) 当用户置开关状态为 08H 时,表示汽车此时处于左转紧急刹车状态,则全部指示

6、灯亮。(9) 当用户置开关状态为 09H 时,表示汽车此时处于右转紧急刹车状态,则全部指示灯亮。(10) 当用户置开关状态为 0AH 时,表示汽车此时在停靠,则仪表左右灯灭,左右头灯亮,左右尾灯闪烁。- 3 -所以,可以设置实验箱上的 6 个发光二极管的对应情况为:L0:右尾灯 L1:左尾灯 L2:右头灯 L3:左头灯 L4:仪表右灯 L5:仪表左灯通过 4 个开关(K0、K1、K2、K3 的组合)产生的 16 种情况的前 10 种来作为输入选择,影响 6 个指示灯的输出,对应关系如下表: 灯状态开关状态仪表左灯(L5)仪表右灯(L4)左头灯(L3)右头灯(L2)左尾灯(L1)右尾灯(L0)1

7、 左转(01h) 亮 灭 亮 灭 亮 灭2 右转(02h) 灭 亮 灭 亮 灭 亮3 紧急(03h) 闪 闪 闪 闪 闪 闪4 刹车(04h) 灭 灭 灭 灭 亮 亮5 左转+刹车( 05h) 亮 灭 亮 灭 亮 灭6 右转+刹车( 06h) 灭 亮 灭 亮 灭 亮7 刹车+紧急( 07h) 亮 亮 亮 亮 亮 亮8 左转+刹车+紧急(08h)亮 亮 亮 亮 亮 亮9 右转+刹车+紧急(09h)亮 亮 亮 亮 亮 亮10 停靠(0Ah) 灭 灭 亮 亮 闪 闪表 1 开关状态与灯状态对应表(11)当用户退出该系统时,双色点阵 LED 显示器显示“BYE”字样,由实验箱上设有一个共阳极 88 点

8、阵的红黄两色 LED 显示器,若使某一种颜色、某一个 LED 发光,只要将与其相连的行线加高电平,列线加低电平即可。四、课程设计原理及原理图1.并行 I/O 接口芯片 8255- 4 -端口 A:PA0PA7, A 组,支持工作方式 0、1、2端口 B:PB0PB7,B 组,支持工作方式 0、1端口 C:PC0PC7,仅支持工作方式 0、A 组控制高 4 位 PC4PC7、B 组控制低4 位 PC0PC3 硬件连接图:2双色点阵 LED 显示器实验仪上设有一个共阳极 88 点阵的红黄两色 LED 显示器,其点阵结构如图所示。该点阵对外引出 24 条线,其中 8 条行线,8 条红色列线,8 条黄

9、色列线。若使某一种颜色、某一个 LED 发光,只要将与其相连的行线加高电平,列线加低电平即可。如欲显示汉字,采用逐列循环发光。“BYE”点阵代码:行代码输出 99H; 红色列代码输 01H;第一列 1 个红色 LED 发光。行代码输出 0FFH; 红色列代码输 02H;第二列 5 个红色 LED 发光。行代码输出 0F0H; 红色列代码输 04H;第三列 1 个红色 LED 发光。行代码输出 0FH; 红色列代码输 08H;第四列 3 个红色 LED 发光。行代码输出 0F0H; 红色列代码输 10H;第五列 5 个红色 LED 发光。行代码输出 0FFH; 红色列代码输 20 H;第六列 1

10、 个红色 LED 发光。行代码输出 99H; 红色列代码输 40 H;第七列 3 个红色 LED 发光。行代码输出 0ffH; 红色列代码输 80 H;第八列 1 个红色 LED 发光。在步骤之间可插入几 ms 的延时,重复进行即可在 LED 上稳定的显示出红色“BYE”字。若想显示黄色“BYE” ,只需把红色列码改为黄色列码即可。- 5 -其设计布局如下所示:接线方法:行片选信号 “行选” 接 280H;红列片选信号 “红选”接 288H;绿列片选信号 “绿选” 接 290H, “WR”接总线区的“IOW” , “总线D7D0”接总线区的“D7D0” 。五、硬件设计1、芯片选择根据课题所要实

11、现的功能,结合所学的知识进行分析,系统要用到8086 微处理器芯片和可编程的并行接口芯片 8255A。8086 是 Intel 系列的16 位微处理器,它有 16 根数据线和 20 根地址线,本系统采用它作为处理器。8255 是可编程 IO 口扩展芯片。对 8255 输入不同的指令可改变 IO口的工作方式。8255 内部有 4 个寄存器:分别为寄存器 A、B、C 和控制寄存器。A、B、C 寄存器的数据就是引脚 PA7PA0、PB7PB0、PC7PC0 上输入或输出的数据。而控制寄存器的数据则表明 PA、PB、PC 的工作方式。通过 CS、A0、A1、RD 和 WR 对 4 个寄存器进行操作。(

12、1)CS 为低电平时选通 8255;(2)A1、A0 为地址选通;(3)RD 和 WR 为读、写信号:RD 为低、WR 为高时为读方式,RD 为高、WR 为低时为写方式。(4)D0D7 为数据口。 向控制寄存器写入不同的数据可以使 8255 工作在三种不同的方式下。12345678- 6 -8086最小工作模式系统结构图2 、系统电路图 P A 5P A 4P A 3P A 2P A 1P A 0 P C 4P C 3P C 2P C 1P C 08 2 5 5C SY 0Y 1Y 2Y 3Y 4Y 5Y 6Y 7ABC A 3A 4A 5 + 5 V 7 4 L S 3 07 4 L S 1

13、 3 81234 A 6A 7A 8A 9 A E NI O WI O RE1 E3+ 5 V 7 4 L S 0 0E 21232 8 8 H 2 8 F HU 1U 2 : D U 2 : C U 2 : B U 2 : AR DW RA 1A 0D A T A2 A 12 A 22 A 32 A 41 A 31 A 47 4 L S 2 4 42G 1G 1 Y 31 Y 42 Y 12 Y 22 Y 32 Y 4 8*300 K 4K 3K 2K 1K 08 * 8 . 2 K+ 5 V8 * 4 7 0S 4 S 3 S 2 S 1 S 0I O RI O WA 2A 1R E S

14、E TR E S E T数据总线图 3 系统电路图3、 电路图说明分析1.8255 的 CS 端接实验室中 TPC-H 实验系统的 I/O 地址译码电路地址为288H28FH 的接口,从而达到选通控制。2.DATA 与 8086/8088 数据总线的低八位相连接,RD 与 IOR 相连接,WR 与 IOW相连接,将 8086/8088 的地址线 A1,A2 与 8255 的 A0,A1 连接起来。3.8255 的 PA 端口用于输出,与发光二极管相连接,用于控制灯的闪烁效果,PC 端口用于输入,用其低五位做为输入控制,对于 8255 的 PB 端口则为空闲状态。4. L0(右尾灯) 、L1(左

15、尾灯) 、L2(右头灯) L3(左头灯) L4(仪表- 7 -右灯) 、 L5(仪表左灯)六、软件设计1、程序流程图- 8 -开始Y提示用户从键盘键入“ C ” 键继续 , 否则退出A L = C 吗 ?初始化 8 2 5 5 , 设置为方式 0 , A 口输出 , C口输入A L = = 0 1 H ?NYA L = = 0 2 H ?A L = = 0 3 H ?A L = = 0 6 H ?A L = = 0 4 H ?A L = = 0 7 H ?A L = = 0 8 H ?A L = = 0 9 H ?A L = = 0 A H ?A L = = 0 5 H ?屏幕上显示处于左转弯

16、状态NNNNNNNN用户从键盘键入一个字符到 A L 中读 4 个开关的状态 , 将状态值赋给 A LN相应的指示灯亮 、 灭一定时间屏幕上显示处于右转弯状态Y相应的指示灯亮 、 灭一定时间屏幕上显示处于紧急状态相应的指示灯闪烁一定时间屏幕上显示处于刹车状态相应的指示灯亮 、 灭一定时间屏幕上显示处于左转刹车状态相应的指示灯亮 、 灭一定时间屏幕上显示处于右转刹车状态相应的指示灯亮 、 灭一定时间屏幕上显示处于紧急刹车状态所有的指示灯全亮一定时间屏幕上显示处于左转紧急刹车状态所有的指示灯全亮一定时间屏幕上显示处于右转紧急刹车状态所有的指示灯全亮一定时间屏幕上显示处于停靠状态相应的指示灯亮 、

17、灭 、 闪烁一定时间YYYYYYYY退出 , 返回到 D O S2、程序源代码- 9 -data segment ;数据段proth equ 280hprotlr equ 298hprotly equ 290h io8255a equ 288H ;8255的A口地址io8255b equ 289H ;8255的B口地址io8255c equ 28aH ;8255的C口地址io8255con equ 28bH min1 DB 00h,01h,02h,03h,04h,05h,06h,07hcount db 0BUFF DB 99h,0ffh,0f0h,0fh,0f0h,0ffh,99h,0ffh

18、;8255A的控制口地址ctr db enter c key to continue!,0ah,0dh ;程序初始提示信息db enter other keys to exit to dos!,0ah,0dh,$ctr01 db 1. zuo zhuan wan.,0ah,0dh,$;左转弯时提示信息(以下类似)ctr02 db 2. you zhuan wan.,0ah,0dh,$ctr03 db 3. jin ji kai guan.,0ah,0dh,$ctr04 db 4. sha che.,0ah,0dh,$ctr05 db 5. zuo zhuan wan sha che.,0ah,

19、0dh,$ctr06 db 6. you zhuan wan sha che.,0ah,0dh,$ctr07 db 7. jin ji sha che.,0ah,0dh,$ctr08 db 8. jin ji zuo zhuan sha che.,0ah,0dh,$ctr09 db 9. jin ji you zhuan sha che.,0ah,0dh,$ctr10 db 10. ting kao.,0ah,0dh,$data endsstack segment stack ;堆栈段sta dw 50 dup(?)stack endscode segment ;代码段assume cs:co

20、de,ds:data,es:data,ss:stackmain proc farstart: push dssub ax,axpush axmov ax,datamov ds,axmov es,ax ccc: mov dx,offset ctr ;显示提示信息mov ah,09hint 21hmov ah,01hint 21h- 10 -cmp al,c ;若输入C,则继续执行,否则返回到DOSjz eeeagn: mov cx,80hd2: mov ah,01hpush cxmov cx,0008hmov si,offset min1next: mov al,simov bx,offset

21、buffxlat ;得到第一行码mov dx,prothout dx,almov al,ahmov dx,protlrout dx,al ;显示第一行红mov al,0out dx,alshl ah,01inc sipush cxmov cx,0ffh;ffhdelay2: loop delay2 ;延时pop cxloop nextpop cxcall delay00loop d2mov al,00mov dx,protlrout dx,al agn1: mov cx,80h ;agn1为显示黄色d1: mov si,offset min1mov ah,01push cxmov cx,000

22、8hnext1: mov al,simov bx,offset buffxlatmov dx,prothout dx,almov al,ahmov dx,protlyout dx,almov al,0- 11 -out dx,alshl ah,01inc sipush cxmov cx,0ffh;ffhdelay1: loop delay1mov cx,0ffh;ffhdelay3: loop delay3pop cxloop next1pop cxcall delay00loop d1mov al,00mov dx,protlyout dx,aljmp agnmov ax,4c00hint

23、21heee: mov dx,io8255con ;给8255A送入方式控制字89H 设置为A口输出,C口输入mov al,89hout dx,al mov dx,io8255c ;将4个开关的状态送入ALin al,dx mov cx,0020h ;设置循环次数bb1: cmp al,01h ;将al的值依次与01H到0AH比较jnz bb2 ;不是01H则转bb1执行,是则调用中断在屏幕上显示相应提示信息,顺序执行mov dx,offset ctr01;左转弯状态,实现六盏灯状态为:闪、灭、闪、灭、闪、灭mov ah,09hint 21h ;调用09号中断,在屏幕上显示现在正处于左转弯状态

24、mov dx,io8255aleft: mov al,11101010b ;六盏灯状态为:亮、灭、亮、灭、亮、灭(最高两位没影响)out dx,alcall delay0 ;调延时子程序loop leftjmp cccbb2: cmp al,02hjnz bb3mov dx,offset ctr02- 12 -;右转弯状态,实现六盏灯状态为:灭、亮、灭、亮、灭、亮mov ah,09hint 21hmov dx,io8255aright: mov al,11010101b ;六盏灯状态为:灭、亮、灭、亮、灭、亮out dx,alcall delay0loop rightjmp cccbb3: c

25、mp al,03hjnz bb4mov dx,offset ctr03 ;紧急开关合上mov ah,09hint 21hmov dx,io8255ahurry: mov al,11000000b ;六盏灯状态为:闪、闪、闪、闪、闪、闪out dx,alcall delay0mov al,11111111bout dx,alcall delay0loop hurryjmp cccbb4: cmp al,04hjnz bb5mov dx,offset ctr04 ;刹车mov ah,09hint 21hmov dx,io8255abreak: mov al,11000011b ;六盏灯状态为:灭、

26、灭、灭、灭、亮、亮out dx,alcall delay0loop breakjmp cccbb5: cmp al,05hjnz bb6mov dx,offset ctr05 ;左转弯刹车mov ah,09hint 21hmov dx,io8255aleftbreak: mov al,11001010b ;六盏灯状态为:亮、灭、亮、灭、亮、灭out dx,alcall delay0loop leftbreak- 13 -jmp cccbb6: cmp al,06hjnz bb7mov dx,offset ctr06 ;右转弯刹车mov ah,09hint 21hmov dx,io8255ari

27、ghtbreak: mov al,11000101b ;六盏灯状态为:灭、亮、灭、亮、灭、亮out dx,alcall delay0loop rightbreakjmp cccbb7: cmp al,07hjnz bb8mov dx,offset ctr07 ;紧急刹车mov ah,09hint 21hmov dx,io8255ahurrybreak: mov al,11111111b ;六盏灯状态为:亮、亮、亮、亮、亮、亮out dx,alcall delay0loop hurrybreakjmp ccc bb8: cmp al,08hjnz bb9mov dx,offset ctr08 ;

28、紧急左转刹车mov ah,09hint 21hmov dx,io8255ahurryleftbreak: mov al,11111111b ;六盏灯状态为:亮、亮、亮、亮、亮、亮out dx,alcall delay0mov al,11011111bout dx,alcall delay0loop hurryleftbreakjmp cccbb9: cmp al,09hjnz bb10mov dx,offset ctr09 ;紧急右转刹车mov ah,09hint 21hmov dx,io8255a- 14 -hurryrightbreak:mov al,11111111b ;六盏灯状态为:亮

29、、亮、亮、亮、亮、亮out dx,alcall delay0mov al,11101111bout dx,alcall delay0loop hurryrightbreakjmp cccbb10: cmp al,0ahjnz bb11mov dx,offset ctr10 ;停靠mov ah,09hint 21hmov dx,io8255astop: mov al,11001100b ;六盏灯状态为:灭、灭、亮、亮、闪、闪out dx,alcall delay0mov al,11001111bout dx,alcall delay0loop stopjmp cccbb11: jmp cccre

30、t main endpdelay proc near ;延时子程序push cxmov cx,0ffffhpp: loop pppop cxretdelay endpdelay0 proc near ;延时子程序push cxpush axmov cx,0080hpp0: call delayloop pp0pop axpop cxretdelay0 endp- 15 -DELAY00 PROC NEAR ;延迟子程序push cxmov cx,0ffh;ffhcccc: loop ccccpop cxretDELAY00 ENDP code endsend start七、结果 通过不断地对程

31、序进行调试和上机验证,最终利用 4 个开关组合成 10 种不同的组合状态来模拟汽车信号灯 10 种不同的状态,初步实现了预期任务要求对应的灯亮、灭、闪的不同情况。由于有 10 种不同的状态,这里只显示在第十种情况下的截图,当开关 K0 到 K3 为 1010 即 0AH 时,此时的功能是停靠,相对应的左右前灯亮即 L2、L3 灯亮,其结果如下所示:系统总接线及停靠时汽车灯亮灭情况图当继续进行测验时,在键盘上按“C”继续进行汽车信号灯测验;当按其他任意键退出信号灯测验,相应的进入双色点阵显示,此时机箱上会红绿交替“BYE”字样,其运行效果如下所示。- 16 -双色点阵红绿显示八、课程设计总结及体

32、会本次课程设计主要设计了一个汽车信号灯控制系统,虽然实现了原本预期的各种控制状态,不过程序还有待优化、改进,比如实验中的灯亮灭的情况延时保持一段时间后,返回到主程序中在屏幕上显示提示语句,不过此时灯的状态还是保持(返回前应该将灯全熄灭) 。要再手动拨动开关成其它状态然后按下C 键才能变化成另一种汽车状态,这样操作起来比较麻烦。还有,该系统的使用者得去记住各个开关组合所表示的汽车状态,不够人性化,应该进一步改进成用单个开关对应一种汽车状态的情况。此系统主要通过 8255A 的 A 口和 C 口模拟汽车信号灯的亮灭闪烁情况。通过本次的设计以此来加深对微机接口技术的理解,提高了自己的动手能力。首先是

33、着手对硬件电路的设计,本次课程设计主要采用了 8255A 接口电路。我们通过课本了解到了各个芯片的引脚及功能、工作方式、内部结构和控制字和双色点阵 LED 显示器的基本原理及 PC 机控制双色点阵 LED 显示程序的设计方法。对各个功能的熟悉便于了硬件电路的设计。然后就是对程序的设计,想要设计出一个实用的控制系统需要了解程序流- 17 -程,先画出了流程图,然后对代码进行编写,主要采用汇编语言。最后联系实验室的老师在实际的实验箱上对程序,硬件电路进行调试。在调试过程中遇到了很多问题,有些问题在同学和老师的帮助下得以解决。经过这段时间的课程设计,最终实现了该汽车信号灯控制系统,感到特别的欣慰,期间获益颇多。将微机接口技术中的理论与实践相结合起来,对芯片的功能也有了进一步认识理解,重温了汇编语言的编程。在实验调试过程中发现问题,分析问题,如何解决问题的能力都有所提高,这对我们不久将来离开学校,投入实际工作都是很有借鉴意义的。希望通过以后的学习,不断提升自身各方面的能力,如对专业知识的掌握程度,动手实践能力等。经过此次的课程设计,要形成自己的设计思想,以便在今后的专业课形成自己的风格。同时在多多锻炼自己的动手能力,以便在以后的工作能独立完成一些设计项目。

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

当前位置:首页 > 高等教育 > 大学课件

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报