ImageVerifierCode 换一换
格式:DOCX , 页数:30 ,大小:381.09KB ,
资源ID:22067819      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/22067819.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(基于有原理图和pcb图的 AT89S52单片机交通灯控制系统的设计Word格式.docx)为本站会员(b****7)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

基于有原理图和pcb图的 AT89S52单片机交通灯控制系统的设计Word格式.docx

1、 八、结论与心得 13 九、参考文献 14 十、致谢 14 十一、程序清单 14摘要:近年来随着科技的飞速发展,单片机的应用正在不地走向深入,同时带动传统控制检测日新月益更新。在实时检测和自动控制的单片机应用系统中,单片机往往是作为一个核心部件来使用,单片机方面知识是不够的,还应根据具体硬件结构,以及针对具体应用对象特点的软件结合,加以完善。交通信号灯的出现,使交通得以有效管制,对于疏导交通流量、提高道路通行能力,减少交通事故有明显效果。本系统采用单片机AT89S52为中心器件来设计交通灯控制器,系统实用性强、操作简单、扩展性强。关键词:1、单片机最小系统。2、红、黄、绿LED交通灯。3、紧急

2、通车开关。一、设计任务与要求 用AT89S52单片机控制一个交通信号灯系统,晶振采用12MHZ。 设A车道与B车道交叉组成十字路口,A是主道,B是支道。设计要求如下:用发光二极管模拟交通信号灯,用按键开关模拟车辆检测信号。正常情况下,A、B两车道轮流放行,A车道放行50s,其中5s用于警告;B车道放行30s,其中5s用于警告。交通繁忙时,交通信号灯控制系统应有手控开关,可人为地改变信号灯的状态,以缓解交通拥挤状况。在B 车道放行期间,若A车道有车而B车道无车,按下开关K1 使 A车道放行15s;在 A车道放行期间,若B车道有车而A车道无车,按下开关K1 使B 车道放行15s。有紧急车辆通过时,

3、按下K2开关使 A、B车道均为红灯,禁行20s。二、方案设计与论证方案一: 交通控制系统主要控制A、B两车道的交通,以AT89S52单片机为核心芯片,通过控制三色LED的亮灭来控制各车道的通行;另外通过2个按键来模拟各车道有无车辆的情况和有紧急车辆的情况。根据设计要求,制定总体设计思想如下:1、正常情况下运行主程序,采用0.5S延时子程序的反复调用来实现各种定时时间。2、一道有车而另一道无车时,采用外部中断1执行中断服务程序,并设置中断为低优先级中断。3、有紧急车辆通过时,采用外部中断0执行中断服务程序,并设置中断为高优先级中断,实现二级中断嵌套。该电路具有电路简单,设计方便,显示亮度高,耗电

4、较少,也非常的可靠等点。总体设计框图如图1所示: 图1 系统整体设计方框图方案二:采用标准AT89S52单片机作为控制器;通行倒计时显示采用3位数码管;主、次通道及行人指示灯采用双色高亮发光二极管;LED显示采用动态扫描,以节省端口。紧急车辆通行采用实时中断完成,识别方法采用手动按钮。按以上系统构架设计,单片机端口资源刚好满足要求。该系统具有电路简单,设计方便,显示亮度高耗电少,可靠性高,但是占用单片机资源太多了。整个电路组成框图如图2所示。 图2 方案三:采用AT89C2051单片机作为控制器,通行倒计时、主、次车道及行人通行指示采用单块LCD液晶点阵显示器。这种方案设计占用单片机的端口最少

5、,硬件也最少,耗电也最少;虽然显示图案也很精美,但由于亮度太暗,晚上还得必须开背光灯,所以较少采用。通过以上综合分析可以看出,方案一具有综合设计优点,因此城市道口交通灯控制系统模型采用方案一设计。三、硬件单元电路设计与参数计算1、时钟电路模块时钟电路由一个晶体振荡器12MHZ和两个30pF的瓷片电容组成。时钟电路用于产生单片机工作所需要的时钟信号,而时序所研究的是指令执行中各信号之间的相互关系。单片机本身就如一个复杂的同步时序电路,为了保证同步工作方式的实现,电路应在唯一的时钟信 号控制下严格地工作。其电路如图3所示: 图3 时钟电路模块2、复位电路模块 复位电路是使单片机的CPU或系统中的其

