单片机课程设计现代交通灯的设计.doc

上传人:文库蛋蛋多 文档编号:4147513 上传时间:2023-04-07 格式:DOC 页数:17 大小:408KB
返回 下载 相关 举报
单片机课程设计现代交通灯的设计.doc_第1页
第1页 / 共17页
单片机课程设计现代交通灯的设计.doc_第2页
第2页 / 共17页
单片机课程设计现代交通灯的设计.doc_第3页
第3页 / 共17页
单片机课程设计现代交通灯的设计.doc_第4页
第4页 / 共17页
单片机课程设计现代交通灯的设计.doc_第5页
第5页 / 共17页
点击查看更多>>
资源描述

《单片机课程设计现代交通灯的设计.doc》由会员分享,可在线阅读,更多相关《单片机课程设计现代交通灯的设计.doc(17页珍藏版)》请在三一办公上搜索。

1、中州大学机电与汽车工程学院单片机课程设计报告 设计题目: 现代交通灯的设计 专业班级 学号 姓名 指导教师 目录摘要.2概述.3一、 系统方案设计.4 1.1、方案选择.4 1.2、设计方案流程.4二、系统硬件设计.5 2.1、各组成部分电路设计.5 2.2、路口指示灯部分.6 2.3、定时器1工作方式.6 2.4、AT89S51单片机.6 2.5、单片机管脚介绍.7 2.6、工作方式介绍.9 2.7、定时/计数器介绍.9 2.8、寻址方式介绍.9三、 系统软件设计.9总结.11致谢.12参考文献.13附件.14摘要本设计是交通信号灯控制系统,随着社会的不断的进步,社会的不断发展。交通也日渐复

2、杂,交通的自动化也不断更新,交通的一些指挥系统光靠人来完成是远远不够的,这就需要设计各种交通指挥自动化系统来完成这些复杂的工作。从而使交通指挥系统更加有秩序,更加安全。至此本人设计了交通信号灯控制系统,来指挥十字路口车辆的停通,使红绿灯指挥系统实现自动化,无人化。 该交通灯控制系统控制的是东西和南北两个方向上的车辆通行,此系统核心元件为单片机AT89C51,单片机的低电压,高性能的8位微处理器,俗称单片机。该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微

3、控制器,为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。对其编写相关程序来控制交通信号灯和数码管的时间显示,并采用外部中断来控制紧急情况。此设计的硬件电路不是很复杂,关键在于软件的设计,即程序的编写。本设计采用的程序编写语言为现在流行的C语言,简单又便于阅读。编写程序的原则是:1.满足设计的要求。2.尽量采用最好,最有效的算法。3.编写时应尽量用最简洁的语言。编写好源程序后,采用keil软件对其进行编译,使其生成单片机可以识别的.hex文件,再把此文件导入单片机89C51中即可。关键词:单片机AT89C51 交通指示灯 控制概述随着社会的发展,人们生活水平的改善,私家车越来越多。车流量的增

4、加给交通带来了极大的压力,也使得交通安全日益严峻。而交通灯则成为疏通车辆,缓解交通压力,减少交通事故,维护交通安全,制定交通规则最常见和最有效的手段。十字路口是生活中常见的交通路线,而十字路口也是车流量较多,导致车辆堵塞教为严重的交通路口,因此,十字路口交通灯成了交通路线上最常见的交通设备。红灯停绿灯行成了每个人口熟能详的交通规则。在很久以前,交通灯仅仅只是通过简单的时序电路控制红绿灯的切换,这导致了人们对时间把握的不准确,如行人和司机不能正确的把握交通灯的变换,从而出现不必要的交通事故。由单片机控制的十字路口交通灯具有黄灯示意减速停车和夜间警示等功能,完善了交通灯功能,减少交通事故,做到了更

