<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-03-08

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

      標題:     定時器中斷 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 個字
      [ 查看全部 ] 網友評論
      關于我們 - 聯系我們 - 廣告服務 - 友情鏈接 - 網站地圖 - 版權聲明 - 在線幫助 - 文章列表
      返回頂部
      刷新頁面
      下到頁底
      晶體管查詢
      主站蜘蛛池模板: 久久久久噜噜噜亚洲熟女综合 | 天天爽天天狠久久久综合麻豆| 亚洲综合精品网站| 激情综合色五月丁香六月亚洲| 亚洲国产天堂久久综合网站| 婷婷激情综合色五月久久| 久久久久久久综合日本| 国产成人综合网在线观看| 一本大道久久a久久综合| 精品综合久久久久久888蜜芽| 色综合91久久精品中文字幕| 一本色道久久99一综合| 色婷婷六月亚洲综合香蕉| 伊人一伊人色综合网| 一本综合久久国产二区| 亚洲国产精品综合一区在线| 中文字幕亚洲综合久久菠萝蜜| 亚洲伊人精品综合在合线| 亚洲色欲久久久综合网东京热| 国产亚洲综合精品一区二区三区| 99sescom色综合| 色综合天天综一个色天天综合网| 亚洲人成依人成综合网| 激情综合婷婷丁香五月| 六月丁香激情综合成人| 亚洲综合色视频在线观看| 丁香五月网久久综合| 亚洲heyzo专区无码综合| 成人综合久久精品色婷婷| 色综合久久无码中文字幕| 色婷婷综合久久久久中文| 久久亚洲伊人中字综合精品| 亚洲国产天堂久久综合网站 | 色狠狠成人综合色| 久久久久高潮综合影院| 69国产成人综合久久精品91| 老色鬼久久亚洲AV综合| 亚洲国产成人久久综合一区| 久久桃花综合桃花七七网| 狠狠色伊人久久精品综合网| 开心五月激情综合婷婷|