51单片机的交通灯控制系统(仿真+程序+报告+原理图)

1、主要功能

该系统由AT89C51单片机+数码管模块+LED指示灯模块+按键模块构成。

可实现基本功能:

1、红绿灯正常切换,黄灯会闪烁

2、红灯30s,绿灯25s,黄灯5s(时间不同只需修改变量,简单)

按键功能:

1、南北向红灯时间可调,东西向绿灯时间可调

2、东西方向紧急模式:按下东西方向变为绿灯/红灯

3、南北方向紧急模式:按下南北方向变为绿灯/红灯

4、夜间模式:按下四路黄灯闪烁

2、仿真

protues 仿真使用的是8.10版本,由于该软件版本迭代原因,不能确保其他版本软件能够正常运行,请安装好对应软件(版本一致或者高于这个版本都可以)

3、程序代码

只是放上来了部分代码,仅供参考。

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();											//夜间模式控制
	}
}


4、原理图

5、报告

内含3.5k字,18页的详细报告一份,纯手打,内容与项目一致

6、常见问题汇总

里面包含了我对各个模块的详细解析,可以结合代码一起理解。如果正巧老师问题多,这个可以帮到你哦。(不定时更新,讲解模块也会越来越多)

7、资源获取

 本项目包含的所有文件都可以在👉今天也不想打工获取!

希望可以帮到你哈!

  • 7
    点赞
  • 130
    收藏
    觉得还不错? 一键收藏
  • 6
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 6
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值