5、好的改善交通环境,维护人们生命和财产安全,为创造美好城市交通形象发挥了不可替代的作用。设计要求:1、设计一款带左转、直行,右转三种通行绿灯;2、 带紧急按钮功能,方便特种车辆通行;3、夜间运行模式按钮,按下时,所有方向黄灯闪烁;4、其他功能(创新部分);一、 系统方案设计 1、 方案选择 方案一 PLC控制交通灯 PLC主要应用于强电方面的工业控制,或者整条流水线的控制。虽然比较稳定,但是功耗要大。 方案二 单片机控制交通灯 单片机具有结构简单、编程方便、经济、易于连接等优点, 特别是其内部定时器计数器、中断系统资源丰富, 可对交通灯进行精确的控制, 有应用价值。 经过我们的小组一致讨论得出,

6、使用单片机控制的交通灯更方便实用,所以我们选择了方案二作为我们的设计方案。2、 设计方案流程采用定时器方式来实现交通灯的控制系统,使道路状况切换时间更加准确。正常情况下,90S后信号灯由“红灯”转“黄灯”,经过5S的过渡时间“黄灯”转“绿灯”。假如当有紧急情况时,按键SW1,这时候东西路的灯都变为红灯,南北路的灯变为绿灯。如果东西路的车流量大,南北路没有车,而此时东西路是红灯,南北路是绿灯,此时按键SW2使东西路亮绿灯,南北路亮红灯。另外设置一个开关SW3,在晚上由人工闭合,此时所有的灯都变成黄灯。路口交通指挥系统如下图所示路口交通指挥系统示意图二、 系统硬件设计系统硬件设计组成:AT89C5

7、1单片机、控制电路、振荡电路、交通灯。原理图如下硬件原理图2.1、各组成部分电路设计:时钟电路部分 本系统采用内部时钟产生方式:在和两端跨接陶瓷谐振器,与内部反相器构成稳定的自激振荡器采。晶振采用12MHz的振荡频率和两个30Pf瓷片电容C1、C2,两个电阻对频率有微调作用。其电路下图2.2、路口指示灯部分采用红黄绿三种颜色的发光二极管共12个分为4组代表路口的交通灯(电路图中用两组示意).其中每两组控制一个路口,具体时序如下表:颜色方向东西南北红灯9090黄灯55绿灯9090交通灯时序表2.3、定时器1工作方式定时器1工作方式1,即16位定时器,定时器50000uS(50mS)中断一次,所以

8、定时常数的设置可按以下方法计算:定时时间=(65536-定时常数) X 1uS=50000uS定时常数=15536,(0x3CB0)对50mS中断次数计数10次,就是0.5秒钟。定时器0工作于方式1,定时20mS,定时常数=45536,(0XB1E00)。2.4、AT89S51单片机 本设计采用ATMEL公司的AT89S51单片机. (1)AT89C51是一种带4K字节闪存可编程可擦除只读存储器的低电压、高性能CMOS 8位微处理器,俗称单片机。AT89C2051是一种带2K字节闪存可编程可擦除只读存储器的单片机。单片机的可擦除只读存储器可以反复擦除1000次。该器件采用ATMEL高密度非易失

9、存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,AT89C2051是它的一种精简版本。AT89C单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。 (1)AT89C51单片机的主要特性 与MCS-51 兼容 ,4K字节可编程闪烁存储器 ,寿命:1000写/擦循环,数 据保留时间:10年,全静态工作:0Hz-24Hz,三级程序存储器锁定,128*8位内部RAM,32可编程I/O线,两个16位定时器/计数器,5个中断源(两个外部中断源和3个内部中断源) 可编程串行通道,低功

10、耗的闲置和掉电模式,片内振荡器和时钟电路。(1)80C51单片机基本结构 2.5单片机管脚介绍 80S51总线型引脚封装电源及时钟引脚(4个) CCV:电源接入引脚; SSV:接地引脚; XTAL1:晶体振荡器接入的一个引脚(采用外部振荡器时,此引脚接地); XTAL2:晶体振荡器接入的另一个引脚(采用外部振荡时,此引脚作为外部振荡信号的输入端)。 控制线引脚(4个) RST/VPD:复位信号输入引脚/备用电源输入引脚; ALE/PROG:地址锁存允许信号输出引脚/编程脉冲输入引脚; EA/VPP:内外存储器选择引脚/片内EPROM(或FlashROM)编程电压输入引脚; PSEN:外部程序存

