欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

標(biāo)題: 數(shù)顯交通燈 [打印本頁]

作者: 18637512520    時間: 2018-4-15 16:43
標(biāo)題: 數(shù)顯交通燈
#include <reg51.h>
#include <INTRINS.H>
unsigned char count;                //中斷次數(shù)計(jì)數(shù)
unsigned char s;                        //狀態(tài)變量
unsigned char sn,ew;                //倒計(jì)時變量
unsigned char code seg[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
                                                        //0~9十個數(shù)字和共陽型段碼
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];        //聲明數(shù)碼管顯示字形緩沖數(shù)組
        buf[0]=seg[sn%10];                //南北方向計(jì)時變量
        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;                        //熄滅所有數(shù)碼管(消隱)
        }
}
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)                //字符型數(shù)據(jù)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;
                }
        }
}
void timer0() interrupt 1
{
        TH0=0x3c;
        TL0=0xb0;
        count++;
        if(count==20)                                //1秒定時
        {
                 count=0;
                sn--;
                ew--;
        }
}






歡迎光臨 (http://m.raoushi.com/bbs/) Powered by Discuz! X3.1