標(biāo)題: 兩位數(shù)碼管顯示器控制交通燈,c語(yǔ)言 [打印本頁(yè)]

作者: WANGHAO.521    時(shí)間: 2016-12-2 10:14
標(biāo)題: 兩位數(shù)碼管顯示器控制交通燈,c語(yǔ)言
#include<reg52.h>
#define uchar unsigned char
bit flag;
sbit red1_1=P1^0;   //南北紅燈D1
sbit yel1_1=P1^1; //南北黃燈D2
sbit gre1_1=P1^2; //南北綠燈D3
sbit red1_2=P1^3; //南北紅燈D4
sbit yel1_2=P1^4; //南北黃燈D5
sbit gre1_2=P1^5; //南北綠燈D6

sbit red2_1=P1^6; //東西紅燈D7
sbit yel2_1=P1^7; //東西黃燈D8
sbit gre2_1=P0^0; //東西綠燈D9
sbit red2_2=P0^1; //東西紅燈D10
sbit yel2_2=P0^2; //東西黃燈D11
sbit gre2_2=P0^3; //東西綠燈D12

uchar code tab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x83,0xf8,0x80,0x98};
uchar n,n1,aa=0,shi,ge,shi1,ge1;
void init();
void xianshi1(uchar shi,uchar ge);
void xianshi2(uchar shi1,uchar ge1);
void delay(uchar z)
{
  uchar x,y;
  for(x=z;x>0;x--)
     for(y=110;y>0;y--);
}
main()
{
   n=30;
     shi=n/10;
  ge=n;
     n1=30;
     shi1=n1/10;
  ge1=n1;

    init();
   while(1)
      {
      if(flag!=1)
       xianshi1(shi,ge);
    else
            xianshi2(shi1,ge1);

   }
}

void xianshi1(uchar shi,uchar ge)
{
     P3=0x02;
     P2=tab[ge];
     delay(200);
     P3=0x01;
     P2=tab[shi];
     delay(200);
}


void xianshi2(uchar shi1,uchar ge1)
{
  P3=0x08;
  P2=tab[ge1];
     delay(200);
     P3=0x04;
     P2=tab[shi1];
     delay(200);

}

void init()
{
  TMOD=0x01;
  TH0=(65536-50000)/256;
  TL0=(65536-50000)%6;
  EA=1;
  ET0=1;
  TR0=1;
}

void timer0() interrupt 1
{
  TH0=(65536-50000)/256;
  TL0=(65536-50000)%6;
  aa++;
     if(flag!=1)
       {
    if(aa==20)
       {
          aa=0;
                      red1_1=0;red1_2=0;
                      gre2_1=0;gre2_2=0; //啟動(dòng)南北紅燈1和東西綠燈2   

         n--;
                   shi=n/10;
          ge=n;

                if(n<=3)
                    {
       red1_1=0;red1_2=0;
       gre2_1=1;gre2_2=1;
                      yel2_1=0;yel2_2=0;//啟動(dòng)南北紅燈1和東西黃燈2

                     if(n<=0)
            {
                        n=30;         
                           red1_1=1;red1_2=1;
         gre1_1=0;gre1_2=0;
         yel2_1=1;yel2_2=1;
         red2_1=0;red2_2=0;//啟動(dòng)南北綠燈1和東西紅燈2

                        TR0=0;
                           TH0=(65536-50000)/256;
                        TL0=(65536-50000)%6;
            TR0=1;
                           aa++;
            flag=1;

                 }
                     }
                 }
       }
     else
     {
        if(flag==1)
          {  
            //   TH0=(65536-50000)/256;
         //   TL0=(65536-50000)%6;
         //   TR0=1;
            //   aa++;
            if(aa==20)
       {
             aa=0;                     
                   n1--;
                   shi1=n1/10;
                    ge1=n1;
          if(n1<=3)
           {
    gre1_1=1;gre1_2=1;
              yel1_1=0;yel1_2=0;
             red2_1=0;red2_2=0;//啟動(dòng)南北黃燈1和東西紅燈2

                 if(n1<=0)
         {
            n1=30;
                           yel1_1=1;yel1_2=1;
                           red2_1=1;red2_2=1;

                 TR0=0;
                TH0=(65536-50000)/256;
                TL0=(65536-50000)%6;
                TR0=1;
                  flag=0;
                }
                    }
                 }
          }
      }
}



作者: 臨兵酎者    時(shí)間: 2017-11-27 15:24
有原理圖嗎?




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