欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136
標(biāo)題:
單片機(jī)交通信號(hào)燈程序黃燈閃爍實(shí)現(xiàn),請(qǐng)大神幫忙看看
[打印本頁]
作者:
孫銘陽
時(shí)間:
2023-6-30 23:37
標(biāo)題:
單片機(jī)交通信號(hào)燈程序黃燈閃爍實(shí)現(xiàn),請(qǐng)大神幫忙看看
編寫交通燈程序,下面程序能夠?qū)崿F(xiàn)紅綠燈顯示及對(duì)應(yīng)流水燈的顯示,但是怎么實(shí)現(xiàn)在黃燈時(shí)間流水燈閃爍不知道怎么調(diào)試了嘗試過黃燈流水燈亮?xí)r直接加入延時(shí)函數(shù)發(fā)現(xiàn)數(shù)碼管閃爍了,求大神指點(diǎn)實(shí)現(xiàn)黃燈閃爍。
單片機(jī)源程序如下:
#include<reg51.h>
#define uchar unsigned char
#define uint unsigned int
sbit EW_LED2=P0^3; //東西數(shù)碼管十位
sbit EW_LED1=P0^2; //東西數(shù)碼管個(gè)位
sbit SN_LED2=P0^1; //南北數(shù)碼管十位
sbit SN_LED1=P0^0; //南北數(shù)碼管個(gè)位
sbit SN_red=P1^2; //南北紅燈
sbit SN_yellow=P1^3; //南北黃燈
sbit SN_green=P1^4; //南北綠燈
sbit EW_red=P1^5; //東西紅燈
sbit EW_yellow=P1^6; //東西黃燈
sbit EW_green=P1^7; //東西綠燈
char Time_EW; //東西數(shù)碼管顯示時(shí)間
char Time_SN; //南北數(shù)碼管顯示時(shí)間
uchar EW=5,SN=10; //南北通行狀態(tài)數(shù)碼管初始化
uchar EW1=10,SN1=5; //南北通行狀態(tài)數(shù)碼管初始化
uchar code table[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};//0-9數(shù)碼管端段碼(共陽極)
void delay_ms(uint x)//延時(shí)函數(shù)
{
uint i,j;
for(i=x;i>0;i--)
for(j=110;j>0;j--);
}
void Display(void) //數(shù)碼管顯示函數(shù)
{
char h,l;
h=Time_EW/10;
l=Time_EW%10;
P3=table[l];EW_LED2=1;delay_ms(1);EW_LED2=0;
P3=table[h];EW_LED1=1;delay_ms(1);EW_LED1=0;//東西方向數(shù)碼管秒數(shù)顯示
h=Time_SN/10;
l=Time_SN%10;
P2=table[l];SN_LED2=1;delay_ms(1);SN_LED2=0;
P2=table[h];SN_LED1=1;delay_ms(1);SN_LED1=0;//南北方向數(shù)碼管秒數(shù)顯示
}
void main(void)
{
EA=1;
ET0=1;
TMOD=0x01;
TL0=0xb0;
TH0=0x3c;
TR0=1;
while(1)
//狀態(tài)1:東西綠燈5秒,南北紅燈10秒
{
Time_EW=EW; //數(shù)碼管賦初值
Time_SN=SN;
while(Time_SN>=6)
{
SN_yellow=0; //南北黃燈滅
SN_red=1; //南北紅燈亮
SN_green=0; //南北綠燈滅
EW_yellow=0; //東西黃燈滅
EW_red=0; //東西紅燈滅
EW_green=1; //東西綠燈亮
Display(); //數(shù)碼管顯示
}
//狀態(tài)2:東西黃燈5秒,南北紅燈5秒
P1=0x00; //清除燈的顯示
if(Time_SN==5)
Time_EW=5;
while(Time_SN>=1)
{
SN_yellow=0; //南北黃燈滅
SN_red=1; //南北紅燈亮
SN_green=0; //南北綠燈滅
EW_yellow=1; //東西黃燈亮
EW_red=0; //東西紅燈滅
EW_green=0; //東西綠燈滅
Display(); //數(shù)碼管顯示
}
//狀態(tài)3:東西紅燈10秒,南北綠燈5秒
Time_EW=EW1; //數(shù)碼管賦初值
Time_SN=SN1;
while(Time_EW>=6)
{
SN_yellow=0; //南北黃燈滅
SN_red=0; //南北紅燈滅
SN_green=1; //南北綠燈亮
EW_yellow=0; //東西黃燈滅
EW_red=1; //東西紅燈亮
EW_green=0; //東西綠燈滅
Display(); //數(shù)碼管顯示
}
//狀態(tài)4:東西紅燈5秒,南北黃燈5秒
P1=0x00; //清除燈的顯示
if(Time_EW==5)
Time_SN=5;
while(Time_EW>=1)
{
SN_yellow=1; //南北黃燈亮
SN_red=0; //南北紅燈滅
SN_green=0; //南北綠燈滅
EW_yellow=0; //東西黃燈滅
EW_red=1; //東西紅燈亮
EW_green=0; //東西綠燈滅
Display(); //數(shù)碼管顯示
}
}
}
void timer0() interrupt 1
{
uchar count;
TL0=0xb0;
TH0=0x3c;
count++;
if(count==20)
{
Time_EW--;
Time_SN--;
count=0;
}
}
復(fù)制代碼
作者:
chxelc
時(shí)間:
2023-7-1 09:17
有原理圖嗎?個(gè)人思路:優(yōu)先保證數(shù)碼管顯示掃描時(shí)間間隔滿足不閃爍的要求。可以在數(shù)碼管顯示函數(shù)里面加入紅綠燈和黃燈的判定,利用數(shù)碼管掃描的間隔時(shí)間處理判定邏輯。
歡迎光臨 (http://m.raoushi.com/bbs/)
Powered by Discuz! X3.1