利用51单片机实现交通红绿灯
- 格式:ppt
- 大小:1.58 MB
- 文档页数:18
目录1 绪论 (1)1.1 课题研究目的 (1)1.2 研究现状 (2)1.3 本文的主要工作 (3)2 系统方案设计 (3)2.1 总体方案设计与分析 (3)2.2 主控制器方案 (4)2.3 显示方案 (5)3 系统电路设计 (5)3.1 主控制器电路 (5)3.1.1 单片机电路 (5)3.1.2 晶振电路 (7)3.1.3 复位电路 (7)3.2 显示电路 (8)3.3 按键电路 (8)3.4 交通灯电路 (9)4 系统硬件设计 (9)4.1 主程序软件设计 (9)4.2 子程序软件设计 (11)4.2.1 显示软件设计 (11)4.2.2 按键扫描软件设计 (13)5 系统测试 (13)5.1 系统调试 (13)5.2 故障检查 (16)6硬件组装与调试 (16)6.1 系统组装 (17)6.2 上电后调试 (18)总结 (19)参考文献 (20)致谢 ...................................................................................................................错误!未定义书签。
附录 (21)附录1:成品图 (21)附录2:原理图 (22)1 绪论1.1 课题研究目的19世纪的时候,英国就出现了世界上首个交通信号灯,因为他的能源来自于煤气的交通信号灯,这种方案在后期的设备运行中很容易产生爆炸,所以后来此种交通信号灯设备就没有在出现了。
到了20世纪的时候,美国的克利夫兰市又有了交通灯设备,然而此次的能源设计方案是电力信号灯。
1930年德国有人开发了选取自动化的设计方案去操作的交通灯,这种设计标志着交通自动操作的起步。
20世纪开始,发达国家第一次选取车辆感应方案处理信号,车辆传感器的主要特点为,此设计能够按照交通拥堵的具体情况去操作交通灯运行的时间参数,这样来解决交通十字路口的拥堵问题,使得车辆可以很快的通过路口,此方案被很多地区进行使用。
51单片机交通灯仿真原理引言:交通灯作为城市交通管理的重要组成部分,起到了引导车辆和行人通行的作用。
在现代社会中,交通灯的灯光变化是由电路控制实现的。
本文将以51单片机为基础,介绍交通灯仿真的原理和实现过程。
一、51单片机简介51单片机是一种常见的微控制器,具有高性能、低功耗、易编程等特点。
它广泛应用于各种电子设备中,包括交通灯控制。
二、交通灯的基本原理交通灯一般由红、黄、绿三个灯组成。
红灯表示停车,黄灯表示准备行驶,绿灯表示可以通行。
交通灯的变化是按照一定的时间间隔来进行的,通常为红灯亮一段时间,然后黄灯亮一段时间,最后绿灯亮一段时间。
这种变化方式可以通过51单片机的定时器和IO口控制来实现。
三、交通灯仿真的实现步骤1. 硬件连接需要准备一块51单片机开发板,以及红、黄、绿三个LED灯。
将LED灯连接到51单片机的IO口上,通过电阻限流,确保电流合适。
2. 程序编写使用C语言编写程序,实现交通灯的仿真。
首先,需要定义红、黄、绿三个灯对应的IO口。
然后,设置定时器,按照一定的时间间隔来改变灯的状态。
例如,红灯亮5秒,黄灯亮2秒,绿灯亮8秒。
通过循环控制,可以实现交通灯的循环变化。
3. 烧录程序将编写好的程序通过烧录器下载到51单片机中。
确保烧录成功后,即可进行交通灯仿真。
4. 仿真测试将51单片机开发板连接到电源,打开电源开关。
此时,红灯应亮起,表示停车;随后黄灯亮起,表示准备行驶;最后绿灯亮起,表示可以通行。
通过不断循环,交通灯的状态会一直变化,实现仿真效果。
四、交通灯仿真的应用价值交通灯仿真是对交通灯控制的一种模拟,可以用于交通管理系统的设计和优化。
通过仿真实验,可以模拟不同情况下交通灯的变化,优化交通流量,提高交通效率。
此外,交通灯仿真还可以用于交通安全教育,让行人和驾驶员更好地理解交通灯的意义和规则。
五、总结本文以51单片机为基础,介绍了交通灯仿真的原理和实现过程。
通过硬件连接、程序编写、烧录和测试等步骤,可以实现交通灯的仿真效果。
51单片机红绿灯设计报告一、引言红绿灯是城市道路交通管理中非常重要的设备,它能够有效地控制车辆和行人的通行,维护交通秩序,提高交通效率。
本报告将介绍一种基于51单片机的红绿灯设计,利用单片机的强大功能,实现了智能化、自动化的红绿灯控制系统。
二、设计原理1.硬件设计本设计使用了51单片机,通过其IO口控制LED灯的亮灭。
红绿灯的控制通过三个IO口分别连接到红、黄、绿三个LED灯,通过控制这三个IO口的电平,实现红绿灯的切换。
2.软件设计设计中使用了C语言进行程序开发。
程序通过设置IO口的状态和延时函数,控制红绿灯的切换和延时时间。
三、电路设计1.电路图电路图给出了51单片机、LED灯和电流限制电阻之间的连接关系。
单片机的P1口连接到红、黄、绿三个LED灯上,通过改变P1口的电平,控制LED的亮灭。
2.电路元件说明-51单片机:中央处理器,负责控制整个系统的运行和信号的处理。
-LED灯:用于显示红、黄、绿三种不同的状态。
-电流限制电阻:用于限制电流大小,保护51单片机和LED灯。
四、程序设计程序设计中,通过无限循环实现红绿灯系统的连续运行,程序中设置了红绿灯切换的时间间隔和黄灯亮灭的时间间隔。
五、实验结果经过测试,本设计能够正常地实现红绿灯的切换,各种状态都能够正确显示。
红灯亮10秒,黄灯亮3秒,绿灯亮15秒,然后循环重复。
六、总结本设计利用51单片机的强大功能,实现了红绿灯的自动切换。
通过控制IO口的电平和延时函数,能够实现红绿灯的各种状态的切换。
该设计简单、实用、可靠,适用于城市交通管理中的红绿灯设备。
51单片机的交通灯设计第一章单片机交通灯1.1 基于单片机交通灯的实际意义当今,红绿灯安装在各个道口上,已经成为疏导交通车辆最常见和最有效的手段。
但这一技术在19世纪就已出现了。
1858年,在英国伦敦主要街头安装了以燃煤气为光源的红,蓝两色的机械扳手式信号灯,用以指挥马车通行。
这是世界上最早的交通信号灯。
1868年,英国机械工程师纳伊特在伦敦威斯敏斯特区的议会大厦前的广场上,安装了世界上最早的煤气红绿灯。
它由红绿两以旋转式方形玻璃提灯组成,红色表示“停止”,绿色表示“注意”。
1869年1月2日,煤气灯爆炸,使警察受伤,遂被取消。
电气启动的红绿灯出现在美国,这种红绿灯由红绿黄三色圆形的投光器组成,1914年始安装于纽约市5号大街的一座高塔上。
红灯亮表示“停止”,绿灯亮表示“通行”。
1918年,又出现了带控制的红绿灯和红外线红绿灯。
带控制的红绿灯,一种是把压力探测器安在地下,车辆一接近红灯便变为绿灯;另一种是用扩音器来启动红绿灯,司机遇红灯时按一下嗽叭,就使红灯变为绿灯。
红外线红绿灯当行人踏上对压力敏感的路面时,它就能察觉到有人要过马路。
红外光束能把信号灯的红灯延长一段时间,推迟汽车放行,以免发生交通事故。
信号灯的出现,使交通得以有效管制,对于疏导交通流量、提高道路通行能力,减少交通事故有明显效果。
1968年,联合国《道路交通和道路标志信号协定》对各种信号灯的含义作了规定。
绿灯是通行信号,面对绿灯的车辆可以直行,左转弯和右转弯,除非另一种标志禁止某一种转向。
左右转弯车辆都必须让合法地正在路口内行驶的车辆和过人行横道的行人优先通行。
红灯是禁行信号,面对红灯的车辆必须在交叉路口的停车线后停车。
黄灯是警告信号,面对黄灯的车辆不能越过停车线,但车辆已十分接近停车线而不能安全停车时可以进入交叉路口。
基于单片机交通灯的发展及前景有的单片机为了构成控制网络或形成局部网,内部含有局部网络控制模块CAN。
例如,Infineon公司的C 505C,C515C,C167CR,C167CS-32FM,81C90;Motorola公司的68HC08AZ 系列等。
51单片机用C语言实现交通灯51 单片机用C 语言实现交通灯(红绿灯)源程序交通灯,红黄绿灯交替亮,怎样实现呢?其实就是根据单片机定时器及倒计时的程序修改。
源程序如下:#include bit red,green,yellow,turnred; //定义红、黄、绿及转红标志code unsigned char tab[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};//共阴数码管0- 9unsigned char Dis_Shiwei;//定义十位unsigned char Dis_Gewei; //定义个位void delay(unsigned int cnt) //用于动态扫描数码管的延时程序{while(--cnt);}main() {TMOD |=0x01;//定时器设置10ms in 12M crystal 定时器0,工作方式1,16 位定时器TH0=0xd8; //65535-10000=55535=D8F0(十六进制)TL0=0xf0;IE= 0x82; //中断控制,EA=1 开总中断,ET0=1:定时器0 中断允许TR0=1; //开定时器0中断P1=0xfc;//红灯亮,根据红黄绿接灯的顺序。
red =1;while(1) {P0=Dis_Shiwei;//显示十位,这里实现用8 位数码管,即左1 位P2=0;delay(300); //短暂延时P0=Dis_Gewei; //显示个位,左数,2 位P2=1;delay(300);}}void tim(void) interrupt 1 using 1{static unsigned char second=60,count; //初值60TH0=0xd8;//重新赋值,10 毫秒定时TL0=0xf0;count++;if (count==100) {count=0;second--;//秒减1if(second==0){ //这里添加定时到0 的代码,可以是灯电路,继电器吸合等,或者执行一个程序if(red) //红灭,先转黄{red=0;yellow=1;second=4;P1=0xF3;//黄灯亮4 秒,黄灯为过渡灯,再根据情况转绿或转红}else if(yellow && !turnred){yellow=0;green=1;second=25;P1=0xCF;// 绿灯亮25 秒,}else if(green){yellow=1;green=0;second=4;P1=0xF3;//黄灯亮4 秒turnred=1;}else if(yellow && turnred) //绿灯灭,转黄灯,后红灯,turnred=1 时{red=1;yellow=0;P1=0xFC;//红灯亮60 秒second=60;turnred=0; //接下来是转黄,绿。
基于51单片机的交通灯设计2.AT89C51单片机最小实现电路及配套发光二极管电路。
3.设计要求1.编程要求:主程序利用 C 语言编写。
2.实现功能:使用AT89C51单片机控制 4个方向的交通灯(红﹑黄﹑绿)并用数码管显示其时间。
3. 实验现象:状态一:主干道、支干道均亮红灯5秒;状态二:主干道亮绿灯30秒、支干道亮红灯;状态三:主干道绿灯闪3次转亮黄灯、支干道亮红灯3秒;状态四:主干道亮红灯、支干道亮绿灯25秒;状态五:主干道亮红灯、支干道绿灯闪3次转亮黄灯3秒;返回到第二个状态。
4.设计相关知识4.1 硬件设计1. AT89C51简介:AT89C51是一种带4K字节闪存可编程可擦除只读存储器的低电压、高性能CMOS 8位微处理器。
它是一种带2K字节闪存可编程可擦除只读存储器的单片机。
AT89C51是一种高效微控制器,为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。
2. 2位8段数码管工作原理:2位8段数码管电路采用“共阴”连接,阴极公共端(COM)由晶体管推动。
如图4-3所示:段码和位码,段码即段选信号 SEG,它负责数码管显示的内容,图中 a~g、dp组成的数据(a 为最低位,dp 为最高位)就是段码。
位码即位选信号 DIG,它决定哪个数码管工作,哪个数码管不工作。
当需要某一位数码管显示数字时,只需要先选中这位数码管的位信号,再给显示数字的段码。
4.2 软件应用1. Proteus7.5简介:Proteus软件不仅具有EDA工具软件的仿真功能,还能仿真单片机及外围器件Proteus从原理图布图、代码调试到单片机与外围电路协同仿真,一键切换到PCB设计,真正实现了将电路仿真软件、PCB设计软件和虚拟模型仿真软件三合一的设计平台,其处理器模型支持8051、HC11、PIC10/12/16/18/24/30/DsPIC33、AVR、ARM、8086和MSP430等。
在编译方面,它支持IAR、Keil和MPLAB等多种编译器。
Proteus仿真原理图:Keil C源程序:#include<reg51.h>#define uchar unsigned char#define uint unsigned intsbit RED_DONGXI = P1^0;//南北方向红灯亮sbit YELLOW_DONGXI = P1^1;//南北方向黄灯亮sbit RED_NANBEI = P1^3;//东西方向红灯亮sbit GREEN_DONGXI = P1^2;//南北方向绿灯亮sbit YELLOW_NANBEI = P1^4;//东西方向黄灯亮sbit GREEN_NANBEI = P1^5;//东西方向绿灯亮sbit DXweixuan1 = P1^6;//南北方向数码管位选1sbit DXweixuan2 = P1^7;//南北方向数码管位选2sbit NBweixuan1 = P3^0;//东西方向数码管位选1sbit NBweixuan2 = P3^1;//东西方向数码管位选2sbit L1=P3^5;sbit L2=P3^6;sbit L3=P3^7;uint aa, bai,shi,ge,bb;uint shi1,ge1,shi2,ge2;uint code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; uint code table1[]={0xfc,0x60,0xda,0xf2,0x66,0xb6,0xbe,0xe0,0xfe,0xf6};void delay(uint z);void init(uint a);void display(uint shi1,uint ge1,uint shi2,uint ge2);void xtimer0();void init1();void init2();void init3();void init4();void init5();void xint1();void xint0();void LED_ON();void LED_OFF();void main(){P0=0xFF;P1=0xFF;P2=0x00;P3=0xFF;EA=1;EX0=1;IT0=0;init1();while(1){init2();//第2个状态init3(); //第3个状态init4(); //第4个状态init5();//第5个状态}}void init1()//第一个状态:东西、南北方向均亮红灯5S {uint temp;temp=5;TMOD=0x01;TH0=(65535-50000)/256;TL0=(65535-50000)%256;EA=1;ET0=1;TR0=1;while(1){RED_DONGXI=0; //第一个状态东西、南北均亮红灯5SRED_NANBEI=0;GREEN_DONGXI=1;GREEN_NANBEI=1;YELLOW_DONGXI=1;YELLOW_NANBEI=1;if(aa==20)//定时20*50MS=1S{aa=0;temp--;}shi1=shi2=temp/10;ge1=ge2=temp%10;if(temp==0){temp=5;break;}display(ge1,shi1,ge2,shi2);}}void init2()//第二个状态:东西亮红灯30S~5S、南北亮绿灯25~0S;{uint temp;temp=26;TMOD=0x01;TH0=(65535-50000)/256;TL0=(65535-50000)%256;EA=1;ET0=1;TR0=1;while(1){RED_DONGXI=1;RED_NANBEI=0;GREEN_DONGXI=0;GREEN_NANBEI=1;YELLOW_DONGXI=1;//第二个状态:东西亮绿灯25S、南北亮红灯YELLOW_NANBEI=1;if(aa==20)//定时20*50MS=1S{aa=0;temp--;shi1=(temp+5)/10;ge1=(temp+5)%10;shi2=temp/10;ge2=temp%10;if(temp==0){temp=26;break;}}display(ge1,shi1,ge2,shi2);}}void init3() //第三个状态:东西绿灯变为黄灯闪5次、南北亮红灯5S {uint temp;temp=6;TMOD=0x01;TH0=(65535-50000)/256;TL0=(65535-50000)%256;EA=1;ET0=1;TR0=1;while(1){RED_NANBEI=0;GREEN_DONGXI=1;if(aa==20)//定时20*50MS=1S{aa=0;temp--;YELLOW_DONGXI=~YELLOW_DONGXI;shi1=temp/10;shi2=shi1;ge1=temp%10;ge2=ge1;}if(temp==0){temp=6;break;}display(ge1,shi1,ge2,shi2);}}void init4()//第四个状态:东西亮绿灯25~0S,南北方向亮红灯30~5S;{uint temp;temp=26;TMOD=0x01;TH0=(65535-50000)/256;TL0=(65535-50000)%256;EA=1;ET0=1;TR0=1;while(1){RED_DONGXI=0;RED_NANBEI=1;YELLOW_DONGXI=1;//第一个状态东西、南北均亮红灯5SGREEN_NANBEI=0;if(aa==20){aa=0;temp--;shi1=temp/10;shi2=(temp+5)/10;ge1=temp%10;ge2=(temp+5)%10;if(temp==0){temp=26;break;}}display(ge1,shi1,ge2,shi2);}}void init5()//第五个状态:东西亮红灯、南北绿灯闪5次转亮黄灯5S {uint temp;temp=6;TMOD=0x01;TH0=(65535-50000)/256;TL0=(65535-50000)%256;EA=1;ET0=1;TR0=1;while(1){RED_NANBEI=1;RED_DONGXI=0;GREEN_DONGXI=1;GREEN_NANBEI=1;if(aa==20){aa=0;temp--;YELLOW_NANBEI=~YELLOW_NANBEI;shi1=temp/10;shi2=shi2;ge1=temp%10;ge2=ge1;if(temp==0){temp=6;break;}}display(ge1,shi1,ge2,shi2);}}void display(uint shi1,uint ge1,uint shi2,uint ge2) {DXweixuan1=0;DXweixuan2=1;NBweixuan1=1;NBweixuan2=1;P0=table[ge1];delay(5);DXweixuan1=1;DXweixuan2=0;NBweixuan1=1;NBweixuan2=1;P0=table[shi1];delay(5);DXweixuan1=1;DXweixuan2=1;NBweixuan1=0;NBweixuan2=1;P0=table[ge2];delay(5);DXweixuan1=1;DXweixuan2=1;NBweixuan1=1;NBweixuan2=0;P0=table[shi2];delay(5);}void xint0() interrupt 0 {RED_NANBEI=0;RED_DONGXI=0;GREEN_NANBEI=1;GREEN_DONGXI=1;YELLOW_NANBEI=1;YELLOW_DONGXI=1;P0=0x00;NBweixuan1=0;NBweixuan2=0;DXweixuan1=0;DXweixuan2=0;delay(2);return ;}void xint1() interrupt 2 {RED_NANBEI=1;RED_DONGXI=1;GREEN_NANBEI=0;GREEN_DONGXI=0;YELLOW_NANBEI=1;YELLOW_DONGXI=1;P0=0x00;NBweixuan1=0;NBweixuan2=0;DXweixuan1=0;DXweixuan2=0;delay(2);return ;}void xtimer0() interrupt 1 {TH0=(65535-50000)/256;TL0=(65535-50000)%256;aa++;}void delay(uint z){uint x,y;for(x=0;x<z;x++)for(y=0;y<110;y++); }。
基于51单片机的交通灯设计交通信号灯是指示人和交通工具在道路交通中行进方向或行为的一种交通设施。
在设计交通信号灯时,应考虑交通流量、车辆速度、交叉口结构等因素,以确保交通的顺畅和安全。
本文将基于51单片机设计一种交通信号灯系统,并详细介绍其原理和实现方法。
交通信号灯系统的设计目的是通过控制红、黄、绿三种不同颜色的灯,指示车辆和行人在交通路口安全行驶。
在单片机设计中,我们将使用三个LED灯分别代表红、黄、绿三种状态。
通过控制LED的亮灭,来实现交通信号灯的变换。
首先,我们需要选择适当的硬件设备进行交通信号灯的设计。
在51单片机设计中,可以选择STC89C51或者AT89C51等型号的单片机。
此外,还需要准备三个LED灯、电阻、电容、按键等器件。
接下来,我们将进行电路设计。
在设计电路时,首先将三个LED灯连接到单片机的三个IO口上,每个IO口通过一个电阻与正极连接,负极与GND连接。
此外,在单片机的一个IO口上连接一个按键,通过按下按键触发程序的执行。
在编写程序之前,首先需要确立交通信号灯的运行逻辑。
一般而言,交通信号灯的运行逻辑如下:1.全红状态:所有车辆和行人均停止,任何方向都不可行驶。
2.绿灯状态:一些方向的车辆和行人可以行驶,其他方向均不可行驶。
3.黄灯状态:信号灯将要变成红灯或绿灯,此时车辆和行人应注意刹车或等待。
接下来,我们将编写程序并烧录到单片机中。
在程序中,需要使用到定时器和中断来进行交通信号灯的控制。
具体步骤如下:1.在程序中定义三个LED灯所对应的IO口。
2.初始化定时器,并设置定时时间,用于控制信号灯的变化。
3.设置中断,用于按键的检测和处理。
4.在主循环中,不断检测按键状态,当按键按下时,切换信号灯的状态。
5.根据信号灯的状态,控制LED灯的亮灭。
在程序设计中,应充分考虑各种异常情况和执行顺序,以保证交通信号灯的正常运行。
此外,还可以增加一些辅助功能,如倒计时显示等,以提高交通信号灯的可视性和安全性。