<li id="8g3ty"><tbody id="8g3ty"><th id="8g3ty"></th></tbody></li>
    <label id="8g3ty"><samp id="8g3ty"></samp></label>
  • <span id="8g3ty"></span>

    1. <center id="8g3ty"><optgroup id="8g3ty"></optgroup></center>
    2. <bdo id="8g3ty"><meter id="8g3ty"><bdo id="8g3ty"></bdo></meter></bdo><center id="8g3ty"><optgroup id="8g3ty"></optgroup></center>
      <label id="8g3ty"><samp id="8g3ty"></samp></label>

    3. 電子開發網

      電子開發網電子設計 | 電子開發網Rss 2.0 會員中心 會員注冊
      搜索: 您現在的位置: 電子開發網 >> 電子開發 >> 單片機 >> 正文

      51單片機4位數碼管電子鐘源程序

      作者:佚名    文章來源:本站原創    點擊數:    更新時間:2018/3/8

      /***************************************************************************

      標題:     定時器中斷 24小時時鐘程序

      來源網站:http://www.zhimadaxue.com/index.html

      效果:     數碼管顯示24小時制時鐘(具有調時功能)

      說明:     使用12M晶振        ,key1=P3^7; key2=P3^6; key3=P3^5;key4=P3^4;

                        數碼管位選P1.0~P1.3   ,段選P0

      ******************************************************************************/

       

      #include

       

      #define uchar unsigned char;

      #define uint unsigned int;

                                                   

       

      uchar position;          

      uchar tt;            

      uchar second;      

      uchar minute;

      uchar hour;      

       

       

      uchar code table[]=

                                  {0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};//0--9

       

                       

      sbit smg_q = P1^0;  //數碼管千位引腳

      sbit smg_b = P1^1;

      sbit smg_s = P1^2;

      sbit smg_g = P1^3;

       

      sbit key1=P3^7;                 //按鍵定義

      sbit key2=P3^6;

      sbit key3=P3^5;

      sbit key4=P3^4;

       

       

      void keyscan();                   //函數聲明

      void display(unsigned char hour,unsignedchar minute);

      void delay(unsigned int timer);

      void init();                                             


      /***********************************************************

                                           主函數

      ***********************************************************/

      void main()

      {

               init();                                   

               while(1)

               {

                         if(tt==20)

                         {                         

                                  tt=0;

                                  second++;

                                  if(second==60)

                                  {

                                           second=0;

                                           minute++;

                                           if(minute==60)

                                           {      

                                                     minute=0;

                                                     hour++;

                                                     if(hour==24)

                                                              hour=0;

                                           }

                                  }

                         }

       

                         keyscan();

                         display(hour,minute);     

                         delay(1);

               }

      }

      /***********************************************************

                                           調時

      ***********************************************************/

      void keyscan()

      {

               if(key1==0)        //小時加1

               {

                         TR0=0;

                         hour++;

                                  if(hour==24)

                                           hour=0;

                         delay(200)        ;

                         TR0=1;

               }

               if(key2==0)                 // 小時減

               {

                         TR0=0;

                         hour--;

                                  if(hour<0)

                                           hour=23;

                         delay(200)        ;

                         TR0=1;

               }

       

               if(key3==0)                   // 分鐘加

               {

                         TR0=0;

                         minute++;

                                  if(minute==60)

                                           minute=0;

                         delay(200)        ;

                         TR0=1;

               }

       

                         if(key4==0)                    //        分鐘減

               {

                         TR0=0;

                         minute--;

                                  if(minute<0)

                                           minute=59;

                         delay(200)        ;

                         TR0=1;

               }

      }

       

      /***********************************************************

                                                      初始化

      ***********************************************************/

      void init()

      {

               tt=0;

               position=0;              

               second=0;

               minute=0;       

               hour=0;  

               smg_q=1;

               smg_b=1;

               smg_s=1;

               smg_g=1;

               key1=1;

               key2=1;

       

               TMOD=0X01; 

               TH0=(65536-50000)/256;       

               TL0=(65536-50000)%256;

               EA=1;               

               ET0=1;             

               TR0=1;             

      }

       

      /***********************************************************

                                                        定時器TO中斷

      ***********************************************************/

      void t0() interrupt 1

      {

               TH0=(65536-50000)/256;       

               TL0=(65536-50000)%256;

               tt++;                                             

      }

       

      /***********************************************************

                                                顯示

      ***********************************************************/

      void display(unsigned char hour,unsignedchar minute)

      {

               P0=0XFF;                            

               switch(position)

               {

               case0:             

                         smg_g=1;

                         smg_q=0;

                         P0=table[hour/10];

                         break;

       

               case1:

                         smg_q=1;       

                         smg_b=0;       

                         P0=table[hour%10];

       

                         if(tt>=10)

                                  P0&=0x7f;                  //小數點以半秒的時間閃爍

                         break;

       

               case2:   

                         smg_b=1;                 

                         smg_s=0;                 

                         P0=table[minute/10];

                         break;

               case3:                      

                         smg_s=1;

                         smg_g=0;

                         P0=table[minute%10];

                         break;

               }

               position++;              

               if(position>3)

                         position=0;     

      }

       

      /***********************************************************

                                                       延時

      ***********************************************************/

      void delay(unsigned int time)

      {               

               unsignedint x,y;

               for(x=time;x>0;x--)

                         for(y=110;y>0;y--);

      }
      關鍵字:51單片機  4位數碼管  電子鐘

      Tags:51單片機,單片機,4位數碼管電子時鐘,c程序  
      責任編輯:admin
      請文明參與討論,禁止漫罵攻擊,不要惡意評論、違禁詞語。 昵稱:
      1分 2分 3分 4分 5分

      還可以輸入 200 個字
      [ 查看全部 ] 網友評論
      關于我們 - 聯系我們 - 廣告服務 - 友情鏈接 - 網站地圖 - 版權聲明 - 在線幫助 - 文章列表
      返回頂部
      刷新頁面
      下到頁底
      晶體管查詢
      主站蜘蛛池模板: 国产精品亚洲综合| 在线综合亚洲中文精品| 本道久久综合无码中文字幕| 一本色道久久88亚洲精品综合 | 久久综合图区亚洲综合图区| 亚洲亚洲人成综合网络 | 亚洲国产国产综合一区首页| 青青草原综合久久| 狠狠色综合久久婷婷色天使| 日韩欧国产精品一区综合无码| 久久综合给合久久国产免费 | 99久久国产综合精品麻豆| 亚洲国产亚洲综合在线尤物| 久久国产综合精品五月天| 久艾草国产成人综合在线视频| 亚洲国产综合精品一区在线播放| 久久久久青草线蕉综合超碰| 久久丝袜精品综合网站| 伊人不卡久久大香线蕉综合影院| 色婷婷99综合久久久精品 | 亚洲国产精品综合久久2007| 久久综合亚洲色HEZYO国产| 国产成人综合色视频精品| 色综合久久综精品| 天天久久影视色香综合网| 久久综合九色综合网站| 久久一日本道色综合久久m| 激情97综合亚洲色婷婷五| 国产综合在线观看| 婷婷五月综合色视频| 亚洲人成综合在线播放| 2020久久精品亚洲热综合一本| 亚洲伊人色一综合网| 色天使久久综合给合久久97色| 色五月五月丁香亚洲综合网| 色综合色国产热无码一| 色婷婷综合久久久久中文字幕 | 狠狠色丁香婷婷综合久久片 | 2020国产精品亚洲综合网| 伊人久久五月丁香综合中文亚洲| 亚洲狠狠婷婷综合久久蜜芽|