標題:
51單片機帶計數器的紅綠燈程序
[打印本頁]
作者:
五十陌生人
時間:
2021-6-22 18:14
標題:
51單片機帶計數器的紅綠燈程序
#include <reg51.h>
#include <INTRINS.H>
unsigned char count; //中斷次數計數
unsigned char s; //狀態(tài)變量
unsigned char sn,ew; //倒計時變量
unsigned char code seg[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
//0~9十個數字和共陽型段碼
sbit r1=P1^0; //兩個方向的紅黃綠燈
sbit y1=P1^1;
sbit g1=P1^2;
sbit r2=P1^5;
sbit y2=P1^4;
sbit g2=P1^3;
void delay(unsigned int j)
{
while(j--);
}
display()
{
unsigned char i,wk=0x01;//wk變量作位控,初始選通右邊第1位
unsigned char buf[4]; //聲明數碼管顯示字形緩沖數組
buf[0]=seg[sn%10]; //南北方向計時變量
buf[1]=seg[sn/10%10];
buf[2]=seg[ew%10];
buf[3]=seg[ew/10%10];
for (i=0;i<4;i++)
{
P3=wk; //輸出位控
P0=buf[i]; //依次輸出段碼
delay(50); //延時
wk=_crol_(wk,1); //位控左移一位
P0=0xff; //熄滅所有數碼管(消隱)
}
}
int main()
{
TMOD=0x01;
TH0=0x3c;
TL0=0xb0;
EA=1;
ET0=1;
TR0=1;
sn=40;
ew=45;
while(1)
{
display();
switch(s)
{
case 0: //狀態(tài)一
r1=1;y1=1;g1=0;
r2=0;y2=1;g2=1;
if(sn==255) //字符型數據0減1等255
{
sn=4;
s=1;
}
break;
case 1: //狀態(tài)二
r1=1;y1=0;g1=1;
r2=0;y2=1;g2=1;
if(sn==255)
{
sn=35;
ew=30;
s=2;
}
break;
case 2: //狀態(tài)三
r1=0;y1=1;g1=1;
r2=1;y2=1;g2=0;
if(ew==255)
{
ew=4;
s=3;
}
break;
case 3: //狀態(tài)四
r1=0;y1=1;g1=1;
r2=1;y2=0;g2=1;
if(ew==255)
{
sn=40;
ew=45;
s=0;
}
break;
}
}
……………………
…………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼
6-03帶數顯交通燈.zip
2021-6-22 18:14 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
50.08 KB, 下載次數: 5, 下載積分: 黑幣 -5
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1