<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 個字
      [ 查看全部 ] 網友評論
      關于我們 - 聯系我們 - 廣告服務 - 友情鏈接 - 網站地圖 - 版權聲明 - 在線幫助 - 文章列表
      返回頂部
      刷新頁面
      下到頁底
      晶體管查詢
      主站蜘蛛池模板: 色综合久久中文色婷婷| 亚洲国产成人久久综合区| 加勒比色综合久久久久久久久| 色综合网站国产麻豆| 欧美激情综合亚洲一二区| 青青青国产色视频在线观看国产亚洲欧洲国产综合 | 97se亚洲国产综合自在线| 色综合婷婷在线观看66| 久久精品国产亚洲综合色 | 激情五月激情综合网| 一本色综合网久久| 亚洲综合无码精品一区二区三区| 亚洲av一综合av一区| 色综合伊人色综合网站| 伊人色综合视频一区二区三区| 亚洲综合精品网站| 色狠狠久久综合网| 色噜噜狠狠色综合网| 国产综合精品女在线观看| 五月丁香六月综合av| 伊人久久久大香线蕉综合直播| 丁香六月激情综合| 亚州AV综合色区无码一区| 久久狠狠爱亚洲综合影院| 久久久久噜噜噜亚洲熟女综合 | 日韩亚洲国产综合高清| 狠狠色丁香婷婷综合精品视频| 亚洲第一页综合图片自拍| 色婷婷久久综合中文久久一本` | 一本大道加勒比久久综合| 香蕉久久综合精品首页| 一本色道久久综合亚洲精品| 狠狠综合久久综合中文88| 色偷偷91久久综合噜噜噜噜| 色爱区综合激情五月综合色| 亚洲 自拍 另类小说综合图区| 中文自拍日本综合| 亚洲国产成人综合| 婷婷六月久久综合丁香76| 国产综合久久久久久| 狠狠久久综合伊人不卡|