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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4543|回復: 1
打印 上一主題 下一主題
收起左側

單片機多功能鬧鐘仿真加源程序

[復制鏈接]
跳轉到指定樓層
樓主
1.時分秒的正常顯示
2.可單獨調整時鐘的分十秒
3.鬧鐘功能
4,鍵功能說明
second--正常顯示和鬧鐘狀態時調整秒位
minute--正常顯示和鬧鐘狀態時調整分位
hour--正常顯示和鬧鐘狀態時調整分位
alarm--開啟和關閉鬧鐘功能(變量alarm_is_ok,1為open,0為close)
stop-set-open-close

顯示該單片機多功能鬧鐘的仿真原理圖:



部分源碼預覽:
  1. #include  "Key.h"
  2. #include  "led.h"

  3. uchar timeSetBuff[8]={'0','0',LED_MODE_COUNT,'0','0',LED_MODE_COUNT,'0','0'};//時鐘數據緩沖區
  4. uchar alarmSetBuff[8]={'0','0',LED_MODE_ALARM,'0','0',LED_MODE_ALARM,'0','0'};//鬧鐘時間數據緩沖區
  5. uchar timeDisMod=0x24;                //00100100
  6. uchar secondTemp,minuteTemp,hourTemp;
  7. uchar secondAlarm,minuteAlarm,hourAlarm;
  8. uchar timer0Temp;
  9. uchar alarmKeyCount;                   //鬧鐘起停鍵計數
  10. bit alarm_is_ok;                       //鬧鐘起停狀態
  11. bit time_is_ok;                        //時間是否到
  12. bit interface_mod;                     // 顯示界面模式,0為主時間界面,1為設置界面

  13. /********************************************************************************************
  14. * 函數名稱:定時器0
  15. * 功    能:定時器0初始化
  16. * 入口參數:無
  17. * 出口參數:無
  18. *********************************************************************************************/          
  19. void initTimer0(void)                      //定時10ms
  20. {
  21.    TMOD |= 0x01;                        //GATE=0,TR=1運行;C/T=1,counter,0,timer;01十六進制  
  22.    TH0 = 0xdc;
  23.    TL0 = 0x00;
  24.    TR0 = 1;                                  //timer0 控制位,為1時啟動timer0
  25.    ET0 = 1;                             //timer0 中斷使能
  26. }

  27. /********************************************************************************************
  28. * 函數名稱:時鐘比較
  29. * 功    能:比較時鐘和鬧鐘的時間緩沖區,只比較時和分
  30. * 入口參數:無
  31. * 出口參數:無
  32. *********************************************************************************************/
  33. void timeCompare(void)            
  34. {
  35.   if((minuteTemp == minuteAlarm) && (hourTemp == hourAlarm))
  36.   {
  37.      time_is_ok = 1;
  38.          alarm_is_ok = 0;
  39.          interface_mod = 1;
  40.   }   
  41. }       

  42. /********************************************************************************************
  43. * 函數名稱:主函數
  44. * 功    能:調用并執行各個子函數
  45. * 入口參數:無
  46. * 出口參數:無
  47. *********************************************************************************************/
  48. void main()
  49. {
  50. uchar keyRead;
  51. init_led();
  52. init_key();
  53. initTimer0();
  54. timer0Temp = 0x00;
  55. secondTemp = 0x00;
  56. minuteTemp = 0x00;
  57. hourTemp = 0x00;
  58. secondAlarm = 0x00;
  59. minuteAlarm = 0x00;
  60. hourAlarm = 0x00;
  61. alarmKeyCount = 0x02;
  62. alarm_is_ok = 0;     //默認狀態停止
  63. time_is_ok = 0;      //默認時間未到
  64. interface_mod = 0;
  65. sei();
  66. while(1)
  67. {
  68.   
  69.    if(interface_mod == 1)
  70.      ledSweepDisplay(alarmSetBuff,timeDisMod);
  71.    else
  72.      ledSweepDisplay(timeSetBuff,timeDisMod);
  73.    if(alarm_is_ok == 1)
  74.      timeCompare();
  75.    
  76.    keyRead = get_key_value();
  77.    if(keyRead == KEY_ALARM)
  78.    {
  79.       if(alarm_is_ok == 1 || time_is_ok == 1)
  80.           {
  81.             alarm_is_ok = 0;
  82.                 time_is_ok = 0;
  83.                 interface_mod = 0;
  84.                 alarmKeyCount = 0x00;
  85.           }
  86.           else
  87.           {
  88.                 if(alarmKeyCount < 0x02)
  89.                 alarmKeyCount++;
  90.                 else
  91.                    alarmKeyCount = 0x00;
  92.                 if(alarmKeyCount == 0x01)
  93.                   interface_mod = 1;
  94.                 if(alarmKeyCount == 0x02)
  95.                  {
  96.                    alarm_is_ok = 1;
  97.                    interface_mod = 0;
  98.                  }          
  99.           }   
  100.     }
  101.    if(keyRead == KEY_SECOND)
  102.    { if(interface_mod == 1)
  103.      {
  104.            if(secondAlarm < 59)
  105.              secondAlarm++;
  106.            else
  107.              secondAlarm = 0x00;
  108.            alarmSetBuff[S_L] = secondAlarm % 10 + '0';
  109.            alarmSetBuff[S_H] = secondAlarm / 10 + '0';
  110.          }
  111.      else
  112.          {
  113.            if(secondTemp < 59)
  114.              secondTemp += 1;
  115.            else
  116.              secondTemp = 0x00;
  117.            timeSetBuff[S_L] = secondTemp % 10 + '0';
  118.        timeSetBuff[S_H] = secondTemp / 10 + '0';
  119.          }   
  120.    }
  121.    if(keyRead == KEY_MINUTE)
  122.    { if(interface_mod == 1)
  123.      {
  124.            if(minuteAlarm < 59)
  125.              minuteAlarm++;
  126.            else
  127.              minuteAlarm=0x00;
  128.            alarmSetBuff[M_L]=minuteAlarm%10+'0';
  129.            alarmSetBuff[M_H]=minuteAlarm/10+'0';
  130.          }
  131.          else
  132.          {
  133.            if(minuteTemp < 59)
  134.              minuteTemp += 1;
  135.            else
  136.              minuteTemp = 0x00;
  137.            timeSetBuff[M_L] = minuteTemp % 10 + '0';
  138.        timeSetBuff[M_H] = minuteTemp / 10 + '0';
  139.          }
  140.       
  141.    }
  142.   if(keyRead == KEY_HOUR)
  143.   {
  144.      if(interface_mod == 1)
  145.          {
  146.            if(hourAlarm < 23)
  147.              hourAlarm++;
  148.            else
  149.              hourAlarm = 0x00;
  150.            alarmSetBuff[H_L] = hourAlarm % 10 + '0';
  151.            alarmSetBuff[H_H] = hourAlarm / 10 + '0';
  152.          }
  153.          else
  154.          {
  155.            if(hourTemp < 23)
  156.              hourTemp += 1;
  157.            else
  158.              hourTemp = 0x00;
  159.            timeSetBuff[H_L] = hourTemp%10+'0';
  160.        timeSetBuff[H_H] = hourTemp/10+'0';
  161.          }
  162.       
  163.   }
  164.    
  165. }
  166. }


  167. /*, */
  168. /********************************************************************************************
  169. * 函數名稱:定時器0中斷函數
  170. * 功    能:定時器0溢出中斷入口處,定時10ms
  171. * 入口參數:無
  172. * 出口參數:無
  173. *********************************************************************************************/
  174. void timer0_overflow(void) interrupt 1
  175. {
  176.    TH0 = 0xdc;
  177.    TL0 = 0x00;
  178.    if(time_is_ok == 1)            //報警
  179.      WARN_TRUMPET = ~WARN_TRUMPET;
  180.    if(timer0Temp < 99)        //判斷1s是否到
  181.        timer0Temp++;
  182.    else                            //進中斷100次
  183.    {
  184.         timer0Temp = 0x00;           
  185.             if(secondTemp < 59)   //判斷1min是否到         
  186.                 {
  187.                   secondTemp++;
  188.                 }
  189.                 else
  190.                 {

  191.                   secondTemp = 0x00;
  192.                   if(minuteTemp < 59)  //判斷1hour是否到
  193.                      minuteTemp++;
  194.                  else
  195.                   {
  196.                     minuteTemp = 0x00;
  197.                         if(hourTemp < 23)
  198.                           hourTemp++;
  199.                         else
  200.                           hourTemp = 0x00;
  201.                   }

  202.                 }  
  203.    }
  204.    timeSetBuff[S_L] = secondTemp%10+'0';
  205.    timeSetBuff[S_H] = secondTemp/10+'0';
  206.    timeSetBuff[M_L] = minuteTemp%10+'0';
  207.    timeSetBuff[M_H] = minuteTemp/10+'0';
  208.    timeSetBuff[H_L] = hourTemp%10+'0';
  209.    timeSetBuff[H_H] = hourTemp/10+'0';
  210.    sei();
  211. }
