本文主要是介绍基于51单片机智能交通灯(紧急模式+特种车辆通行)(仿真+源程序+原理图+论文),希望对大家解决编程问题提供一定的参考价值,需要的开发者们随着小编来一起学习吧!
资料编号:209
功能介绍:
本设计基于STC89C51/52(与AT89S51/52、AT89C51/52通用,可任选)单片机
2、数码管倒计时显示时间。
3、东西和南北方向各有两个数码管,分别显示时间,东西和南北的时间是不一样的哦,要相差黄灯的时间才是正确的。
4、可以分别设置主干道和支干道的通行时间。
5、有紧急模式,可以特种车辆优先通行或交通事故应急处理。
操作说明:
按键依次功能:黄灯长亮(深夜模式)、红灯长亮(禁行)、确定调时时间、时间加、时间减、切换调时方向(东西和南北均可以分别设置通行时间)。单独的是复位按键。
设在十字路口,分为东西向和南北向,在任一时刻只有一个方向通行,另一方向禁行,持续一定时间,经过短暂的过渡时间,将通行禁行方向对换。其具体状态如下图所示。说明:黑色表示亮,白色表示灭。交通状态从状态1开始变换,直至状态6然后循环至状1,周而复始,即如图(图2-1)所示:直至状态6然后循环至状态1,通过具体的路口交通灯状态的演示分析我们可以把这四个状态归纳如下:
图2-1交通状态
东西方向红灯灭,同时绿灯亮,南北方向黄灯灭,同时红灯亮,倒计时20秒。此状态下,东西向禁止通行,南北向允许通行。
东西方向绿灯灭,同时黄灯亮,南北方向红灯亮,倒计时5秒。此状态下,除了已经正在通行中的其他所以车辆都需等待状态转换。
南北方向红灯灭,同时绿灯亮,东西方向黄灯灭,同时红灯亮,倒计时30秒。此状态下,东西向允许通行,南北向禁止通行。
南北方向绿灯灭,同时黄灯亮,东西方向红灯亮,倒计时5秒。此状态下,除了已经正在通行中的其他所以车辆都需等待状态转换。
下面我们可以用图表表示灯状态和行止状态的关系如下:
表2-1交通状态及红绿灯状态
| 状态1 | 状态3 | 状态4 | 状态6 |
东西向 | 禁行 | 等待变换 | 通行 | 等待变换 |
南北向 | 通行 | 等待变换 | 禁行 | 等待变换 |
东西红灯 | 1 | 1 | 0 | 0 |
东西黄灯 | 0 | 0 | 0 | 1 |
东西绿灯 | 0 | 0 | 1 | 0 |
南北红灯 | 0 | 0 | 1 | 1 |
南北绿灯 | 1 | 0 | 0 | 0 |
南北黄灯 | 0 | 1 | 0 | 0 |
东西南北四个路口均有红绿黄3灯和数码显示管4个,在任一个路口,遇红灯禁止通行,转绿灯允许通行,之后黄灯亮警告行止状态将变换。状态及红绿灯状态如表2-1所示。说明:0表示灭,1表示亮。
程序部分展示(有中文注释,新手容易看懂)
#define uchar unsigned char
#define uint unsigned int//宏定义
uchar data buf[4];//秒显示的变量
uchar data sec_dx=15; //东西数默认
uchar data sec_nb=15;//南北默认值
uchar data set_timedx=15;//设置东西方向的时间
uchar data set_timenb=15;//设置南北方向的时间
int n;
uchar data countt0,countt1;//定时器0中断次数
//定义6组开关
sbit k4=P3^7; //切换方向
sbit k1=P3^5;//时间加
sbit k2=P3^6;//时间减
sbit k3=P3^4;//确认
sbit k5=P3^1;//禁止
sbit k6=P1^5;//夜间模式
sbit Red_nb=P2^6;//南北红灯标志
sbit Yellow_nb=P2^5;//南北黄灯标志
sbit Green_nb=P2^4; //南北绿灯标志
sbit Red_dx=P2^3;//东西红灯标志
sbit Yellow_dx=P2^2;//东西黄灯标志
sbit Green_dx=P2^1;//东西绿灯标志
bit set=0;//调时方向切换键标志 =1时,南北,=0时,东西
bit dx_nb=0;//东西南北控制位
bit shanruo=0;//闪烁标志位
bit yejian=0;//夜间黄灯闪烁标志位
uchar code table[11]={//共阴极字型码
0x3f, //--0
0x06, //--1
0x5b, //--2
0x4f, //--3
0x66, //--4
0x6d, //--5
0x7d, //--6
0x07, //--7
0x7f, //--8
0x6f, //--9
0x00 //--NULL
};
//函数的声明部分
void delay(int ms);//延时子程序
void key();//按键扫描子程序
void key_to1();//键处理子程序
void key_to2();
void key_to3();
void display();//显示子程序
void logo(); //开机LOGO
void Buzzer();
//主程序
void main()
{
TMOD=0X11; //定时器设置
TH1=0X3C;
TL1=0XB0;
TH0=0X3C;//定时器0置初值 0.05S
TL0=0XB0;
EA=1;//开总中断
ET0=1;//定时器0中断开启
ET1=1; //定时器1中断开启
TR0=1;//启动定时0
TR1=0; //关闭定时1
logo();//开机初始化
P2=0Xc3;// 开始默认状态,东西绿灯,南北黄灯
sec_nb=sec_dx+5; //默认南北通行时间比东西多5秒
while(1) //主循环
{
key(); //调用按键扫描程序
display(); //调用显示程序
}
}
下面是分享资料下载链接:
https://pan.baidu.com/s/1bY9remZRU-kHbsgujcWKFw?pwd=3rsy
这篇关于基于51单片机智能交通灯(紧急模式+特种车辆通行)(仿真+源程序+原理图+论文)的文章就介绍到这儿,希望我们推荐的文章对编程师们有所帮助!