色婷婷AⅤ一区二区三区|亚洲精品第一国产综合亚AV|久久精品官方网视频|日本28视频香蕉

          新聞中心

          EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > 基于單片機的電子時鐘設計

          基于單片機的電子時鐘設計

          作者: 時間:2016-11-23 來源:網(wǎng)絡 收藏


          上圖是Proteus仿真圖,其中反相器用74lHC14,排阻用10K的,晶振用12MHZ的,電阻R1-R8用200歐的即可。但在實際制作時數(shù)碼管可以用兩個四位一體共陽極的,這樣連接電路會更加方便。可以用三極管代替反相器,這樣可以節(jié)約成本,但代替后無法用Proteus仿真出來,下圖為代替后的圖片,三極管用常用的9012或者9015即可,經(jīng)本人實際驗證效果非常好。

          本文引用地址:http://cafeforensic.com/article/201611/320567.htm



          下圖為原理圖:




          下圖為實物圖



          以下為源程序

          #include
          #define uint unsigned int
          #define uchar unsigned char
          uchar code table[]={ //不帶小數(shù)點的數(shù)碼管編碼
          0xc0,0xf9,0xa4,0xb0,
          0x99,0x92,0x82,0xf8,
          0x80,0x90};
          uchar code table1[]={ //帶小數(shù)點的數(shù)碼管編碼
          0x40,0x79,0x24,0x30,
          0x19,0x12,0x02,0x78,
          0x00,0x10};

          uchar shi=12,second,minute;
          uint num,num1,num2,num3;
          sbit k1=P1^4;
          sbit k2=P1^5;
          void display();
          void keyscan();
          void delay(uint z)
          {
          uint x,y;
          for(x=z;x>0;x--)
          for(y=110;y>0;y--);
          }

          void init()
          {
          TMOD=0x01;

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

          void main()
          {
          init();
          while(1)
          {
          keyscan();
          display();

          }
          }

          void timer0() interrupt 1
          {
          TH0=(65536-50000)/256;
          TL0=(65536-50000)%6;
          num++;
          if(num==20)
          {
          num=0;
          second++;
          if(second==60)
          {
          second=0;
          minute++;
          }
          if(minute>=60)
          {
          minute=0;
          shi++;
          }
          if(shi>=24)
          shi=0;

          }
          }

          void display()
          {
          P2=0xdf;
          P0=table[second];
          delay(2);
          P2=0xff;

          P2=0xef;
          P0=table[second/10];
          delay(2);
          P2=0xff;

          P2=0xf7;
          P0=table1[minute];
          delay(2);
          P2=0xff;

          P2=0xfb;
          P0=table[minute/10];
          delay(2);
          P2=0xff;

          P2=0xfd;
          P0=table1[shi];
          delay(2);
          P2=0xff;

          P2=0xfe;
          P0=table[shi/10];
          delay(2);
          P2=0xff;
          }

          void keyscan()
          {
          if(k1==0)
          {
          delay(10);
          if(k1==0)
          {
          shi++;
          while(!k1);
          }
          }
          if(k2==0)
          {
          delay(10);
          if(k2==0)
          {
          minute++;
          while(!k2);
          }

          }

          }



          關鍵詞: 單片機電子時

          評論


          技術專區(qū)

          關閉