6、他部件处于某一确定的初始状态,并从这状态开始工作,除了进入系统的正常初始化之外,当由于程序运行出错或操作错误使系统处于死锁状态时,为摆脱困境,也需按复位电路以重新启动。本设计采用的是按键复位电路。其电路如图4所示: 图4 复位电路3、主控制系统模块主控制器采用AT89S52,是ATMEL公司生产的一款性能稳定的8位单片机。AT89S52具有1个8KB的FLASH程序存储器,1个512字节的RAM,4个8位的双向可位寻址I/O端口,3个16位定时/计数器及1个串行口和6个向量二级中断结构。单片机的P0口分别用于控制南北及东西的通行灯,P2口和P34-P37口用于4组4位LED计时器的控制,紧急车

7、辆通行时使用外中断0(P32)和外中断1(P33),进行手动按键,即可转换。其主控电路如图5所示: 图5 主控制系统模块4、交通灯输出控制模块道口交通灯指示采用高亮度红、黄、绿发光二极管进行提示。其图如图6所示 图6 LED显示模块当R=220欧时,按公式A=(5-1.8)/R计算,电路中的电流大小应为A=14.545mA.由于每个路口的通行双向指示处理相同,因此每个端口应具有3A的吸收电流能力。5、时间显示电路模块 道口通行剩余时间采用高亮红色7段LED发光数码管显示,采用共阳数码管,如用单片机吸收电流驱动,列扫描驱动使用三极管,按每段6mA电流计算,全显示字形“8”时,每个数码需6mA*8

8、=48mA,由于时间显示每个道口相同,共需要电流192mA,因此设计中也采用了中功率三极管8550.其显示电路如图7所示:6、紧急通车电路模块 为了实现此功能,利用单片机中断达到目的。利用一个手动按钮开关接至单片机外部中断0,同时在软件设计时将其设定为最高优先级,当其按下时,四方全为红灯,同时将中断位置的PSW、ACC进栈保护,当其计时完了之后,回到原来的位置进行执行。再利用一个手动按钮接至单片机外部中断1当其按下时,如果是东西道是红灯,而南北道是绿灯,则将其置为东西是绿灯,南北是红灯;如果是东西道是绿灯,而南北道是红灯,则将其置为东西是红灯,南北是绿灯。两种情况都是执行完后,回到断点处继续执

9、行。其电路如图8所示: 图7 数码管显示模块 图8 按键控制电路三、软件设计与流程图1、软件的设计 主程序采用查询方式定时,调用0.5S延时子程序的次数,从而获取交通灯的各种时间。子程序采用定时器1方式1查询式定时,定时器定时50ms,确定50ms循环20次,从而获得1S的延时时间。有车车道的放行的中断服务程序首先要保护现场,因而需用到延时子程序,子程序采用定时器0方式1查询式定时,定时器定时50ms,确定50ms循环20次,从而获得1S的延时时间,保护现场时还需关中断,以防止高优先级中断(紧急车辆通过所产生的中断)出现导致程序混乱。开中断,由软件查询外中断1,判别哪一道有车,再根据查询情况执

10、行相应的服务。待交通灯信号出现后,保持15S的延时,然后,关中断,恢复现场,再开中断返回主程序。紧急车辆出现时的中断服务程序也需要保护现场,但无须关中断(因其为高优先级中断),然后执行相应的服务,待交通灯信号出现后延时20S,确保紧急车辆通过交叉路口,然后,恢复现场,返回主程序。2、程序流程图 主程序 有车车道放行时的中断服务程序(外中断1) 紧急情况时的中断服务程序(外中断0)五、总原电路及元器件清单1总原理图如图9所示 图9 总的原理图2PCB制板图如图10所示 图10 PCB板3整体电路仿真图以及仿真结果分析(1)、整体电路仿真图如图11所示 图11 仿真图(2)、仿真结果分析 上电或按

11、键复位后数码管无显示,东西、南北的灯都为红灯亮;开始工作后主车道绿灯亮次车道红灯亮50S,在这里选定它亮到5S时,主车道绿灯灭,黄灯亮;5S后主车道变为红灯亮次车道绿灯亮30S,在这里选定它亮到5S时,次车道黄灯亮,5S后返回重新执行。按紧急车辆按钮红灯全亮显示时间为20S;有车车道放行按钮按下时,若主车道是绿灯、次车道是红灯,则把主车道变为红灯、次车道变为绿灯,显示15S;若主车道是红灯、次车道是绿灯,则把主车道变为绿灯、次车道变为红灯,显示15S; 4、元件清单 如下表所示: 元件名称 型号 数量/个 用途 单片机 AT89S52 1 控制核心晶振 12MHZ 晶振电路 电容 30pF 2

