微机原理及应用课程设计说明书-基于8086交通灯课程设计说明书_第1页
微机原理及应用课程设计说明书-基于8086交通灯课程设计说明书_第2页
微机原理及应用课程设计说明书-基于8086交通灯课程设计说明书_第3页
微机原理及应用课程设计说明书-基于8086交通灯课程设计说明书_第4页
微机原理及应用课程设计说明书-基于8086交通灯课程设计说明书_第5页
已阅读5页,还剩12页未读 继续免费阅读

下载本文档

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

文档简介

微机原理及应用课程设计说明书姓名学 号学 院外经贸学院班级题 目 基于8086/8088的交通灯程序设计指导教师 2010 年 6月 目 录 一、需求分析21、课题背景 22、课题训练内容 23、设备需求. 2 4、功能需求. 2 二、设计方案. 31、基于8255A的分析 32、基于8259A的分析 43、中断分析. 4 三、详细设计. 51、信号灯显示模块.52、LED显示模块.63、中断子程序模块. 64、整合所有模块. 65、硬件原理及电路图 76、程序源代码. 9 四、设计总计.15 五、参考资料.16一、 需求分析 1、课题背景现代城市交通日益拥挤,为保证交通安全,防止交通阻塞,在城市交通井然有序,交通信号灯便出为此出现在人们眼中。十字道口的红绿灯是交通法规的无声命令,是司机和行人的行为准则。十字道口的交通红绿灯控制是保证交通安全和道路畅通的关键。当前,国内大多数城市正在采用“自动”红绿交通灯,它具有固定的“红灯绿灯”转换间隔,并自动切换。它们一般由“通行与禁止时间控制显示、红黄绿三色信号灯和方向指示灯”三部分组成。交通灯的时间控制显示,以固定时间值预先“固化”在单片机中,每次只是以一定周期交替变化。.2、课题训练内容设计一个基于8086/8088微型计算机的一个交通信号灯控制系统,要求能完成基本的交通灯控制,如红、绿、黄三种灯的定时交替点亮与熄灭;能提供行人通过时的临时信号修改;能提供当时当地的温度、湿度信息;提供基本的键盘输入。要求学生了解8086/8088微型计算机控制系统的基本设计方法与思路,能独立查阅资料并汇总,具备一定的控制系统设计能力,掌握绘制电路原理图的能力,能编写一定难度的汇编程序并调试。3、 设备需求.8086系统微机一台。温度传感器(可自选)和湿度传感器(可自选)、信号放大器。 8253定时/计数器和8255A并行接口芯片、8259A、ADC0809。小键盘一个,红,黄,绿,发光二极管。LED发光二极管6个。4、 功能需求本课题设计制作一个交通信号灯实时控制系统。.在一个十字路口的一条主干道和一条支干到上分别装上一套红,黄,绿三种信号灯;用按键模拟十字路口的车辆检测传感器信号;用二个LED显示停靠车辆数和二个LED显示红(或)绿灯的时间。在一般情况下,主、支干道上的绿灯-黄灯-红灯每24秒交替变换。(红灯6s,绿灯12s,黄灯6秒)当检测到主干道为红灯而且干道上超过29辆车时(用按键K1模拟干道上停靠车辆),且从干道上没有车辆时,支干道的绿灯转为黄灯,持续6s后,又变为红灯,同时主干道由红灯变为绿灯。 反之,当检测到支干道为红灯而且干道上超过29辆车时(用按键K1模拟干道上停靠车辆),支干道的绿灯转为黄灯,持续6s后,又变为红灯,同时支干道由红灯变为绿灯。当检测到特殊车辆经过时(用按键K2模拟),主从干道都变成红灯,当检测到车辆经过后(再次按下按键3),恢复原来红绿灯情况。二、 设计方案1,基于8255A的分析。根据课题内容,在本课题系统中,微机需要检测2按键送来的主,干道车辆到达信号及特殊车辆信号,并按一定的条件发出主、支干道6个信号灯的控制信号,以及LED显示器的控制信号。根据如(图1)的8255内部结构及引脚,显然,用一片8255A完全可以满足上述要求。可对于8255A作如下安排。PA0PA7用来给信号灯在不同时刻发送不同状态的信号。PB0PB7用来给LED发送LED驱动码。PC0PC3用来发送对LED的控制信号,PC4PC7暂时还未用到。其8255电路图如下(图2):图1 8255内部结构及引脚图2 8255接线图2、基于8259A的分析。另端口A工作与方式0的无条件数据传输方式,用以控制交通灯的亮灭;端口B工作与方式1的输入方式,并设置为允许中断;将端口C的PC2,PC3接到负脉冲源上,使得每按一下按钮时分别表示支干道上有一辆车过来和主干道上有一辆车过来,而将PC0接到中断请求线上,模拟当干道上有特殊车辆来时,由中断请求线向CPU发出中断,CPU响应中断后发出控制信号来控制主,支干道交通灯变为状态。端口C的低4位用作输出接口,用来控制LED显示。3, 有关中断技术的功能,可以采用8259外部中断来控制特殊车辆的到来和红灯路口的阻塞车辆数。再用K1、K2来模拟阻塞车辆和特殊车辆。其8259与K1、K2按键连线如下(图3):8259KK2-KK2+KK1-KK1+IRQ7IRQ6图3 8259中断控制和K1、K2接线图本模块主要用到以上5种硬件,各种硬件相连,组成整个系统的硬件系统。但是除了硬件系统外,还需要有软件来驱动硬件间相互配合执行,现给出其流程如下图4: YNN开始主干道绿灯,支干道红灯设置中断向量,初始化8259开中断主干道黄灯支干道红灯;闪烁;倒计时4秒主干道红灯,支干道绿灯主干道红灯,支干道黄灯;闪烁倒计时4秒Main=29 &到计时到0Main=29 &到计时到0Y图4 系统软件流程图三、详细设计 根据本小组对本课题的分析,最后确定将本课题分为如下四个模块:1, 信号灯显示模块:本模块分六个子程序, 其功能分别是主干道绿灯支干道红灯,主干道黄灯支干道红灯,主干道红灯分干道绿灯,主干道红灯,分干道黄灯。主支干道都红灯,主支干道灯都灭。在程序中分别是子程序light1, light2, light3, light4, light5, light6.2, LED显示模块:此模块分五个子程序,其功能分别是,led根据父程序通过ax和数据段main传过来的值控制4个LED的数字显示。Led1、led2两个子程序分别通过ax的值显示倒计时。led3,led4两个子程序分别通过main的值和buffer对应的驱动码显示阻塞车辆数。3, 中断子程序模块,此模块分两个子程序,irq6用来处理K1触发的中断。此中断用来表示阻塞了一辆车,即main加一。irq7用来处理K2触发的中断,此中断用来处理十字路口来了一辆特殊车辆,即两条路的信号灯都成红灯,倒计时暂停。其中断子程序的流程图如下图五:中断irq7入口保护现场主、支干道都亮红灯,同时,倒计时时间静止延时3S恢复现场中断返回中断irq6入口保护现场main (车辆数量)的值加1恢复现场中断返回图5 中断子程序流程图4, 此模块主要实现本课题的逻辑,即通过本调用以上三个模块的子程序将现整个课题连起来,并让整个系统能连续的运行,因此也负责整个程序的时序。本模块实现了整个系统的主程序,具体流程包括两重循环,三次分支,每一重用来循环控制信号灯四个基本状态的轮流转换,第二重循环用来控制时序及LED。第一次分支是根据每一重循环下的每个基本状态分别显示不同的信号灯,第二个分支是,根据数据段中的main来判断阻塞车辆是不是过多,是否需要信号灯的转换。第三个分支是根据信号灯是否黄灯时来商定要信号灯是否要闪烁。另外此模块还要负责中断的初始化,及开中断的时间。这也是本个负责的模块,其主要流程如图4和图6。是是是开 始是否有中断红绿灯正常转换,倒计时正常显示否紧急车辆通行中断服务程序是否有紧急车辆通行否是否是记录车辆数中断记录车辆数量中断服务程序否图6 中断控制图 5、硬件原理及电路图 图7 硬件原理及电路图6、程序源代码stack segment stack ;定义堆栈段db 64 dup(?) ;申请64个字节的空间stack endsdata segment ;定义数据段 buffer dw 5b6fh,5b7fh,5b07h,5b7dh,5b6dh,5b66h,5b4fh,5b5bh,5b06h,5b3fhdw 066fh,067fh,0607h,067dh,066dh,0666h, 064fh,065bh,0606h,063fhdw 3f6fh,3f7fh,3f07h,3f7dh,3f6dh,3f66h, 3f4fh,3f5bh,3f06h,3f3fh ;定义从290的LED驱动码 main db 00h ;定义main用来存放阻塞车辆数 zhuangtai dw 00h ;用来存放交通灯的最近状态 zhongduan dw 00h ;用来存放中断时倒计时的状态data endscode segment assume cs:code,ds:data start:mov ax,data ;程序开始 mov ds,ax ;中断向量初始化 push ds ;保护ds现场 mov ax,0000h mov ds,ax ;将0至入ds mov ax,offset irq6 add ax,2000h mov si,0038h mov si,ax ;将irq6 的首地址偏移地址放入第16个中断向量字的低字中 mov ax,0000h mov si,003ah mov si,ax ;将irq6 的首地址段地址放入第16个中断向量字的高字中 mov ax,offset irq7 add ax,2000h mov si,003ch mov si,ax ;将irq7 的首地址偏移地址放入第16个中断向量字的低字中 mov ax,0000h mov si,003eh mov si,ax ;将irq7 的首地址段地址放入第16个中断向量字的高字中 pop ds ;中断向量初始化完毕mov al,80h out 63h,al ;8255初始化lea bx,buffermov dx,60h ;dx,si两个寄存器的值用来控制LED显示的值again:mov cx,4 jump:mov zhuangtai,cx ;记录最近交通灯的状态 cmp cx,4 je aaaa1 cmp cx,3 je aaaa2 cmp cx,2 je aaaa3 jump aaaa4 ;根据cx确定的状态输出交通灯(二级管表示)aaaa:mov al,0 mov main,al push cx ;每一个新的状态将阻塞车辆数清零;qiaonext3:mov cx,23h ;根据cx 值通过延时得出一秒的时间 mov ax,29 cmp main,al je zongd ;阻塞车辆数大于等于30时交通灯转换状态next2:cmp cx,25h ;根据cx的值,在黄灯时,闪烁 jae shan2 cmp cx,19h jae shan cmp cx,0ch jae shan2 jump shanaaas:push cx call zdcsh ;中断初始化 mov ax,bx+si xchg al,ah call led ; LED显示当前倒计时数和阻塞车辆数 pop cx loop next2 inc si inc si mov zhuangduan,si cmp si,dx jne next3 ;倒计时zongd:pop cx loop jump jump again ;状态循环转换;主程序逻辑结束 aaaa1:mov si,0 ;调用第一种信号灯状态代码,si=0表示从29开始倒计时 call light1 jump aaaa aaaa2:mov si,54 ;调用第二种信号灯状态代码,si=54表示从2开始倒计时 call light2 jump aaaa aaaa3:mov si,0 ;调用第三种信号灯状态代码,si=0表示从29开始倒计时 call light3 jump aaaa aaaa4:mov si,54 ;调用第四种信号灯状态代码,si=54表示从2开始倒计时 call light4 jump aaaa shan:push ax ;黄灯时闪烁代码中的灯灭 mov ax,zhuangtai ;根据信当前状态判断是否是黄灯 cmp ax,3 je shan1 ;状态三和一是黄灯,让灯灭 cmp ax,1 je shan1 pop ax jump aaas ;else 返回原程序 shan1:call light6 ;灯灭 pop ax jmp aaas shan2:push ax ;黄灯时闪烁代码中的黄灯亮 mov ax,zhuangtai ;根据信当前状态判断是否是黄灯 cmp ax,3 je shan3 ;状态三时,主干道黄灯,支干道红灯 cmp ax,1 je shan4 jmp shan5 ;状态一时,主干道红灯,支干道黄灯 shan3:call light2 ; 主干道黄灯,支干道红灯 jmp chan5 shan4:call light4 ; 主干道红灯,支干道黄灯 shan5:pop ax jmp aaas;中断子程序irq6:sti ;当按键K1高电平触发时irq6时,开中断 push ax mov al,29 cmp main,al ;阻塞车辆数小于30时 je zon inc main ;阻塞车辆数加一zon:pop ax iretirq7:sti ;当按键K2高电平触发时irq7时,开中断 push ax push bx push cx call light5 ;主,支干道灯都是红灯 mov cx,00e0h ;开始延时3秒 mov bx,offset buffer mov si,zhongduan 1111:push cx mov ax,bx+si xchg al,ah call led ;根据中断时刻倒计时时间暂停的LED显示 pop cx loop 1111 ;中断子程序逻辑完后,返回现场 mov ax zhuangtai ;根据不同的状态信号灯返回现场 cmp ax,4 je zhuangtai1 ;判断为状态一时 cmp ax,3 je zhuangtai2 ;判断为状态二时 cmp ax,2 je zhuangtai3 ;判断为状态三时 jmp zhuangtai4 ;判断为状态四时zhuangtai1:call light1 ;返回状态一的现场 jmp end2zhuangtai2:call light2 ;返回状态二的现场 jmp end2 zhuangtai3:call light3 ;返回状态三的现场 jmp end2zhuangtai4:call light4 ;返回状态四的现场 end2:pop cx ;寄存器返回现场 pop bx pop ax iret ;中断初始化zdcsh proc push ax mov al,13h out 20h,al ;给8259送入ICW1控制字 mov al,08h out 21h,al ;给8259送入ICW2控制字 mov al,09h out 21h,al ;给8259送入ICW3控制字 mov al,odh out 21h,al ;给8259送入ICW4控制字 sti ;开中断 pop ax ret zdcsh endp led proc ;控制四个LED的显示 push cx ;保护父程序环境 call led1 ;显示每一个LED mov cx,0617h delay1:loop delay1 mov al,ah call led2 ;显示第二个LED mov cx,0617h delay2:loop delay2 call led3 ;显示第三个LED mov cx,0617h delay3:loop delay3 call led4 ;显示第四个LED mov cx,0617h delay4:loop delay4 pop cx ret led endp led1:proc ;控制第一个LED的显示 push ax mov ah,al push ax mov ah,al mov al,11111110b out 62h,al ;初始化第一个LED mov al,ah out 61h,al ;显示第一个LED的值(al传来的) pop ax ret led1 endp led2 proc ;控制第二个LED的显示 push ax mov ah,al mov al,11111101b out 62h,al ;初始化第一个LED mov al,ah out 61h,al ;显示第二个LED的值(al传来的) pop ax ret led2 endp led3 proc ;控制第三个LED的显示 push ax push bx mov al 11111011h out 62h,al ;初始化第一个LED lea bx,buffer mov al,29 sub al,main add al,al inc al xlat ;通过main计算出阻塞车辆数的十位LED驱动码 out 61h,al ;显示第三个LED pop bx pop ax retled3 endp led4 proc ;控制第四个LED的显示 push ax push bx mov al,11110111b out 62h,al ;初始化第一个LED mov al,29 sub al,main add al,al xlat ;通过main计算出阻塞车辆数的个位LED驱动码 out 61h,al ;显示第四个LED pop bx pop ax ret;wulight1 proc ;交通灯第一种状态下的二级管情况 push ax mov al,01111101b ; (主干道绿灯,次干道红灯) out 60h,al ;将要显示的灯对应的值通过PA07 控制灯亮 pop ax retlight1 endplight2 proc ;交通灯第二种状态下的二级管情况 push ax mov al,01111011b ; (主干道黄灯,次干道红灯) out 60h,al ;将要显示的灯对应的值通过PA07 控制灯亮 pop ax retlight2 endplight3 proc ;交通灯第三种状态下的二级管情况 push ax mov al,10111110b ; (主干道红灯,次干道绿灯) out 60h,al ;将要显示的灯对应的值通过PA07 控制灯亮 pop ax retlight3 endp light4 proc ;交通灯第四种状态下的二级管情况 push ax mov al,11011110b ; (主干道红灯,次干道黄灯) out 60h,al ;将要显示的灯对应的值通过PA07 控制灯亮 pop ax retlight4 endplight5 proc ;交通灯第五种状态下的二级管情况 push ax mov al,01111110b ; (主干道红灯,次干道红灯) out 60h,al ;将要显示的灯对应的值通过PA07 控制灯亮 pop ax retlight5 endplight6 proc ;交通灯第六种状态下的二级管情况 push ax mov al,0ffh ; (主、次干道灯全灭) out 60h,al ;将要显示的灯对应的值通过PA07 控制灯亮 pop ax

温馨提示

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

评论

0/150

提交评论