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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

基于51單片機的串口通信+帶I2C存儲+時間+鬧鐘+按鍵+狀態機+定時中斷源碼

[復制鏈接]
跳轉到指定樓層
樓主
分享個基于51單片機設計的 串口通信+帶I2C存儲+時間+鬧鐘+按鍵+狀態機+定時中斷
矩陣 按鍵 中 隨意抽取 6個按鍵 來完成一下功能:
1)    K1 ,K3,K5 分別為 秒鐘,分鐘,小時的+1功能;
2)    K2 ,K4,K6 分別為 秒鐘,分鐘,小時的 -1功能;
3)    K7 切換顯示 時間 和鬧鐘的;



全時鐘自動運行 的邏輯

全時鐘自動運行 代碼 邏輯(流程)分析

時鐘的原理
   小時  -             分鐘            -        秒鐘
分鐘由59>0時刻+1  秒鐘由59>0時刻 +1     每一秒加1

/*******************************************************************/
定義全局變量a_mstime=0 累計本代碼的總共毫秒數量(最后看這個定義)
定義全局變量 flag=0 , 讓秒鐘自動加1的一個信號。  (最后看這個定義)

主函數
{
   定義 數碼管顯示數組 00-00-00 ,長度為8;
   定義 時間數組       23,55,35   (小時,分鐘,秒鐘)
  while(1)
   {
      判斷flag == 1 ;
           秒鐘+1 ;(還要確保 0 – 59 之間)
           判斷秒鐘 >= 60
                秒鐘 = 0;( 由60變成 0 , 60出現的時間多長?4us左右,4us之前59出現了1秒了)  59(1s)—>60(4us) —>0(1秒)
                分鐘 +1;(也要控制分鐘取值范圍0-59)
                判斷分鐘 >= 60
                    分鐘 = 0;
                    小時 +1;(控制小時取值范圍0-23)
           
           
      判斷按鍵1是否按下
          如果按下,去抖,等待完全松開
          讓秒鐘加1;(你可以寫任何你想做的事情)
      
      判斷按鍵2是否按下
          如果按下,去抖,等待完全松開
          讓分鐘加1;(你可以寫任何你想做的事情)
      
      判斷按鍵3是否按下
          如果按下,去抖,等待完全松開
          讓小時加1;(你可以寫任何你想做的事情)
      
      把時間數組[3] 拆解到 顯示數組[8]里面去;
      通過函數LED7_display(a, 8); 把拆解后的時間顯示出來

}
}

子函數LED7_display(a, 8)
{
   把a里面的8個內容逐個的送到每個數碼管顯示,
   調用8次ms_delay(2);(每個數碼管 要消耗2ms 的點亮時間;)
}

子函數ms_delay(毫秒數量) // 就是模仿小孩子 等人 時的 數數(動名)
{
2個空循環;

///////////////////////////

a_mstime += 毫秒數量;(把本代碼的毫秒數累計起來)

判斷a_mstime 大于等于 1000 的時刻,

    flag =1 ;秒鐘加1的信號

    a_mstime = a_mstime-1000 ;

}

-------------------------------------
秒鐘自動+1 的邏輯

秒鐘自動加1 代碼 邏輯(流程)分析

定義全局變量a_mstime=0 累計本代碼的總共毫秒數量(最后看這個定義)
定義全局變量 flag=0 , 讓秒鐘自動加1的一個信號。  (最后看這個定義)

主函數
{
   定義 數碼管顯示數組 00-00-00 ,長度為8;
   定義 時間數組       23,55,35   (小時,分鐘,秒鐘)
  while(1)
   {
      判斷flag == 1 ;
           秒鐘+1 ;(還要確保 0 – 59 之間)
            
           
      
      判斷按鍵1是否按下
          如果按下,去抖,等待完全松開
          讓秒鐘加1;(你可以寫任何你想做的事情)
      
      判斷按鍵2是否按下
          如果按下,去抖,等待完全松開
          讓分鐘加1;(你可以寫任何你想做的事情)
      
      判斷按鍵3是否按下
          如果按下,去抖,等待完全松開
          讓小時加1;(你可以寫任何你想做的事情)
      
      把時間數組[3] 拆解到 顯示數組[8]里面去;
      通過函數LED7_display(a, 8); 把拆解后的時間顯示出來

}
}