12、 电解电容 10uF 复位电路 电阻 5.1K 发光二极管 LED 12 红、黄、绿灯 集成块 74LS08 按键电路 220 13 LED限流 470 8 数码管电路 电阻 1K 7数码管驱动、按键电路 四位共阳数码管 GC-3461BS 显示电路 微动开关 3 三级管PNP 8550 4 数码管驱动电路六、安装与调试1. 电路安装打好板后,按照所画的PCB板,一一的把各个元件焊接到所制的板上即可。2. 电路调试电路调试是利用开发系统、基本测试仪器(万用表、示波器等),检查系统硬件中存在的故障。其调试可分为静态调试与动态调试两步进行。静态调试是在系统未工作时的一种硬件检测。第一步:目测。检查

13、外部的各种元件或者是电路是否有断点。第二步:用万用表测试。先用万用表复核目测中有疑问的连接点,再检测各种电源与地线之间是否有短路现象。第三步:加电检测。给板加电,检测所有的插座或是器件的电源端是否符合要求的值。第四步:是联机检查。因为只有用单片机开发系统才能完成对用户系统的调试。动态调试动态调试是在系统工作的情况下发现和排除系统硬件中存在的器件内部故障、器件连接逻辑错误等的一种硬件检查。动态调试的一般方法是由近及远、由分到合。由分到合是指首先按逻辑功能将系统硬件电路分为若干块,当调试电路时,与该元件无关的器件全部从系统中去掉,这样可以将故障范围限定在某个局部的电路上。当各块电路无故障后,将各电

14、路逐块加入系统中,在对各块电路功能及各电路间可能存在的相互联系进行调试。由分到合调试既告完成。由近及远是将信号流经的各器件按照距离单片机的逻辑距离进行由近及的分层,然后分层调试。调试时,仍采用去掉无关元件的方法,逐层调试下去,就会定位故障元件了。 3.软件调试 软件调试是通过对拥护程序的C编程、连接、执行发现程序中存在的语法错误与逻辑错误并加以排除纠正的过程。运行程序后,编辑,查看程序是否有逻辑的错误。七、性能测试与分析 系统做好的,进行系统的完整调试。按照所设计的流程图,用单片机跟踪模式程序进行调试,配合相关的硬件动作,可以观察LED的变化和数码管的显示是否正确。同样明确延时时间长短、跳转位

15、置及调用的程序功能。经过观察各检测,我可以看到整个系统的功能都能达到我的设计要求。八、结论与心得以往每次做课程设计,都会感觉自己收获不少。这次单片机课程设计也不例外。做课程设计是为了让我们对平时学习的理论知识与实际操作相结合,在理论和实验教学基础上进一步巩固已学基本理论及应用知识并加综合提高,学会将知识应用于实际的方法,提高和解决问题的能力。第一,在编写软件中,在此过程中我更为熟练得掌握汇编语言各种指令的使用方法,掌握了keil软件的使用。第二,在软件调试过程中,使我又一次复习了keil和proteus联合使用的方法。在调试时曾经遇到数码管倒计时显示时间两位不能同时显示,后来经过查找资料不断调

16、试才领悟到原来在显示的过程中要循环显示才能使得显示稳定下来。第三,在做原理图和PCB的过程中,使我进一步掌握了proteus软件的使用方法。再次熟悉了各种作图工具的应用,而且培养了我在设计原理图时的一些技巧和好的习惯。第四,在做实物的过程中,培养了我认真耐心的工作态度。我在做板子过程中,首先由于我的布线比较紧密加上孔和焊盘过小使得在打孔是出现刮断线以及在焊接的时候出现了虚焊和联焊等问题,后来我不得不重新再做一次板;二是由于焊接前没检查断线问题,使得我的PCB在加载程序后只有灯亮,而数码管却不亮,后来经过我的仔细检查,原来是在给三级管供电的线有断,将其连接起来后,就能显示了,从而得以成功。总之,

17、通过这次课程设计,我掌握了用单片机设计交通灯的基体方法,增强了我寻找问题,解决问题的能力。培养了我的设计思维,此次课程设计的成功不仅帮助我更好地掌握书本知识,尤其重要的是增强了我的自信,培养了我独立思考的能力。但是此次设计不中之处是不能实现左右弯灯,不有人行道控制灯,不能进行流量控制。九、参考文献 1单片机基础.李广弟、朱月秀、冷祖祁.北京航空航天大学出版社。 2 华成英 童诗白, 模拟电子技术基础(第四版),高等教育出版社。 3 康华光,电子技术基础 数字部分(第五版),高等教育出版社。 451单片机C语言常用模块与综合系统设计实例精讲.于永、戴佳、常江.电子工业出版社。 5单片机课程设计指

