⑴ 单片机模拟交通信号灯设计
交通信号灯应该很简单的,发个简单的仿真图给你看看
⑵ 交通信号灯管理系统的主要功能有哪些
交通信号灯管理系统,交通设施行业术语为交通信号控制机,是交通信号灯的一款集成控制系统,主要功能是通过网络协调控制交通路口的红绿灯显示、倒计时器显示等,也是交通信号灯管理控制的智能中枢“大脑”。以下是交通信号机的功能特点介绍:
交通信号机主要有控制机柜、集成控制系统、手持终端或手持遥控等部分组成。
KZJ-44信号机采用单片机及12C总线技术进行控制,工业级CPU、软硬件看门狗技术、能在各种恶劣条件下工作。硬件设计将信号机电源与输出负载电源分离,当负载回路发生短路故障时,能自动断开输出回路,并有指示灯指示。本机软件设计思路先进,操作简便易行,能方便实现44路输出控制,适用于通行情况较复杂的路口,配合方向指示信号灯及人行信号灯使用。
产品特点:
KZJ-44型具有10路输出的多时段定时式信号机,采用8位工业级51单片机,面板模拟路口运行,车道及人行道显示,6位LED数码管多个设置按键,构成友好人机对话界面。
产品功能:
1、 具有44路输出
2、 四种运行模式,分别为平日、双休日、假日、临时,每种模式设置十个时段,每个时段内最多可设置8个相位;
3、 信号灯停电后继续自动走时,数据在十年以内时间不丢失;
4、 如遇紧急情况,可以手动强制通行;
5、 内设硬件、软件看门狗技术;
6、 可设置夜间黄闪和信号灯全部关闭功能;
7、 在信号灯转换时,可设置绿闪、红闪、红黄同亮三种转换模式;
8、 具有故障自动检测功能,可以检测红绿灯故障、是否有绿冲突;
9、 带有外接手控操作面板接口,方便手控操作。
10、 全金属外壳设计,具有防尘、防电磁干扰、耐用、可靠性好等特点。
交通信号机,交通信号灯的中枢“大脑”
⑶ 单片机中十字路口交通信号灯的过程,内容,原理
基于单片机的十字路口交通灯设计
摘要:知道了交通灯的重要性,而对于交通灯最重要的是单片机。跟随单片机的应用正在不断深入,同时带动传统控制检测技术日益更新。在实时检测和自动控制的单片机应用系统中,单片机通常作为一个核心部件来使用,仅凭对单片机简单了解是不够的,应该根据具体硬件结构并且软硬件结合,实现自己想要达到的目的。单片机自问世以来,性能不断提高和完善,所以实用许多场合。单片机具有集成度高、功能多、速度快、体积小、功耗低、使用方便、性能可靠、价格便宜,其易于产品化、抗干扰能力强、可以在恶劣的情况下坚持工作。特别是它强大的面向控制能力,使它在工业控制领域,智能仪表、外设控制、家用电器、机器人、军事装置等方面得到了广泛的应用。 考虑到单片机具有物美价廉、灵活方便、还有各种优秀的特点,所以我们从中选择用MCS-51系列单片机AT89C51单片机来实现十字路口交通信号灯的控制。单片机系统的实体和装置,通常由运算器、控制器、存储器、输入接口电路和输入设备、输出接口电路和输出设备等组成。单片机实质上是一个硬件的芯片,在实际应用中,通常很难直接和被控对象进行电气连接,必须外加各种扩展接口电路、外部设备、被控对象等硬件和软件,才能构成一个单片机应用系统。该交通灯拟系统的硬件部分主要由键盘、显示和运算部分组成,再根据实际车流量通过8051芯片的P3口设置红、绿灯燃亮时间的功能;红绿灯循环点亮,倒计时剩5秒时黄灯闪烁警示(交通灯信号通过P1口输出,显示时间通过P0口输出至双位数码管)。本系统设计周期短、可靠性高、实用性强、操作简单、维护方便、扩展功能强。
关键词:单片机、MCS-51系列单片机AT89C51、交通灯
⑷ AT89S51 单片机控制交通灯程序(汇编语言)
ORG0000H
LJMPSTART
ORG0003H;INT0中断入口地址
LJMPINT0
ORG0040H
START:
MOVSP,#60H
SETBEX0;INT0中断有效
SETBIT0
SETBEA
LCALLSTATUS0;初始状态(都是红灯)
CIRCLE:
LCALLSTATUS1;南北绿灯,东西红灯
LCALLSTATUS2;南北绿灯闪转黄灯,东西红灯
LCALLSTATUS3;南北红灯,东西绿灯
LCALLSTATUS4;南北红灯,东西绿灯闪转黄灯
LJMPCIRCLE
INT0:
PUSHPSW;保护现场
PUSH2
PUSHACC
MOVDPTR,#8300H
MOVA,#0FH;南北,东西都亮红灯
MOVX@DPTR,A
MOVR2,#100;延时10秒
LCALLDELAY
POPACC;恢复现场
MOVX@DPTR,A
POP2
POPPSW
RETI
STATUS0:;南北红灯,东西红灯
MOVDPTR,#8300H
MOVA,#0FH
MOVX@DPTR,A
MOVR2,#10;延时1秒
LCALLDELAY
RET
STATUS1:;南北绿灯,东西红灯
MOVDPTR,#8300H
MOVA,#96H;南北绿灯,东西红灯
MOVX@DPTR,A
MOVR2,#200;延时20秒
LCALLDELAY
RET
STATUS2:;南北绿灯闪转黄灯,东西红灯
MOVDPTR,#8300H
MOVR3,#03H;绿灯闪3次
FLASH:
MOVA,#9FH
MOVX@DPTR,A
MOVR2,#03H
LCALLDELAY
MOVA,#96H
MOVX@DPTR,A
MOVR2,#03H
LCALLDELAY
DJNZR3,FLASH
MOVA,#06H;南北黄灯,东西红灯
MOVX@DPTR,A
MOVR2,#10;延时1秒
LCALLDELAY
RET
STATUS3:;南北红灯,东西绿灯
MOVDPTR,#8300H
MOVA,#69H
MOVX@DPTR,A
MOVR2,#200;延时20秒
LCALLDELAY
RET
STATUS4:;南北红灯,东西绿灯闪转黄灯
MOVDPTR,#8300H
MOVR3,#03H;绿灯闪3次
FLASH1:
MOVA,#6FH
MOVX@DPTR,A
MOVR2,#03H
LCALLDELAY
MOVA,#69H
MOVX@DPTR,A
MOVR2,#03H
LCALLDELAY
DJNZR3,FLASH1
MOVA,#09H;南北红灯,东西黄灯
MOVX@DPTR,A
MOVR2,#10;延时1秒
LCALLDELAY
NOP
RET
DELAY:;延时子程序
PUSH2
PUSH1
PUSH0
DELAY1:
MOV1,#00H
DELAY2:
MOV0,#0B2H
DJNZ0,$
DJNZ1,DELAY2;延时100mS
DJNZ2,DELAY1
POP0
POP1
POP2
RET
这是我们的实验,程序肯定没问题。至于ULN2803,只是一个增大电流,电压的芯片,因为51单片机本身的电流太小。你改一下就好。至于其他不明白的地方,可以交流。QQ375778861
⑸ 单片机交通灯按键设置将几个按键做I/O分配
单片机用的是哪种型号的?有特殊功能的引脚尽量别用,容易出问题
根据交通功能需要多少按键就分配多少I/O口,比如复位按键、时间设置按键、时间加按键、时间减按键、返回按键,总共5个按键可以搞定。
⑹ 51单片机C语言程序:交通灯系统
这种问题一般没人会的,像 CSDN、程序员网 等等有类似的设计,你可以去看看
⑺ 用单片机做交通灯,这么做
基于单片机的交通灯设计
时间: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
⑻ 此乃单片机控制智能交通信号灯的系统原理图请问K1 K2 K3的具体功能是什么,急用
应该是调节 交通灯的 时间
⑼ AT89C51单片机控制的交通灯
选AT89C52比较省事:
1,选T2定时器,6M晶振,500ms 计2次就是1s,60秒清,计57秒清,计3秒清,循环。
2,内部计数加,外部显示用60-内部数,
3,按键1抬起,东西,南北正常,按下东西绿,南北红。
4,按键2抬起,东西,南北正常,按下东西红,南北绿。
5,选T0为计数器,按键(P3.2)按下,计一个数。
6,选T1为计数器,按键(P3.3)按下,计一个数。
7,闪烁用500ms即可!
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;
}
}