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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 4692|回復: 1
收起左側

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

[復制鏈接]
ID:140725 發表于 2017-3-17 22:52 | 顯示全部樓層 |閱讀模式
1.時分秒的正常顯示
2.可單獨調整時鐘的分十秒
3.鬧鐘功能
4,鍵功能說明
second--正常顯示和鬧鐘狀態時調整秒位
minute--正常顯示和鬧鐘狀態時調整分位
hour--正常顯示和鬧鐘狀態時調整分位
alarm--開啟和關閉鬧鐘功能(變量alarm_is_ok,1為open,0為close)
stop-set-open-close

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


部分源碼預覽:
  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. }
復制代碼

0.png

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


回復

使用道具 舉報

ID:140183 發表于 2018-5-20 21:10 | 顯示全部樓層
太好啦!謝謝分享!正好來學習。
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 亚洲成人精品在线观看 | 国产一区二区三区免费观看视频 | 麻豆久久久久久久久久 | 国产免费播放视频 | 亚洲精品视频一区 | 日韩视频精品在线 | 操操操av | 黄色一级大片在线免费看产 | 蜜臀网 | 国产精品久久一区 | 一区二区三区在线免费观看 | 天天搞夜夜操 | h片在线观看网站 | 成人久久18免费网站麻豆 | 久久青 | av天天澡天天爽天天av | 久色一区 | 日韩综合 | 久久久精彩视频 | 日韩视频在线免费观看 | 成人国产精品久久 | 午夜视频在线观看一区二区 | 精品久久久久久久久久久下田 | 国产精品不卡视频 | 91免费在线播放 | 国产91精品久久久久久久网曝门 | 亚洲国产成人精品女人久久久野战 | 成人欧美一区二区三区视频xxx | 久久黄色网 | 亚洲综合网站 | 91精品国产自产在线老师啪 | 欧美理论片在线 | 国产精品久久av | 中文字幕视频在线免费 | 91精品国产乱码麻豆白嫩 | 97国产爽爽爽久久久 | 一区二区三区中文字幕 | 男女视频在线观看 | 91天堂网| 最新中文字幕在线 | 夜夜久久 |