利用51单片机实现交通红绿灯

合集下载

基于51单片机控制交通灯

基于51单片机控制交通灯

目录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单片机设计交通灯仿真图
}
}
void init1()//第一个状态:主干道、支干道均亮红灯5S
{
uint temp;
temp=6;//变量赋初值
TMOD=0x01;//定时器0工作于方式1
TH0=0x4c;
TL0=0x00;//定时器赋初值
EA=1;//开外部中断
ET0=1;//开定时中断
TR0=1;//开定时器0
while(1)
#define uchar unsigned char//宏定义
#define uint unsigned int//宏定义
sbit RED_ZHU = P1^0;
sbit YELLOW_ZHU = P1^1;
sbit GREEN_ZHU = P1^2;
sbit RED_ZHI = P1^3;
sbit YELLOW_ZHI = P1^4;
delay0(5);
}
void xint0() interrupt 0 //外部中断0,这里用2是INT1的优先级为0
{
LED_ON();
}
void LED_ON()//外部中断0显示子程序
{
RED_ZHI=0;
RED_ZHU=0;
GREEN_ZHI=1;
GREEN_ZHU=1;
YELLOW_ZHI=1;
}
/*********************************************************
500ms延时函数
晶振:11.0592MHz
*********************************************************/
void delay(unsigned char j)

51单片机交通灯仿真原理

51单片机交通灯仿真原理

51单片机交通灯仿真原理引言:交通灯作为城市交通管理的重要组成部分,起到了引导车辆和行人通行的作用。

在现代社会中,交通灯的灯光变化是由电路控制实现的。

本文将以51单片机为基础,介绍交通灯仿真的原理和实现过程。

一、51单片机简介51单片机是一种常见的微控制器,具有高性能、低功耗、易编程等特点。

它广泛应用于各种电子设备中,包括交通灯控制。

二、交通灯的基本原理交通灯一般由红、黄、绿三个灯组成。

红灯表示停车,黄灯表示准备行驶,绿灯表示可以通行。

交通灯的变化是按照一定的时间间隔来进行的,通常为红灯亮一段时间,然后黄灯亮一段时间,最后绿灯亮一段时间。

这种变化方式可以通过51单片机的定时器和IO口控制来实现。

三、交通灯仿真的实现步骤1. 硬件连接需要准备一块51单片机开发板,以及红、黄、绿三个LED灯。

将LED灯连接到51单片机的IO口上,通过电阻限流,确保电流合适。

2. 程序编写使用C语言编写程序,实现交通灯的仿真。

首先,需要定义红、黄、绿三个灯对应的IO口。

然后,设置定时器,按照一定的时间间隔来改变灯的状态。

例如,红灯亮5秒,黄灯亮2秒,绿灯亮8秒。

通过循环控制,可以实现交通灯的循环变化。

3. 烧录程序将编写好的程序通过烧录器下载到51单片机中。

确保烧录成功后,即可进行交通灯仿真。

4. 仿真测试将51单片机开发板连接到电源,打开电源开关。

此时,红灯应亮起,表示停车;随后黄灯亮起,表示准备行驶;最后绿灯亮起,表示可以通行。

通过不断循环,交通灯的状态会一直变化,实现仿真效果。

四、交通灯仿真的应用价值交通灯仿真是对交通灯控制的一种模拟,可以用于交通管理系统的设计和优化。

通过仿真实验,可以模拟不同情况下交通灯的变化,优化交通流量,提高交通效率。

此外,交通灯仿真还可以用于交通安全教育,让行人和驾驶员更好地理解交通灯的意义和规则。

五、总结本文以51单片机为基础,介绍了交通灯仿真的原理和实现过程。

通过硬件连接、程序编写、烧录和测试等步骤,可以实现交通灯的仿真效果。

51单片机用C语言实现交通灯_红绿灯_源程序

51单片机用C语言实现交通灯_红绿灯_源程序

