该系统由AT89C51单片机+数码管模块+LED指示灯模块+按键模块构成。
可实现基本功能:
1、红绿灯正常切换,黄灯会闪烁
2、红灯30s,绿灯25s,黄灯5s(时间不同只需修改变量,简单)
按键功能:
1、南北向红灯时间可调,东西向绿灯时间可调
2、东西方向紧急模式:按下东西方向变为绿灯/红灯
3、南北方向紧急模式:按下南北方向变为绿灯/红灯
4、夜间模式:按下四路黄灯闪烁
protues 仿真使用的是8.10版本,由于该软件版本迭代原因,不能确保其他版本软件能够正常运行,请安装好对应软件(版本一致或者高于这个版本都可以)
只是放上来了部分代码,仅供参考。
void NS_SMG_drive(char *buff) //南北向数码管驱动
{
//显示十位
NS_1=0;
NS_2=1;
P0=~smgduan[buff[0]]; //段码取反
delay(5); //间隔一段时间扫描
P0=0x00; //消隐
//显示个位
NS_1=1;
NS_2=0;
P0=~smgduan[buff[1]];
delay(5);
P0=0x00;
//关闭南北向数码管
NS_1=1;
NS_2=1;
}
void Init() //系统初始化
{
P0=0x00; //默认led数码管全部不亮
P2=0x00;
EW_1=1;
EW_2=1;
NS_1=1;
NS_2=1;
NS_led=1;
EW_led=1;
NS_second=red_time; //默认初始时南北向灯亮红灯,并赋红灯时长
EW_second=green_time; //默认初始时东西向灯亮绿灯,并赋绿灯时长
yellow_time=red_time-green_time; //黄灯时间为红灯时间与绿灯时间差
Timer_init(); //定时器初始化
}
void main()
{
Init();
while(1)
{
Time_del(); //时间处理
data_del(display_data,NS_second,EW_second); //数据处理
NS_SMG_drive(display_data); //南北向数码管驱动
EW_SMG_drive(display_data); //东西向数码管驱动
R_G_Y_led(); //红绿灯驱动
Set_time(); //红绿灯时长设置
Urgent(); //紧急控制
Urgent_yellow(); //夜间模式控制
}
}
内含3.5k字,18页的详细报告一份,纯手打,内容与项目一致
里面包含了我对各个模块的详细解析,可以结合代码一起理解。如果正巧老师问题多,这个可以帮到你哦。(不定时更新,讲解模块也会越来越多)
本项目包含的所有文件都可以在今天也不想打工获取!
希望可以帮到你哈!