久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

標題: 單片機課設源碼 時鐘+鬧鐘 數碼管顯示 [打印本頁]

作者: 小兔仔子    時間: 2017-5-7 09:19
標題: 單片機課設源碼 時鐘+鬧鐘 數碼管顯示
時鐘(帶鬧鐘功能)單片機課設


單片機源程序:
  1. #include<reg52.h>
  2. #define uint unsigned int
  3. #define uchar unsigned char

  4. sbit key1=P3^0;  //   時鐘/鬧鐘/關鬧鐘
  5. sbit key2=P3^1;  //   分鐘加
  6. sbit key3=P3^2;         //   時鐘加
  7. sbit key4=P3^3;         //  
  8. sbit beep=P1^6; //  鬧鈴
  9. sbit led1=P1^7;//秒用燈的閃爍表示
  10. sbit smg_q=P3^7;
  11. sbit smg_b=P3^6;
  12. sbit smg_s=P3^5;
  13. sbit smg_g=P3^4;

  14. uchar tab[10]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};    // 0-9
  15. uchar tab_dp[10]={0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10}; // 0.-9.(帶小數點)


  16. uint t,flag,flag1;
  17. uint bbh,bbm,bbs;
  18. uint sec,min,hour; // 定義 秒,分,時

  19. void delay( unsigned int t);
  20. void inter_init();
  21. void time24();
  22. void clock();
  23. void alarm_clock();
  24. void display();
  25. void display_bb();


  26. //---------------------主函數--------------------------------
  27. void main()
  28. {
  29.   inter_init();
  30. bbh=1;
  31. bbm=2;     
  32.    hour=23;         
  33.    min=59;
  34.    sec=50;
  35.    
  36. while(1)
  37.   {
  38.       time24();  
  39.            if(key1==0)
  40.       {
  41.              flag1=~flag1;
  42.          flag=~flag;
  43.              while(!key1);
  44.       }
  45.       if(flag==0)
  46.       {
  47.           clock();
  48.           display();    /*調用顯示函數來顯示*/  
  49.       }
  50.       else
  51.       {
  52.           alarm_clock();
  53.               display_bb();
  54.       }
  55.    
  56.            if(hour==bbh && min==bbm && flag1==0)
  57.          {  
  58.              beep=~beep;
  59.                  delay(1);
  60.      }           
  61.    
  62.   }
  63.    
  64.   
  65. }

  66. /*---------------------延時----------------------- */
  67. void delay( unsigned int t)         //  延時函數
  68. {
  69.     unsigned int i;
  70.     while(t--)
  71.                 for(i=0;i<125;i++);
  72. }

  73. /*---------------------中斷初始化-------------------------*/
  74. void inter_init()   
  75.   { sec=min=hour=0; // 將0賦給時分秒

  76.          TMOD=0x01; //  方式1
  77.          TH0=0x3c;  //  65536-50000=15536=0x3cb0(50ms)  
  78.          TL0=0xb0;
  79.          EA=1;      //  開總中斷
  80.          TR0=1;            //  定時/計數器0開啟
  81.          ET0=1;            //  定時器/計數器0溢出中斷啟動  
  82.   }
  83. /*---------------------24小時制--------------------------*/
  84. void time24()      
  85.   {
  86.               if(TF0==1)   // 定時器/計數器溢出
  87.                  {
  88.                           TF0=0;  // 清中斷標志位
  89.                           t++;
  90.                           if(t==20)        // (50ms*20=1s)
  91.                             {
  92.                                    t=0;
  93.                                    led1=~led1;
  94.                                    sec++;      //  秒加1
  95.                                    if(sec==60) //  秒為60,則清零,分加1
  96.                                {
  97.                                        sec=0;
  98.                                        min++;
  99.                                    }
  100.                                if(min==60) // 分為60,則清零,時加1
  101.                                {
  102.                                        min=0;
  103.                                        hour++;
  104.                                    }
  105.                                if(hour==24)// 時為24,則清零
  106.                                    {
  107.                                        hour=0;
  108.                                    }
  109.                       }
  110.          }

  111.   }

  112. /*-----------按鍵調整子函數(時鐘和鬧鐘)-------------------------------------*/
  113. void clock()   //時鐘調整
  114. {
  115.   
  116.       if(key2==0)
  117.         {
  118.            delay(10);
  119.            if(key2==0)
  120.             {
  121.                min++;
  122.                while(!key2);
  123.                if(min==60)
  124.                  {
  125.                    min=0;
  126.                   }
  127.              }
  128.          }
  129.        if(key3==0)
  130.        {
  131.           delay(10);
  132.           if(key3==0)
  133.           {
  134.               hour++;
  135.            while(!key3);
  136.            if(hour==24)
  137.             {
  138.                hour=0;
  139.             }
  140.           }
  141.        }

  142. }

  143. void alarm_clock() /*鬧鐘調整*/
  144. {
  145.   if(key2==0)
  146.         {
  147.            delay(10);
  148.            if(key2==0)
  149.             {
  150.                bbm++;
  151.                while(!key2);
  152.                if(bbm==60)
  153.                  {
  154.                    bbm=0;
  155.                   }
  156.              }
  157.          }
  158.        if(key3==0)
  159.        {
  160.           delay(10);
  161.           if(key3==0)
  162.           {
  163.               bbh++;
  164.            while(!key3);
  165.            if(bbh==24)
  166.             {
  167.                bbh=0;
  168.             }
  169.            }
  170.        }

  171. }  

  172.    
  173. /*---------------------數碼管顯示子函數(時鐘和鬧鐘)-------------------------------------*/
  174. void display()              //  顯示時間函數
  175. {
  176.         smg_s=0;                           //時低位
  177.    P2=tab_dp[hour%10];
  178.    P2=0xff;
  179.    smg_s=1;   

  180.    smg_g=0;                                   //時高位
  181.    P2=tab[hour/10];
  182.    P2=0xff;
  183.    smg_g=1;
  184.    
  185.    smg_q=0;                                //分低位
  186.    P2=tab[min%10];   
  187.    P2=0xff;
  188.    smg_q=1;

  189.    smg_b=0;                                //分高位
  190.    P2=tab[min/10];  
  191.    P2=0xff;
  192.    smg_b=1;
  193.                
  194. }
  195. void display_bb()                //顯示鬧鐘函數
  196. {
  197.    smg_s=0;                           //時低位
  198.    P2=tab_dp[bbh%10];
  199.    P2=0xff;
  200.    smg_s=1;   

  201.    smg_g=0;                                   //時高位
  202.    P2=tab[bbh/10];
  203.    P2=0xff;
  204.    smg_g=1;
  205.    
  206.    smg_q=0;                                //分低位
  207.    P2=tab[bbm%10];   
  208.    P2=0xff;
  209.    smg_q=1;

  210.    smg_b=0;                                //分高位
  211.    P2=tab[bbm/10];  
  212.    P2=0xff;
  213.    smg_b=1;
  214.    }
  215.   
