微机接口交通信号灯课程设计报告

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

1郑州大学信息工程学院课程设计报告交通灯模拟系统专业:计算机科学与技术班级:2班学号:20082430247姓名:朱文峰指导教师:关国利、张行进、许金梅2序言红绿灯(交通信号灯)系以规定之时间上交互更迭之光色讯号,设置于交岔路口或其他特殊地点,用以将道路通行权指定给车辆驾驶人与行人,管制其行止及转向之交通管制设施。为一由电力运转之交通管制设施,,以红、黄、绿三色灯号或辅以音响,指示车辆及行人停止、注意与行进,设于交岔路口或其他必要地点。十字道口的红绿灯是交通法规的无声命令,是司机和行人的行为准则。十字道口的交通红绿灯控制是保证交通安全和道路畅通的关键。当前,国内大多数城市正在采用“自动”红绿交通灯,它具有固定的“红灯—绿灯”转换间隔,并自动切换。它们一般由“通行与禁止时间控制显示、红黄绿三色信号灯和方向指示灯”三部分组成。在交通灯的通行与禁止时间控制显示中,通常要么东西、南北两方向各60秒;要么根据交通规律,东西方向60秒,南北方向40秒,时间控制都是固定的。交通灯的时间控制显示,以固定时间值预先“固化”在单片机中,每次只是以一定周期交替变化。但是,实际上不同时刻的车辆流通状况是十分复杂的,是高度非线性的、随机的,还经常受认为因素的影响。采用定时控制经常造成道路有效应用时间的浪费,出现绿灯方向车辆较少,红灯方向车辆积压。它不顾当前道路上交通车辆数的实际情况变化,其最大的缺陷就在于当路况发生变化时,不能满足司机与路人的实际需要,轻者造成时间上的浪费,重者直接导致交通堵塞,导致城市交通效率的下降。目前,有一种使用“模糊控制”技术控制交通灯的方法。能够根据十字路口两个方向上车辆动态状况,自动判断红绿灯时间间隔,以保证最大车流量,减少道口的交通堵塞。但是却不像定时控制,能用数字显示器显示当前灯色剩余时间,以便于驾驶员随时掌握自己的驾驶动作,及时停车或启动。本次课程设计采用定时加中断控制的方式进行,对两个方向车辆的通行时间分别计时,可随意进行更改双向的通行时间。3目录1、课程设计的目的和要求………………………………………………………………41.1课程设计目的和意义1.2试验的目的和内容1.3试验的基本要求2、硬件总体设计……………………………………………………………………………52.1并行接口电路82552.28253计数器2.38259中断3、硬件基础知识……………………………………………………………………73.18255控制字3.28255端口C控制字3.38253命令格式4、软件总体设计……………………………………………………………………………84.1流程图过程4.2主程序流程图5、源代码…………………………………………………………………………………105.1程序代码5.2运行结果6、结束语……………………………………………………………………………………167、参考文献…………………………………………………………………………………174一.课程设计的目的和要求1.1课程设计的目的和意义:《微机原理与接口技术》是计算机、电子类专业的专业基础课。在课程体系种占有重要的位置。课程设计的目的是配合平时的教学和实验,以达到巩固和消化课堂教学内容,进一步加强综合应用能力,启发创新思维的目的。是培养学生综合素质,提高动手能力,提高发现问题和解决问题能力的重要阶段。1.2实验目的⒈了解交通灯管理的基本工作原理⒉熟悉8259A中断控制器的工作原理和应用编程⒊熟悉8255A并行接口的各种工作方式和应用⒋熟悉8253计数器/定时器的工作方式及应用编程,掌握利用软硬件相结合定时的方法⒌掌握多位LED显示问题的解决1.3实验内容(1)利用8255端口C控制LED发光管。LED发光管L7(红),L6(黄),L5(绿)作为南北路口的交通灯与8255的PC7,PC6,PC5相连,L2(红),L1(黄),L0(绿)作为东西路口的交通灯与PC4,PC3,PC2相连。编程使六个灯按交通灯变化规律亮灭。十字路口交通灯的变化要求:(2)1.南北路口的绿灯和东西方向的红灯同时点亮30秒钟左右;2.南北路口的黄灯闪烁5秒钟,东西路口亮红灯继续亮;3.南北路口的红灯和东西路口的绿灯同时点亮30秒钟左右;4.南北路口的红灯继续亮,同时东西路口的黄灯闪烁若干次。5.如此循环重复。(3)1.利用软件延时子系统实现30秒控制2.利用8253硬件延时实现30秒控制3.利用8253定时,将绿灯亮的剩余时间在两位LED数码管上动态显示出来。5二硬件总体设计各芯片主要管脚的功能如下:1.8255A:(1)8255A端口的连接情况PC7:发光管L7相连,表示南北红灯,其中1表示亮,0表示暗PC6:发光管L6相连,表示南北黄灯,其中1表示亮,0表示暗PC5:发光管L5相连,表示南北绿灯,其中1表示亮,0表示暗PC4:发光管L2相连,表示东西红灯,其中1表示亮,0表示暗PC3:发光管L1相连,表示东西黄灯,其中1表示亮,0表示暗PC2:发光管L0相连,表示东西绿灯,其中1表示亮,0表示暗PC1:和数码管S1端相连,作为片选数码管的十位显示PC0:和数码管S1端相连,作为片选数码管的个位显示同样地还有A端口PA6:与七段数码管的a相连PA5:与七段数码管的b相连PA4:与七段数码管的c相连PA3:与七段数码管的d相连PA2:与七段数码管的e相连PA1:与七段数码管的f相连PA0:与七段数码管的g相连位码驱动输入端S1接+5V,S0、dp接地(2)三个端口均工作于方式0,处于输出状态(3)8255A的A口地址为288H,B口地址为289H,C口为28AH,控制端口地址为28BHGUN288h.abcdefgdp8位数码管S1s0红黄绿红黄绿.L7L6L5L2L1L08位数码管PC7PA6PA5PA4PA3PA2PA1PA08255APC7PC6PC5PC4PC3PC2PC1PC062..8253:(1)8253的CLK0口由于输入一个1MHZ的脉冲所以要求采用串联的方式OUT0与CLK1连接,GATE0与GATE1一起连接到5V的电源上,最终使OUT1口产生1HZ的方波,脉冲输入到8259的IR0端,产生中断,调中断服务子程序。中断请求信号。(2)定时器0:输入信号设为1KHZ,工作在方式3,输出为1000HZ方波,OUT0和计数器1的相连,作为计数器1的输入信号。定时器1:输入信号为OUT0,工作站方式3,计数初值为1000,输出为1HZ方波(3)8253的计数器0的地址是280H,计数器1的地址是281H控制端口地址是283H3.82598253计数器1的OUT1口产生1HZ的方波,脉冲输入到8259的IR0端,产生中断,调中断服务子程序。中断请求信号。5V中断产生的硬件线路连接OUT0GATE08253CLK0OUT1GATE1CLK18259IR1IR07三硬件知识点1介绍本系统所选用的各种芯片的引脚、功能、相应的命令字控制格式。(1).8255A的控制字:(2).端口C按位置1/复0控制(3)8253命令字的格式:D7D6D5D4D3D2D1D000计数器000计数器锁存读命令000方式0D0=0按二进制格式计数01计数器101只读/写低字节001方式1D0=1按BCD码格式计数10计数器210只读/写高字节*10方式211非法11先读/写低字节*11方式3,后读/写高字节100方式4101方式5SC1SC0RW1RW0M2M1M0BCD8四软件总体设计(1)主程序先对各个硬件初始化,在开CPU中断,然后空操作,等待中断。执行低级中断(IR3)时,8255的PC1,PC0口负责选数码管,PA口负责显示数字,通过查表法查出0~9的数码管编码。采用循环扫描方法,人眼即可看到连续的二位数。数码管的显示为中断主函数的死循环,不断地刷新数码管显示,直到产生新的中断,重新的对8255输入新的值,产生新的数码数字的变化。(2)对于红绿灯的状态可以分为六个状态,其中黄灯闪烁为两个状态,为了是LED显示灯状态,通过8255的C端口进行赋值,输出状态的信号。这里需要用到pC端口的位置置1的方法,赋予状态变量的值。(3)流程图的过程94.程序流程图NNYYNNYNYYYN上面只是过程状态的显示,没有详细的说出具体的实现的情况,在下面的源开始8255初始化8255初始化8253初始化Counter=80,mins=30东西绿,南北红Counter40minus=0?Counter10Counter50Counter奇?南北红东西黄南北红东西红南北绿Counter奇?东西红南北黄东西红数码管显示数码管显示Minus=40Minus--;counter--10代码中,可以看出具体的实现步骤和细节的处理过程。在试验的编码过程中调试五源代码:included:\test\io16.inc.datacounterword0flagbyte0minsword0ledtbbyte3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh.codestart:;初始化movax,@data;程序开始点movds,ax;设置ds指向程序数据段的段地址movdx,28bh;8255的初始化moval,80H;8255各口都工作在方式0,都作为输出口outdx,almoval,36h;(00110110定时器0,方式3,二进制计数,初值1000)movdx,283houtdx,almovax,1000movdx,280houtdx,almoval,ahoutdx,almoval,76h;(01110110定时器1,工作方式3,2进制计数,初值1000)movdx,283houtdx,almovax,1000movdx,281houtdx,almoval,ahmovdx,281houtdx,al;中断代码movax,350Bh;获取原中断向量表int21h11pushespushbxcli;关中断pushds;设置新中断向量表movax,segnew0Bmovds,axmovdx,offsetnew0Bmovax,250Bhint21hpopdsinal,21h;读出IMRpushax;保存原IMBandal,0f7h;允许IR3,其他的不变out21h,al;设置新的IMB内容movcounter,80;设置中断的次数初值movflag,0;设置标志位movmins,30sti;开中断circle:;数码管显示movdx,28ahinal,dx;读取C端口testal,00100000B;检测pc5为1否?jnzBegin1;为1,转到Begin1,数码管显示testal,00000100B;检测PC2为1否?jzBegin2;为0,转到Begin2,数码管不显示Begin1:;cmpmins,0;jnes;movmins,40s:movdx,28ah;pc1设为1,控制数码管显示moval,02houtdx,almovax,mins;数码管十位数字显示movbl,10divblmovbl,almovbh,012moval,ledtb[bx]movdx,288houtdx,alcalldelaymovdx,28ah;数码管个位的数字显示moval,01houtdx,almovbl,ahmovbh,0moval,ledtb[bx]movdx,288houtdx,alcalldelay;判断led显示状态Begin2:cmpcounter,50;绿红灯状态30sjastatus1cmpcounter,40;黄灯闪烁5次,红灯状态,共10sjastatus2cmpcounter,10;红绿灯状态30sjastatus3cmpcounter,0jastatus4callstartstatus1:callGreen_Redjmpendclestatus2:movax,countermovbl,2divblcmpah,0jefirstcallYellow_Redmovflag,0jmpendclefirst

1 / 17
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功