<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 個字
      [ 查看全部 ] 網友評論
      關于我們 - 聯系我們 - 廣告服務 - 友情鏈接 - 網站地圖 - 版權聲明 - 在線幫助 - 文章列表
      返回頂部
      刷新頁面
      下到頁底
      晶體管查詢
      主站蜘蛛池模板: 亚洲国产综合无码一区二区二三区 | 狠狠色婷婷久久综合频道日韩| 天天影视色香欲性综合网网站| 奇米综合四色77777久久| 91精品国产综合久久四虎久久无码一级 | 久久一本色系列综合色| 久久天堂AV综合合色蜜桃网| 无码国内精品久久综合88| 亚洲综合亚洲综合网成人| 亚洲欧洲日产国产综合网| 亚洲 自拍 另类小说综合图区| 久久亚洲综合色一区二区三区| 成人综合久久精品色婷婷| 久久婷婷色综合一区二区 | 国产激情电影综合在线看 | 在线综合亚洲中文精品| 狠狠色噜噜狠狠狠狠狠色综合久久| 亚洲伊人色一综合网| 婷婷综合久久中文字幕蜜桃三电影| 亚洲精品第一国产综合亚AV| 麻豆精品久久精品色综合| 人人婷婷色综合五月第四人色阁| 天天av天天翘天天综合网| 熟女少妇色综合图区| 久久国产综合精品五月天| 五月综合色婷婷在线观看| 狠狠色综合7777久夜色撩人| 麻豆久久婷婷综合五月国产| 久久婷婷五月综合色高清| 亚洲国产成+人+综合| 麻豆精品久久精品色综合| 久久婷婷五月综合色国产香蕉| 亚洲综合无码精品一区二区三区 | 国产精品 综合 第五页| 一97日本道伊人久久综合影院| 色综合久久中文色婷婷| 亚洲综合激情另类小说区| 亚洲综合激情六月婷婷在线观看| 99久久亚洲综合精品成人网 | 伊人色综合久久天天网| 一本一本久久A久久综合精品|