復制代碼


全部代碼下載:
時鐘 鬧鐘.zip (24.47 KB, 下載次數: 33)



作者: ppp123    時間: 2019-12-23 16:54
圖呢?   我的哥???




歡迎光臨 (http://m.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 欧美一级黄色片 | 亚洲一区视频在线 | 成人激情视频在线观看 | 91禁在线观看 | 黄色大片在线 | 日本伊人网 | 青青草国产在线视频 | 五月婷婷综合激情 | 五月婷婷av | 亚洲第一毛片 | 久久小视频 | 五月婷婷丁香六月 | 精品国产99久久久久久宅男i | 天天操天天插 | 久久久久久久久国产精品 | 你懂的在线网站 | 欧美一级黄色大片 | 欧洲精品一区 | 日本不卡一区二区三区 | 日本福利视频 | 91国产丝袜在线播放 | 国产逼逼 | 国产精品美女久久久久av爽 | 国产香蕉av | 国产三级在线 | 亚洲天堂久久久 | 国产精品99精品久久免费 | 一区在线视频 | 日本韩国欧美中文字幕 | 欧美精产国品一二三区 | 日本三级视频在线观看 | 午夜一区二区三区 | 性色av一区二区三区 | 日韩精品在线免费观看 | 黄色日皮视频 | 日韩午夜精品 | 黄色片视频网站 | www.五月婷婷| 国产一区二区三区在线看 | 国产成人综合网 | 欧美www.|