c o d eu n s i g n e dc h a rt a b [ ] = { 0 x 3 f , 0 x 0 6 , 0 x 5 b , 0 x 4 f , 0 x 6 6 , 0 x 6 d , 0 x 7 d , 0 x 0 7 , 0 x 7 f , 0 x 6 f } ; / / 共阴数码管 0 9 u n s i g n e dc h a rD i s _ S h i w e i ; / / 定义十位 u n s i g n e dc h a rD i s _ G e w e i ;/ / 定 g n e di n tc n t ) { w h i l e ( c n t ) ; } m a i n ( ) { T M O D| = 0 x 0 1 ; / / 定时器设置 1 0 m si n1 2 Mc r y s t a l 定时器 0 ,工作方式 1 ,1 6 位定时器 T H 0 = 0 x d 8 ; / / 6 5 5 3 5 1 0 0 0 0 = 5 5 5 3 5 = D 8 F 0 (十六进制) T L 0 = 0 x f 0 ; I E =0 x 8 2 ;/ / 中断控制,E A = 1 开总中断,E T 0 = 1 :定时器 0 中断允许 T R 0 = 1 ; / / 开定时器 0 中断 P 1 = 0 x f c ; / / 红灯亮,根据红黄绿接灯的顺序。 r e d= 1 ; w h i l e ( 1 ) { P 0 = D i s _ S h i w e i ; / / 显示十位,这里实现用 8 位数码管,即左 1 位 P 2 = 0 ; d e l a y ( 3 0 0 ) ; / / 短暂延时 P 0 = D i s _ G e w e i ;/ / 显示个位,左数,2 位 P 2 = 1 ;

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单片机设计红绿灯

51单片机设计红绿灯

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语言实现交通灯

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单片机的交通灯设计(可用)

51单片机的交通灯设计(可用)

基于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等多种编译器。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
? 状态3(10s):东西红灯,南北绿灯通车;
? 状态4(3s):东西红灯,南北绿灯灭,黄灯 闪几次。依次循环。
图程流序程验实
)一(图理原路电
)二(图理原路电
)三(图理原路电
完整的实验原理图:
8255的初始化:
? 根据实验的原理图可以计算出8255的控制字地址为FF7FH, A口的地址为FF7CH,B口的地址为FF7DH,然后对8255初 始化,使用的语句为:
8255控制交通灯
设计者:金勇 电子信息工程
2007.12.6
题目:
? 用8255做输出口,控制十二个发光二极 管亮灭,模拟交通灯管理。十字路口东西南北 走向。
? 初始状态0:为东西红灯,南北红灯。
? 状态1(10s):东西绿灯通车,南北红灯; 状态2(3s):东西绿灯灭,黄灯闪几次,南 北红灯;
MOV 20H,#0AH
?
MOV 21H,#01H
LCALL DELY
;延时0.5s
MOV DPTR,#0FF7CH
MOV A,#0BEH
MOVX @DPTR,A
INC DPTR
MOV A,#0FH
MOVX @DPTR,A
;东西红灯亮
MOV 20H,#0AH
? MOV A,#0B6H
? MOVX @DPTR,A ;从A口输出数据0B6H,来控制相应二极管发光
? INC DPTR
MOV A,#0DH
MOVX @DPTR,A ;从B口输出数据0DH,来控制相应二极管发光

西


黄绿红 110
黄绿红 110
黄绿红 黄绿红 110 11 0
B 口低4位(ODH)
?
MOVX @DPTR,A
;南北红灯亮
MOV 20H,#0AH
?
MOV 21H,01H
?
LCALL DELY
;延时0.5s
DJNZ R7,JOD1
;闪烁次数未到继续
?
MOV DPTR,#0FF7CH
MOV A,#0AEH
MOVX @DPTR,A
INC DPTR
MOV A,#0BH
MOVX @DPTR,A
MOVX @DPTR,A
INC DPTR
MOV A,#0CH
MOVX @DPTR,A
;东西黄灯亮,南北红灯亮
MOV 20H,#0AH
?
MOV 21H,#01H
?
LCALL DELY
;延时0.5s
MOV DPTR,#0FF7CH
MOV A,#0F7H
MOVX @DPTR,A
INC DPTR
MOV A,#0DH
?
MOV DPTR,#0FF7FH
MOV A,#88H
MOVX @DPTR,A 这样将方式控制字送到
控制寄存器。其中方式控制字为88H(10001000),表示
8255工作在方式0,A,B口作为输出口,C口高4位作为
输入口,低4位作为输出口。
状态0:东西红灯,南北红灯 。
? 相应程序为:
? MOV DPTR,#0FF7CH
MOV 21H,#01H
?
LCALL DELY
;延时0.5s
MOV DPTR,#0FF7CH
MOV A,#0F7H
MOVX @DPTR,A
INC DPTR
MOV A,#0DH
MOVX @DPTR,A
;南北红灯亮
MOV 20H,#0AH
?
MOV 21H,01H
?
LCALL DELY
; 延时0.5s
DJNZ R7,JOD1
MOV A,#75H
MOVX @DPTR,A
INC DPTR
MOV A,#0DH
MOVX @DPTR,A
;东西绿灯亮,南北红灯亮
MOV 20H,#14H
?
MOV 21H,#0AH
LCALL DELY
;延时10s
MOV R7,#03H
;闪烁次数
JOD1: MOV DPTR,#0FF7CH
MOV A,#0F3H
;东西红灯亮,南北绿灯亮
MOV 20H,#14H
?
MOV 21H,#0AH
LCALL DELY
;延时10s
MOV R7,#03H
;闪烁次数
JOD2: MOV DPTR,#0FF7CH
MOV A,#9EH
MOVX @DPTR,A
INC DPTR
MOV A,#07H
MOVX @DPTR,A
பைடு நூலகம்
;东西红灯亮,南北黄灯亮
?
同理,状态3和状态4的实现方法与状态1和状态2的实现方法一样, 只是在控制发光二极管的时候从 A,B口输出的数据不相同,而程 序指令是相同的。
延时子程序:
? 程序过程中需要延时10s,0.5 s,2s,因为 定时时间比较大,所以将定时器的时间定为 50ms,然后再根据不同的定时时间循环定时 不同次数就可以得到需要的定时时间:
110
101 11 0 101
B 口低4位(ODH)
A口(75H)
状态2 :东西绿灯灭,黄灯闪几次,南北红灯
相应程序为: MOV DPTR,#0FF7CH MOV A,#0F3H MOVX @DPTR,A INC DPTR MOV A,#0CH MOVX @DPTR,A MOV 20H,#0AH
;东西黄灯亮,南北红灯亮
? 10s=50msX20次X10次 ? 0.5s=50msX10次 ? 2s=50msx20次X2次
程序清单:
?
ORG 0000H
?
SJMP JOD0
?
ORG 01B0H
?
SJMP INT1
JOD0: MOV SP,#60H
MOV DPTR,#0FF7FH
MOV A,#88H
MOVX @DPTR,A
A口(0B6H)
状态1:东西绿灯亮,南北红灯亮
? 相应程序为:
?
MOV DPTR,#0FF7CH
MOV A,#75H MOVX @DPTR,A;从A口输出数据75H来控制相应二极管发光 INC DPTR
MOV A,#0DH
MOVX @DPTR,A;从A口输出数据0DH来控制相应二极管发


西


黄绿红 黄绿红 黄绿红 黄绿红
;闪烁次数未到继续
状态2的实现过程:
? 实现过程是先将先从A,B 口输出数据控制二极管 使东西绿灯灭,黄灯亮,南北红灯亮 ;然后再调用 一个延时子程序,延时0.5s;延时完成后通过指令从 A,B口输出数据使东西绿灯灭,黄灯灭,南北红灯 亮,然后又调用一个演示0.5s的子程序。整个过程中 通过R7计数使黄灯亮灭3次。
MOV DPTR,#0FF7CH
MOV A,#0B6H
MOVX @DPTR,A
INC DPTR
MOV A,#0DH
MOVX @DPTR,A
MOV 20H,#14H
;8255初始化 ;点亮4个红灯
?
MOV 21H,02H
; 延时2s
LCALL DELY
?
? JOD3: MOV DPTR,#0FF7CH
相关文档
最新文档