1、摘要近年来,随着科技的飞速发展,单片机的应用正在不断深入,同时带动传统控制检测技术日益更新。在实时检测和自动控制的单片机应用系统中,单片机往往作为一个核心部件来使用,正在不断的应用到实际生活中,并且根据具体硬件结构软硬件结合,加以完善。十字路口车辆穿梭,行人熙攘,车行车道,人行人道,有条不紊。那么靠什么来实现这井然秩序呢?靠的就是交通信号灯的自动指挥系统。交通信号灯控制方式很多。本系统采用MCS-51 系列单片机 STC89C51 为中心器件来设计交通灯控制器,实现了通过信号灯对路面状况的智能控制。从一定程度上解决了交通路口堵塞、车辆停车等待时间不合理、急车强通等问题。系统具有结构简单、可靠性
2、高、成本低、实时性好、安装维护方便等优点,有广泛的应用前景。关键词:交通灯 单片机 数码管一 .总体设计思路1.1 设计目的及思路设计目的了解交通灯管理的基本工作原理,熟练掌握 STC89C51 的工作原理和应用编程,熟悉STC89C51 单片机并行接口的各种工作方式和应用,并了解计数器/定时器的工作方式和应用编程外部中断的方法,掌握多位 LED 显示问题的解决。设计思路(1)分析目前交通路口的基本控制技术,提出自己的交通控制的初步方案。(2)确定系统交通控制的总体设计,增加了倒计时显示提示。(3)进行显示电路。(4)进行软件系统的设计。1.2 实际交通灯显示时序及状态转换的理论分析图 1 所
3、示为红绿灯转换的状态图。S1 S2图 1 红绿灯状态转换图表 1 十字路口指示灯燃亮方案说明:(1)当东西方向为红灯,此道车辆禁止通行,东西道行人可通过;南北道为绿灯,此道车辆通过,行人禁止通行。时间为 60 秒。 (2)黄灯闪烁 5 秒,警示车辆和行人红、绿灯的状态即将切换。 (3)当东西方向为绿灯,此道车辆通行;南北方向为红灯,南北道车辆禁止通过,行人通行。时间为 80 秒。 东西方向车流大 通行时间长。 (4)这样如上表的时间和红、绿、黄出现的顺序依次出现这样行人和车辆就能安全畅通的通行。 (5)此表可根据车流量动态设定红绿灯初始值。共四种状态,分别设定为 S1、S2、S3、S4,交通灯
4、以这四种状态为一个周期,循环执行如下图所示:程序就是在上述四种状态下循环转化的。一个周期四个状态,在正常模式下共花费 1 分状态 S1 S2 S3 S4时间 30s 5s 30s 5s东西道 红灯亮 红灯亮 绿灯亮 黄灯亮南北道 绿灯亮 黄灯亮 红灯亮 红灯亮图 2 交通灯状态循环图S4S310 秒。二.具体设计方案2.1 方案要求:本设计要求与交通信号实际控制一致,采用 LED 模拟信号灯,信号灯分东西、南北二组,分别有红、黄、绿三色。其工作状态由程序控制,启动、停止按钮分别控制信号灯的启动与停止。白天/黑夜转换开关可对信号进行控制转换。并且要求能用两位数码管(或者一位数码管)来显示红灯或者
5、绿灯等待的时间,在黄灯的时候数码管不显示。信号灯的控制要求如下:假设东西方向交通繁忙为主干道,车流量为南北交通的两倍。因此东西方向的绿灯通行时间为是南北方向上的两倍。开始时东西方向绿灯先亮,南北为红灯。按下启动按钮开始工作, ,按下停止按钮,停止工作。白天/黑夜转换开关闭合时为黑夜工作状态,这时只有黄灯来回闪烁,断开为白天工作状态。白天工作状态要求:东西方向绿灯亮 40s,然后黄灯闪三下(1 下/秒,共 5 秒) ,然后红灯亮 20s,而南北方向为红灯亮 40s 然后绿灯亮 20s,然后黄灯也闪三下;如此周期循环下去。示意图2.2 方案分析根据十字路口交通灯的要求,可将本系统分为三个模块,第一
6、模块是控制模块,主要负责整个系统的控制和运算,从而使各模块正常工作,第二个模块式显示模块包括 LED 灯和数码管;第三是电源模块,给各模块提供电源,让各模块工作。其系统设计结构如图:2.3 89C51 单片机引脚功能说明89C51 外部引脚图:(可以直接拷入 ASM 程序文件中,作注释使用,十分方便)P1.0 1 40 Vcc P1.1 2 39 P0.0 P1.2 3 38 P0.1 P1.3 4 37 P0.2 P1.4 5 36 P0.3 P1.5 6 35 P0.4 P1.6 7 34 P0.5 P1.7 8 33 P0.6 RST/Vpd 9 32 P0.7 RXD P3.0 10
7、31 -EA/Vpp(内 1/外 0 程序地址选择)TXD P3.1 11 30 ALE/-P (地址锁存输出)-INT0 P3.2 12 29 -PSEN (外部程序读选通输出)-INT1 P3.3 13 28 P2.7 T0 P3.4 14 27 P2.6 T1 P3.5 15 26 P2.5 -WR P3.6 16 25 P2.4 -RD P3.7 17 24 P2.3 X2 18 23 P2.2 X1 19 22 P2.1 GND 20 21 P2.0 图 3.系统设计结构图引脚说明:电源引脚Vcc(40 脚):典型值 5V。Vss(20 脚):接低电平。外部晶振X1、X2 分别与晶体
8、两端相连接。当采用外部时钟信号时, X2 接振荡信号,X1 接地输入输出口引脚:P0 口:I/O 双向口。作输入口时,应先软件置“ 1”。P1 口:I/O 双向口。作输入口时,应先软件置“ 1”。P2 口:I/O 双向口。作输入口时,应先软件置“ 1”。P3 口:I/O 双向口。作输入口时,应先软件置“ 1”。控制引脚:RST/Vpd、ALE/-PROG、-PSEN、-EA/Vpp 组成了 MSC-51 的控制总线。RST/Vpd(9 脚):复位信号输入端(高电平有效)。第二功能:加+5V 备用电源,可以实现掉电保护 RAM 信息不丢失。ALE/-PROG(30 脚):地址锁存信号输出端。第二
9、功能:编程脉冲输入。-PSEN(29 脚):外部程序存储器读选通信号。-EA/Vpp(31 脚):外部程序存储器使能端。第二功能:编程电压输入端(+21V)。图 6. 单片机 8051 的内部结构2.4 单片机最小系统时钟电路图 7. 时钟电路XTAL1 是片内振荡器的反相放大器输入端,XTAL2 则是输出端,使用外部振荡器时,外部振荡信号应直接加到 XTAL1,而 XTAL2 悬空。内部方式时,时钟发生器对振荡脉冲二分频,如晶振为 12MHz,时钟频率就为 6MHz。晶振的频率可以在 1MHz-24MHz 内选择。电容取 30PF 左右。系统的时钟电路设计是采用的内部方式,即利用芯片内部的振
10、荡电路。AT89 单片机内部有一个用于构成振荡器的高增益反相放大器。引脚 XTAL1 和 XTAL2 分别是此放大器的输入端和输出端。这个放大器与作为反馈元件的片外晶体谐振器一起构成一个自激振荡器。外接晶体谐振器以及电容 C1 和 C2 构成并联谐振电路,接在放大器的反馈回路中。对外接电容的值虽然没有严格的要求,但电容的大小会影响震荡器频率的高低、震荡器的稳定性、起振的快速性和温度的稳定性。因此,此系统电路的晶体振荡器的值为 12MHz,电容应尽可能的选择陶瓷电容,电容值约为 22F。在焊接刷电路板时,晶体振荡器和电容应尽可能安装得与单片机芯片靠近,以减少寄生电容,更好地保证震荡器稳定和可靠地
11、工作。复位电路在振荡器运行时,有两个机器周期(24 个振荡周期)以上的高电平出现在此引腿时,将使单片机复位,只要这个脚保持高电平,51 芯片便循环复位。复位后 P0P3 口均置 1 引脚表现为高电平,程序计数器和特殊功能寄存器 SFR 全部清零。当复位脚由高电平变为低电平时,芯片为 ROM 的 00H 处开始运行程序。复位是由外部的复位电路来实现的。片内复位电路是复位引脚 RST 通过一个斯密特触发器与复位电路相连,斯密特触发器用来抑制噪声,它的输出在每个机器周期的 S5P2,由复位电路采样一次。复位电路通常采用上电自动复位和按钮复位两种方式,此电路系统采用的是上电与按钮复位电路。当时钟频率选
12、用 6MHz 时,C 取 22F,Rs约为 200,Rk 约为 1K。复位操作不会对内部 RAM 有所影响。常用的复位电路如下图所示:图 8. 复位电路图显示电路显示器普遍地用于直观地显示数字系统的运行状态和工作数据,按照材料及产品工艺,单片机应用系统中常用的显示器有: 发光二极管 LED 显示器、液晶 LCD 显示器、CRT 显示器等。LED 数码管是现在最常用的显示器之一。发光二极管(LED)由特殊的半导体材料砷化镓、磷砷化镓等制成,可以单独使用,也可以组装成分段式或点阵式 LED 显示器件(半导体显示器) 。分段式显示器(LED 数码管)由 7 条线段围成 8 字型,每一段包含一个发光二
13、极管。外加正向电压时二极管导通,发出清晰的光。只要按规律控制各发光段亮、灭,就可以显示各种字形或号。LED 数码管有共阳、共阴之分。本系统采用的是两位共阴极数码管三电路图和程序图 10. 交通灯电路图具体程序:#include #define uchar unsigned char #define uint unsigned intuint num,shi,ge;sbit red=P10;sbit yel=P11;sbit gre=P12; void delay() uint a;for(a=500;a0;a-);uchar code arry_duan=0x3f,0x06,0x5b,0x4f
14、,0x66,0x6d,0x7d,0x07,0x7f,0x6f;void initial()EA=1;ET0=1;TMOD=0x01;TH0=0x4c;TL0=0xd0;void display(int Y)shi=Y/10;ge=Y%10;TR0=1;while(shi|ge!=0)P2=0xfe;P3=arry_duanshi;delay();P2=0xfd;P3= arry_duange;delay();TR0=0;void timer0() interrupt 1TH0=0x4c;TL0=0xd0;num+;if(num=20)num=0;ge-;if(ge=-1)ge=9;shi-;m
15、ain()initial();while(1)red=0;yel=0;gre=1;display(40);red=0;yel=1;gre=0;display(3);red=1;yel=0;gre=0;display(20);red=0;yel=1;gre=0;display(3);程序编译和.hex 文件创建截图仿真截图四实验心得体会通过本次试验我复习了单片机程序的编写,电路的连接以及程序的调试仿真,更加深刻的感受到了单片机的强大功能,通过实验也加强了动手操作的能力,和同学一起更加懂得了相互合作的重要性,以后我会更加努力的把本专业知识学好学精,争取为国家做到属于自己应做的奉献。五课程设计参考资料1 电子系统综合设计 郭勇 北京大学出版社2 数字电子技术基础 阎石 高教出版社3 模拟电子技术基础 童诗白 高教出版社4. 单片机原理及应用 张毅刚 高等教育出版社