提供对应的Proteus仿真电路图,Keil程序源码(C语言),设计文档、原理图,PCB、模块资料、元件清单、程序流程图等电子资料参考学习,附带项目全部资料下载链接。
1)项目完整资料获取链接:下载链接
2)Keil、Proteus各个版本安装包: 下载链接
01设计要求
设计一个基于51单片机交通信号灯系统:
功能1:东西南北双向各配双数码管倒计时,搭载红绿黄三色指示灯;
功能2:支持双向通行时长独立设定,自带黄灯缓冲,智能规避参数错误;
功能3:通行倒计时剩余五秒,自动触发黄灯预警提醒;
功能4:特殊模式:紧急模式(红灯常亮,禁行);夜间模式(黄灯常亮,提示前方注意安全)。
02系统模板
系统按键支持禁行、夜间模式、复位、东西 / 南北放行、时长加减、通道切换功能。
03Proteus仿真
04示例代码
#include <reg51.h>
#define uchar unsigned char
#define uint unsigned int //宏定义
void main()
{
TMOD=0X11; //定时器设置
TH1=0X3C; TL1=0XB0;
TH0=0X3C; TL0=0XB0; //定时器0初值0.05S
EA=1; ET0=1; ET1=1; //开总中断、定时器0/1中断
TR0=1; TR1=0; //启动定时0,关闭定时1
logo(); //开机初始化
P2=0Xc3; //默认:东西绿灯,南北黄灯
sec_nb=sec_dx+5; //南北通行时间比东西多5秒
while(1) //主循环
{
key(); //按键扫描
display();//显示刷新
}
}
//按键扫描子程序
void key(void)
{
//K1:时间加
if(k1!=1)
{
display();//延时消抖
if(k1!=1)
{
TR0=0; shanruo=0; P2=0x00; TR1=0;
if(set==0) set_timedx++;
else set_timenb++;
if(set_timenb==100) set_timenb=1;
if(set_timedx==100) set_timedx=1;
sec_nb=set_timenb; sec_dx=set_timedx;
do{display();}while(k1!=1);//等待释放
}
}
//K2:时间减
if(k2!=1)
{
display();//延时消抖
if(k2!=1)
{
TR0=0; shanruo=0; P2=0x00; TR1=0;
if(set==0) set_timedx--;
else set_timenb--;
if(set_timenb==0) set_timenb=99;
if(set_timedx==0) set_timedx=99;
sec_nb=set_timenb; sec_dx=set_timedx;
do{display();}while(k2!=1);//等待释放
}
}
//K3:确认
if(k3!=1)
{
display();//延时消抖
if(k3!=1)
{
TR0=1; sec_nb=set_timenb; sec_dx=set_timedx; TR1=0;
if(set==0)
{
P2=0X00; Green_dx=1; Red_nb=1;
sec_nb=sec_dx+5;
}
else
{
P2=0x00; Green_nb=1; Red_dx=1;
sec_dx=sec_nb+5;
}
}
}
//K4:切换
if(k4!=1)
{
display();//延时消抖
if(k4!=1)
{
TR0=0; set=!set; TR1=0; dx_nb=set;
do{display();}while(k4!=1);//等待释放
}
}
//K5:禁止(全红灯)
if(k5!=1)
{
display();//延时消抖
if(k5!=1)
{
TR0=0; P2=0x00; TR1=0;
Red_dx=1; Red_nb=1;
sec_dx=00; sec_nb=00;
do{display();}while(k5!=1);//等待释放
}
}
//K6:夜间模式
if(k6!=1)
{
display();//延时消抖
if(k6!=1)
{
TR0=0; P2=0x00; TR1=1;
sec_dx=00; sec_nb=00;
do{display();}while(k6!=1);//等待释放
}
}
}
05原理图
注:
源码使用Keil4或Keil5打开
仿真使用的是Proteus8.13及以上版本,版本过低可能会打不开。
06资料获取
1)项目完整资料获取链接:下载链接
2)Keil、Proteus各个版本安装包: 下载链接
1157

被折叠的 条评论
为什么被折叠?



