STC89C52单片机的交通灯设计 精品.docx
《STC89C52单片机的交通灯设计 精品.docx》由会员分享,可在线阅读,更多相关《STC89C52单片机的交通灯设计 精品.docx(23页珍藏版)》请在冰豆网上搜索。
STC89C52单片机的交通灯设计精品
基于STC89C52单片机的交通灯设计
今天,红绿灯安装在各个道口上,已经成为疏导交通车辆最常见和最有效的手段。
但这一技术在19世纪就已出现了。
1858年,在英国伦敦主要街头安装了以燃煤气为光源的红,蓝两色的机械扳手式信号灯,用以指挥马车通行。
这是世界上最早的交通信号灯。
1868年,英国机械工程师纳伊特在伦敦威斯敏斯特区的议会大厦前的广场上,安装了世界上最早的煤气红绿灯。
它由红绿两块以旋转式方形玻璃提灯组成,红色表示“停止”,绿色表示“注意”。
1869年1月2日,煤气灯爆炸,使警察受伤,遂被取消。
1914年,电气启动的红绿灯出现在美国。
这种红绿灯由红绿黄三色圆形的投光器组成,安装在纽约市5号大街的一座高塔上。
红灯亮表示“停止”,绿灯亮表示“通行”。
1918年,又出现了带控制的红绿灯和红外线红绿灯。
带控制的红绿灯,一种是把压力探测器安在地下,当车辆接近时,红灯便变为绿灯;另一种是用扩音器来启动红绿灯,司机遇红灯时按一下喇叭,就使红灯变为绿灯。
红外线红绿灯当行人踏上对压力敏感的路面时,它就能察觉到有人要过马路。
红外光束能把信号灯的红灯延长一段时间,推迟汽车放行,以免发生交通事故。
信号灯的出现,使交通得以有效管制,对于疏导交通流量、提高道路通行能力,减少交通事故有明显效果。
1968年,联合国《道路交通和道路标志信号协定》对各种信号灯的含义作了规定。
绿灯是通行信号,面对绿灯的车辆可以直行,左转弯和右转弯,除非另一种标志禁止某一种转向。
左右转弯车辆都必须让合法地正在路口内行驶的车辆和过人行横道的行人优先通行。
红灯是禁行信号,面对红灯的车辆必须在交叉路口的停车线后停车。
黄灯是警告信号,面对黄灯的车辆不能越过停车线,但车辆已十分接近停车线而不能安全停车时可以进入交叉路口。
随着经济的发展,交通运输中出现了一些传统方法难以解决的问题。
道路拥挤现象日趋严重,造成的经济损失越来越大,并一直保持大比例的增长。
现在交通系统已不能满足经济发展的需求。
由于生活水平的提高,人们对交通运输的安全性及服务水平提出了更高的要求。
在交通中管理引入单片机交通灯控制代替交管人员在交叉路口服务,有助于提高交通运输的安全性、提高交通管理的服务质量。
并在一定程度上尽可能的降低由道路拥挤造成的经济损失,同时也减小了工作人员的劳动强度。
中国车辆数量不断增加,交通控制在未来的交通管理中起着越来越重要的作用。
智能交通灯的管理比重修一条马路无论在经济、交通运行速率上都有很好的效益、更加节约资源。
使交管人员有更多的精力投入到管理整个城市交通控制,带来更大的经济和社会效益,为创造美好的城市交通形象发挥更多的作用
2系统设计
2.1
本课题的主要内容包括如下几个方面:
(a).设计交通灯状态的管理方案;
(b).设计单片机最小系统和周边电路;
(c).设计交通灯系统、不间断供电系统以及中断系统的电路结构;
(d).设计整个系统的电路分布和接线;
(d).使用C语言编写整个系统运行所需要的程序,重点是分时管理系统和紧急中断系统的程序。
2.2硬件设计部分
根据本设计交通灯的模型和实现的功能,硬件部分可以分为以下两个大的系统:
单片机系统、交通灯演示系统、电源供电系统。
2.2.1交通灯系统电路
根据功能,交通灯的演示系统从功能上则分为:
倒计时电路、红绿灯功能电路。
交通灯演示系统电路图2.2.1如示。
倒计时电路主要是由双位共阴数码管和74HC573N驱动模块组成,控制信号通过单片机的端口P1口进行信号的传输。
倒计时电路负责的是显示红绿灯持续显示的时间。
当绿灯或者红灯持续显示时,数码管显示该状态的持续时间,在黄灯闪烁显示时,起到倒计时秒数的作用。
红绿灯功能电路主要是由各色的发光二极管和74HC573N驱动模块组成,控制信号跟数码管一样都是通过P1口进行传输。
红绿灯电路负责的是各个车行道和人行道通行状态的显示。
图2.2.1交通灯的电路图
2.2.2单片机系统
本设计单片机主要是用于控制交通灯的演示系统,故只需要单片机最小系统即可完成。
单片机的最小系统是指能够驱动单片机工作的最小电路。
此电路由单片机、时钟电路、电源、复位电路4个组成部分组成。
图2.2.2为单片机最小电路的电路图。
图2.2.2STC89C51最小系统图
2.2.3复位电路
单片机复位是使CPU和系统中的其他功能部件都处在一个确定的初始状态,并从这个状态开始工作,例如复位后PC=0000H,使单片机从第—个单元取指令。
无论是在单片机刚开始接上电源时,还是断电后或者发生故障后都要复位。
在复位期间(即RST为高电平期间),P0口为高组态,P1-P3口输出高电平;外部程序存储器读选通信号PSEN无效。
地址锁存信号ALE也为高电平。
图2.2.3为单片机复位电路的电路图
图2.2.3复位电路图
2.2.4晶振电路
STC89C52引脚XTAL1和XTAL2与晶体振荡器及电容C2、C1按下图2.3所示方式连接。
晶振、电容C1/C2及片内与非门(作为反馈、放大元件)构成了电容三点式振荡器,振荡信号频率与晶振频率及电容C1、C2的容量有关,但主要由晶振频率决定,范围在0~33MHz之间,电容C1、C2取值范围在30pF左右。
根据实际情况,本设计中采用11.0592MHZ做系统的外部晶振。
电容取值为33pF。
图2.2.4为单片机晶振电路的电路图
图2.2.4晶振电路图
供电电路由主电源和备用电源组成。
主电源主要是由变压器、6A整流桥、4个二极管,2个104pf电容,二个电解电容以及7805三端稳压管组成。
这个部分为系统提供主要的供电,输出电压为5V直流。
备用电源主要是由4位的5号电池盒组成。
这个部分在主电源断电时能够几乎瞬时的为系统提供电源,输出电压也是5V直流。
该电源直接接到单片机的电源端。
图2.2.5主电源和备用电源切换功能电路
假设二极管处于截止状态,此时二极管阴极电位为4V,阳极电位为5V,所以电压差为1V,此时二极管一定处于导通状态,所以假设不成立。
当主电源工作时电池组也提供电源,这会造成两个不同电压的电源并联,造成干电池组给主电源充电。
而当选用两个二极管串联时,假设二极管处于截止状态,此时电压差为0.5V,0.5V<0.7V二极截止,假设成立。
而当主电源断开时,能提供电压为6V减去2个二极管的压降为3.6V,此电压能保证单片机正常工作。
3.2.674HC573的功能
图2.2.6
SL74HC573跟LS/AL573的管脚一样。
器件的输入是和标准CMOS输出兼容的;加上拉电阻,他们能和LS/ALSTTL输出兼容。
当锁存使能端为高时,这些器件的锁存对于数据是透明的(也就是说输出同步)。
当锁存使能变低时,符合建立时间和保持时间的数据会被锁存。
×输出能直接接到CMOS,NMOS和TTL接口上
×操作电压范围:
2.0V~6.0V
×低输入电流:
1.0uA
×CMOS器件的高噪声抵抗特性
·三态总线驱动输出
·置数全并行存取
·缓冲控制输入
·使能输入有改善抗扰度的滞后作用
原理说明:
M54HC563/74HC563/M54HC573/74HC573的八个锁存器都是透明的D型锁存器,当使能(G)为高时,Q输出
将随数据(D)输入而变。
当使能为低时,输出将锁存在已建立的数据电平上。
输出控制不影响锁存器的内部工作,即老数据可以保持,甚至当输出被关闭时,
新的数据也可以置入。
这种电路可以驱动大电容或低阻抗负载,可以直接与系统总线接口并驱动总线,而不需要外接口。
特别适用于缓冲寄存器,I/O通道,双向总线驱动器和工作寄存器。
图2.2.6为74HC573引脚图。
HC573引脚功能表:
引脚号
符号
名称及功能
1
OE
3态输出使能输入(低电平)
2,3,4,5,6,7,8,9
D0toD7
数据输入
12,13,14,15,16,17,18,19
Q0toQ7
3态锁存输出
11
LE
锁存使能输入
10
GND
接地(0V)
20
VCC
电源电压
2.2.7发光二极管
半导体发光器件包括半导体发光二极管(简称LED)、数码管、符号管、米字管及点阵式显示屏(简称矩阵管)等。
事实上,数码管、符号管、米字管及矩阵管中的每个发光单元都是一个发光二极管。
图2.2.7是发光二极管图
图2.2.7发光二极管图
2.2.8数码管
1.LED数码管分类:
按其内部结构可分为共阴型和共阳型;
导通时正向压降一般为1.5~2V,额定电流为10mA,最大电流为40mA。
2.数码管工作原理
共阳极数码管的8个发光二极管的阳极(二极管正端)连接在一起。
通常,公共阳极接高电平(一般接电源),其它管脚接段驱动电路输出端。
当某段驱动电路的输出端为低电平时,则该端所连接的字段导通并点亮。
根据发光字段的不同组合可显示出各种数字或字符。
此时,要求段驱动电路能吸收额定的段导通电流,还需根据外接电源及额定段导通电流来确定相应的限流电阻。
图2.2.8是数码管图
图2.2.8数码管图
3软件设计
相较于C语言,汇编语言的机器代码生成效率很高但可读性却并不强,复杂一点的程序就更是难读懂,而C语言在大多数情况下其机器代码生成效率和汇编语言相当,但可读性和可移植性却远远超过汇编语言,而且C语言还可以嵌入汇编来解决高时效性的代码编写问题。
对于开发周期来说,中大型的软件编写用C语言的开发周期通常要小于汇编语言很多。
综合以上C语言的优点,本设计在编程的时候选择了C语言。
本设计在编程环境上也选择了KeilμVision2.0。
这款软件支持众多不同公司的MCS51架构芯片,它集编辑、编译、仿真为一体,同时还支持PLM、汇编和C语言的程序设计,界面友好、简单易学,在调试程序。
软件仿真方面都有很强大的功能。
在初期的软件调试阶段,KeilμVision会提供非常便利的环境。
在本次设计中,采用了C语言作为程序编程的语言。
程序如下
#include
#defineucharunsignedchar
#defineuintunsignedint
sbitdula=P2^6;
sbitwela=P2^7;
sbitbeep=P2^3;
unsignedintpp;
unsignedcharcodetable[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,
0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
ucharj,k,l=255;
uchara1,a0;
ucharshijian,deng=2;
voiddelay(unsignedinti)
{
for(j=i;j>0;j--)
for(k=125;k>0;k--);
}
voiddisplay(unsignedcharsh_c,unsignedcharg_c)
{
dula=0;
P0=table[sh_c];
dula=1;
dula=0;
wela=0;
P0=0xfe;
wela=1;
wela=0;
delay(5);
P0=table[g_c];
dula=1;
dula=0;
P0=0xfd;
wela=1;
wela=0;
delay(5);
}
voidmain()
{
TMOD=0x01;
TR0=1;
TH0=(65536-46080)/256;//由于晶振为11.0592,故所记次数应为46080,计时器每隔50000微秒发起一次中断。
TL0=(65536-46080)%256;//46080的来历,为50000*11.0592/12
ET0=1;
EA=1;
while
(1)
{
if(shijian==0)
{
switch(deng)
{
case0:
shijian=50;//红灯
deng=1;
break;
case1:
shijian=15;//黄灯
deng=2;
break;
case2:
shijian=50;//绿灯
deng=3;
break;
case3:
shijian=15;//黄灯
deng=0;
break;
}
}
if(pp==20)
{pp=0;
shijian--;
}
a0=shijian%10;
a1=shijian/10;
display(a1,a0);
switch(deng)
{
case1:
P1=0X00;//红灯
break;
case2:
//黄灯
if(shijian%2==0)
P1=0x00;
if(shijian%2==1)
P1=0xff;
break;
case3:
//绿灯
if(shijian%2==0)
P1=0x55;
if(shijian%2==1)
P1=0xaa;
break;
case0:
if(shijian%2==0)//黄灯
P1=0x00;
if(shijian%2==1)
P1=0xff;
break;
}
}
}
voidtime0()interrupt1
{TH0=(65536-46080)/256;
TL0=(65536-46080)%256;
pp++;
}
4设计结果与分析
4.1Proteus简介
此次仿真使用的Proteus仿真软件,Proteus是英国Labcenterelectronics公司出版的EDA。
目前来说,它是最好用的仿真外围器件及单片机的工具。
虽然在我国,对于它的使用才刚刚起步,但是已经受到了很多人是喜爱,如:
学生、教师、单片机爱好者以及一些从事于单片机开发人员。
Proteus是世界上著名的EDA仿真软件,从原理图的设计布图、代码的调试再到单片机与外围电路仿真,可一键切换到PCB设计,真正实现了从概念到产品的完整设计。
从目前来说,是世界上唯一将PCB设计软件、电路仿真软件和虚拟模型仿真软件三合一的设计平台,其处理器模型支持PIC10/12/16/18/24/30/DsPIC33、8051、AVR、HC11、8086、ARM和MSP430等,20XX年又新增了DSP和Cortex系列处理器,并持续增加其他系列处理器模型。
在编译方面,它也支持MPLAB、Keil和IAR等。
4.2Proteus仿真结果
图2.2.1是在Proteus下做出仿真原理图,如图4.2.1所示,然后把.hex文件写入单片机AT89C51,运行并得出如下4.2.1仿真图,4.2.2为不同时刻的Proteus仿真图.
图4.2.1为Proteus仿真图
图4.2.2为Proteus不同时刻仿真图
4.3制板印制电路板
4.3.1DXP的简介
ProtelDXP在前版本的基础上增加了许多新的功能。
新的可定制设计环境功能包括双显示器支持,可固定、浮动以及弹出面板,强大的过滤和对象定位功能及增强的用户界面等。
ProtelDXP是第一个将所有设计工具集于一身的板级设计系统,电子设计者从最初的项目模块规划到最终形成生产数据都可以按照自己的设计方式实现。
ProtelDXP运行在优化的设计浏览器平台上,并且具备当今所有先进的设计特点,能够处理各种复杂的PCB设计过程。
通过设计输入仿真、PCB绘制编辑、拓扑自动布线、信号完整性分析和设计输出等技术融合,ProtelDXP提供了全面的设计解决方案。
4.3.2电路原理图的制作
电路原理图的设计过程可分为以下几个步骤:
1、设置电路图纸参数及相关信息
根据电路图的复杂程度设置图纸的格式、尺寸、方向等参数以及与设计有关的信息,为以后的设计工作建立一个合适的工作平面。
2、装入所需要的元件库
将所需的元件库装入设计系统中,以便从中查找和选定所需的元器件。
3、设置元件
将选定的元件放置到已建立好的工作平面上,并对元件在工作平面上的位置进行调整,对元件的序号、封装形式、显示状态等进行定义和设置,以便为下一步的布线工作打好基础。
4、电路图布线
利用Protel所提供的各种工具、命令进行画图工作,将事先放置好的元器件用具有电气意义的导线、网络标号等连接起来,布线结束后,一张完整的电路原理图基本完成。
5、调整、检查和修改
利用Protel所提供的各种工具对前面所绘制的原理图做进一步的调整和修改。
6、补充完善
对原理图做一些相应的说明、标注和修饰,增加可读性和可观性。
7、保存和打印输出
图4.3.2电路原理图
图4.3.2电路原理图
4.3.3PCB的制作
1 得到正确的原理图和网络表
绘制原理图是绘制PCB板图的前提,网络表是连接原理图和PCB板图的中介,所以在绘制PCB电路板之前一定要先得到正确的原理图和网络表。
2 画出自己定义的非标准器件的封装库
自己独立绘制的封装一定要在PCB设计之前完成,在制作PCB电路板时,我们会导入这些自己制作的封装。
3 规划电路板
电路板是采用单面板还是多层板,电路板的形状、尺寸等具体的参数以及电路板的安装方式等在这里都要一并考虑。
另外,还要考虑电路板与外界的接口形式,选择具体接插件的封装形式。
4 设置环境参数
我们可以根据自己的习惯来设置环境参数。
环境参数包括栅格大小、光标捕捉大小、公制英制的转换、工作层面颜色等。
5 打开所有要用到的库文件后调入网络表文件需要注意的是要先把所有的库文件全都打开后,再导入网络表文件。
否则,在导入网络表时会出现元件找不到封装的情况。
6 设定工作参数主要进行PCB板的图层设定。
7 元件手工布局
应当从机械结构、散热、电磁干扰、将来布线的方便性等方面综合考虑。
先布置与机械尺寸 有关的器件并锁定这些器件,然后是大的占位置的器件和电路的核心元件,再是外围的小元件。
对于同一个器件用多种封装形式的,可以把这个器件的封装改为第二 种封装形式并放好后这个器件用撤消元件组功能,然后再调入一次网络表并放好新调入的这个器件,有更多种封装形式时依此类推。
放好后可以用VIEW3功能查看一下实际效果.如果不甚满意的话可以根据实际情况再作适当调整,然后将全部器件锁定。
假如板上空间允许,则可在板上放上一些类似于实验板的布线区。
对于大板子应在 中间多加固定螺丝孔,板上有重的器件或较大的接插件等受力器件边上也应加固定螺丝孔。
有需要的话,可在适当位置放上一些测试用焊盘。
将过小的焊盘过孔改 大,将所有固定螺丝孔焊盘的网络定义到地或保护地等。
8 制订详细的布线规则
布线规则包括使用层面、各组线宽、过孔间距、布线的拓朴结构等,我们要根据所设计的板子的实际情况来进行设定。
另外,还要在不希望有走线的区域内放置FILE填充层
9 对线路进行手工布线
电路需要自己手动布线,必须要按照指定路线布线的电路也要进行手工布线。
10 布线完成后的调整
布通之后,对布线进行手工初步调整。
调整的内容有:
需加粗的地线、电源线、功率输出线等进行手动加粗;某几根绕得太多,太过繁琐的线重布;消除部分不必要的过孔。
另外,我们还要切换到单层显示模式下将每个布线层的线拉整齐和美观。
手工调整时应经常进行DRC,因为有时有些线会断开。
快完成时可将每个布线层单独打印出来以方便改线。
调整完毕后用VIEW3D功能查看实际效果,满意后进行下一步。
11 印制板文件的保存和导出
Protel DXP绘制PCB 电路板的设计完成后,我们还要完成印制板文件整理并存档,打印出图纸等工作。
可以导出元件明细表,生成电子表格文档作为元件清单等。
最后,我们还要说明电路板上有特殊要求的地方,然后提交给制板加工厂进行电路板的加工其PCB图,图4.3.3PCB图
图4.3.3PCB图
5实物图
5.1印制电路板概述
5.1.1印制电路板
简称电路板或PCB板,是用印制的方法制成导电线路和元件封装,它的主要功能是实现电子元器件的固定安装以及管脚之间的电气连接,从而实现电器的各种特定功能。
5.1.2印制电路板的结构
印制电路板是电子元件装载的基板,它要提供元件安装所需的焊盘,要有实现元件管脚电气连接的导线,要保证电路设计所要求的电气特性,以及为元件装配、维修提供识别字符和图形。
5.1.3印制电路板的种类
根据元件导电层面的多少可以分为单面板、双面板、多层板。
单面板所用的绝缘基板上只有一面是敷铜面,用于制作铜箔导线,而另一面只印上没有电气特性的元件型号和参数等。
双面板:
在绝缘基板的上、下二面均有敷铜层,都可制作铜箔导线,底面和单面板作用相同,而在顶面除了印制元件的型号和参数外,和底层一样可以制作成铜箔导线。
元件一般仍安装在顶层,为了解决顶层和底层相同导线之间的连接关系,采用金属化过孔来实现。
多层板:
它由电气导电层和绝缘材料层交替粘合而成,成本较高,导电层数一般为4、6、8等级,且中间层(即内电层)一般是连接元件管脚数目最多的电源和接地网络,层间的电气连接同样利用层间的金属化过孔来实现。
5.2印制电路板制作流程
图5-1电路板制作流程
下料:
一般是指导选取材料、厚度合适、整个表面铺有较薄铜箔的整张基板。
丝网漏印:
为了制作元件管脚间相连的铜箔导线,必须将多余的铜箔部分利用化学反应腐蚀掉,而使铜箔导线在化学反应的过程中保留下来,所以必须在腐蚀前将元件管脚间相连的铜箔导线利用特殊材料印制到铺有较薄铜箔的整张基板上,该特殊材料可以保证其下面的铜箔与腐蚀液离,将特殊材料印制到基板上的过程就是丝网漏印。
腐蚀和去除印料:
接下来将丝网漏印后的基板放置在腐蚀化学液中,将裸露出来的多余铜箔腐蚀掉,接下来再利用化学溶液将保留下来铜箔上的特殊材料清洗掉。
以上步骤就制作了裸露的铜箔导线。
孔加工:
为了实现元件的安装,还必须为元件的管脚提供安装孔,利用数控机床在基板上钻孔。
对于双面板而言,为了实现上下层导线的互连,还必须制作过孔,过孔的制作较为复杂,钻孔后还必须在过孔中电镀上一层导电金属膜,该过程就是孔加工。
助焊剂和阻焊漆:
在经过以上步骤后,电路板已经初步制作完成,但为了更好的装配元件和提高可靠性,还必须在元件的焊盘上涂抹一层助焊剂,该助焊剂有利于焊盘与元件管脚的焊接。
而在焊接过程中为了避免和附近其它导线短接的可能性,还必须在铜箔导线上涂上一层绿色的阻焊漆,同时阻焊漆还可保护其下部的铜箔导线在长期恶劣的工作环境中被氧化腐蚀。
印标注:
为了元件装配和维修的过程中识别元件,还必须在电路板上印上元件的编号以及其它必要的标注。
成品分割和检查测试:
随后将整张制作完成的电路板分割为小的成品电路板。
最后还要对电路板进行检查测试。
5.3元器件的安装与焊接
在电子产品的制作过程中,元器件的安装与焊接非常重要。
安装与焊接质量直接影响到电子产品的性能(如准确度、灵敏度、稳定性、可靠性等),有时因为虚焊、焊点脱落等原因造成电