子函數LED7_display(a, 8)
{
   把a里面的8個內容逐個的送到每個數碼管顯示,
   調用8次ms_delay(2);(每個數碼管 要消耗2ms 的點亮時間;)
}

子函數ms_delay(毫秒數量) // 就是模仿小孩子 等人 時的 數數(動名)
{
2個空循環;

///////////////////////////

a_mstime += 毫秒數量;(把本代碼的毫秒數累計起來)

判斷a_mstime 大于等于 1000 的時刻,

    flag =1 ;秒鐘加1的信號

    a_mstime = a_mstime-1000 ;

}


單片機源程序如下:

  1.          
  2. #include <reg52.h>
  3. #include <type_h.h>
  4. #include <timer.h>
  5. #include  <key.h>
  6. #include  <LED_7.h>
  7. #include  <alarm.h>
  8. #include  <I2CROM.h>
  9. #include  <com.h>



  10. void main()
  11. {
  12.         uint8  key = 0;
  13.         uint16 ms = 50 ;  
  14.   //uint8  LED7_len = 8 ;     // 顯示長度 初始8 ,鬧鐘長度為5               
  15.   ms_delay(100);
  16.   Timer0_set() ;  //初始化 定時器 T0
  17.         x24c02_init();
  18.   read_time()  ;  //包含了 數據校驗
  19.         Com_Init()   ;

  20.    while(1)
  21.          {
  22.                   
  23.                   maketime(b);
  24.                   Naozhong() ;
  25.                         key = Keyx_scanf(); // 此 函數 內部已經 做好了 去抖動 等一系列操作                 
  26.                         key_do_something(key);       
  27.                         // 根據 顯示指針 所指向的 對象,來確定 顯示的長度                  
  28.       LED7_display(disp, 8); //數碼管顯示 耗時16ms
  29.                         Task_sendtime() ;
  30.                         ms_delay(1);
  31.                      
  32.    }
  33. }
  34. ……………………

  35. …………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼

所有資料51hei提供下載:

串口通信 帶I2C存儲 時間 鬧鐘 按鍵 狀態機 定時中斷.rar (105.16 KB, 下載次數: 119)


評分

參與人數 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

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

使用道具 舉報

沙發
ID:273495 發表于 2019-4-24 21:10 | 只看該作者
學習一下
回復

使用道具 舉報

板凳
ID:1097263 發表于 2023-12-2 17:56 | 只看該作者
期盼壇主能發電路仿真圖protues
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 2020亚洲天堂 | 欧美日韩91 | 免费影视在线观看 | 国产亚洲精品精品国产亚洲综合 | 日日日干干干 | 色婷婷久久久久swag精品 | 99久久电影 | 国产精品一区二区三区久久久 | 国产一区2区 | 色综合色综合色综合 | 嫩草视频免费 | 四虎影视1304t| 91精品国模一区二区三区 | 欧美黄色一区 | 中文字幕日韩欧美 | 成人精品久久 | 国产精品视频在线观看 | 久久久久国产精品午夜一区 | 欧美国产日韩一区 | 国产999精品久久久 午夜天堂精品久久久久 | 午夜成人免费视频 | 亚洲第1页| 日韩欧美久久精品 | 成人av电影免费在线观看 | 欧美一级片在线看 | 亚洲精品播放 | 国产亚洲精品精品国产亚洲综合 | 色久电影 | 国产精品国产三级国产aⅴ中文 | 一区影视| 在线中文字幕视频 | 日韩电影免费在线观看中文字幕 | 欧美精品在欧美一区二区少妇 | 午夜在线观看视频 | 在线免费观看视频你懂的 | 国产精品久久久亚洲 | 亚洲人成网亚洲欧洲无码 | 懂色av一区二区三区在线播放 | 亚洲一区二区三区在线视频 | 欧美精品日韩精品国产精品 | 91在线一区二区三区 |