红绿灯的倒计时器,绿闪时候怎么倒计时呢,请大家给提提意见
时间:10-02
整理:3721RD
点击:
红绿灯的倒计时器,绿闪时候怎么倒计时呢,大家给提提意见,我说的是自学习式倒计时器。
红绿灯状态在程序上用状态机来写。在绿灯闪烁的时候就算进入一个新的状态了。比如4S,那这个状态就停留4S后进入下一个状态。
至于闪灯,则在显示程序上处理一下就可以了。首先识别这个状态需要闪灯。然后打个比方每0.5S对变量Flash进行++,显示上判别
if(Flash%2 == 1)
显示绿灯
else
熄灭绿灯
大致就是这样的。
我想了解这一块的程序,绿闪时候程序怎么计时呢,绿灯亮0.5秒,灭0.5秒,倒计时器也跟着闪烁。
小编能分享个采用51系列搞的带数显的红绿灯程序吗
多的就不贴了,以前倒是写过交通灯的,只是现在看来我实在不好意思把以前的代码贴出来了。就找以前中的一段涉及到闪烁的贴出来吧。
过段时间如果有时间了,我再写一个交通灯的小项目代码,开源出来,到时候@你哈~
- void display_update(void)//更新显示缓存
- {//50ms
- red_1 = 0;
- yellow_1 = 0;
- green_1 = 0;
- red_2 = 0;
- yellow_2 = 0;
- green_2 = 0;
- if( ++shan >200 )
- shan = 0;
- if( work_state == TIME_DX_GE )
- {
- time = time_red;
- red_1 = 1;
- green_2 = 1;
- return;
- }
- if( work_state == TIME_DX_SHI )
- {
- time = time_red;
- red_1 = 1;
- green_2 = 1;
- return;
- }
- if( work_state == TIME_NB_GE )
- {
- time = time_green;
- red_2 = 1;
- green_1 = 1;
- return;
- }
- if( work_state == TIME_NB_SHI )
- {
- time = time_green;
- red_2 = 1;
- green_1 = 1;
- return;
- }
- if( work_state == TIME_DELAY_GE )
- {
- time = time_yellow;
- yellow_1 = 1;
- yellow_2 = 1;
- return;
- }
- if( work_state == DX )
- {
- green_2 = 1;
- red_1 = 1;
- }
- if( (work_state == DELAY) )
- {
- green_2 = 1;
- red_1 = 1;
- if( shan%2 < 1 )
- {
- yellow_1 = 0;
- yellow_2 = 1;
- }
- }
- if( work_state == NB )
- {
- green_1 = 1;
- red_2 = 1;
- }
- if( (work_state == DELAY1) )
- {
- green_1 = 1;
- red_2 = 1;
- if( shan%2 < 1 )
- {
- yellow_1 = 1;
- yellow_2 = 0;
- }
- }
- if( time_1s < 100 )
- return;
- time_1s = 0;
- time--;
- }
还能说什么 谢了