<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 會員中心 會員注冊
      搜索: 您現在的位置: 電子開發網 >> 電子開發 >> 單片機 >> 正文

      STC12C2052AD單片機控制的數碼管時鐘程序及電路圖

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


           STC12C2052AD單片機控制的數碼管時鐘,數碼管是共陽4位時鐘數碼管,由于使用單片機真驅,電路比較簡單,且使用的材料和工具也很簡單,用數碼管顯示,單片機控制,兩個按鍵調時,蜂鳴器整點報時。所需要的元件如下:

             材料有以下這些:
              STC12C2052AD單片機一片
              黃色共陽4位時鐘數碼管一塊
              6mm×6mm按鍵兩個
              杜邦線插針2p兩個
              無源蜂鳴器一個
              20腳+14腳芯片座各一個
              洞洞板一塊(截取一小部分)
              100歐電阻4個

      單片機時鐘實物圖 

      STC12C2052AD單片機控制的數碼管時鐘程序及電路圖 

      單片機時鐘零件實物圖 

      程序如下:

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

      #include <STC12C2052AD.h>  //聲明頭文件

      sbit key1=P3^4;  //按鍵接口定義

      sbit key2=P3^5;  //按鍵接口定義

      sbit speaker=P3^7;  //蜂鳴器接口定義

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

      unsigned char code LED[10]={0x20,0xA7,0x90,0x82,0x07,0x42,0x40,0xA6,0x00,0x02};//數碼管段位碼定義

      unsigned int time; //全局秒基準定義

      /*-------------------------------------延時函數-------------------------------------*/

      void delayms (unsigned int a){

      unsigned int i;

      while( --a != 0){

      for(i = 0; i < 600; i++);

      }

      }

      /*----------------------------------蜂鳴器驅動函數----------------------------------*/

      void beep (void)

      {  

      unsigned char i=30;

      while(i--)

      {

      speaker=~speaker;

      delayms(3);

          }

      }

      /*----------------------------------數碼管驅動函數----------------------------------*/

      void display (unsigned char hour,min)

      {

      unsigned char H1,H2,M1,M2;

      P3=0xf8; //數碼管位選

      P1 = LED[H1];     //數碼管段選

      delayms (2); //掃描延時

      P3=0xf4; //數碼管位選

      P1 = LED[H2];     //數碼管段選

      delayms (2); //掃描延時

      P3=0xf2; //數碼管位選

      P1 = LED[M1];     //數碼管段選

      delayms (2); //掃描延時

      P3=0xf1; //數碼管位選

      P1 = LED[M2];     //數碼管段選

      delayms (2); //掃描延時

      /*--------------------------------------分定義--------------------------------------*/

      M1=min/10;//取分十位

      min=min%10;//取余 

      M2=min;//取分個位

      /*--------------------------------------時定義--------------------------------------*/

      H1=hour/10;//取時十位

      hour=hour%10;//取余 

      H2=hour;//取時個位

      }

      /*-----------------------------------按鍵去抖函數-----------------------------------*/

      void qudou (unsigned char hour,min)

      {

      unsigned char i;

      for(i=0;i<25;i++){//循環顯示,等于鍵盤去抖的功能

      display (hour,min);

      }

      }

      /*--------------------------------------主函數--------------------------------------*/

      void main(void)

      {

      ////定時器初始設置

      TMOD=0x01;//定時器工作方式1

      TH0=0x3C;//定時器初始產生50ms時基信號

      TL0=0xB0;//定時器初始產生50ms時基信號

      ET0=1;//開定時器中斷

      EA=1;//開總中斷

      TR0=1;//啟動定時器

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

      while(1)

      {

      unsigned char hour,min;//定義時分


      display (hour,min);//調用顯示函數


      if (time>59)//60秒向分進1

      {

      time=0;

      min++;

         }

      if (min>59)//60分向時進1

      {

      min=0;

      hour++;

      beep ();

          }

      if (hour>23)//24時時分秒清零

      {

      hour=0;

      min=0;

      time=0;

      }

      /*-----------------------------------按鍵判斷程序-----------------------------------*/

      if(key1==0)

      qudou (hour,min);

      if (key1==0) {hour++;}


      if(key2==0)

      qudou (hour,min);

      if (key2==0) {min++;}

      }

      }

      /*-----------------------------------中斷服務程序-----------------------------------*/

      void Timer0_Routine(void) interrupt 1

      {

      unsigned char a;

      TH0=0x3C;//定時器初始產生50ms時基信號

      TL0=0xB0;//定時器初始產生50ms時基信號

          a++;//定時器循環計數20次為一秒

      if (a==20){//定時器循環計數20次為一秒

      a=0;//次數清零,從新循環計數

      time++;//秒加一

      }

      }

       

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

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

      還可以輸入 200 個字
      [ 查看全部 ] 網友評論
      關于我們 - 聯系我們 - 廣告服務 - 友情鏈接 - 網站地圖 - 版權聲明 - 在線幫助 - 文章列表
      返回頂部
      刷新頁面
      下到頁底
      晶體管查詢
      主站蜘蛛池模板: 久久亚洲精品人成综合网| 99久久综合精品免费| 色综合久久久无码中文字幕波多| AV色综合久久天堂AV色综合在| 亚洲国产精品成人综合色在线| 狠狠爱天天综合色欲网| 久久综合亚洲色HEZYO国产| 亚洲sss综合天堂久久久| 天天做天天爱天天爽综合网| 亚洲sss综合天堂久久久| 伊人久久综合精品无码AV专区 | 国产精品综合久久第一页| 丁香五月亚洲综合深深爱| 色综合小说久久综合图片| 久久久综合中文字幕久久| 亚洲综合久久夜AV | 久久综合九色综合91| 天天做天天爱天天爽综合网| 久久综合久久综合亚洲| 亚洲综合熟女久久久30p| 色婷婷综合缴情综免费观看| 色狠狠久久综合网| 亚洲综合图片小说区热久久| 久久婷婷丁香五月综合五| 久久香蕉综合色一综合色88| 伊人久久综合精品无码AV专区| 国产亚洲欧洲Aⅴ综合一区| 成人亚洲综合天堂| 久久99亚洲综合精品首页| 久久本道久久综合伊人| 伊人激情久久综合中文字幕| 亚洲成色在线综合网站| 久久天堂AV综合合色蜜桃网| 2020国产精品亚洲综合网| 色欲色香天天天综合网WWW| 色综合久久中文字幕网| 精品国产国产综合精品| 一本久久知道综合久久| 色综合久久天天影视网| 色狠狠久久综合网| 国产天堂一区二区综合|