
点击链接获取Keil源码与Project Backups仿真图https://download.csdn.net/download/qq_64505944/92510420?spm1001.2014.3001.55031、功能(1)/每路口红黄绿3信号灯(2)/每次循环红灯30s黄灯5s绿灯25s。2、压缩包构造代码与仿真常见问题、Keil源码程序、Proteus仿真图、参考文档、功能介绍、仿真代码运行、焊接事项、免费PPT模版、使用前必读。3、仿真构造AT89C51,12指示灯4数码管。4、代码文件代码120行左右文档5600字左右。C42主要内容设计一个能够控制十二盏交通信号灯的模拟系统,:利用单片机的定时器定时令十字路口的红绿灯交替点亮和熄灭并用LED灯显示倒计时间。基本要求1、通过单片机课程设计了解并掌握汇编语言的编程方法将理论联系实践提高动脑和动手的能力。2、通过该控制系统的设计掌握定时计数器及中断的使用方法和简单程序的编写提高自己的逻辑抽象能力。3、完成系统基本的硬件和软件设计并进行仿真调试。主要参考资料[1]刘守义等.单片机技术基础[M].西安电子科技大学出版社,2007.[2]王东峰等.单片机C语言应用100例[M].电子工业出版社,2009.[3]马忠梅等.单片机的C语言应用程序设计.北京航空航天大学出版社,2003.[4]王晋凯.简简单单学通51单片机开发 [M].清华大学出版社,2014.[5]夏继强.单片机实验[M].北京: 航空航天大学出版社,2001完 成 期 限12 月 11 日 - 12 月 26 日 指导教师签名 课程负责人签名摘 要交通在人们的日常生活中占有重要的地位随着人们社会活动的日益频繁这点更是体现的淋漓尽致。交通信号灯的出现使交通得以有效管制对于疏导交通流量、提高道路通行能力减少交通事故有明显作用。本系统采用单片机89C51为中心器件来设计交通灯控制器系统实用性强、操作简单、扩展性强。本设计就是采用单片机模拟十字路口交通灯的各种状态显示以及倒计时时间。中国车辆数量不断增加交通控制在未来的交通管理中起着越来越重要的作用。智能交通灯的管理比重修一条马路无论在经济、交通运行速率上都有很好的效益、更加节约资源。使交管人员有更多的精力投入到管理整个城市交通控制带来更大的经济和社会效益,为创造美好的城市交通形象发挥更多的作用。本设计采用51系列单片机ATMEL89C51为核心控制器件来设计已经简单的交通灯控制器。本系统由单片机I/0口扩展系统、交通灯状态显示系统、LED 数码显示系统、复位电路等几大部分组成。系统除基本的交通灯功能外还具有倒计时功能较好的模拟实现了十字路口可能出现的状况。软件上采用KEILC编程主要编写了主程序LED 数码管显示程序中断程序延时程序等。经过Proteus 8整机调试实现了对十字路口交通灯的模拟。关 键 词AT89C51LED交通灯目 录摘 要 11 概述 11.1设计背景 11.2设计目的 12 技术介绍 22.1 keil 22.2 proteus 23 总体方案与硬件设计 33.1硬件电路各元件介绍 33.1.1核心芯片AT89C51单片机的说明 33.1.2两位共阴七段数码管 43.1.3二极管 43.2复位电路 53.3振荡电路 53.2总体电路工作原理 54 系统程序设计 74.1系统电路图 74.2程序源代码 75 仿真测试 115.1软件调试 115.2仿真调试 125.2.1所需软件查询展示 125.2.2四种状态展示 125.3结果分析 146 总结 15参考文献 161 概述1.1设计背景当今红绿灯安装在个个道口上已经成为疏导交通车辆最常见和最有效的手段。但这个技术在19世纪就已经出现了。1858年在英国伦敦主要街头安装了以燃某气为光源的红、蓝两色的机械般手势信号灯用以指挥马车通行。这是世界上最早的交通信号灯。1868年英国机械工程师纳伊特在伦孰威斯敏斯特区的会议大厦前的广场上安装了世界上最早的煤气红绿灯。它由红绿两以旋转方式玻璃提灯组成。红色表示“停止”绿色表示“注意”。电气启动的红绿灯出现在美国这种红绿灯由红黄绿三色圆形的投光器组成,1914年始装于纽约市5号大街的一座高塔上。红k灯亮表示“停止”绿灯亮表示“通行”。信号灯的出现使得交通得以有效的管理对于疏导交通流量、提高道路通行能力、减少交通事故有明显效果。1968年联合国《道路交通和道路标志信号协定》对各种信号灯的含义作了规定。绿灯时通行信号灯面对绿灯的车辆可以直行左转弯和右转弯除非两一利中标志禁止某一利梓专向。左右转弯车辆必需让合法的正在路口内行驶的车辆和过人行横线的行人优先通行。红灯是禁行信号灯面对红灯的车辆必需在交叉路口的停车线后停车。黄灯是警告信号面对黄灯的车辆不能越城过停车线。但车辆已经十分接近停车线而不能安全停车的可以进入交叉路口!1.2设计目的本设计是由单片机控制的交通信号灯运用89c51单片机实现交通灯的控制实现红绿灯自动跳变倒计时显示黄灯蜂鸣器警示灯功能。在这次设计作品中不仅可以增加对整套系统运行的合理安排为未来做大的项目打下基础也可以增加对软硬件的在系统中的作用的了解同时也培养了我们团队的合作能力。1.3设计思路模拟交通灯控制器就是使用单片机来控制一些LED灯和数码管模拟真实交通灯的功能。当南北主干道通车时绿灯亮而东西次干道干道红灯亮;当25s通车时间到后主干道绿灯熄灭黄灯亮黄灯亮5s后由主干道切换到次干道通车。此时主干道黄灯熄灭红灯亮而次干道红灯熄灭绿灯亮次干道开始通车;25s通车时间到后次干道绿灯熄灭黄灯亮黄灯亮5s后由次干道切换到主干道通车。此时次干道黄灯熄灭红灯亮;而主干道红灯熄灭绿灯亮如此不断循环。红、黄、绿交替闪亮利用数码管倒计数显示间隔等用于管理十字路口的车辆及行人交通。片机中运行系统。设计好后通过proteus软件仿真并调试。2 技术介绍2.1 keilKeil C51是一款兼容单片机C语言软件开发系统与汇编相比C语言在功能上、结构性、可读性、可维护性上有明显的优势[1]因而易学易用。Keil提供了包括C编译器、宏汇编、链接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案通过一个集成开发环境μVision将这些部分组合在一起。运行Keil软件需要WIN98、NT、WIN2000、WINXP等操作系统。如果你使用C语言编程那么Keil几乎就是你的不二之选即使不使用C语言而仅用汇编语言编程其方便易用的集成环境、强大的软件仿真调试工具也会令你事半功倍。Keil C51软件提供丰富的库函数和功能强大的集成开发调试工具全Windows界面。另外重要的一点只要看一下编译后生成的汇编代码就能体会到Keil的优势。2.2 proteusProteus是世界上著名的EDA工具(仿真软件)从原理图布图、代码调试到单片机与外围电路协同仿真一键切换到PCB设计真正实现了从概念到产品的完整设计。迄今为止是世界上唯一将电路仿真软件、PCB设计软件和虚拟模型仿真软件三合一的设计平台其处理器模型支持8051、HC11、PIC10/12/16/18/24/30/DsPIC33、AVR、ARM、8086和MSP430等2010年增加Cortex和DSP系列处理器并持续增加其他系列处理器模型。在编译方面它也支持IAR、Keil和MATLAB等多种编译.3 总体方案与硬件设计3.1硬件电路各元件介绍3.1.1核心芯片AT89C51单片机的说明1.AT89C51简介AT89C51是一种带4K字节闪烁可编程可擦除只读存储器FPEROM—FalshProgrammable and Erasable Read Only Memory )的低电压高性能CMOS8位微处理器,俗称单片机。AT89C2051是一种带2K字节闪烁可编程可擦除只读存储器的单片机。单片机的可擦除只读存储器可以反复擦除100次。该器件采用ATMEL高密度非易失存储器制造技术制造与工业标准的MCS-51指令集和输出管脚相兼容。由于将多功能8位CPU和闪烁存储器组合在单个芯片中ATMEL的AT89C51是一种高效微控制器AT89C2051是它的一种精简版本。AT89C单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。图3-1 AT89C512.引脚说明1)电源引脚VCC40口 5v直流电VSS 20口接地2)复位引脚RST(9口) 复位输入信号3)时钟引脚XTAL119口 晶振输入口XTAL2 18口 晶振输入口4)控制引脚ALE30口地址锁存允许信号PSEN 29口 外部存储器选通信号EA31口EA引脚表示存取外部程序代码之意低电平动作当此引脚接低电平后系统会取用外部的程序代码存于外部EPROM中来执行程序。EA引脚必须接低电平因为其内部无程序存储器空间。5)I/O口引脚P0# : P0.0~P0.7P1# : P1.0~P1.7P2# : P2.0~P2.7P3# : P3.0~P3.76)P3口复用引脚P3.0串口输入P3.1串口输出P3.2外部中断0P3.3外部中断1P3.4计数器输入0P3.5计数器输入1P3.6外部存储器写信号P3.7外部存储器读信号3.1.2两位共阴七段数码管两位共阴七段式数码管其实就是将两个一位八段式数码接相应的电路组合在一起。并引出两控制端1和2同过其电平的高低来控制两个数码管的高低位工作。图3-2 两段共阴七段数码管3.1.3二极管交通信号灯采用红、黄、绿三种颜色的二极管组成三色交通信号。图3-3 三色二极管3.2复位电路本设计中的单片机采用了外接的复位电路,并且采用了一种上电复位和手动复位的组合。自动上电复位电路保证在上电开机时对AT89C51单片机进行正确的复位,手动复位可在上电复位基础上并接一个复位开关这样既保证上电复位又可手动复位。单片机复位后内部特殊功能寄存器复位后的状态为确定值。图3-4复位电路3.3振荡电路AT89C51的XTAL 1和XTAL 2引脚分别为单极片内反相放大器的输入/输出端其频率范围为1.2~1 2 MHz。XTAL2又是内部时钟发生器的输入端,这个内部反相器可与外部元件组成皮尔斯振荡器。图3-5振荡电路3.2总体电路工作原理十字路口要有数字显示装置作为时间提示以便人们更直观地把握时间。具体要求为当某方向绿灯亮时置定时器为某一个数值然后以每秒减1的计数方式工作直至减到数为0十字路口红、绿灯交换一次工作循环结束进入另一个方向的工作循环。数码显示管就是用来显示东西和南北两个道口的红黄绿三种颜色的灯的倒计时时间。南北路处于禁止通行的状态东西路处于允许通行的状态。南北路亮红灯时东西路亮绿灯南北路亮绿灯时东西路亮红灯。南北路亮红灯时东西路亮绿灯当绿灯时间减完之后东西路换为黄灯南北路仍为红灯这样东西路与南北路的时间同时减完。减完之后东西路换为红灯南北路换为绿灯再经过一个绿灯时间南北路换为黄灯东西路仍为红灯。这时东西路与南北路时间相同同时减完。减完后南北路为红灯东西路为绿灯。如此隔环下去。整个设计满足了任务的要求即完成了四个状态的转换完成了倒计时数码管的显示所以这个系统的设计足以控制十字路口的交通灯正常变换保证各道车辆的畅通运行。4 系统程序设计4.1系统电路图图4-1 系统电路图4.2程序源代码#includereg51.hsbit led_red P1 ^ 0;sbit led_yellow P1 ^ 1;sbit led_green P1 ^ 2;sbit led_red1 P1 ^ 3;sbit led_yellow1 P1 ^ 4;sbit led_green1 P1 ^ 5;unsigned int i 0;unsigned int j 0;unsigned char code LedChar[] {0xC0, 0xF9, 0xA4, 0xB0, 0x99, 0x92, 0x82, 0xF8, 0x80, 0x90 }; //0 1 2 3 4 5 6 7 8 9static unsigned int sec 5;static unsigned char togle_flag 0;static unsigned char rg_flag 0;static unsigned char skip_yellow 0;static unsigned char fs 0;void timer0(){TMOD 0x01;TH0 (65536-50000)/256;TL0 (65536-50000)%256;EA 1;ET0 1;TR0 1;}void tcount() interrupt 1 {TH0 (65536-50000)/256;TL0 (65536-50000)%256;i;}void display(){//P0 0x01;P0 0x05;P2 LedChar[sec % 10]; //P3 LedChar[(sec 5) % 10];// enhance the refresh rate P0 0x00; P2 0xFF; P3 0xFF; //P0 0x02; P0 0x10; P2 LedChar[sec / 10]; // P3 LedChar[(sec 5) / 10]; // enhance the refresh rate P0 0x00; P2 0xFF; P3 0xFF;}void first() {while(!togle_flag){display();if(i 20) { //if (!rg_flag) { led_green 0; led_green1 !led_green; } else { led_red 0; led_red1 !led_red; } i 0; if (sec 0) sec--; else { if (rg_flag) { togle_flag 0; sec 5; skip_yellow 1; } else if (!rg_flag){ togle_flag 1; sec 3; skip_yellow 0; } rg_flag !rg_flag; led_green 1; led_red 1; } } } while (togle_flag) { if (skip_yellow) { togle_flag !togle_flag; sec 5; } else { display(); if(i 20) { // led_yellow 0; led_yellow1 0; i 0; // if (sec 0) sec--; else { sec 5; togle_flag !togle_flag; led_yellow 1; led_yellow1 1; } } } }}void main(){timer0();while (1) {first();}}}5 仿真测试5.1软件调试1生成hex文件:图5-1生成hex文件2将hex文件导入AT89C51中图5-2导入hex文件5.2仿真调试在keil中调试完成后生成文件再到proteus中进行仿真。5.2.1所需软件查询展示图5-3所需元件展示图5.2.2四种状态展示1)点击play键电路开始进行仿真此时红绿灯显示的情况为南边方向为绿灯亮东西方向为红灯亮。南边方向通行时间为25秒东西禁止通行时间为25秒交通灯显示状态如图所示。图5-4状态一2)在开始仿真经过25秒后黄灯开始闪烁闪烁时间为5秒红绿灯的状态将发生变化南边方向黄灯闪烁显示情况如图所示。图5-5状态二3)此时红绿灯显示的情况为东西方向为绿灯亮南北方向为红灯亮。南边方向禁止通行时间为30秒南北通行时间为25秒交通灯显示状态如图所示。图5-6状态三4)在开始仿真经过25秒后黄灯开始闪烁闪烁时间为5秒红绿灯的状态将发生变化东西方向黄灯闪烁显示情况如图所示。图5-7状态四5.3结果分析经过测试本次简单交通灯设计基本满足了所需要的要求可以进行简单的红绿黄灯计时显示避免出现拥挤、堵车等现象但设计也有不足由于程序设计较为简便无法对具体的的路况进行适时地调整无法通过对当前道路的状况进行智能化调节。比如早高峰和晚高峰期间的人流和车辆较多可以适当增加绿灯时间减少红灯时间以此来减少道路拥挤。6 总结通过这次课程设计使我得到了一次用专业知识、专业技能分析和解决问题全面系统的锻炼。使我在单片机的基本原理、单片机应用系统开发过程以及在常用编程设计C语言的掌握方面都能向前迈了一大步。本次课程设计的过程是艰辛的,不过收获却是很大的.本次课程设计用到了许多单片机上所学的知识使书本上所学的知识得到了实际应用同时也发现了很多自己的不足之处。经过多次查阅相关书籍和资料,一些自己不是很有把握的地方得到了补充,不仅完成了课程设计的任务,更增长了自己的知识面,填补了很多知识的空白之处使我又有了新的长进学到了新的知识。 通过本次的课程设计使我学到了很多新的知识,经历了将理论转化为实践的过程,知道了如何让将所学的理论知识转化为生活中所常见的东西所学知识得到了充分应用。大学的课堂是给我们学习专业知识的而我们更应该把自己所学到的书面知识应用到生活中去。课程设计给了我们这样一个化理论为实践的机会自己独立的完成这么一个任务看起来很难,但当你深入到这个过程中去时,每一点点的成功都会让自己欣喜若狂,这是一个享受成功的过程,也是一个良好的学习机会当然,也遇到了很多困难让我认识到了很多不足,我会在以后的学习生活当中不断磨练自己、完善自己,为自己以后的职业生活储备更多的知识,做一个生活的强者。参考文献[1] 何立民.单片机高级教程[M].北京: 航空航天大学出版社,2001.[2] 王东峰等.单片机C语言应用100例[M].电子工业出版社,2009.[3] 马忠梅等.单片机的C语言应用程序设计.北京航空航天大学出版社,2003.[4] 王晋凯.简简单单学通51单片机开发 [M].清华大学出版社,2014.[5] 夏继强.单片机实验[M].北京: 航空航天大学出版社,2001.课程设计评定表评定项目 内 容 满分 评分 总分学习态度 学习认真态度端正遵守纪律。 10设计情况 认真查阅资料勤学好问提出的问题有一定的深度分析解决问题的能力较强。 40说明书质量 设计方案正确、表达清楚设计思路、实验论证方法科学合理达到课程设计任务书规定的要求图、表、文字表达准确规范上交及时。 40回答问题情况 回答问题准确基本概念清楚有理有据有一定深度。 10总成绩 采用五级分制优、良、中、及格、不及格指导教师评语签名年 月 日