復制代碼



所有資料下載:
電子時鐘系統.rar (41.32 KB, 下載次數: 87)


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:140183 發表于 2018-5-20 21:10 | 只看該作者
太好啦!謝謝分享!正好來學習。
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 久久亚洲一区二区 | 国产精品久久久久久福利一牛影视 | 在线观看三级av | 午夜久久久久久久久久一区二区 | aaaa日韩 | 精品日韩一区二区 | 国产免费一区二区三区最新6 | 久久一区二区三区电影 | 成人免费毛片片v | 天天干狠狠操 | www亚洲精品 | 久草视| 免费不卡一区 | 天天操 天天操 | 成人在线视频网站 | 国产亚洲欧美在线 | 一区二区中文 | 精品国产一区二区三区观看不卡 | 欧美激情国产精品 | 欧美视频一区二区三区 | 国产欧美日韩综合精品一区二区 | 精品久久久久久亚洲精品 | 狠狠做深爱婷婷综合一区 | 国产一级一级国产 | 国产精品成人在线播放 | 一区二区三区在线 | 国产一级免费视频 | 91在线电影 | 日韩在线精品视频 | 婷婷福利 | 福利视频一区 | 毛片入口 | 天天插天天搞 | 中文字幕日韩欧美一区二区三区 | 中文字幕一区在线 | 欧美成人一区二区三区片免费 | 毛片网在线观看 | 九九免费观看视频 | 粉嫩粉嫩芽的虎白女18在线视频 | 精品久久久久久久久久久久久 | 欧美aⅴ片 |