单片机红绿灯电路设计.docx
《单片机红绿灯电路设计.docx》由会员分享,可在线阅读,更多相关《单片机红绿灯电路设计.docx(26页珍藏版)》请在冰豆网上搜索。
单片机红绿灯电路设计
四川现代职业学院
《单片机原理及应用》课程设计
红绿灯实训报告
题目:
红绿灯项目设计报告
系别:
电子信息技术系
专业:
电子信息工程技术
组员:
贺淼、纪鹏、邵文稳
指导老师:
陶薇薇
2014年7月12日
摘要
交通在人们的日常生活中占有重要的地位,随着人们社会活动的日益频繁,这点更是体现的淋漓尽致。
交通信号灯的出现,使交通得以有效管制,对于疏导交通流量、提高道路通行能力,减少交通事故有明显效果。
近年来随着科技的飞速发展,单片机的应用正在不断深入,同时带动传统控制检测技术日益更新。
在实时检测和自动控制的单片机应用系统中,单片机往往作为一个核心部件来使用,仅单片机方面知识是不够的,还应根据具体硬件结构软硬件结合,加以完善。
本系统采用STC89C52点单片机以及数码管为中心器件来设计交通灯控制器,实现了南北方向为主要干道,要求南北方向每次通行时间为30秒,东西方向每次通行时间为25秒。
启动开关后,南北方向红灯亮25秒钟,而东西方向绿灯先亮20秒钟,然后闪烁3秒钟,转为黄灯亮2秒钟。
接着,东西方向红灯亮30秒钟,而南北方向绿灯先亮25秒,然后闪烁3秒钟,转为黄灯亮2秒钟,如此周而复始。
软件上采用C语言编程,主要编写了主程序,中断程序延时程序等。
经过整机调试,实现了对十字路口交通灯的模拟。
(一)硬件部分---------------------------3
1.1STC89C52芯片简介-----------------------3
1.2主要功能特性---------------------------4
1.3STC89C52芯片封装与引脚功能-------------5
1.4基于STC89C52交通灯控制系统的硬件电路分析及设计-------------------------------------------10
(二)软件部分----------------------------14
2.1交通灯的软件设计流程图-----------------14
2.2控制器的软件设计-----------------------15
(三)电路原理图与PCB图的绘制-------------16
3.1电路原理图的绘制(见附录二)----------16
3.2PCB图的绘制(见附录三)---------------16
3.3印刷电路板的注意事项------------------16
(四)调试及仿真---------------------------------------19
4.1调试----------------------------------19
4.2仿真结果------------------------------20
(五)实验总结及心得体会---------------------------21
5.1实验总结-----------------------------------------------21
5.2实验总结-----------------------------------------------22
附录程序清单---------------------------22
(一)硬件部分
1.1STC89C52芯片简介
STC89C52是一个低功耗,高性能CMOS8位单片机,片内含8kBytesISP(In-systemprogrammable)的可反复擦写1000次的Flash只读程序存储器,器件采用ATMEL公司的高密度、非易失性存储技术制造,兼容标准MCS-51指令系统及STC89C52引脚结构,芯片内集成了通用8位中央处理器和ISPFlash存储单元,功能强大的微型计算机的STC89C52可为许多嵌入式控制应用系统提供高性价比的解决方案。
STC89C52具有如下特点:
40个引脚,8kBytesFlash片内程序存储器,256bytes的随机存取数据存储器(RAM),32个外部双向输入/输出(I/O)口,5个中断优先级2层中断嵌套中断,2个16位可编程定时计数器,2个全双工串行通信口,看门狗(WDT)电路,片内时钟振荡器。
此外,STC89C52设计和配置了振荡频率可为0Hz并可通过软件设置省电模式。
空闲模式下,CPU暂停工作,而RAM定时计数器,串行口,外中断系统可继续工作,掉电模式冻结振荡器而保存RAM的数据,停止芯片其它功能直至外中断激活或硬件复位。
同时该芯片还具有PDIP、TQFP和PLCC等三种封装形式,以适应不同产品的需求。
1.2主要功能特性:
·兼容MCS-51指令系统
·8k可反复擦写(>1000次)ISPFlashROM
·32个双向I/O口
·4.5-5.5V工作电压
·3个16位可编程定时/计数器
·时钟频率0-33MHz
·全双工UART串行中断口线
·256x8bit内部RAM
·2个外部中断源
·低功耗空闲和省电模式
·中断唤醒省电模式
·3级加密位
·看门狗(WDT)电路
·软件设置空闲和省电功能
·灵活的ISP字节和分页编程
·双数据寄存器指针
表1-1-1
1.3STC89C52芯片封装与引脚功能
STC89C52芯片的尾缀第一个字母共4种,分别是A,J,P,Q,表示的是封装类型,A是TQFP封装(四方密脚扁平塑封封装),J是PLCC封装(塑封J形脚),P是PDIP也就是双列直插封装,Q是QPFP封装(四方扁平塑封封装)。
第二个字母共3种,分别是C,I,A,表示的是允许的环境温度,C为商业级,工作温度0至+70摄氏度;I为工业级,工作温度-40至+85度;A为汽车工业级,工作温度-40至+105度。
这两个字母前的数字表示最高主频,如12为12M,16为16M,20为20M,24为24M。
STC89C52 是一种低功耗、高性能CMOS8位微控制器,具有8K在系统可编程Flash存储器。
使用Atmel公司高密度非易失性存储器技术制造,与工业STC89C52产品指令和引脚完全兼容。
片上Flash允许程序存储器在系统可编程,亦适于常规编程器。
在单芯片上,拥有灵巧的8位CPU和在系统可编程Flash,使得STC89C52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。
STC89C52具有以下标准功能:
8k字节Flash,256字节RAM,32位I/O口线,看门狗定时器,2个数据指针,三个16位定时器/计数器,一个6向量2级中断结构,全双工串行口,片内晶振及时钟电路。
另外,STC89C52可降至0Hz静态逻辑操作,支持2种软件可选择节电模式。
空闲模式下,CPU停止工作,允许RAM、定时器/计数器、串口、中断继续工作。
掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。
8位微控制器8K字节在系统可编程FlashSTC89C52
1.3.1P0口介绍
P0口:
P0口是一个8位漏极开路的双向I/O口。
作为输出口,每位能驱动8个TTL逻辑电平。
对P0端口写“1”时,引脚用作高阻抗输入。
当访问外部程序和数据存储器时,P0口也被作为低8位地址/数据复用。
在这种模式下,P0具有内部上拉电阻。
在flash编程时,P0口也用来接收指令字节;在程序校验时,输出指令字节。
程序校验时,需要外部上拉电阻。
1.3.2P1口介绍
P1口:
P1口是一个具有内部上拉电阻的8位双向I/O口,p1输出缓冲器能驱动4个TTL逻辑电平。
对P1端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。
作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。
此外,P1.0和P1.2分别作定时器/计数器2的外部计数输入(P1.0/T2)和时器/计数器2的触发输入(P1.1/T2EX),具体如下表所示。
在flash编程和校验时,P1口接收低8位地址字节。
引脚号第二功能
P1.0T2(定时器/计数器T2的外部计数输入),时钟输出
P1.1T2EX(定时器/计数器T2的捕捉/重载触发信号和方向控制)
P1.5MOSI(在系统编程用)
P1.6MISO(在系统编程用)
P1.7SCK(在系统编程用)
1.3.3P2口介绍
P2口:
P2口是一个具有内部上拉电阻的8位双向I/O口,P2输出缓冲器能驱动4个TTL逻辑电平。
对P2端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。
作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。
在访问外部程序存储器或用16位地址读取外部数据存储器(例如执行MOVX@DPTR)时,P2口送出高八位地址。
在这种应用中,P2口使用很强的内部上拉发送1。
在使用8位地址(如MOVX@RI)访问外部数据存储器时,P2口输出P2锁存器的内容。
在flash编程和校验时,P2口也接收高8位地址字节和一些控制信号。
1.3.4P3口介绍
P3口:
P3口是一个具有内部上拉电阻的8位双向I/O口,p2输出缓冲器能驱动4个TTL逻辑电平。
对P3端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。
作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。
P3口亦作为STC89C52特殊功能(第二功能)使用,如下表所示。
在flash编程和校验时,P3口也接收一些控制信号。
端口引脚的第二功能
P3.0RXD(串行输入口)
P3.1TXD(串行输出口)
P3.2INTO(外中断0)
P3.3INT1(外中断1)
P3.4TO(定时/计数器0)
P3.5T1(定时/计数器1)
P3.6WR(外部数据存储器写选通)
P3.7RD(外部数据存储器读选通)
此外,P3口还接收一些用于FLASH闪存编程和程序校验的控制信号。
1.3.5控制信号介绍
RST——复位输入。
当振荡器工作时,RST引脚出现两个机器周期以上高电平将是单片机复位。
ALE/PROG——当访问外部程存储器或数据存储器时,ALE(地址锁存允许)输出脉冲用于锁存地址的低8位字节。
一般情况下,ALE仍以时钟振荡频率的1/6输出固定的脉冲信号,因此它可对外输出时钟或用于定时目的。
要注意的是:
每当访问外部数据存储器时将跳过一个ALE脉冲。
对FLASH存储器编程期间,该引脚还用于输入编程脉冲(PROG)。
如有必要,可通过对特殊功能寄存器(SFR)区中的8EH单元的D0位置位,可禁止ALE操作。
该位置位后,只有一条MOVX和MOVC指令才能将ALE激活。
此外,该引脚会被微弱拉高,单片机执行外部程序时,应设置ALE禁止位无效。
PSEN——程序储存允许(PSEN)输出是外部程序存储器的读选通信号,当STC89C52由外部程序存储器取指令(或数据)时,每个机器周期两次PSEN有效,即输出两个脉冲,在此期间,当访问外部数据存储器,将跳过两次PSEN信号。
EA/VPP——外部访问允许,欲使CPU仅访问外部程序存储器(地址为0000H-FFFFH),EA端必须保持低电平(接地)。
需注意的是:
如果加密位LB1被编程,复位时内部会锁存EA端状态。
如EA端为高电平(接Vcc端),CPU则执行内部程序存储器的指令。
FLASH存储器编程时,该引脚加上+12V的编程允许电源Vpp,当然这必须是该器件是使用12V编程电压Vpp
1.4基于STC89C52交通灯控制系统的硬件电路分析及设计
1.4.1各部分电路分析
(1)电源电路
单片机工作时需要的+5V电压,本设计采用普通的电源接口,通过5V的电源适配器供电。
电源部分还连接开关和发光二极管,用于判断电源是否正常工作。
需要注意的是,滤波电容对于电路设计非常重要,不加滤波电容会导致系统不稳定。
因此在电源部分10UF铝电解作为滤波电容。
(2)复位电路
STC89C52的复位输入引脚RST为单片机提供了初始化的手段,可以使程序从指定处开始执行,在STC89C52的时钟电路工作后,只要RST引脚上出现超过两个机器周期以上的高电平时,即可产生复位操作。
只要RST保持高电平,则单片机循环复位。
只有当RST有高电平变为低电平以后,单片机才从0000H地址开始执行程序,本系统采用按键复位方式的复位电路,如图二所示,当复位键按下时,系统自动切换到四个方向都只有黄灯亮的初始状态。
图二:
复位电路
(3)时钟电路
STC89C52的时钟可以有两种方式,一种是内部方式,利用芯片内部的振荡电路;另外一种为外部方式。
本论文根据实际需要和简便,采用内部振荡方式。
89C52内部有一个用于构成振荡器的高增益反相放大器,引脚XTAL1和XTAL2分别是此放大器的输入和输出端。
这个放大器与作为反馈元件的片外的片外晶体与陶瓷谐振器一起构成一个自激振荡器。
STC89C52虽然有内部震荡电路,但要形成时钟,必须外接元件所以实际构成的震荡时钟电路。
外界晶体以及电容C1和C2构成并联谐振电路接在放大器的反馈回路中。
对接电容的值虽然没有严格的要求,但电容的大小会影响振荡器频率的高低,振荡器的稳定性,起振的快速性和温度的稳定性。
晶体频率可在1.2MHZ~12MHZ之间任选,电容C1和C2的典型值在20PF~100PF之间选择,考虑到本系统对于外接晶体的频率稳定性要求不高,所以采取比较廉价的12MHZ陶瓷谐振器。
如图三所示。
图3
(4)示显电路
显示部分选用4位共阴数码管。
数码管的8位数据端通过1K的上拉电阻连接到单片机P0口,4位使能端分别连到P1.1-P1.4.由于数码管的驱动电流较大,所以在设计时加上了三极管9013作为驱动电路。
(5)发光二极管
该系统用12个红黄绿三色的发光二极管作信号灯,南北方向的红黄绿发光二极管阴极分别接在P2.0-P2.2口。
东西方向的红黄绿发光二极管阴极分别接在P2.2-P2.7口,所有发光二极管的阳极都通过一个1K电阻接到5V电源。
1.4.2设计过程
(1)设计要求和目的
此设计采用STC89C52单片机为核心控制元件,结合数码管,发光二极管等器件;利用了单片机的延时电路,按键复位电路,时钟电路,定时中断等电路构成一个用于十字路口的交通灯系统。
系统设计目的如下:
A.设计一个用于十字路口的交通灯控制电路。
B.要求南北方向和东西方向的车辆交替运行,东西南北四个方向均有三色灯指示。
C.南北方向绿灯亮时东西方向红灯亮,南北方向红灯亮时东西方向绿灯亮,如此循环。
并且在红灯切换为绿灯时黄灯会点亮5秒后再完成切换
D.四个方向除了有三色指示灯外还有四位的数码管用于倒计时显示信号灯点亮的时间。
E.电源使用普通的电源接口,通过5V电源适配器供电。
(2)系统具体工作状态如下表1所示
(3)系统方框图
该系统的方框图如图4所示,在STC89C52单片机的P1.0口接上一个开关用于启动系统;在RST脚接复位开关,用于将系统恢复为初始状态(本设计初始状态设为四个方向均是黄灯点亮);在P0口接四位数码管用于倒计时显示信号灯亮的时间。
在P2口接红黄绿三色发光二极管用作信号灯。
该系统还包括电源部分和振荡器部分。
图四:
系统原理框图
(二)软件部分
2.1交通灯的软件设计流程图(如图五)
图五:
交通灯的软件设计流程图
2.2控制器的软件设计
2.2.1每秒钟的设定
延时方法可以有两种一中是利用STC-51内部定时器产生溢出中断来确定1秒的时间,另一种是采用软件延时的方法。
计数器硬件延时
.a计数器初值计算
定时器工作时必须给计数器送计数器初值,这个值是送到TH和TL中的。
他是以加法记数的,并能从全1到全0时自动产生溢出中断请求。
因此,我们可以把计数器记满为零所需的计数值设定为C和计数初值设定为TC可得到如下计算通式:
TC=M-C
式中,M为计数器模值,该值和计数器工作方式有关。
在方式0时M为213;在方式1时M的值为216;在方式2和3为28
.b计算公式
T=(M-TC)T计数
或TC=M-C/T计数
T计数是单片机时钟周期TCLK的12倍;TC为定时初值
如单片机的主脉冲频率为TCLK12MHZ ,经过12分频
方式0 TMAX=213 *1微秒=8.912毫秒
方式1 TMAX=216 *1微秒=65.536毫秒
显然1秒钟已经超过了计数器的最大定时间,所以我们只有采用定时器和软件相结合的办法才能解决这个问题.
2.2.21秒的方法
我们采用在主程序中设定一个初值为20的软件计数器和使T0定时50毫秒.这样每当T0到50毫秒时CPU就响应它的溢出中断请求,进入他的中断服务子程序。
在中断服务子程序中,CPU先使软件计数器减1,然后判断它是否为零。
为零表示1秒已到可以返回到输出时间显示程序。
2.2.3相应程序代码
(1)主程序
(2)中断程序
(3)延时程序
(4)数码管显示程序
程序清单(见附录一)
(三)电路原理图与PCB图的绘制
3.1电路原理图的绘制(见附录二)
3.2PCB图的绘制(见附录三)
3.3印刷电路板的注意事项
3.3.1印刷电路板图设计的基本原则要求
印刷电路板的设计,从确定板的尺寸大小开始,印刷电路板的尺寸因受机箱外壳大小限制,以能恰好安放入外壳内为宜,其次,应考虑印刷电路板与外接元器件(主要是电位器、插口或另外印刷电路板)的连接方式。
印刷电路板与外接组件一般是通过塑料导线或金属隔离线进行连接。
但有时也设计成插座形式。
即:
在设备内安装一个插入式印刷电路板要留出充当插口的接触位置。
3.3.2布线图设计的基本方法
首先需要对所选用组件器及各种插座的规格、尺寸、面积等有完全的了解;对各部件的位置安排作合理的、仔细的考虑,主要是从电磁场兼容性、抗干扰的角度,走线短,交叉少,电源,地的路径及去耦等方面考虑。
各部件位置定出后,就是各部件的联机,按照电路图连接有关引脚,完成的方法有多种,印刷线路图的设计有计算机辅助设计与手工设计方法两种。
最原始的是手工排列布图。
这比较费事,往往要反复几次,才能最后完成,这在没有其它绘图设备时也可以,这种手工排列布图方法对刚学习印刷板图设计者来说也是很有帮助的。
计算机辅助制图,现在有多种绘图软件,功能各异,但总的说来,绘制、修改较方便,并且可以存盘贮存和打印。
接着,确定印刷电路板所需的尺寸,并按原理图,将各个元器件位置初步确定下来,然后经过不断调整使布局更加合理,印刷电路板中各组件之间的接线安排方式如下:
(1)印刷电路中不允许有交叉电路,对于可能交叉的线条,可以用“钻”、“绕”两种办法解决。
即,让某引线从别的电阻、电容、三极管脚下的空隙处“钻”过去,或从可能交叉的某条引线的一端“绕”过去,在特殊情况下如何电路很复杂,为简化设计也允许用导线跨接,解决交叉电路问题。
(2)电阻、二极管、管状电容器等组件有“立式”,“卧式”两种安装方式。
立式指的是组件体垂直于电路板安装、焊接,其优点是节省空间,卧式指的是组件体平行并紧贴于电路板安装,焊接,其优点是组件安装的机械强度较好。
这两种不同的安装组件,印刷电路板上的组件孔距是不一样的。
(3)同一级电路的接地点应尽量靠近,并且本级电路的电源滤波电容也应接在该级接地点上。
特别是本级晶体管基极、发射极的接地点不能离得太远,否则因两个接地点间的铜箔太长会引起干扰与自激,采用这样“一点接地法”的电路,工作较稳定,不易自激。
(4)总地线必须严格按高频-中频-低频一级级地按弱电到强电的顺序排列原则,切不可随便翻来复去乱接,级与级间宁肯可接线长点,也要遵守这一规定。
特别是变频头、再生头、调频头的接地线安排要求更为严格,如有不当就会产生自激以致无法工作。
调频头等高频电路常采用大面积包围式地线,以保证有良好的屏蔽效果。
(5)强电流引线(公共地线,功放电源引线等)应尽可能宽些,以降低布线电阻及其电压降,可减小寄生耦合而产生的自激。
(6)阻抗高的走线尽量短,阻抗低的走线可长一些,因为阻抗高的走线容易发笛和吸收信号,引起电路不稳定。
电源线、地线、无反馈组件的基极走线、发射极引线等均属低阻抗走线,射极跟随器的基极走线、收录机两个声道的地线必须分开,各自成一路,一直到功效末端再合起来,如两路地线连来连去,极易产生串音,使分离度下降。
3.3.3印刷板图设计中应注意的地方
1.布线方向:
从焊接面看,组件的排列方位尽可能保持与原理图相一致,布线方向最好与电路图走线方向相一致,因生产过程中通常需要在焊接面进行各种参数的检测,故这样做便于生产中的检查,调试及检修(注:
指在满足电路性能及整机安装与面板布局要求的前提下)。
2.各组件排列,分布要合理和均匀,力求整齐,美观,结构严谨的工艺要求。
3.电阻,二极管的放置方式:
分为平放与竖放两种:
(1)平放:
当电路组件数量不多,而且电路板尺寸较大的情况下,一般是采用平放较好;对于1/4W以下的电阻平放时,两个焊盘间的距离一般取4/10英寸,1/2W的电阻平放时,两焊盘的间距一般取5/10英寸;二极管平放时,1N400X系列整流管,一般取3/10英寸;1N540X系列整流管,一般取4~5/10英寸。
(2)竖放:
当电路组件数较多,而且电路板尺寸不大的情况下,一般是采用竖放,竖放时两个焊盘的间距一般取1~2/10英寸。
4.电位器:
IC座的放置原则
(1)电位器:
在稳压器中用来调节输出电压,故设计电位器应满中顺时针调节时输出电压升高,反时针调节器节时输出电压降低;在可调恒流充电器中电位器用来调节充电电流折大小,设计电位器时应满中顺时针调节时,电流增大。
电位器安放位轩应当满中整机结构安装及面板布局的要求,因此应尽可能放轩在板的边缘,旋转柄朝外。
(2)IC座:
设计印刷板图时,在使用IC座的场合下,一定要特别注意IC座上定位槽放置的方位是否正确,并注意各个IC脚位是否正确,例如第1脚只能位于IC座的右下角线或者左上角,而且紧靠定位槽(从焊接面看)。
5.进出接线端布置
(1)相关联的两引线端不要距离太大,一般为2~3/10英寸左右较合适。
(2)进出线端尽可能集中在1至2个侧面,不要太过离散。
6.设计布线图时要注意管脚排列顺序,组件脚间距要合理。
7.在保证电路性能要求的前提下,设计时应力求走线合理,少用外接跨线,并按一定顺充要求走线,力求直观,便于安装,高度和检修。
8.设计布线图时走线尽量少拐弯,力求线条简单明了。
9.布线条宽窄和线条间距要适中,电容器两焊盘间距应尽可能与电容引线脚的间距相符;
10.设计应按一定顺序方向进行,例如可以由左往右和由上而下的顺序进行。
(四)调试及仿真
4.1调试
4.1.1断点调试
为安全起见,防止硬件烧坏,首先进行断电调试,用万用表检测系统是否有短路现象,再检查严原理是否正确,各个线路的电平是否正常。
经检测,未出现短路现象以及各个电平都正常。
4.1.2通电调试
(1).关掉交流电源开关,用万用表直流电压档测量稳压输出电压,测量结果只有4.2V,用12V电源直接接入7805输入端,测量输出电压达到4.99V。
经检查分析为稳压芯片7805输入端电容没有接入,输入电压变化太大,造成7805无法稳压。
经处理问题解决。
(2).检查系统时钟是否正常工作,用万用表直