18、导.杨居义.清华大学出版社。 6零基础学单片机C语言程序设计.赵建领、薛园国.机械工业出版社。十、致谢 通过本次毕业设计,我在指导老师邹清平的精心指导和严格要求下,获得了丰富的理论知识,极大地提高了实践能力,并对当前电子领域的研究状况和发展方向有了一定的了解,单片机领域这对我今后进一步学习电子方面的知识有极大的帮助。另外,此次毕业设计还获得了我们同学的大力支持。在此我忠心感谢邹清平以及各位同学的指导和支持。在未来的工作和学习中,我将以更好的成绩来加报各位老师和同学。十一 、程序清单 #include #define uchar unsigned char #define uint unsign

19、ed int #define time 50000 #define on 0 #define off 1sbit RED_ZHU = P00; /南北 红灯 sbit YELLOW_ZHU = P01;/南北 黄灯sbit GREEN_ZHU = P02; /南北 绿灯 sbit RED_ZHI = P03; /东西 红灯sbit YELLOW_ZHI = P04; /东西 黄灯sbit GREEN_ZHI = P05; /东西 绿灯sbit P23 = P34;sbit P22 = P35; /东西方向数码管位选sbit P21 = P36;sbit P20 = P37; /南北方向数码管位

20、选sbit int0_key = P32;sbit int1_key = P33;void display1(uchar,uchar);void display2(uchar,uchar);void delayms(uint k);uchar temp1,temp2,temp3,temp4,temp5,temp6;/*=倒计时=*/uchar N = 50,Y = 45,Z = 50,M = 75,G = 80,U =80;uchar C50ms,t0;uchar seg = 1;uchar flag=0,led_data_temp;void InitialT1(void) TMOD = 0x

21、11; /定时器0,1工作在方式1 TH1 = (65536 - time)/256; /相当于(65536-time)/256; TL1 = (65536 - time)%256;/初值为time(50ms) TR1 = 1;/开定时器1中断 ET1 = 1;/允许定时器1中断 ET0 = 1; TH0 = (65536 - time)/256; TL0 = (65536 - time)%256; EX0 = 1; /允许外部中断0 IE0 = 1;/启动外部中断0 PX0 = 1; EX1=1; IE1=1; EA = 1; /开总中断void int0(void) interrupt 0

22、 /外中断0 flag = 0; led_data_temp = P0; t0 = 20; if(!int0_key) delayms(10); if(!int0_key) while(!int0_key); TH0 = (65536 - time)/256; TL0 = (65536 - time)%256; TR1 = 0; TR0 = 1; EX0 = 0; EX1 = 0; C50ms = 0; void int1(void) interrupt 2 /外部中断1 t0=15; flag = 1; if(RED_ZHU = 0) & (GREEN_ZHI = 0)|(YELLOW_ZH

23、I = 0)&(RED_ZHU = 0) P0 = 0xff; GREEN_ZHU = 0; RED_ZHI = 0; else /if(RED_ZHI = 0)&(GREEN_ZHU = 0) GREEN_ZHI = 0; RED_ZHU = 0;int1_key) int1_key)int1_key);void ISRT0(void) interrupt 1/定时器0中断服务子程序 temp1 = N,temp2 = Y,temp3 = Z,temp4 = M,temp5 = G,temp6 = U; /重装初值time YELLOW_ZHU=1; /如果在黄5S时进行熄灭黄灯 YELLO

24、W_ZHI=1;flag) P0 = 0xf6; C50ms+; if(C50ms 19) t0-; C50ms = 0; if(t0 = 0) P0 = led_data_temp; N = temp1,Y = temp2,Z = temp3,M = temp4,G = temp5,U = temp6; TR0 = 0;/禁止定时器1中断 TR1 = 1;/开定时器1中 EX1 = 1; /EX0 = 1; C50ms = 0; return; void ISRT1(void) interrupt 3 /定时器1中断服务子程序 N-; M-; Y-; Z-; G-; U-;/*=延时=*/void Delay10uS(uchar second) uint i; while(second-) != 0) for(i = 0;i 5;i+)

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1