51单片机的交通灯设计.doc
《51单片机的交通灯设计.doc》由会员分享,可在线阅读,更多相关《51单片机的交通灯设计.doc(12页珍藏版)》请在淘文阁 - 分享文档赚钱的网站上搜索。
1、第一章 绪 论1.1摘要交通信号灯常用于交叉路口,用来控制车的流量,提高交叉口车辆的通行能力,减少交通事故。交通灯主要通过单片机来控制,单片机的代码采用c语言编程,最后烧录到单片机内,使其完成相应的应用。在本控制电路中,采用了数码管显示时间,这样可以很方便的看出来红绿灯的亮灭计时,这相对于其他电路的红绿灯设计是非常有优势的。在本电路中采用的是七十秒的总计时,每七十秒进行一次红绿灯切换,使两个路口的人能够交替通行。在红绿灯切换之前,先有黄灯的长亮来提示红绿灯即将替换,后有红绿灯的闪烁来提示。通过本次大作业的设计。A,加强对单片机和C51语言的认识,充分掌握和理解设计各部分的工作原理、设计过程、选
2、择芯片器件、模块化编程等多项知识。B,用单片机模拟实现具体应用,使个人设计能够真正使用。C,把理论知识与实践相结合,充分发挥个人能力,并在实践中锻炼。D,提高利用已学知识分析和解决问题的能力。E,提高实践动手能力。1.2关键字交通灯、控制器、c51、电路仿真、数码管、proteus。1.3设计要求a,设计一个70秒的交通灯,每七十秒进行一次红绿灯的切换。b,在倒数十秒时,黄灯亮,直到倒数五秒。c,倒数五秒时,红绿灯闪烁,直到0秒。d,第0秒时,红绿灯切换。1.4设计内容(1)填写实验报告。(2)进行总体设计,画出原理图。(3)用Protel软件画出PCB仿真。(4)编写并调试程序。1.5软件介
3、绍。1.5.1 keil cKeil C51是美国Keil Software公司(ARM公司之一)出品的51系列兼容单片机C语言软件开发系统。与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。Keil提供了包括C编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境(uVision)将这些部分组合在一起。Keil C51目前由ARM国内授权代理商提供技术支持和销售等相关服务。产业标准的Keil C编译器、宏汇编器、调试器、实时内核、单板计算机和仿真器,支持所有的251系列微控制器,帮助你如期完成项目进度。以下图表显示K
4、eil的开发工具以及它们相互之间的接口。KEIL C51开发工具旨在解决嵌入式软件开发商面临的复杂问题。当你开始一个新项目,只需简单的从设备数据库选择使用的设备,uVision IDE将设置好所有的编译器、汇编器、链接器和存储器选项。包含大量的例程,帮助你着手使用最流行的嵌入式8051设备。Keil Vision调试器准确地模拟8051设备的片上外围设备(IC、CAN、UART、SPI、中断、I/O端口、A/D转换器、D/A转换器和PWM模块)。模拟帮助你了解硬件配置,避免在安装问题上浪费时间。 此外,使用模拟器你可以在没有目标设备的情况下编写和测试应用程序。当你准备在目标硬件上测试软件应用时
5、,可以使用MON51、MON390、NONADI、或者FlashMON51目标监视器、ISD51 In-System调试器、ULINK USB-JTAG适配器在目标系统上下载并测试程序代码。1.5.2 proteusProteus软件是英国Lab Center Electronics公司出版的EDA工具软件(该软件中国总代理为广州风标电子技术有限公司)。它不仅具有其它EDA工具软件的仿真功能,还能仿真单片机及外围器件。它是目前比较好的仿真单片机及外围器件的工具。虽然目前国内推广刚起步,但已受到单片机爱好者、从事单片机教学的教师、致力于单片机开发应用的科技工作者的青睐。Proteus是世界上著名
6、的EDA工具(仿真软件),从原理图布图、代码调试到单片机与外围电路协同仿真,一键切换到PCB设计,真正实现了从概念到产品的完整设计。是目前世界上唯一将电路仿真软件、PCB设计软件和虚拟模型仿真软件三合一的设计平台,其处理器模型支持8051、HC11、PIC10/12/16/18/24/30/DsPIC33、AVR、ARM、8086和MSP430等,2010年又增加了Cortex和DSP系列处理器,并持续增加其他系列处理器模型。在编译方面,它也支持IAR、Keil和MATLAB等多种编译器。第二章 设计思路2.1交通灯状态分析。交通灯控制器的控制过程分为五个阶段,对应的输出有五种状态,分别用S0
7、、S1、S2、S3,S4表示。S0状态:A的红灯,B的绿灯亮,B可以通信,A禁止。S1状态:B的黄灯和绿灯亮,A红灯亮。S2状态:A的绿灯亮,B的红灯亮,A通信,B禁止。S3状态:A的黄灯和绿灯亮,B红灯亮。S4状态,红绿灯交替闪烁。这是一个特殊状态,这个状态在倒数五秒的时候出现。状态AB时间(s)S0红灯亮,禁止通行绿灯亮,允许通行60S1红灯亮,禁止通行黄绿灯亮,允许通5S2绿灯亮,允许通红灯亮,禁止通行60S3黄绿灯亮,允许通红灯亮,禁止通5S4红绿闪烁,禁止红绿闪烁,禁止52.2流程图第三章 设计实现(一)代码部分设计思路3.1以下为主程序的开始部分,通过这一部分程序可以实现一个开机的
8、初始化。/主程序void main(void) lukou=0;/交通灯部分初始化部分 P1=0XFF;/复位时,全部灯闪烁三次 delayms(500); P1=0X00;/灯全灭第一次闪烁 delayms(500); P1=0XFF;/灯全亮 delayms(500); P1=0X00;/灯全灭第二次了闪烁 delayms(500); P1=0XFF;/灯全亮 delayms(500); P1=0X00;/灯全灭 第三次闪烁 delayms(500); P1=0X81;/红绿灯初始化,红灯和另一路绿灯亮.对这部分初始化程序的解释如下:a, 这部分程序控制交通灯的所有灯在上电后,进行三次的亮
9、灭闪烁。b, 每一次亮灭,都会调用一次延时程序。这让会形成一个亮一秒,灭一秒的闪烁。总共闪烁三次。c, 在闪烁完之后,通过单片机的P3口对交通灯进行控制,对P3口赋初值以达到控制的目的。这里用的初始值是0x81,控制了一个路口的灯为红灯和一个路口的灯为绿灯。3.2中断的打开和设置。这里写入了计数初值,TMOD的初值。/数码管控制部分 time=13;/时间为70s的倒计时 *第一处:为了便于验证,暂时改为13 TMOD=0X10; EA=1; ET1=1; TH1=(65536-46083)/256; TL1=(65536-46083)%256; TR1=1;这里写入的计数初值可以看出,每50
10、ms产生一次中断益处,在通过中断程序的计数,每20次中断使时间计数time减1,这就完成了计时,让time表示一秒。以下是中断程序部分/中断程序void timer() interrupt 3 jishu=jishu+1; if(jishu=20) jishu=0;time-; /每次时间减1 TH1=(65536-46083)/256;/重新写入计数初值 TL1=(65536-46083)%256;3.3数码管控制部分,主要用来控制数码管的位选和显示。 while(1) /这里只是循环的一部分。 P3=0XFF;/P3控制六个灯 shi=time/10;ge=time%10;P2=0X40;
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 51 单片机 交通灯 设计
限制150内