11、储器选通信号输入引脚。 1)、并行I/O引脚(32个,分成4个8位口) P0.OP0.7:一般I/O引脚或数据/低位地址总线复用引脚; P1.OP1.7: 一般I/O引脚; P2.OP2.7: 一般I/O引脚或高位地址总线引脚; P3.OP3.7: 一般I/O引脚或第二功能引脚。 2)、I/O引脚结构介绍 P0口:P0口为一个8位漏级开路双向I/O口,每脚可吸收TTL门电流。当P1口的管脚第一次写1时,被定义为高阻输入。P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。在FIASH编程时,P0 口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉高。 P

12、1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。在FLASH编程和校验时,P1口作为第八位地址接收。 P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写1时,其管脚被内部上拉电阻拉高,且作为输入。并因此作为输入时,P2口的管脚被外部拉低,将输出电流。这是由于内部上拉的缘故。P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。在给出地址1时,它利用内部

13、上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。P2口在FLASH编程和校验时接收高八位地址信号和控制信号。 P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。当P3口写入1后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。P3口也可作为AT89C51的一些特殊功能口,如下表所示:口管脚备选功能 P3.0 RXD(串行输入口) P3.1 TXD(串行输出口) P3.2 /INT0(外部中断0) P3.3 /INT1(外部中断1) P3.4 T0(记时器0外部输入

14、) P3.5 T1(记时器1外部输入) P3.6 /WR(外部数据存储器写选通) P3.7 /RD(外部数据存储器读选通) P3口同时为闪烁编程和编程校验接收一些控制信号。 RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。 ALE/PROG:当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的地位字节。在FLASH编程期间,此引脚用于输入编程脉冲。在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。因此它可用作对外部输出的脉冲或用于定时目的。然而要注意的是:每当用作外部数据存储器时,将跳过一个ALE脉冲。如想禁止ALE的输出可在SFR8

15、EH地址上置0。此时, ALE只有在执行MOVX,MOVC指令是ALE才起作用。另外,该引脚被略微拉高。如果微处理器在外部执行状态ALE禁止,置位无效。3)、中断源介绍 0INT(P3.2)。外部中断0请求信号输入引脚,可由IT0(TCON.0)选择其为低电平有效还是下降沿有效。当CPU检测到P3.2引脚上出现有效的中断信号时,中断标志IE0(TCON.1)置1,向CPU申请中断。1INT(P3.3)。外部中断0请求信号输入引脚,可由IT1(TCON.2)选择其为低电平有效还是下降沿有效。当CPU检测到P3.3引脚上出现有效的中断信号时,中断标志IE1(TCON.3)置1,向CPU申请中断。

16、TF0(TCON.5),片内定时/计数器T0溢出中断请求标志。当定时/计数器T0发生溢出时,置位TF0,并向CPU申请中断。 TF1(TCON.7),片内定时/计数器T1溢出中断请求标志。当定时/计数器T1发生溢出时,置位TF1,并向CPU申请中断。 RI(SCON.0)或TI(SCON.1),串行口中断请求标志。当串行口接收完一帧串行数据时置位RI或当串行口发送完一帧串行数据时置位TI,向CPU申请中断。2.6、工作方式介绍 方式0:13位计数器; 方式1:16位计数器; 方式2:自动重装初值的8位计数方式; 方式3:T0分为两个独立的8位计数器,T1停止工作。2.7、定时/计数器介绍 80

17、C51单片机内集成有两个可编程的定时/计数器:T0和T1,它们既可以工作于定时模式,也可以工作于外部事件计数模式,定时/计数器T0由特殊功能寄存器TH0、TL0构成,定时/计数器T1由特殊功能寄存器TH1、TL1构成。定时/计数器的实质是加1计数器(16位),由高8位和低8位两个寄存器组成。TMOD是定时/计数器的工作方式寄存器,确定工作方式和功能;TCON是控制寄存器,控制T0、T1的启动和停止及设置溢出标志。单片机复位时,两个寄存器的所有位都被清0。80C51单片机定时/计数器的工作由两个特殊功能寄存器控制。TMOD用于设置其工作方式,TCON的低4位用于控制外部中断。2.8、寻址方式介绍

