接口技术课程设计汽车信号灯控制系统.doc_第1页
接口技术课程设计汽车信号灯控制系统.doc_第2页
接口技术课程设计汽车信号灯控制系统.doc_第3页
接口技术课程设计汽车信号灯控制系统.doc_第4页
接口技术课程设计汽车信号灯控制系统.doc_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

华 北 科 技 学 院接 口 技 术课 程 设 计 报 告 班级: 姓名: 设计题目: 汽车信号灯控制系统 设计时间: 2012-6-4 至 2012-6-15 指导教师: 评 语:_评阅成绩: 评阅教师: 一、课程设计目的1、掌握8255的基本工作原理和编程方法。2、了解双色点阵LED显示器的基本原理,掌握PC机控制双色点阵LED显示程序的设计方法。进行程序设计方法和芯片使用基本训练,巩固在课堂上学到的有关芯片初始化编程和使用的基本知识和基本方法,通过实际动手能力的培养,进一步熟悉接口技术的原理及应用,达到能独立使用现有芯片编制程序并正确运行的水平。二、课程设计内容1.问题描述: 汽车行驶时一共有五种状况: 汽车左转 汽车右转汽车出现紧急状况 汽车刹车 汽车停靠 在进行课程设计时,可以考虑到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”字样,由实验箱上设有一个共阳极88点阵的红黄两色LED显示器,若使某一种颜色、某一个LED发光,只要将与其相连的行线加高电平,列线加低电平即可。三、课程设计原理及原理图1.并行I/O接口芯片8255端口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条黄色列线。若使某一种颜色、某一个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个红色LED发光。行代码输出 99H; 红色列代码输 40 H;第七列3个红色LED发光。行代码输出 0ffH; 红色列代码输 80 H;第八列1个红色LED发光。在步骤之间可插入几ms的延时,重复进行即可在LED上稳定的显示出红色“BYE”字。若想显示黄色“BYE”,只需把红色列码改为黄色列码即可。其设计布局如下所示:12345678接线方法:行片选信号 “行选” 接 280H;红列片选信号 “红选”接 288H;绿列片选信号 “绿选” 接 290H,“WR”接总线区的“IOW”,“总线D7D0”接总线区的“D7D0”。四、流程图1、双色点阵显示流程图2、汽车灯系统流程图五、程序源代码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 ;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,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:code,ds:data,es:data,ss:stackmain proc farstart: push ds sub ax,ax push ax mov ax,data mov ds,ax mov es,ax ccc: mov dx,offset ctr ;显示提示信息 mov ah,09h int 21h mov ah,01h int 21h cmp al,c ;若输入C,则继续执行,否则返回到DOS jz eeeagn: mov cx,80hd2: mov ah,01h push cx mov cx,0008h mov si,offset min1next: mov al,si mov bx,offset buff xlat ;得到第一行码 mov dx,proth out dx,al mov al,ah mov dx,protlr out dx,al ;显示第一行红 mov al,0 out dx,al shl ah,01 inc si push cx mov cx,0ffh;ffhdelay2: loop delay2 ;延时 pop cx loop next pop cx call delay00 loop d2 mov al,00 mov dx,protlr out dx,al agn1: mov cx,80h ;agn1为显示黄色d1: mov si,offset min1 mov ah,01 push cx mov cx,0008hnext1: mov al,si mov bx,offset buff xlat mov dx,proth out dx,al mov al,ah mov dx,protly out dx,al mov al,0 out dx,al shl ah,01 inc si push cx mov cx,0ffh;ffhdelay1: loop delay1 mov cx,0ffh;ffhdelay3: loop delay3 pop cx loop next1 pop cx call delay00 loop d1 mov al,00 mov dx,protly out dx,al jmp agn mov ax,4c00h int 21heee: mov dx,io8255con ;给8255A送入方式控制字89H 设置为A口输出,C口输入 mov al,89h out dx,al mov dx,io8255c ;将4个开关的状态送入AL in al,dx mov cx,0020h ;设置循环次数bb1: cmp al,01h ;将al的值依次与01H到0AH比较jnz bb2 ;不是01H则转bb1执行,是则调用中断在屏幕上显示相应提示信息,顺序执行 mov dx,offset ctr01;左转弯状态,实现六盏灯状态为:闪、灭、闪、灭、闪、灭 mov ah,09h int 21h ;调用09号中断,在屏幕上显示现在正处于左转弯状态 mov dx,io8255aleft: mov al,11101010b ;六盏灯状态为:亮、灭、亮、灭、亮、灭(最高两位没影响) out dx,al call delay0 ;调延时子程序 loop left jmp cccbb2: cmp al,02h jnz bb3 mov dx,offset ctr02;右转弯状态,实现六盏灯状态为:灭、亮、灭、亮、灭、亮 mov ah,09h int 21h mov dx,io8255aright: mov al,11010101b ;六盏灯状态为:灭、亮、灭、亮、灭、亮 out dx,al call delay0 loop right jmp cccbb3: cmp al,03h jnz bb4 mov dx,offset ctr03 ;紧急开关合上 mov ah,09h int 21h mov dx,io8255ahurry: mov al,11000000b ;六盏灯状态为:闪、闪、闪、闪、闪、闪 out dx,al call delay0 mov al,11111111b out dx,al call delay0 loop hurry jmp cccbb4: cmp al,04h jnz bb5 mov dx,offset ctr04 ;刹车 mov ah,09h int 21h mov dx,io8255abreak: mov al,11000011b ;六盏灯状态为:灭、灭、灭、灭、亮、亮 out dx,al call delay0 loop break jmp cccbb5: cmp al,05h jnz bb6 mov dx,offset ctr05 ;左转弯刹车 mov ah,09h int 21h mov dx,io8255aleftbreak: mov al,11001010b ;六盏灯状态为:亮、灭、亮、灭、亮、灭 out dx,al call delay0 loop leftbreak jmp cccbb6: cmp al,06h jnz bb7 mov dx,offset ctr06 ;右转弯刹车 mov ah,09h int 21h mov dx,io8255arightbreak: mov al,11000101b ;六盏灯状态为:灭、亮、灭、亮、灭、亮 out dx,al call delay0 loop rightbreak jmp cccbb7: cmp al,07h jnz bb8 mov dx,offset ctr07 ;紧急刹车 mov ah,09h int 21h mov dx,io8255ahurrybreak: mov al,11111111b ;六盏灯状态为:亮、亮、亮、亮、亮、亮 out dx,al call delay0 loop hurrybreak jmp ccc bb8: cmp al,08h jnz bb9 mov dx,offset ctr08 ;紧急左转刹车 mov ah,09h int 21h mov dx,io8255ahurryleftbreak: mov al,11111111b ;六盏灯状态为:亮、亮、亮、亮、亮、亮 out dx,al call delay0 mov al,11011111b out dx,al call delay0 loop hurryleftbreak jmp cccbb9: cmp al,09h jnz bb10 mov dx,offset ctr09 ;紧急右转刹车 mov ah,09h int 21h mov dx,io8255ahurryrightbreak:mov al,11111111b ;六盏灯状态为:亮、亮、亮、亮、亮、亮 out dx,al call delay0 mov al,11101111b out dx,al call delay0 loop hurryrightbreak jmp cccbb10: cmp al,0ah jnz bb11 mov dx,offset ctr10 ;停靠 mov ah,09h int 21h mov dx,io8255astop: mov al,11001100b ;六盏灯状态为:灭、灭、亮、亮、闪、闪 out dx,al call delay0 mov al,11001111b out dx,al call delay0 loop stop jmp ccc bb11: jmp ccc ret main endpdelay proc near ;延时子程序 push cx mov cx,0ffffhpp: loop pp pop cx retdelay endpdelay0 proc near ;延时子程序 push cx push ax mov cx,0080hpp0: call delay loop pp0 pop ax pop cx retdelay0 endpDELAY00 PROC NEAR ;延迟子程序 push cx mov cx,0ffh;ffhcccc: loop cccc pop cx retDELAY00 ENDP code ends end start六、结果 通过不断地对程序进行调试和上机验证,最终利用4个开关组合成10种不同的组合状态来模拟汽车信号灯10种不同的状态,初步实现了预期任务要求对应的灯亮、灭、闪的不同情况。由于有10种不同的状态,这里只显示在第十种情况下的截图,当开关K0到K3为1010即0AH时,此时的功能是停靠,相对应的左右前灯亮即L2、L3灯亮,其结果如下所示:系统总接线及停靠时汽车灯亮灭情况图当继续进行测验时,在键盘上按“C”继续进行汽车信号灯测验;当按其他任意键退出信号灯测验,相应的进入双色点阵显示,此时机箱上会红绿交替“BYE”字样,其运行效果如下所示。- 16 -双色点阵红绿显示七、课程设计总结及体会本次课程设计主要

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论