课程设计说明书
课程设计名称: 专业课程设计
课程设计题目: 交通灯模拟控制系统
学 院 名 称: 南昌航空大学信息工程学院
专业:电子信息工程 班级:
学号: 姓名:
评分: 教师:
2016年 6 月 29 日
链接:http://pan.baidu.com/s/1eSwu60y 密码:5rxv仿真文件下载
请下载支持
1
专业 课程设计任务书
2015-2016 学年第 2学期 第 16 周- 18 周
题目 交通灯模拟控制系统 设计内容与要求: (1) 用单片机扩展一片 8255,用 12个发光二极管模拟一个十字交叉路口的红、 绿、黄灯,并设置二个紧急放行按键 (2) 正常行驶时,东西或南北方向的灯按绿灯亮 10 秒,黄灯闪烁 2 秒,红灯 亮 12 秒控制 (3) 当东西或南北方向的紧急放行按键按下时,如果禁行方向为红灯,则红灯 继续维持 12 秒;如果禁行方向为绿灯,则立即变为黄灯闪烁 2 秒;如果 禁行方向为黄灯,则黄灯继续维持。 进度安排 第1,2天:查阅资料,确定方案,完成原理图设计及仿真; 第3,4天:领元器件、仪器设备,制作、焊接、调试电路,完成系统的设计; 第5天:检查设计结果、撰写课设报告。 学生姓名: 指导时间: 任务下达 任务完成 指导地点: √ 2.答辩 □ 3.实际操作 □√ 4.其考核方式 1.评阅 □它□ 指导教师
2
系(部)主任 摘 要
十字路口车辆穿梭,行人熙攘,车行车道,人行人道,有条不紊。那么靠什么来 实现这井然秩序呢?靠的就是交通信号灯的自动指挥系统。交通信号灯控制方式很多。 本系统采用 MSC-51 系列单片机 AT89C52 和可编程并行 I/O 接口芯片 8255A 为中心器件来设计交通灯控制器,实现了红绿灯循环点亮黄灯闪烁警示,7279用来显示倒计时间;系统设置有东西方向和南北方向放行的急行键,用于处理紧急事件。设计交通灯控制系统硬件电路与软件控制程序,对硬件电路与软件程序分别进行调试,并进行软硬件联调,要求获得调试成功的实物。本系统设计方便、实用性强、 操作简单、扩展功能强。 关键字:AT89C52 交通灯 8255 倒计时 数码显示
3
目 录
摘 要 ................................................................................................................................................ 3 前 言 ................................................................................................................................................ 5 第一章 设计任务及要求 ................................................................................................................. 6
1.1 设计内容与要求 ................................................................................................................ 6 1.2 课题理解 ............................................................................................................................ 6 第二章 系统设计方案 ..................................................................................................................... 7
2.1 总体设计方案 .................................................................................................................... 7 2.2 硬件电路确定 .................................................................................................................... 7 2.3 交通灯控制系统状态 ........................................................................................................ 8
2.3.1交通灯与PA,PB口的关系 ..................................................................................... 8 2.3.2交通灯各路口状态表 .............................................................................................. 9
第三章 系统的硬件说明 ................................................................................................................. 9
3.1 芯片简介 ............................................................................................................................ 9
3.1.1 AT89C52 .................................................................................................................. 9 3.1.2 74LS373 ................................................................................................................. 10 3.1.3 8255 ........................................................................................................................ 10 3.1.4 7279 ........................................................................................................................ 11 3.2 交通灯系统各部分功能分析及各逻辑器件描述 ......................................................... 12 第四章 软件设计 ........................................................................................................................... 15
4.1 设计要求 .......................................................................................................................... 15 4.2 流程图 .............................................................................................................................. 15 4.3 程序调试 .......................................................................................................................... 18 第五章 调试与测试结果分析 ....................................................................................................... 18
5.1软件调试 ........................................................................................................................... 18 5.2 硬件调试 .......................................................................................................................... 19 5.3 硬件和软件的测试 .......................................................................................................... 19 5.4调试过程中遇到的问题 ................................................................................................... 19 5.5 实验结果分析 .................................................................................................................. 19 5.6 系统实现 .......................................................................................................................... 20 第六章 小结 ................................................................................................................................... 20 参考文献......................................................................................................................................... 21 附 录 ............................................................................................................................................ 22
Ⅰ.元器件清单 ........................................................................................................................ 22 Ⅱ.proteus仿真图 ................................................................................................................... 23 Ⅲ.实物图 ................................................................................................................................ 24 Ⅳ.程序清单 ............................................................................................................................ 25
4
前 言
随着经济的增长和人口的增加,人们生活方式不断变化,人们对交通的需求不断增加。城市中交通拥挤、堵塞现象日趋严重,由此造成巨大的经济与时间损失。资料显示,对日本东京268个主要交叉路口的调查估计表明:每年在交叉路口的时间延误,折成经济报失为20亿美元;而在我国北京市,当早晚交通高峰时,交叉路口处的排队长度竟达1000多米,有的阻车车队从一个交叉路口延伸到另一个交叉路口,这时一辆车为通过一交叉路口,往往需要半个小时以上,时间损失相当可观。 我国是一个历史悠久、人口众多的国家,城市数量随着社会的发展不断增多。随着城市化进程的大大加快,诱发的交通需求急剧增长,供需矛盾不断激化,严重的交通问题也随之而来。人、车、路三者关系的协调,已成为交通管理部门需要解决的重要问题之一。城市交通控制系统是用于城市交通数据监测、交通信号灯控制与交通疏导的计算机综合管理系统,它是现代城市交通监控指挥系统中最重要的组成部分。十字路口车辆穿梭,行人熙攘,车行车道,人行人道,有条不紊,这一切要归功于城市交通控制系统中的交通灯控制系统。交通灯控制系统对于疏导交通流量、提高道路通行能力,减少交通事故有明显效果,使城市交通得以有效管理。
交通灯可以采用PLC、单片机等控制方法。利用单片机实现对交通信号灯的实时控制,只要采用一块单片机,加上简单的接口与驱动放大电路,即可实现,具有成本低,可靠性高的特点。
5
第一章 设计任务及要求
1.1 设计内容与要求
题目: 交通灯模拟控制系统
(1) 用单片机扩展一片 8255,用 12个发光二极管模拟一个十字交叉路口的红、 绿、黄灯,并设置二个紧急放行按键
(2) 正常行驶时,东西或南北方向的灯按绿灯亮 10 秒,黄灯闪烁 3 秒,红灯亮 12 秒控制
(3) 当东西或南北方向的紧急放行按键按下时,如果禁行方向为红灯,则红灯继续维持 12 秒;如果禁行方向为绿灯,则立即变为黄灯闪烁 3 秒;如果禁行方向为黄灯,则黄灯继续维持。
1.2 课题理解
该课题研究的内容主要是单片机,单片机是微型计算机的一个重要分支,也是颇具生命力的机种。单片机微型计算机简称单片机,特别适用于控制领域,故又称为微控制器。随着单片机在各个领域的广泛应用,单片机以其自身的特点,已广泛的应用于智能仪器、工业控制、家用电器、电子玩具等各个领域。这种将单片机嵌入到对象体系中的嵌入式系统已渗透到每个单位、每个家庭和个人。随着社会需求的不断增长,单片机的应用有着广泛的和稳定增长的市场
通常,单片机由单块集成电路芯片构成,内部包含有计算机的基本功能部件:中央处理器、存储器和I/O接口电路等。因此,单片机只需要和适当的软件及外部设备相结合,便可成为一个单片机控制系统。由单片机和交通等模组即可构成交通灯,在单片机内运行适当的程序即构成了交通灯控制系统。
6
第二章 系统设计方案
2.1 总体设计方案
本系统采用 MSC-51 系列单片机 AT89C52 和可编程并行 I/O 接口芯片 8255A 为中心器件来设计交通灯控制器,实现了红绿灯循环点亮黄灯闪烁警示,7279用来显示倒计时间;系统设置有东西方向和南北方向放行的急行键,用于处理紧急事件。
根据课设题目要求可以分析出交通灯系统工作有5个模块:① 单片机AT89C52模块; ② 7279数码显示电路;③ 紧急放行键电路;④ 8255模块;⑤ LED交通灯模块。模块之间关系如图2.1。
单片机 7279数码显示 8255 交通灯 紧急放行键 图2.1
2.2 硬件电路确定
硬件连线:
AT89C52接上晶振和复位电路使其可以工作(如图2.2.1);
8255的数据总线与单片机的数据总线相连,CS接P2.7口,RESET接单片机的RESET,A0,A1接地址线的低两位,这里是通过74LS373锁存输出(如图2.2.2),WR、RD与单片机的WR、RD分
7
图2.2.1
别相连;
紧急按键连89C52的INT0和INT1。 PA.0-PA.5,PB.0-PB.5分别连12个LED灯(如图2.2.3)。
图2.2.2
图2.2.3
2.3 交通灯控制系统状态 2.3.1交通灯与PA,PB口的关系
通过软件编程控制PA口、PB口的高低电平来实现交通灯的亮灭,这里LED灯是共阳极相连的所以需要低电平来点亮,通过调用延时程序来让黄灯闪烁。各个路口交通灯的状态如表2-3-1所示。
8
PA.0 北向红灯 PB.0 东向红灯 PA.1 北向绿灯 PB.1 东向绿灯 PA.2 北向黄灯 PB.2 东向黄灯 PA.3 西向红灯 PB.3 南向黄灯 PA.4 西向绿灯 PB.4 南向绿灯 PA.5 西向黄灯 PB.5 南向红灯 表2-3-1
2.3.2交通灯各路口状态表
东西干道 绿灯亮,允许通行 黄灯闪烁,停车 红灯亮,禁止通行 红灯亮,禁止通行 南北干道 红灯亮,禁止通行 红灯亮,禁止通行 绿灯亮,允许通行 黄灯闪烁,停车 表2-3-2交通灯各路口状态表
当东西方向或南北方向遇到紧急情况时,可按下相应的急性键作相应的处理:如果禁行方向为红灯,则红灯继续维持12秒;如果禁行方向为绿灯,则立即变为黄灯闪烁3秒;如果禁行方向为黄灯,则黄灯继续维持。
时间 10秒 2秒 10秒 2秒 第三章 系统的硬件说明
3.1 芯片简介 3.1.1 AT89C52
AT89C52(如图3.1.1)是一个低电压,高性能CMOS8位单片机,片内含8kbytes的可反复擦写的Flash只读程序存储器和256bytes的随机存取数据存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准
9
AT89C5219XTAL1P0.0/AD0P0.1/AD1P0.2/AD2P0.3/AD3P0.4/AD4P0.5/AD5P0.6/AD6P0.7/AD7P2.0/A8P2.1/A9P2.2/A10P2.3/A11P2.4/A12P2.5/A13P2.6/A14P2.7/A15P3.0/RXDP3.1/TXDP3.2/INT0P3.3/INT1P3.4/T0P3.5/T1P3.6/WRP3.7/RD39383736353433322122232425262728101112131415161718XTAL29RST293031PSENALEEA12345678P1.0/T2P1.1/T2EXP1.2P1.3P1.4P1.5P1.6P1.7AT89C52图3.1.1
MCS-51指令系统,片内置通用8位中央处理器和Flash存储单元,AT89C52单片机在电子行业中有着广泛的应用。AT89C52除了有AT89C51所有的定时/计数器0 和定时/计数器1 外,还增加了一个定时/计数器2。
3.1.2 74LS373
8D锁存器74LS373(如图3.1.2) OE为数据打入端:当OE为“1”时,
图3.1.2
锁存器输出状态(1Q~8Q)同输入状态(1D~8D);当OE由“1”变“0”时,数据打入锁存器中。
82553.1.3 8255
8255(如图3.1.3)是Intel公司生产的可编程并行I/O接口芯片,有3个8位并行I/O口。具有3个通道3种工作方式的可编程并行接口芯片(40引脚)。 其各口功能可由软件选择,使用灵活,通用性强。8255可作为单片机与多种外设连接时的中间接口电路。
8255作为主机与外设的连接芯片,必须提供与主机相连的3个总线接口,即数据线、地址线、控制线接口。同时必须具有与外设连接的接口A、B、C口。由于8255可编程,所以
343332313029282753698356D0D1D2D3D4D5D6D7RDWRA0A1RESETCSPA0PA1PA2PA3PA4PA5PA6PA7PB0PB1PB2PB3PB4PB5PB6PB7PC0PC1PC2PC3PC4PC5PC6PC7432140393837181920212223242514151617131211108255A图3.1.3
必须具有逻辑控制部分,因而8255内部结构分为3个部分:与CPU连接部分、与外设连接部分、控制部分。
10
3.1.4 7279
HD7279A(如图3.1.4)是一片具串行接口的,可同时驱动8位共阴式数码管的智能显示驱动芯片,该芯片同时还可以连接多达64键的键盘矩阵,单片即可完成LED显示,键盘接口的全部功能 (1)控制指令
HD7279A的控制指令分为二大类——纯指令和带有数据的指令(注:这里只是写出了此次编程需要的知识)。 A. 纯指令
B.带有数据的指令
表3.1下载数据且按方式0译码 D7 1 D6 0 D5 0 D4 0 D3 0 D2 D1 D0 D7 D6 D5 D4 D3 D2 D1 D0 图3.1.4
aaa DX X X dddd2 1 0 P 3 2 1 0 命令由二字节组成,前半部分为指令,其中a2,a1,a0为位地址。d0-d3为数据,收到此指令时,按以下规则进行译码。 0000:显0 1001:显9 1010:显 - 1111:显空白
小数点的显示由DP位控制:DP=1时,小数点显示,DP=0时,小数点不显示。
图3.1.5 7279时序图
11
说明:7279的显示及键盘程序是严格按照时序图得到的。
3.2 交通灯系统各部分功能分析及各逻辑器件描述
(1) 7279键盘及显示电路(如图3.2.1)
12
图3.2.1
(2) 8255的管理交通灯电路(如图3.2.2)
13
35893652728293031323334D7D6D5D4D3D2D1D0373839401234PA7PA6PA5PA4PA3PA2PA1PA06RESETA1A0WRRDCSU28255APC7PC6PC5PC4PC3PC2PC1PC010111213171615142524232221201918PB7PB6PB5PB4PB3PB2PB1PB0D1LED-REDD2LED-GREEND3LED-YELLOWR11510R16510R15510D10LED-REDR5510R8510VCCD7LED-REDD11LED-GREENR6510R9510D8LED-GREEND12R7R10510D9LED-YELLOW510LED-YELLOWR12510R13510R14510D4LED-REDD5LED-GREEND6LED-YELLOW 图3.2.2
(3) 紧急通行键电路(如图3.2.3)
键按下和释放时存在着机械抖动,其对应的列线电压波形如图示,通常抖动时间为5-10mS。
图3.2.3
这里需要两个按键为了保证CPU对键的闭合只作一次处理,必须消除抖动有两种解决方法一种是软件消抖,一种是硬件消抖(如图3.2.3.1)。因为这里将两个紧急通行键与89C52的INT0和INT1相连,用外部中断的方式来判断是否有键按下,硬件消抖比软件更方便所以这里使用硬件消抖。利用电容的放电延时特性做到
14
GNDR210KINT0/INT1C50.1u图3.2.3.1 消除抖动的作用。
第四章 软件设计
软件在硬件平台上构筑,完成各部分硬件的控制和协调。系统功能是由硬件和软件共同实现的,由于软件的可伸缩性,最终实现的系统功能可强可弱,差别可能很大。因此,软件是本系统的灵魂。软件采用模块化设计方法,不仅易于编程和调试,也可减小软件故障率和提高软件的可靠性。同时,对软件进行全面测试也是检验错误排除故障的重要手段。
4.1 设计要求
(1) 用单片机扩展一片 8255,用 12个发光二极管模拟一个十字交叉路口的红、 绿、黄灯,并设置二个紧急放行按键
(2) 正常行驶时,东西或南北方向的灯按绿灯亮 10 秒,黄灯闪烁 3 秒,红灯亮 12 秒控制
(3) 当东西或南北方向的紧急放行按键按下时,如果禁行方向为红灯,则红灯继续维持 12 秒;如果禁行方向为绿灯,则立即变为黄灯闪烁 3 秒;如果禁行方向为黄灯,则黄灯继续维持。
4.2 流程图
软件总体设计主要完成各部分的软件控制和协调。本系统主程序模块主要完成的工作是对系统的初始化,等待外部中断,发送显示数据,以及根据所需要的功能进行相应的操作。其主流程图如图4-1所示。
15
开始 图4-1 中断初始化,定时器初始化,8255初始化 设置标志位01H,02H,03H,04H并清零; 设置东西和南北路口计时值 设置中断优先级IP,开中断,启动计数 赋初始绿灯和红灯时间值 8255控制交通灯东西方向绿,南北方向红 否 01H=?1 是 赋初始黄灯和红灯时间值 8255控制交通灯东西黄(调用延时使其闪烁),南北红 否 02H=?1 是 赋初始红灯和绿灯时间值 8255控制交通灯东西方向红,南北方向绿 否 03H=?1 是 赋初始红灯和黄灯时间值 8255控制交通灯东西红,南北黄(调用延时使其闪烁) 否 04H=?1 是 01H,02H,03H,04H清零 16 T0中断程序流程图如图4-2所示。
01H=?1 是 绿灯计时减一 减到0 是 01H置1 T0中断 保护现场,设置计数初值 是 是否到1s 否 否 02H=?1 是 黄灯计时减一 否 减到0 是 02H置1 图4-2 否 否 减到0 是 03H置1 否 03H=?1 是 红灯计时减一 否 减到0 是 04H置1 否 04H=?是 红灯计时减否
图4-2
INT0,INT1中断程序流程图如图4-3所示。
INT0和INT1流程图基本一致,INT0中断是因为管理东西紧急放行键按下触发
17
调用7279显示程序 恢复现场 中断返回 的,INT1中断是因为管理南北紧急放行键按下触发的。
INT0/INT1中断 保护现场 判断此时交通灯所处状态 修改显示 恢复现场 中断返回 图4-3
4.3 程序调试
有了上面的程序流程图,程序的大致构架有了,编写程序中需要非常仔细,考虑好每一个功能、子程序之间的逻辑关系。本程序尤其要控制中断程序在主程序中执行的位置,所以要通过设置条件进行判断选择。
第五章 调试与测试结果分析
5.1软件调试
软件调试主要是利用proteus仿真软件完成电路的搭建并加载在keil c中编译生成的文件,运行以发现设计中的错误并及时正。
18
5.2 硬件调试
在软件仿真成功的基础上,领取元器件焊接实体电路。硬件调试主要是检查是否有短路、断路、虚焊等,所以在焊接电路时便一边用万用表检测是否存在这些问题。焊接完成后,使用单片机开发板将程序下载到单片机中,然后连接电源观察系统工作现象。
5.3 硬件和软件的测试
硬件的检查是根据proteus仿真软件上的电平显示对一些关键引脚的电平用万用表进行测试看是否正常。比如,89C52、8255、74LS373的VCC和GND电平是否正常,74LS373的OE一直为低电平等。
软件的测试是先通过keil c软件编译检查是否有语法错误,再进行软件调试对一些存储单元和标志位查看是否有错,最后将程序下载到单片机中硬件调试看是否正常工作。
5.4调试过程中遇到的问题
(1)向单片机中下载程序后发现交通灯一个都没有亮,检查线路后发现8255的REST引脚悬空了,把它接地就可以了。
(2)灯的亮灭没有按照预想的规律去实现,之后通过改写程序中对PA PB口的赋值,将这一问题解决了。
(3)黄灯的闪烁太快,之后通过改写相应程序中调用的延时程序加大它的延时时间,使其黄灯的闪烁正常。
5.5 实验结果分析
开始运行时,系统在工作状态为东西方向为绿,南北方向为红,红灯保持12秒,绿灯保持10秒,并不断递减,当绿灯减到0时,东西方向路口由绿灯切换成黄灯,黄灯闪烁时间为2秒,2秒过后,东西方向转为红灯,南北方向转为绿灯,并不断递减,当绿灯减到0时,南北方向路口由绿等切换成黄灯,黄灯闪
19
烁时间为2秒,之后的情况不断重复。当东西或南北方向的紧急放行按键按下时,对于放行方向若为红灯,则禁行方向变黄灯闪烁两秒后变红灯,放行方向变绿灯维持10秒。对于放行方向若为绿灯,则绿灯继续维持10秒;则禁行方向红灯继续维持12秒。通过以上结果可以看出,该结果与实验要求一致,此次试验是完全正确的。
5.6 系统实现
本系统的代码使用MCS-51汇编语言编写,所以可以在KEIL C软件下编写 本次课设使用了自己焊制的单片机开发板在此基础上扩展外围芯片完成的。
第六章 小结
此次课程设计实训历时3周,我们遵循分工安排实现各个模块。 本次课程设计先进行最小系统板制作再进行模块训练最后课程设计,有梯度的完成各个任务,在这个过程中熟悉操作各部件的功能,通过阅读书籍查阅资料,一段段编写模块功能,实现一些小的模块操作,再之后是如何将各模块的功能结合起来,完成一个系统功能。
通过这次课程设计,使我得到了一次用专业知识、专业技能分析和解决问题的全面系统的锻炼。使我在单片机的基本原理、单片机应用系统开发过程,以及在常用编程设计思路技巧(特别是汇编语言)的掌握方面都能向前迈了一大步,为日后成为合格的应用型人才打下良好的基础。另外综合课程设计让我们把以前学习到的知识得到巩固和进一步的提高认识,对已有知识有了更进一步的理解和掌握。
当然这个过程中遇到了很多问题,在操作过程中,总出现一些连线问题和硬件不能正常工作等问题,譬如进入中断程序时一旦联线出现问题无法确保到底是程序出错抑或是连线出错等问题,影响了整个设计的进度,之后在每次实践前都运行一下最基本的程序,试看结果是否符合实际。整个设计中,总会出现一些代
20
码运行不符合实际的问题,通过细心的观察结果和分析代码,找出代码在执行中出现的混乱现象。 此次实践使我们把以前学到的知识加以进一步巩固和提高,对已有的知识有了更进一步的理解和认识。组员与组员之间碰到问题时一起讨论,对比查找相关资料,多次尝试解决是我们得以完成的最主要原因。 回想这次课程设计,我们发觉课上所学知识和真正应用系统有比较大的差别,对于实时控制系统明显感觉力不从心。但我清楚这是一门只有靠不断实践不断失败不断积累不断学习才能获取成果的课程。今后对本门课程的学习会吸取本次经验教训让自己在学习中真正进步。
参考文献
[1] 张鑫.单片机原理及应用.北京:电子工业出版社,2005. [2] 杨居义.单片机课程设计指导.北京:清华大学出版社,2009. [3] 张有德.单片微机原理应用与实验.上海:复旦大学出版社,1995.
[4] 万福君.MCS-51单片机原理、系统设计与应用.北京:清华大学出版社,2008. [5] 朱清慧等.Proteus教程——电子线路设计、制版与仿真.北京:清华大学出 版社,2008.
21
附 录
Ⅰ.元器件清单
=================
Design: G:\\simulation\\protues\\交通灯.DSN Created: 16/06/23 Modified: 16/06/26
QTY PART-REFS VALUE CODE --- --------- ----- ---- Resistors ---------
2 R1,R2 10K Digikey 311-10KADKR-ND 1 R3 200 Digikey 311-200HDKR-ND 1 R4 10K Digikey 311-200HDKR-ND 12 R5-R16 510
Capacitors ----------
2 C1,C2 30pF Digikey PCC300CQTR-ND 1 C3 10uf Digikey 311-1047-1-ND 2 C4,C5 0.1uf Digikey 311-1047-1-ND
Integrated Circuits -------------------
1 U1 AT89C52 1 U2 8255A 1 U3 74LS373
Diodes ------
4 D1,D4,D7,D10 LED-RED 4 D2,D5,D8,D11 LED-GREEN 4 D3,D6,D9,D12 LED-YELLOW
Miscellaneous -------------
1 X1 CRYSTAL
22
Ⅱ.proteus仿真图
C1U130pF19U3P0.0/AD0P0.1/AD1P0.2/AD2P0.3/AD3P0.4/AD4P0.5/AD5P0.6/AD6P0.7/AD7P2.0/A8P2.1/A9P2.2/A10P2.3/A11P2.4/A12P2.5/A13P2.6/A14P2.7/A15P3.0/RXDP3.1/TXDP3.2/INT0P3.3/INT1P3.4/T0P3.5/T1P3.6/WRP3.7/RD393837363534333221222324252627281011121314151617347813141718111D0D1D2D3D4D5D6D7OELE74LS373Q0Q1Q2Q3Q4Q5Q6Q7256912151619X1C230pFCRYSTAL18XTAL1XTAL235893659RST2728293031323334D7D6D5D4D3D2D1D0373839401234PA7PA6PA5PA4PA3PA2PA1PA06C3VCCRESETA1A0WRRDCSU28255A10ufR3R420010K293031PSENALEEAPC7PC6PC5PC4PC3PC2PC1PC0101112131716151412345678P1.0/T2P1.1/T2EXP1.2P1.3P1.4P1.5P1.6P1.7AT89C52VCCR210KR110KC50.1uC40.1u2524232221201918PB7PB6PB5PB4PB3PB2PB1PB0D1LED-REDD2LED-GREEND3LED-YELLOWR11510GNDR16510R15510D10LED-REDR5510R8510VCCD7LED-REDD11LED-GREENR6510R9510D8LED-GREEND12R7R10510D9LED-YELLOW510LED-YELLOWR12510R13510R14510D4LED-REDD5LED-GREEND6LED-YELLOW 注:因为proteus仿真软件中没有7279这个芯片所以在仿真图中没有展示。
23
Ⅲ.实物图
24
Ⅳ.程序清单
ORG 0000H LJMP MAIN ORG 0003H LJMP INT_W0 ORG 000BH LJMP INT_T0 ORG 0013H LJMP INT_W1
;**************************************** ;1.东西绿,南北红10s ;2.东西黄,南北红2s ;3.东西红,南北绿10s ;4.东西红,南北黄2s
;PA.0~PA.2 北 红黄绿;PA.3~P.5 西 黄绿红;PB.0~PB.2 东 红绿黄;PB.3~PB.5 南 黄绿红
;**************************************** MAIN:MOV SP,#60H CLR 01H ;状态一的标志位 CLR 02H ;状态二的标志位 CLR 03H ;状态三的标志位 CLR 04H ;状态四的标志位 MOV 4AH,#12H MOV 4BH,#10H MOV 4CH,#02H MOV A,4BH MOV 40H,A ;40H存东西的时间 MOV A,4AH MOV 41H,A ;41H存南北的时间 MOV R7,#00H ;计50ms次数 MOV DPTR,#7FFFH MOV A,#80H ;8255控制字 MOVX @DPTR,A MOV TMOD,#01H MOV TH0,#4CH MOV TL0,#00H MOV IE,#87H MOV IP,#04H ;INT1中断优先级最高 SETB TR0
;*********************************** L0:MOV A,4BH ;每次进入某一状态都要赋初值时间值 MOV 40H,A MOV A,4AH
25
MOV 41H,A
L1:MOV DPTR,#7FFDH MOV A,#0DDH MOVX @DPTR,A MOV DPTR,#7FFCH MOV A,#0EEH
MOVX @DPTR,A JNB 01H,L1 MOV 40H,4CH MOV 41H,4CH
L2:MOV DPTR,#7FFDH MOV A,#0DBH MOVX @DPTR,A MOV DPTR,#7FFCH MOV A,#0DEH MOVX @DPTR,A
LCALL DELY MOV DPTR,#7FFDH MOV A,#0DFH MOVX @DPTR,A MOV DPTR,#7FFCH MOV A,#0FEH MOVX @DPTR,A LCALL DELY
JNB 02H,L2 MOV A,4AH
MOV 40H,A MOV A,4BH MOV 41H,A
L3:MOV DPTR,#7FFDH MOV A,#0EEH MOVX @DPTR,A MOV DPTR,#7FFCH MOV A,#0F5H
MOVX @DPTR,A JNB 03H,L3 MOV 40H,4CH MOV 41H,4CH
L4:MOV DPTR,#7FFDH MOV A,#0F6H MOVX @DPTR,A MOV DPTR,#7FFCH
;东西绿,南北红 ;等待10s倒计时结束 ;东西黄,南北红 让黄灯闪烁 ;等待2s倒计时结束 ;东西红,南北绿 ;等待10s倒计时结束 26
; MOV A,#0F3H
MOVX @DPTR,A ;东西红,南北黄
LCALL DELY ;让黄灯闪烁 MOV DPTR,#7FFDH MOV A,#0FEH MOVX @DPTR,A MOV DPTR,#7FFCH MOV A,#0F7H MOVX @DPTR,A LCALL DELY
JNB 04H,L4 ;等待2s倒计时结束 CLR 01H CLR 02H CLR 03H CLR 04H LJMP L0
;*************************************
;************************************* INT_T0:PUSH ACC ;T0中断程序 MOV TH0,#4CH MOV TL0,#00H INC R7 CJNE R7,#14H,NT1 NT1:JC NT0 ;记满一秒 MOV R7,#00H NT7:JB 01H,NT2 MOV A,40H CJNE A,#10H,N1 CLR C SUBB A,#06H ;BCD减法 N1:DEC A ;减一 MOV 40H,A MOV A,41H CJNE A,#10H,N2 CLR C SUBB A,#06H N2:DEC A MOV 41H,A
27
MOV A,40H JNZ NT0 SETB 01H ;进入状态2 LJMP NT0 NT2:JB 02H,NT5 MOV A,40H DEC A MOV 41H,A MOV 40H,A JNZ NT0 SETB 02H ;进入状态3 LJMP NT0 NT5:JB 03H,NT6 MOV A,40H CJNE A,#10H,N3 CLR C SUBB A,#06H N3:DEC A MOV 40H,A MOV A,41H CJNE A,#10H,N4 CLR C SUBB A,#06H N4:DEC A MOV 41H,A MOV A,41H JNZ NT0 SETB 03H ;进入状态4 LJMP NT0 NT6:JB 04H,NT7 MOV A,41H DEC A MOV 40H,A MOV 41H,A JNZ NT0 SETB 04H ;进入状态1 NT0:LCALL DISP POP ACC RETI
;************************************* INT_W0:PUSH PSW ;东西紧急禁行健按下,外部中断0子程序
28
PUSH ACC SETB PSW.3 ;工作在1区 CLR PSW.4 JNB 01H,W1 JNB 02H,W2 JNB 03H,W3 JNB 04H,W3 W1:SETB 01H LJMP W0 W2:MOV 40H,#09H MOV 41H,#09H LJMP W0 W3:MOV 40H,4AH MOV 41H,4AH W0:POP ACC POP PSW RETI
;************************************* INT_W1:PUSH PSW ;南北紧急禁行健按下,外部中断1子程序 PUSH ACC SETB PSW.4 ;工作在2区 CLR PSW.3 JNB 01H,TW1 JNB 02H,TW1 JNB 03H,TW2 JNB 04H,TW3 TW1:MOV 41H,4AH MOV 40H,4AH LJMP TW0 TW2:SETB 03H LJMP TW0
TW3:MOV 41H,#09H MOV 40H,#09H TW0:POP ACC POP PSW RETI
;************************************* DISP: ;显示子程序,显缓区为30H~37H MOV A,40H SWAP A ANL A,#0FH
29
MOV 30H,A MOV 32H,A MOV A,40H ANL A,#0FH MOV 31H,A MOV 33H,A MOV A,41H SWAP A ANL A,#0FH MOV 34H,A MOV 36H,A MOV A,41H ANL A,#0FH MOV 35H,A MOV 37H,A LCALL DTR RET
DTR:MOV R4,#08H MOV R0,#30H MOV R1,#0C8H DT1:CLR P1.0
MOV R6,#18H DT2:DJNZ R6,DT2 MOV A,R1 ACALL STFS MOV R6,#0CH DT3:DJNZ R6,DT3 MOV A,@R0 ACALL STFS MOV R6,#04H DT4:DJNZ R6,DT4 SETB P1.0 INC R0 INC R1
DJNZ R4,DT1 RET
STFS:MOV R5,#08H ST1:RLC A
MOV P1.2,C SETB P1.1 MOV R6,#04H ST2:DJNZ R6,ST2
;7279显示发送子程序
30
;7279
因篇幅问题不能全部显示,请点此查看更多更全内容