51单片机C程序实验LED灯:[5]模拟交通灯

2025-04-22 05:24:29

名称:LED 模拟交通灯目的:东西向绿灯亮若干秒,黄灯闪3次后红灯亮, 红灯亮后,南北向由红灯变为绿灯,若干秒后南北向黄灯闪烁3次后变红灯,东西向变绿凼瑜靶货灯,如此重复。分析一共有12个灯,每个与每个又有逻辑联系,但其实不是很复杂,分析比较重要,只要把交通灯的规律总结出来就很简单了,而且每个人总结规律是不同的,程序也就有更多种,所以这里算是一个比较广泛的例子。

51单片机C程序实验LED灯:[5]模拟交通灯

工具/原料

keil4软件

proteus仿真

proteus电路图

1、LED灯方面的元器件不是很复杂,之前说了很多,也差不多,只是灯不一样。51单片机电容瓷片电容晶振绿色二极管红色二极管黄色二极管电阻

51单片机C程序实验LED灯:[5]模拟交通灯

2、电路图:1为总体图,2,3为大图PS:图要是不会画也可以评论提问。。

51单片机C程序实验LED灯:[5]模拟交通灯
51单片机C程序实验LED灯:[5]模拟交通灯
51单片机C程序实验LED灯:[5]模拟交通灯

程序清单

1、说明分析(不想看请直接跳往下一步):通过思考我们发现灯的循环大致分为1、横向绿灯亮,竖向红灯亮2、横向黄灯闪三下,竖向红灯依旧亮3、横向红灯亮,竖向绿灯亮4、横向红灯依旧亮,竖向黄灯闪三下由分析我们把程序也分为四个循环

2、【程序】图片版按照程序顺序截图,前面是子程序,最后为主程序

51单片机C程序实验LED灯:[5]模拟交通灯
51单片机C程序实验LED灯:[5]模拟交通灯
51单片机C程序实验LED灯:[5]模拟交通灯

3、【文字版】/* 名称:LED 模拟交通灯说明:东西向绿灯亮若干秒,黄灯闪3次后红灯亮, 红灯亮后,南北向由红灯变为绿灯,若干秒后南北向黄灯尸僳缡蟑闪烁3次后变红灯,东西向变绿灯,如此重复。*/#include<reg51.h>#define uchar unsigned char#define uint unsigned int//规划好各个脚连接的灯,方便使用sbit RED_1=P0^0; //东西向灯sbit YELLOW_1=P0^1;sbit GREEN_1=P0^2;sbit RED_2=P0^3; //南北向灯sbit YELLOW_2=P0^4;sbit GREEN_2=P0^5;uchar number=0,type=1; //闪烁次数,操作类型变量//延时子程序void Delay(uint x){uchar i;while(x--) for(i=0;i<120;i++);}//交通灯切换程序//总共分为四种情况,如此循环//注:1为关灯,0为开灯traffic(){switch(type){case 1: //东西向绿灯与南北向红灯亮RED_1=1;YELLOW_1=1;GREEN_1=0;RED_2=0;YELLOW_2=1;GREEN_2=1;Delay(2000);type=2;break;case 2: //东西向黄灯闪烁,绿灯关闭Delay(300);YELLOW_1=~YELLOW_1;GREEN_1=1;if(++number!=6) return; //闪烁3次number=0;type=3;break;case 3: //东西向红灯,南北向绿灯亮RED_1=0;YELLOW_1=1;GREEN_1=1;RED_2=1;YELLOW_2=1;GREEN_2=0;Delay(2000);type=4;break;case 4: //南北向黄灯闪烁3次Delay(300);YELLOW_2=~YELLOW_2;GREEN_2=1;if(++number!=6) return;number=0;type=1;}}//主程序,由于用了switch,为了便于循环选择,用一个traffic子函数写在外面void main(){while(1) traffic();}

完成结果仿真图

51单片机C程序实验LED灯:[5]模拟交通灯
51单片机C程序实验LED灯:[5]模拟交通灯
声明:本网站引用、摘录或转载内容仅供网站访问者交流或参考,不代表本站立场,如存在版权或非法内容,请联系站长删除,联系邮箱:site.kefu@qq.com。
猜你喜欢