1. 以AT89C51单片机为控制器的智能交通灯控制系统,基于51单片机的交通信号灯模拟系统控制的仿真图及C程序
你好!
这样的效果可以吗
2. 用单片机做交通灯,这么做
基于单片机的交通灯设计
时间:2010-12-08 21:43:12 来源: 作者:
一、 系统功能要求:
1. 设计任务在一十字路口设置交通灯,并用单片机对其进行合理的控制。
时间方向 控制要求
白天 东西 绿灯 黄灯 红灯 南北 红灯 绿灯 黄灯
晚上 东西 黄灯 南北 红灯
2.总体设计方案现在流行的一种设计为两主干线相交的十字路。本设计采用一主干道(南北方向),一从干道(东西方向)的路口,即主干道的通行时间为从干道的2倍。在正常情况下,两干道的交通灯按图1进行转换,并以倒计数的方式将剩余时间显示在每个干道对应的两位LED上;另发挥部分为当出现紧急情况时,路口的交通灯全为红灯,紧急情况解除时,恢复到原来的状态。
二、 总体设计方案提示:
1.假设一个十字路口为东西南北走向。初始状态0为东西红灯,南北红灯。然后转状态1东西绿灯通车,南北红灯。过一段时间转状态。
2.东西绿灯灭,黄灯闪烁几次,南北仍然红灯。再转状态。
3.南北绿灯通车,东西红灯。过一段时间转状态。
4.南北绿灯灭,闪几次黄灯,延时几秒,东西仍然红灯。最后循环至状态1。
三.硬件设计
电路原理图如下:
四、软件设计
1、 流程图
2、程序设计
ORG 0000H
MOV P0,#00H ;确保P0为低电位
lJMP MAIN0
ORG 0030H
MAIN0: MOV 30H,#08H
MOV R6,#00H
MOV R7,#00H
MOV DPTR,#TABLE ;取数码管的译码
MOV TMOD,#01H ;设计定时方式及时间
MOV TL0,#0CDH
MOV TH0,#0BH
SETB TR0
MOV IE,#00H
MAIN: MOV P1,#0F3H ;南北绿灯,东西红灯
MOV R6,#1EH ;红灯30s倒计时
MOV R7,#19H ;绿灯25s倒计时
MAIN1:CALL DELAY ;1S延时子程序
JB P0.1,REL1 ;判断是否有东西方向按钮按下
CJNE R7,#00H,MAIN1 ;判断绿灯25s是否倒计完
MOV P1,#0F5H ;南北黄灯,东西红灯
MAIN2:CALL DELAY
MOV R7,#00H ;红灯继续倒计时,黄灯闪烁,保持0s
CPL P1.1 ;黄灯闪烁
CJNE R6,#00H,MAIN2 ;判断红灯是否倒计时完
MOV P1,#0DEH ;南北红灯,东西绿灯
MOV R7,#1EH
MOV R6,#19H
MAIN3:CALL DELAY
JB P0.0,REL2
CJNE R6,#00H,MAIN3
MOV P1,#0EEH
MAIN4:CALL DELAY
MOV R6,#00H
CPL P1.4
CJNE R7,#00H,MAIN4
JMP MAIN
REL1:MOV P1,#0F5H ;东西方向按钮按下,南北方向强制由绿灯变成黄灯警告
MOV R6,#05H
MOV R7,#00H
JMP MAIN2
REL2:MOV P1,#0EEH ;南北方向按钮按下,东西方向强制由绿灯变成黄灯警告
MOV R7,#05H
MOV R6,#00H
JMP MAIN4
;1s延时子程序
DELAY:MOV A,R6 ;进行南北方向倒计时时间的十进制调整
MOV B,#0AH
DIV AB
MOVC A,@A+DPTR ;找寻相应的数码管代码
MOV P2,#01H
MOV P3,A ;输出个位
MOV R4,#4 ;降低动态显示频率
LOOP2:MOV R3,#125
LOOP3:DJNZ R3,LOOP3
DJNZ R4,LOOP2
MOV A,B
MOVC A,@A+DPTR
MOV P2,#02H ;输出十位
MOV P3,A
MOV R4,#4
LOOP4:MOV R3,#125
LOOP5:DJNZ R3,LOOP5
DJNZ R4,LOOP4
MOV A,R7 ;进行东西方向倒计时时间的十进制调整
MOV B,#0AH
DIV AB
MOVC A,@A+DPTR
MOV P2,#04H
MOV P3,A
MOV R4,#4
LOOP6:MOV R3,#125
LOOP7:DJNZ R3,LOOP7
DJNZ R4,LOOP6
MOV A,B
MOVC A,@A+DPTR
MOV P2,#08H
MOV P3,A
MOV R4,#4
LOOP8:MOV R3,#125
LOOP9:DJNZ R3,LOOP9
DJNZ R4,LOOP8
JBC TF0,LOOP ;判断是否计满125ms
AJMP DELAY
LOOP:MOV TL0,#0CDH ;计满125ms重新给定时器赋值
MOV TH0,#0BH
MOV A,30H
DEC A
MOV 30H,A
JNZ DELAY ;判断是否计满8次125ms,即1s
DEC R6 ;计满1s,东西倒计时减1,南北倒计时减1
DEC R7
MOV 30H,#08H ;重新1s次数,重新计时
RET
TABLE:DB 0C0H,0F9H,0A4H,0B0H,99H ;相应数值的数码管代码
DB 92H,82H,0F8H,80H,90H
END
3. 基于单片机的交通灯控制系统设计(课设)
不知道你远程控制系统是机器自动完成还是人工。如果要自动检测车流量,你需要一个红外线或者超声波传感器,接在中断口上,在路口前方x米的地方计数,然后用有线或者无线的方式传送给主控器,主控器根据两方四个计数器的计数来比较,按百分比分配时间。
然后控制相应的灯亮。
灯用发光二极管做,三色的四组,共阴,io口输出高电平亮。
还是比较简单的,毕业设计自己做吧,原理是这样。如果有人帮你做了,你还是不会。以后出来找工作,靠的还是本事哦。
4. 基于单片机的智能交通灯控制系统基本设计方案
到淘宝网上找找:“51单片机交通灯控制系统送仿真图”,有现成的。
或是到网络文库中找找,参考论文也比较多。
5. 单片机中十字路口交通信号灯的过程,内容,原理
基于单片机的十字路口交通灯设计
摘要:知道了交通灯的重要性,而对于交通灯最重要的是单片机。跟随单片机的应用正在不断深入,同时带动传统控制检测技术日益更新。在实时检测和自动控制的单片机应用系统中,单片机通常作为一个核心部件来使用,仅凭对单片机简单了解是不够的,应该根据具体硬件结构并且软硬件结合,实现自己想要达到的目的。单片机自问世以来,性能不断提高和完善,所以实用许多场合。单片机具有集成度高、功能多、速度快、体积小、功耗低、使用方便、性能可靠、价格便宜,其易于产品化、抗干扰能力强、可以在恶劣的情况下坚持工作。特别是它强大的面向控制能力,使它在工业控制领域,智能仪表、外设控制、家用电器、机器人、军事装置等方面得到了广泛的应用。 考虑到单片机具有物美价廉、灵活方便、还有各种优秀的特点,所以我们从中选择用MCS-51系列单片机AT89C51单片机来实现十字路口交通信号灯的控制。单片机系统的实体和装置,通常由运算器、控制器、存储器、输入接口电路和输入设备、输出接口电路和输出设备等组成。单片机实质上是一个硬件的芯片,在实际应用中,通常很难直接和被控对象进行电气连接,必须外加各种扩展接口电路、外部设备、被控对象等硬件和软件,才能构成一个单片机应用系统。该交通灯拟系统的硬件部分主要由键盘、显示和运算部分组成,再根据实际车流量通过8051芯片的P3口设置红、绿灯燃亮时间的功能;红绿灯循环点亮,倒计时剩5秒时黄灯闪烁警示(交通灯信号通过P1口输出,显示时间通过P0口输出至双位数码管)。本系统设计周期短、可靠性高、实用性强、操作简单、维护方便、扩展功能强。
关键词:单片机、MCS-51系列单片机AT89C51、交通灯
6. 单片机智能交通灯课程设计
我有交通灯论文,里面有C源代码。电路图 给个邮箱传给你。我邮箱是[email protected].给我发个信息说明下,我发给你
7. 求单片机高手帮忙!
基于单片机交通灯智能控制系统研究
随着经济发展,汽车数量急剧增加,城市道路日渐拥挤,交通拥塞已成为一个国际性的问题。因此,设计可靠、安全、便捷的多功能交通灯控制系统有极大的现实必要性。通常情况下,交通信号灯控制主要有两个缺陷:1、车道放行车辆时,时间设定相同且固定,十字路口经常出现主车道车辆多,放行时间短,车流无法在规定时间内通过,而副车道车辆少,放行时间明显过长;2、未考虑急车强通(譬如,消防车执行紧急任务时,两车道都应等待消防车通过)。由于交通信号灯控制系统缺乏有效的应急措施,导致十字路口交通受阻,造成不必要的经济损失。
本系统利用单片机AT89C51,借助CAN总线作为现场通信总线实现智能交通信号灯控制系统设计,实现了根据区域车流、红外遥控以及PC机进行十字路口交通信号灯智能控制,并在软、硬件方面采取一些改进措施,实现了根据十字路口车流、红外遥控进行交通信号灯智能控制,使交通信号灯现场控制灵活、有效。从一定程度上解决了交通路口堵塞、车辆停车等待时间不合理、急车强通等问题。系统具有结构简单、可靠性高、成本低、实时性好、安装维护方便等优点,有广泛的应用前景。
2 设计方案与系统结构
本智能交通信号灯控制系统硬件主要由车流信息检测电路、键盘时间设置电路、红外遥控发射/接收电路、单片机控制器、CAN总线控制器、CAN总线收发器、光电隔离芯片、单片机并行接口、看门狗电路等电路组成。本系统设置与上位PC机相连的上位节点为主节点,各路口信号灯控制装置为底层节点,共同构成区域交通信号灯控制系统。系统原理框图如图1所示。
系统利用红外遥控装置实现各十字路口现场信号灯控制,红外发射器发射出的编码信号经接收器接收后送入单片机控制器,控制信号灯红绿变换、等待时间、急车强通。另外,车流检测装置安放在各十字路口东西、南北道路方向实时检测车道车流信息。并将检测到的信息输至单片机进行处理,通过单片机编程技术实现信号灯绿、红切换及等待时间设定。此外,PC机通过通讯串口与节点上的单片机控制器进行通信,实现数据信息在CAN总线上的发送与接收。PC机负责网络上所有信号灯控制装置的集中管理功能;同时向各信号灯控制器下传工作模式控制信息。3 系统设计
3.1 红外遥控发射电路
由于系统需实现十字路口不同方向信号灯变化。假设两方向为东西、南北方向。则需实现东西、南北两个方向信号灯的选定、时间增减、急车强通等功能。红外遥控发射电路原理框图如图2所示。
红外遥控发射器与外接陶瓷谐振器、电容器组成振荡电路,分频产生一定脉冲宽度的载频信号。输出编码信号,经达林顿管放大后,驱动红外线发射二极管向外发射。
3.2 红外遥控接收电路
红外接收、解调模块接收来自发射器的红外信号,经内部集成电路放大、解调后,由输出端输出编码脉冲信号,经三极管反相放大后,送至接收器,由接收器解调模块进行译码。当发射器相应键按下时,接收器输出高电平信号,通过或非门接入单片机控制器的外中断,申请中断,由中断服务程序检测键按下状态,从而完成相应的中断服务。红外接收器与单片机控制器接口电路如图3所示。
3.3 CAN总线节点接口电路
各路口交通信号灯控制器与上位机的通讯都通过各自的CAN总线接口模块完成。总线系统节点硬件电路原理框图如图4所示。
单片机控制器负责CAN总线控制器初始化,控制实现数据的接收和发送等通信任务。CAN总线收发器与CAN总线接口部分采用了一定的安全和抗干扰措施。为增强CAN总线节点的抗干扰能力,CAN控制器不直接与CAN收发器相连,而是通过加接高速光电隔离器芯片,实现总线上各节点间的电气隔离。但是,光耦电路所采用的VCC和VDD电源必须完全隔离,否则采用光耦电路就失去了意义,可采用小功率电源隔离模块或不大于5V隔离输出开关电源模块实现。
3.4 看门狗电路
由于单片机控制器自身抗干扰能力较差,尤其在一些条件比较恶劣、噪声大的场合,常会出现单片机因受外界干扰轻者导致系统内部数据出错,重者将严重影响程序的运行而死机,造成系统不能正常工作。设置看门狗是为了防止单片机死机、提高单片机系统抗干扰性的一种重要途径。考虑系统可靠性设计,满足苛刻环境下的正常运行,本设计中采用硬件看门狗电路。电路原理框图如图5所示。
通过硬件看门狗电路设计,可有效防止运行程序进入“死循环”。保证系统不受恶劣天气及环境条件造成的干扰。
3.5 分布式检测控制系统由于CAN总线具有较强的抗干扰能力,通讯中没有地址的概念及节点数不受限制等优点,已经被广泛应用于汽车、数控机床、仪器仪表、现场总线控制等领域[1]。本设计将若干智能交通信号灯控制器、上位节点接口和PC机组成CAN总线通信系统方便实现智能分布式区域信号灯实时监控、高速数据采集等。单片机控制器与PC机实现串行通信,设置CAN总线控制器工作在Intel模式,由PC机发送数据写入单片机控制器,再通过控制信号由单片机将数据写入CAN总线控制器并通过CAN总线收发器发送。接收数据通过中断进行,CAN BUS数据经CAN总线收发器接收并写入CAN总线控制器。然后通过中断提请单片机读取数据上传PC机。
4 实验分析
本系统单片机控制器选用MSC-51系列IntelAT89C51芯片,红外遥控发射/接收器使用BA5104/BA5302设计。利用MAX692设计看门狗监控电路。总线通信接口中选取PHILIPS公司的SJA1000 CAN总线控制器及82C250总线收发器[2] [3]。光耦合器采用6N137芯片。系统硬件电路利用Protel DXP设计并制板。
通过实验测试,按下红外遥控发射器按键K1-K6有效地控制了东西、南北方向时间设定、急车强通,时间增、减。持续使WDI低电平时间>1.6s后,看门狗RESET端产生200ms负溢出脉冲信号使AT89C51复位,均有效地达到了系统设计要求。
为了提高系统通讯抗干扰性及可靠性,在总线收发器82C250的CANH和CANL引脚通过5Ω电阻与CAN总线相连,保护其免受过流冲击的影响;82C250的CANH和CANL与地之间分别并联30pF电容,滤除总线高频干扰并起到防电磁辐射的作用;总线两端接入120Ω终端电阻[4],匹配总线阻抗。此外,在CAN总线输入端与地之间接防雷击管,当两输入端与地之间出现瞬变干扰时,通过防雷击管放电起到保护总线的作用,避免了雷电天气对系统通讯的影响。这些部分虽然增加了节点的复杂度,但却有效保证了数据通信的稳定性和安全性。
5 结语
交通信号灯智能控制系统为改善城市交通拥堵,提高道路的交通运输能力发挥了积极作用。本系统设计实现了十字路口信号灯自动化、智能化、人性化实时控制。通过系统功能扩展,系统亦可应用于其他控制领域,应用前景广阔。
8. 单片机交通灯课程设计
/*****************************************************
十字路口交通灯控制C程序
******************************************************/
#defineucharunsignedchar
#defineuintunsignedint
#include<reg52.h>
/*****定义控制位**********************/
sbit Time_Show_LED2=P2^5;//Time_Show_LED2控制位
sbit Time_Show_LED1=P2^4;//Time_Show_LED1控制位
sbitEW_LED2=P2^3;//EW_LED2控制位
sbitEW_LED1=P2^2;//EW_LED1控制位
sbitSN_LED2=P2^1;//SN_LED2控制位
sbitSN_LED1=P2^0;//SN_LED1控制位
sbit SN_Yellow=P1^6;//SN黄灯
sbit EW_Yellow=P1^2;//EW黄灯
sbit EW_Red=P1^3;//EW红灯
sbit SN_Red=P1^7;//SN红灯
sbit EW_ManGreen=P3^0;//EW人行道绿灯
sbit SN_ManGreen=P3^1;//SN人行道绿灯
sbit Special_LED=P2^6;//交通正常指示灯
sbit Busy_LED=P2^7;//交通繁忙指示灯
sbit Nomor_Button=P3^5;//交通正常按键
sbit Busy_Btton=P3^6;//交通繁忙按键
sbit Special_Btton=P3^7;//交通特殊按键
sbit Add_Button=P3^3;//时间加
sbit Reces_Button=P3^4;//时间减
bit Flag_SN_Yellow;//SN黄灯标志位
bit Flag_EW_Yellow;//EW黄灯标志位
charTime_EW;//东西方向倒计时单元
charTime_SN;//南北方向倒计时单元
ucharEW=60,SN=40,EWL=19,SNL=19;//程序初始化赋值,正常模式
ucharEW1=60,SN1=40,EWL1=19,SNL1=19;//用于存放修改值的变量
ucharcodetable[10]={0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F};//1~~~~9段选码
ucharcodeS[8]={0X28,0X48,0X18,0X48,0X82,0X84,0X81,0X84};//交通信号灯控制代码
/**********************延时子程序************************/
voidDelay(uchara)
{
uchari;
i=a;
while(i--){;}
}
/*****************显示子函数**************************/
voidDisplay(void)
{
charh,l;
h=Time_EW/10;
l=Time_EW%10;
P0=table[l];
EW_LED2=1;
Delay(2);
EW_LED2=0;
P0=table[h];
EW_LED1=1;
Delay(2);
EW_LED1=0;
h=Time_SN/10;
l=Time_SN%10;
P0=table[l];
SN_LED2=1;
Delay(2);
SN_LED2=0;
P0=table[h];
SN_LED1=1;
Delay(2);
SN_LED1=0;
h=EW1/10;
l=EW1%10;
P0=table[l];
Time_Show_LED1=1;
Delay(2);
Time_Show_LED1=0;
P0=table[h];
Time_Show_LED2=1;
Delay(2);
Time_Show_LED2=0;
}
/**********************外部0中断服务程序************************/
voidEXINT0(void)interrupt0using1
{
EX0=0;//关中断
if(Add_Button==0)//时间加
{
EW1+=5;
SN1+=5;
if(EW1>=100)
{
EW1=99;
SN1=79;
}
}
if(Reces_Button==0)//时间减
{
EW1-=5;
SN1-=5;
if(EW1<=40)
{
EW1=40;
SN1=20;
}
}
if(Nomor_Button==0)//测试按键是否按下,按下为正常状态
{
EW1=60;
SN1=40;
EWL1=19;
SNL1=19;
Busy_LED=0;//关繁忙信号灯
Special_LED=0;//关特殊信号灯
}
if(Busy_Btton==0)//测试按键是否按下,按下为繁忙状态
{
EW1=45;
SN1=30;
EWL1=14;
SNL1=14;
Special_LED=0;//关特殊信号灯
Busy_LED=1;//开繁忙信号灯
}
if(Special_Btton==0)//测试按键是否按下,按下为特殊状态
{
EW1=75;
SN1=55;
EWL1=19;
SNL1=19;
Busy_LED=0;//关繁忙信号灯
Special_LED=1;//开特殊信号灯
}
EX0=1;//开中断
}
/**********************T0中断服务程序*******************/
voidtimer0(void)interrupt1using1
{
staticucharcount;
TH0=(65536-50000)/256;
TL0=(65536-50000)%256;
count++;
if(count==10)
{
if(Flag_SN_Yellow==1)//测试南北黄灯标志位
{SN_Yellow=~SN_Yellow;}
if(Flag_EW_Yellow==1) //测试东西黄灯标志位
{EW_Yellow=~EW_Yellow;}
}
if(count==20)
{
Time_EW--;
Time_SN--;
if(Flag_SN_Yellow==1)//测试南北黄灯标志位
{SN_Yellow=~SN_Yellow;}
if(Flag_EW_Yellow==1)//测试东西黄灯标志位
{EW_Yellow=~EW_Yellow;}
count=0;
}
}
/*********************主程序开始**********************/
voidmain(void)
{
Busy_LED=0;
Special_LED=0;
IT0=1;//INT0负跳变触发
TMOD=0x01;//定时器工作于方式1
TH0=(65536-50000)/256;//定时器赋初值
TL0=(65536-50000)%256;
EA=1;//CPU开中断总允许
ET0=1;//开定时中断
EX0=1;//开外部INTO中断
TR0=1;//启动定时
while(1)
{/*******S0状态**********/
EW_ManGreen=0;//EW人行道禁止
SN_ManGreen=1;//SN人行道通行
Flag_EW_Yellow=0; //EW关黄灯显示信号
Time_EW=EW;
Time_SN=SN;
while(Time_SN>=5)
{P1=S[0];//SN通行,EW红灯
Display();}
/*******S1状态**********/
P1=0x00;
while(Time_SN>=0)
{Flag_SN_Yellow=1;//SN开黄灯信号位
EW_Red=1; //SN黄灯亮,等待左拐信号,EW红灯
Display();
}
/*******S2状态**********/
Flag_SN_Yellow=0;//SN关黄灯显示信号
Time_SN=SNL;
while(Time_SN>=5)
{P1=S[2];//SN左拐绿灯亮,EW红灯
Display();}
/*******S3状态**********/
P1=0x00;
while(Time_SN>=0)
{Flag_SN_Yellow=1;//SN开黄灯信号位
EW_Red=1; //SN黄灯亮,等待停止信号,EW红灯
Display();}
/***********赋值**********/
EW=EW1;
SN=SN1;
EWL=EWL1;
SNL=SNL1;
/*******S4状态**********/
EW_ManGreen=~EW_ManGreen;//EW人行道通行
SN_ManGreen=~SN_ManGreen;//SN人行道禁止
Flag_SN_Yellow=0; //SN关黄灯显示信号
Time_EW=SN;
Time_SN=EW;
while(Time_EW>=5)
{P1=S[4];//EW通行,SN红灯
Display();}
/*******S5状态**********/
P1=0X00;
while(Time_EW>=0)
{Flag_EW_Yellow=1;//EW开黄灯信号位
SN_Red=1;//EW黄灯亮,等待左拐信号,SN红灯
Display();}
/*******S6状态**********/
Flag_EW_Yellow=0; //EW关黄灯显示信号
Time_EW=EWL;
while(Time_EW>=5)
{P1=S[6];//EW左拐绿灯亮,SN红灯
Display();}
/*******S7状态**********/
P1=0X00;
while(Time_EW>=0)
{Flag_EW_Yellow=1;//EN开黄灯信号位
SN_Red=1;//EW黄灯亮,等待停止信号,SN红灯
Display();}
/***********赋值**********/
EW=EW1;
SN=SN1;
EWL=EWL1;
SNL=SNL1;
}
}
9. 基于51单片机的智能交通灯设计
如果出RMB 我帮你做程序和仿真
10. 单片机课程设计:交通灯控制!
我给你发一个看看,是protues的仿真电路图,可以运行看效果,还有keil的汇编程序,有邮箱给你发去
我给你发了啊!!!下边是程序:
org 0000h
sjmp main
org 0030h
main: mov p0,#11101110b
acall del1
acall del1
acall del1
acall mmm
mov p0,#11011011b
acall del1
acall del1
mov p0,#11110101b
lcall del1
acall del1
acall del1
acall mmm
sjmp main
del1:mov r0,#0ffh
loop1:mov r1,#0ffh
loop2:djnz r1,loop2
djnz r0,loop1
ret
mmm:mov p1,#0ffh
mov p2,#0ffh
mov r3,#02h
mmm2:mov p1,r3
mov r2,#09h
mmm1:mov p2,r2
acall del1
acall del1
djnz r2,mmm1
djnz r3,mmm2
mov p1,r3
mov r2,#09h
mmm3: mov p2,r2
acall del1
acall del1
djnz r2,mmm3
ret
end