重庆三峡学院课程设计报告书题目:基于单片机的交通灯设计学院(系):学号:学生姓名:指导教师:教师职称:制作日期2011年12月25日目录1.设计要求---------------------------------------------------- 012.系统设计方案---------------------------------------------- 013.硬件电路设计---------------------------------------------- 024.软件系统设计---------------------------------------------- 065.仿真与调试------------------------------------------------- 086.实训体会---------------------------------------------------- 137.附录---------------------------------------------------------- 14摘要单片微型计算机简称单片机,即把组成微型计算机的各个功能部件,如中央处理器(CPU )、随机存储器(RAM )、只读存储器(ROM )、I/O 接口电路、定时器/计数器以及串行接口等集成在一块芯片中构成一个完整的微型计算机。
设计一个基于单片机的交通灯设计。
主要包括AT89c51单片机、复位电路、驱动控制芯片74LS240和74LS07及外中断等。
实现控制各个路口的交通灯变化,通过外中断起到紧急开关作用,加上复位电路,使其恢复成初始状态。
本设计主控芯片采用AT89C51单片机,配合其他基本设备完成设计。
采用C51语言进行编程,编程后利用KEIL C51进行编译,生成对应用的HEX 文件,采用PROETUS 软件进行系统硬件的仿真模拟,检验功能。
模拟试验成功后,焊接硬件电路,通过ISP 下载线将HEX 文件载入单片机内,完成整个设计进行实际操作,并实际记录单片机工作情况。
设计一个基于单片机的交通灯设计。
主要包括AT89c51单片机、复位电路、驱动控制芯片74LS240和74LS07及外中断等。
实现控制各个路口的交通灯变化,通过外中断起到紧急开关作用,加上复位电路,使其恢复成初始状态。
1. 设计要求设计一个基本十字路口交通灯管理系统。
初始化4个路口红灯全亮,2秒后切换为东西路口红灯亮,南北绿灯亮,持续60秒,红绿灯切换过渡时红灯依旧亮,绿灯亮转变为黄灯闪烁5次,过程时间为5秒,然后切换为南北路口红灯亮,东西路口绿灯亮,持续时间60秒,过渡过程切换方式同上,5秒后,再次切换为东西路口红灯亮,南北绿灯亮。
如此周而复始。
2.系统设计图利用单片机完成交通信号灯控制器的设计,该交通信号灯控制器由一条主干道和一条支干道汇合成十字路口,在每个入口处设置红、绿、黄三色信号灯,红灯亮禁止通行,绿灯亮南东允许通行,黄灯亮则给行驶中的车辆有时间停在禁行线外。
用红、绿、黄发光二极管作信号灯。
如图上图所示。
(1)处于常允许通行的状态,道路有车来时才允许通行。
南北亮绿灯时,东西亮红灯;东西亮绿灯时,南北亮红灯。
(2)道路上均有车时,两者交替允许通行,每次放行60秒,黄灯闪烁5秒,设立60秒、5秒计时、显示电路。
2.2方案设计单片机可选用AT89C51,它与8051系列单片机全兼容,但其内部带有4KB的FLASH ROM,设计时无需外接程序存储器,为设计和调试带来极大的方便。
南北向和东西向各采用2个数码管计时,同时需要对该方向的指示灯的点亮时间进行倒计时。
实验程序框图3.硬件电路设计3.1复位部分电路设计复位引脚RST通过一个斯密特触发器与复位电路相连,斯密特触发器用来抑制噪声,在每个机器周期的S5P2,斯密特触发器的输出电平由复位电路采样一次,然后才能得到内部复位操作所需要的信号。
复位电路通常采用上电自动复位和按钮复位两种方式。
该设计复位电容采用10uF ,电阻1000欧,通过电阻回路放电,使电压逐渐降为零,从而实现了复位功能。
复位电路3.2 时钟部分电路设计时钟电路用于产生MCS-51单片机工作时所必须的时钟控制信号。
其内部电路在时钟信号控制下,严格地按时序执行指令进行工作。
在执行指令时,CPU 首先要到程序存储器中取出需要执行的指令操作码,然后译码,并由时序电路产生一系列控制信号去完成指令所规定操作。
本设计采用12MHz 晶振和两个30Pf 瓷片电容,他们构成一个稳定的自激振荡器。
该电容的大小影响振荡器频率的高低、振荡器的稳定性和起振的快速性。
为单片机提供标准时钟。
其中两个瓷片电容起微调作用。
ATMEL 公司生产的AT89C51单片机它是硬件电路的核心部分,在由多片单片机组成的系统中,为了各单片机之间的时钟信号同步,应当引入唯一的公用外部脉冲信号作为各单片机的振荡脉冲,外部脉冲信号一般不低于33MHz 的方波。
3C13晶振电路3.3 显示部分电路设计动态显示的特点是将所有位数码管的段选线并联在一起,由位选线控制是哪一位数码管有效。
这样一来,就没有必要每一位数码管配一个锁存器,从而大大地简化了硬件电路。
选亮数码管采用动态扫描显示。
所谓动态扫描显示即轮流向各位数码管送出字形码和相应的位选,利用发光管的余辉和人眼视觉暂留作用,使人的感觉好像各位数码管同时都在显示。
显示电路设计3.4 硬件连接示意图7407管脚图74LS240管脚图四位一体数码管管教图89c51管脚图4.软件系统设计4.1 应用系统软件设计要求在进行应用系统的总体设计时,软件设计与硬件设计应统一考虑,相结合进行。
当系统的电路设计定型以后,软件的任务也就明确了。
一般来说,软件的功能可分为两大类。
一类是执行软件,它能完成各种实质性的功能,如测量计算、显示、打印、输出控制等;另一类是监控软件,它是专门用来协调各执行模块和操作者的关系,在系统软件中充当组织协调角色。
我们设计时,应从以下几个方面考虑:1)根据软件功能的要求,将系统软件分为若干个相对独立的部分。
设计出合理的软件总体结构,使其清晰、简捷、流程合理。
2)各功能程序实行模块化、子程序化。
3)在编写应用软件之前,应绘制出程序流程图。
4)要合理分配系统资源,包括ROM、RAM、定时器/计数器、中断源等。
本设计采用了模块化设计,主要由主程序模块、功能实现模块两大部分模块组成。
4.2 主程序模块设计主程序流程图如下图所示:交通灯控制系统设计思路P1口:P1. 5—P1.0 红黄绿红黄绿对应口低电平灯亮控制灯程序流程图如下:程序见附录:程序清单5. 仿真与调试5.1软件仿真接硬件图接线,为了确保东西南北红黄绿灯能够对应显示,实验时,对P1口的接线做了调整。
即,P1.0接L1,P1.1接L2,P1.2接L3,P1.3接L4,P1.4接L5,P1.5接L6。
本系统由单片机系统、LED 显示、交通灯演示系统组成。
最后,系统要求实现如下的交通灯的功能:1)接通电源后,将显示模块的程序编译后烧进单片机电路板里,如若看到红灯全亮两秒后,跳转为一红一绿,码表计时60秒;2)在绿灯转为红灯时,要求黄灯先亮,才能变换运行车道;3)黄灯亮时,要求每秒闪亮一次,闪烁5次,计时5秒;4)黄灯闪烁后跳转为红灯,另一方向红灯则跳为绿灯;5)计时60秒,绿灯再次跳转为黄灯,闪烁,红灯跳转为红灯,车辆放行;6)在交通灯运行正常的情况下,将P3.2口所接的控制开关,拨为低电平,交通灯全部跳转为红灯亮,可供紧急车辆通行;7)照此循环下去没有问题就证明该显示模块的测试成功Pro仿真初始状态第一状态黄灯状态黄灯后下一状态按下外中断的显示按下复位的状态执行前执行后5.2硬件仿真6、结论本系统采用MSC_51系列单片机为中心器件来设计交通灯控制器,实现了能根据实际车流量通过单片机芯片的P2口设置红、绿灯燃亮时间功能;P2口和P3口外接数码管来显示各个信号灯的时间。
系统设计简单、实用性强、操作简单、程序设计简单。
系统不足之处不能控制车的左、右转及自动根据车流量改变红绿灯时间等。
这是由于本身地理位置以及车流量情况所定,如果有需要可以设计扩充原程序来实现。
本次课程设计让我得到了一次用专业知识、专业技能技能分析和解决问题全面系统的锻炼。
让我在单片机的基本原理、单片机应用系统开发过程,以及在常用编程设计思路技巧的掌握方面都能向前迈了一大步,为了日后成为合格的应用型人才打下了良好的基础。
附录1:程序清单;主要子程序名称:;MAIN:主程序;SSEE:六位数码管动态扫描子程序;PTDS0:拆字子程序;CLOCK:T0中断服务子程序;MBXS: 码表刷新判断子程序;JTDZT: 交通灯状态判断子程序;JJCL: 紧急车辆通行子程序;ZMPD: 整秒到判断子程序;HBCD: 单字节十六进制整数转换为单字节BCD码整数;**************************************;内存单元及状态标志定义ZT0 EQU 0F6H ;状态0,四个路口红灯亮==2秒ZT1 EQU 0DEH ;东西红南北绿==60秒ZT2_1 EQU 0EEH ;东西红南北黄ZT2_2 EQU 0FEH ;东西红南北全灭==5秒ZT3 EQU 0F3H ;东西绿南北红==60秒ZT4_1 EQU 0F5H ;东西黄南北红ZT4_2 EQU 0F7H ;南北红南北全灭==5秒STATE EQU 40H ;状态标志单元MARK BIT 00H ;黄灯闪烁标志位XS0 EQU 79H ;显示缓冲单元0,对应最右边数码管XS1 EQU 7AHXS2 EQU 7BHXS3 EQU 7CH ;显示缓冲单元4,对应最左边数码管;4个数码管;XS4 EQU 7DH;XS5 EQU 7EH ;显示缓冲单元5,对应最左边数码管TIME1 EQU 46H ; 秒单元(十六进制)TIME2 EQU 41H ; 秒单元(十进制BCD码);**************************************ORG 0LJMP MAINORG 0003H ;外中断0(紧急车辆)处理子程序入口LJMP JJCLORG 000BH ;定时器T0中断入口LJMP CLOCK;**************************************;标号:MAIN。
主程序。
完成系统初始化,循环调用数码管扫描子程序,拆字子程序,等待定时中断。
;**************************************ORG 0030HMAIN: MOV SP,#60H ;调整堆栈指针 MODIFY =70HMOV PSW ,#00H ;设置工作寄存器为0区;MOV P2,#0FFH ;高位地址线为0FFHLCALL CSH ;调初始化子程序LOOP:LCALL SSEE ;调动态扫描子程序LCALL PTDS0 ;调拆字子程序SJMP LOOP;**************************************;系统初始化子程序;**************************************CSH: ;MOV XS5,#10H ;显示缓冲区全部送“灭”代码序号;MOV XS4,#10HMOV XS3,#0AH ;显示缓冲区全部送“灭”代码序号MOV XS2,#0AHMOV XS1,#0AHMOV XS0,#0AHMOV TIME1 , #0002 ;状态0持续为2sMOV TIME2 , #0002;MOV A,#81H ;8255初始化,PA口和PB口为输出口;MOV DPTR,#0FF23H;MOVX @DPTR,AMOV TMOD,#01H ;定时器T0,方式1MOV TL0,#0B0H ;定时50msMOV TH0,#3CHCLR IT0 ;设置外中断0为电平方式工作SETB PX0 ;设置外中断0为高级中断ORL IE,#83H ;开放外中断0和T0中断MOV STATE,#00H ;进入状态0MOV P1, #ZT0 ;状态0,四个路口红灯亮MOV R6, #00HMOV R5, #00H ;软件计数器初始化SETB TR0 ;启动T0RET;**************************************;标号CLOCK,T0中断服务程序。