18、 寄存器寻址; 直接寻址; 寄存器间接寻址; 立即寻址; 基址寄存器加变址寄存器变址寻址; 相对寻址和位寻址。三、系统软件设计本次设计要进行软件仿真,所以采用Keil软件和Proteus软件联合调试,具体过程可以概括为以下两点: (1)在Keil软件上编写程序,编译生成hex文件; (2) 在Proteus上绘制原理图,把生成的hex文件添加到单片机中,点击运行 进行仿真。主要程序流程图如下 程序组要流程图总结经过一个星期的努力,终于完成了自己的单片机课程设计。虽说忙碌了点,但我觉得这样的生活充实且有成就感,当然,也获益匪浅。 通过这次交通灯的课程设计,让我提高了用专业知识、专业技能分析和解决

19、现实问题的能力。使我在单片机的基本原理、单片机应用学习过程中,以及在常用编程设计思路技巧的掌握方面都能向前迈了一大步,课程设计让我把以前学习到的知识得到巩固和进一步的提高认识,并且对已有知识有了更深层次的理解和认识。可以说在整个软件设计过程中,我不仅学会了延时的方法,还掌握数码管的显示方式及其如何选择。当然,通过几次反复调试过程,使得我对C语言有了更深刻的理解,为日后成为一名合格的应用型人才打下良好的基础。 在整个课程设计过程我还掌握了一下几点: (1) 掌握了电子系统设计的流程,熟悉了各种硬件电路以及软件编程方法。 (2)理解了最单片机的各部分组成及特性。 (3)熟练使用了各种计算机辅助设计

20、工具完成设计,充分掌握了这些工具的使用。 (4)学会了利用Keil uVision3对汇编语言进行编译过程.更进一步加深了对PROTEUS软件的学习。 通过本次的课程设计,充分意识到自己所学的东西还是非常有限的,不过通过设计,还是学到了一些书本上没有学到的东西,为自己以后的学习起了很大的帮助。就我个人而言,很深刻地体会到一点,那就是我们在设计过程中一定要有一个整体的清晰的思路,知道自己的设计的对象的基本功能和核心器件的适用及其作用,只要把握住这些主要方面,一些小问题都将围绕着这些主要问题而逐步得到解决。同时我也懂得,在整个设计过程中,生活中也一样,一定要意志坚定,克服自己的畏难情绪,这样才能将

21、事情做好,才能干出一番成就。致谢本次课程设计得以完成,要感谢的人实在太多了,首先要感沈老师,因为设计是在沈老师的悉心指导下完成的。沈老师渊博的专业知识,严谨的治学态度,精益求精的工作作风,诲人不倦的高尚师德,严以律己、宽以待人的崇高风范,朴实无华、平易近人的人格魅力对我影响深深。在我做课程设计的每个阶段,从选题到查阅资料,设计提纲的确定,中期设计的修改,后期程序格式调整等每一步都是在老师的悉心指导下完成的,倾注了老师大量的心血。她循循善诱的教导和不拘一格的思路给了我无尽的启迪,她的严谨细致、一丝不苟的作风,将一直是我工作、学习中的榜样。老师要指导很多同学的课程设计,加上本来就有的教学任务,工作

22、量之大可想而知,但在一次次的指导中,解决一个又一个难题给了我深刻的印象,使我在设计之外明白了做学问所应有的态度。老师一如既往的指导我们,她的精神激励了我们,使我们克服了在设计过程中的困难。在此,谨老师表示崇高的敬意和衷心的感谢!老师在设计过程中给与我的极大地帮助。同时,设计的顺利完成,离不开其他老师、同学和朋友的关心和帮助。在整个的设计过程中,各位老师、同学和朋友积极帮助我查资料和提供有利于设计的建议和意见,在他们的帮助下,设计得以不断的完善,最终帮助我完整的做完了整个设计。另外,要感谢在大学期间所有传授我知识的老师,是你们的悉心教导使我有了良好的专业课知识,这也是我这次设计得以完成的基础。感

23、谢所有给我帮助的老师和同学,谢谢你们!参考文献1. 江世明.单片机应用及原理(第2版).上海交通大学出版社,20052. 何立民.单片机高级教程. 北京:北京航空航天大学出版社,1999 3. 钱逸秋.单片机原理及应用.北京:电子工业出版社,2002 4. 周润景.基于proteus的电路及单片机系统设计与仿真.北京:北京航空航天大学出版社,2006.5 5. 潘永雄.电子线路CAD实用教程.西安:西安电子科技大学出版社,2006.5 6. 周润景.Proteus在MCS-51&ARM7系统中的应用百例北京:电子工业出版社, 200附件:#include #include unsigned c

24、har t0;void yellow(); /东西、南北方向同时打开黄灯 void yellowflash(); /东西、南北方向同时打开黄灯,每隔0.5秒开始闪烁void delay0_5s(); /延时0.5秒void delayxms(unsigned char t); /延时t*0.5秒/*函数名称:ex_intex0;函数功能:外部中断0服务子程序*/void ex_intex0(void) interrupt 0 EA=0; /关闭中断,不允许中断嵌套while(P3&0x04)=0) /检测外部中断0是否持续有效P1=0x1E; /东西方向绿灯亮、南北方向红灯亮,其它四个灯关闭。

25、EA=1; /打开中断 /*函数名称:ex_intex1;函数功能:外部中断1服务子程序*/void ex_intex1(void) interrupt 2 EA=0; /关闭中断,不允许中断嵌套while(P3&0x08)=0) /检测外部中断1是否持续有效 P1=0x33; /东西方向红灯亮、南北方向绿灯亮,其它四个灯关闭。EA=1; /打开中断 /*函数名称:tm_timer0;函数功能:定时器0服务子程序*/void tm_timer0(void) interrupt 1 EA=0; /关闭中断,不允许中断嵌套 while(P3&0x40)=0) /检测P3.6开关是否闭合yellow

26、(); /东西、南北方向同时打开黄灯 TH0 =0xb1; /20ms定时初值重新装入 TL0 =0xe0 EA=1; /打开中断 / 主程序void main()TMOD = 0x11; /T1工作方式1,T0工作方式0 EA=1;EX0=1;IT0=0; /打开外部中断0EX1=1;IT1=0; /打开外部中断1ET0=1; /打开定时器0中断TH0 =0xb1; /20ms定时初值重新装入 TL0 =0xe0 TR0 = 1; /启动定时器0while(1) /无限循环 P1=0x1e;/东西方向绿灯亮、南北方向红灯亮,其他四个灯关闭。delayxms(180);/延时90秒yellow

27、flash(); /东西、南北方向同时打开黄灯,每隔0.5秒闪烁一次P1=0x33;/东西方向红灯亮、南北方向绿灯亮,其他四个灯关闭。delayxms(180);/延时90秒yellowflash();/东西、南北方向同时打开黄灯,每隔0.5秒闪烁一次/*函数名称:yellow;功能:东西、南北方向同时打开黄灯*/void yellow()P1=0x2d; /两个黄灯同时打开/*函数名称:yellowflash;功能:东西、南北方向同时打开黄灯,每隔0.5秒闪烁一次*/void yellowflash() unsigned char i; for(i=0;i2;i+) P1=0x2d;/两个黄

28、灯同时打开 delayxms(10); P1=0xff;/两个黄灯同时关闭 delayxms(10);/*函数名称:delay0_5s 函数功能:延时0.5s,用T1工作方式1定时50ms,再循环10次得到0.5s的延时时间*/void delay0_5s() TH1=0x3c; TL1=0xb0; TR1=1; while(!TF1); /TF1=1时50ms定时时间到 TF1=0; TR1=0; /*函数名称:delayxms ;函数功能:在函数delay0_5s的基础延时,即延时t*0.5秒 */void delayxms(unsigned char t) for(t0=0;t0t;t0+) delay0_5s();

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 办公文档 > 其他范文


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号