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

 找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 7693|回復(fù): 12
收起左側(cè)

STM32F103C8T6+DS1302+DS18B20+0.96OLED萬年歷程序

  [復(fù)制鏈接]
ID:269766 發(fā)表于 2021-9-30 12:44 | 顯示全部樓層 |閱讀模式
業(yè)余時(shí)間把論壇上一位大神的51單片機(jī)LCD12864萬年歷移植到STMC8T6+0.96OLED屏上,可按鍵設(shè)置時(shí)間日期鬧鐘,代碼不規(guī)范,有一些暫時(shí)沒發(fā)現(xiàn)的bug歡迎指教。

制作出來的實(shí)物圖如下:
IMG_20210928_224204.jpg

單片機(jī)源程序如下:
  1. #include "main.h"
  2. #include "delay.h"
  3. #include "sys.h"
  4. #include "led.h"
  5. #include "usart.h"
  6. #include "oled.h"
  7. #include "timer.h"
  8. #include "stm32f10x.h"
  9. #include "key.h"
  10. #include "nonli.h"
  11. #include "yangli.h"
  12. #include "ds18b20.h"
  13. #include "DS1302.h"


  14. enum eStaSystem staSystem = E_NORMAL;  //系統(tǒng)運(yùn)行狀態(tài)
  15. u8 flag1s = 0;    //1s定時(shí)標(biāo)志位
  16. u8 flag200ms = 0; //200ms定時(shí)標(biāo)志

  17. extern void KeyDriver(void);
  18. extern void RefreshLunarn(void);
  19. extern void KeyScan(void);





  20. int main()
  21. {
  22.        
  23.        

  24.        

  25.           SystemInit();
  26.         delay_init(72);             //延時(shí)初始化
  27.         NVIC_Configuration();
  28.         uart_init(9600);   //串口初始化
  29.         //Timerx_Init(5000,7199);//10Khz的計(jì)數(shù)頻率,計(jì)數(shù)到5000為500ms
  30.           Timerx_Init(99,719);//10Khz的計(jì)數(shù)頻率,計(jì)數(shù)到50為1ms
  31.           OLED_Init();
  32.         Init_DS1302();
  33.         LED_Init();
  34.    DS18B20_Init();
  35.        
  36.          KEY_Init();
  37.         delay_ms(50);
  38.                 RefreshTime();        //刷新時(shí)間
  39.         RefreshDate(1);        //立即刷新日期
  40.         RefreshTemp(1); //立即刷新溫度顯示
  41.         RefreshLunarn();


  42.          while(1)
  43.          {  


  44.                  
  45.                  
  46.                         KeyScan();//按鍵掃描
  47.             KeyDriver();        //按鍵檢測(cè)
  48.                 if(flag200ms)        //200ms時(shí)間到
  49.                 {
  50.                         flag200ms = 0;        //清零標(biāo)志位
  51.                         AlarmMonitor(); //監(jiān)控鬧鐘
  52.                         if (staSystem == E_NORMAL)//如果系統(tǒng)正常運(yùn)行
  53.                         {
  54.                                 RefreshTime(); //刷新時(shí)間
  55.                                 RefreshDate(0);//刷新日期
  56.                            RefreshLunarn();//刷新主界面農(nóng)歷
  57.                         }
  58.                         if (staSystem == Dis_Alarm)
  59.                         {
  60.                                 RefreshLunar(); //刷新陰歷
  61.                         }
  62.                 }       
  63.                 if(flag1s && (staSystem == E_NORMAL))//1s時(shí)間到并且系統(tǒng)為正常運(yùn)行
  64.                 {
  65.                         flag1s = 0;//清零標(biāo)志位
  66.                         RefreshTemp(0);//刷新溫度       
  67.                 }




  68.         }
  69.    
  70. }


  71. /* 溫度刷新函數(shù),讀取當(dāng)前溫度并根據(jù)需要刷新液晶顯示,
  72. ** ops-刷新選項(xiàng):為0時(shí)只當(dāng)溫度變化才刷新,非0則立即刷新 */
  73. void RefreshTemp(uint8_t ops)
  74. {
  75.     short temp;
  76.   
  77.     static int16_t backup = 0;
  78.    
  79.    temp=DS18B20_Get_Temp(); //獲取當(dāng)前溫度值
  80.     //DS18B20_Start();        //啟動(dòng)下一次轉(zhuǎn)換
  81.     //temp >>= 4;          //舍棄4bit小數(shù)位

  82.    
  83.     if ((backup!=temp) || (ops!=0)) //按需要刷新液晶顯示
  84.     {
  85.                

  86.                      if(temp/10 > 0)
  87.                         OLED_P8x16Str(80,6,temp/100);  //顯示溫度十位
  88.                 else
  89.                         OLED_P8x16Str(80,6,12);             //否則溫度十位為0不顯示
  90.                 OLED_P8x16Str(88,6,temp % 100/10);  //顯示溫度個(gè)位
  91.                 OLED_P8x16Str(96,6,14);                   //顯示小數(shù)點(diǎn)
  92.                 OLED_P8x16Str(104,6,temp % 10); //顯示溫度小數(shù)第1位
  93.                 OLED_ShowCHinese(112,6,14);                   //顯示℃符號(hào)
  94.                 OLED_ShowCHinese(96, 0, 43);         //顯示星期
  95.     OLED_ShowCHinese(64,6,21);                   //顯示溫度圖標(biāo)  大
  96.          //RefreshLunarn();//刷新主界面農(nóng)歷
  97.                 temp= 0;
  98.                 backup = temp;             //刷新上次溫度值

  99.     }
  100. }

  101. void TIM3_IRQHandler(void)   //TIM3中斷
  102. {
  103.                 static uint8_t tmr1s = 0;
  104.     static uint8_t tmr200ms = 0;
  105.        
  106.         if (TIM_GetITStatus(TIM3, TIM_IT_Update) != RESET) //檢查指定的TIM中斷發(fā)生與否:TIM 中斷源
  107.                 {
  108.                 TIM_ClearITPendingBit(TIM3, TIM_IT_Update  );  //清除TIMx的中斷待處理位:TIM 中斷源



  109.         tmr200ms++;  //定時(shí)200ms
  110.     if (tmr200ms >= 1)
  111.     {
  112.         tmr200ms = 0;
  113.         flag200ms = 1;
  114.         tmr1s++;  //定時(shí)1s
  115.         if (tmr1s >= 5)
  116.         {
  117.             tmr1s = 0;
  118.             flag1s = 1;
  119.         }
  120.     }
  121.         //KeyScan();//按鍵掃描
  122.                        

  123.                 }
  124. }
復(fù)制代碼

所有代碼51hei附件下載:
51黑論壇OLED萬年歷.7z (211.71 KB, 下載次數(shù): 660)

評(píng)分

參與人數(shù) 1黑幣 +100 收起 理由
admin + 100 共享資料的黑幣獎(jiǎng)勵(lì)!

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

ID:229641 發(fā)表于 2021-10-2 21:15 來自手機(jī) | 顯示全部樓層
大佬能弄個(gè)ds3231的嗎?1302的精度不靠譜哇
回復(fù)

使用道具 舉報(bào)

ID:269766 發(fā)表于 2021-10-21 23:22 | 顯示全部樓層
無需修改程序可應(yīng)用到2.42寸SSD1309驅(qū)動(dòng)的OLED屏上
IMG_20211021_225353.jpg

評(píng)分

參與人數(shù) 1黑幣 +20 收起 理由
admin + 20 回帖助人的獎(jiǎng)勵(lì)!

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

ID:269766 發(fā)表于 2021-11-3 01:18 | 顯示全部樓層
DS3231高精度帶溫度時(shí)鐘萬年歷在2.42寸SSD1309驅(qū)動(dòng)的OLED正常顯示,也能應(yīng)用在中景園的0.96OLED屏上

2.42OLED萬年歷DS3231.7z

214.03 KB, 下載次數(shù): 130, 下載積分: 黑幣 -5

評(píng)分

參與人數(shù) 1黑幣 +40 收起 理由
admin + 40 回帖助人的獎(jiǎng)勵(lì)!

查看全部評(píng)分

回復(fù)

使用道具 舉報(bào)

ID:269766 發(fā)表于 2021-11-3 01:22 | 顯示全部樓層
觸景情傷 發(fā)表于 2021-10-2 21:15
大佬能弄個(gè)ds3231的嗎?1302的精度不靠譜哇

弄了個(gè)ds3231的程序
回復(fù)

使用道具 舉報(bào)

ID:89537 發(fā)表于 2021-12-19 01:57 | 顯示全部樓層
#include "ds18b20.h" 這個(gè)頭文件怎么能調(diào)用上,我想與其他芯片通訊
回復(fù)

使用道具 舉報(bào)

ID:845470 發(fā)表于 2021-12-25 16:05 | 顯示全部樓層
現(xiàn)在的芯片好買嗎?
回復(fù)

使用道具 舉報(bào)

ID:717124 發(fā)表于 2022-3-30 21:57 | 顯示全部樓層
樓主可以給一份引腳連接圖嗎?不然看著很懵圈啊
回復(fù)

使用道具 舉報(bào)

ID:1143758 發(fā)表于 2025-2-12 11:19 | 顯示全部樓層
里面可以按鍵設(shè)置嗎
回復(fù)

使用道具 舉報(bào)

ID:668601 發(fā)表于 2025-2-19 19:33 | 顯示全部樓層
你們都正常嗎,為什么我寫入時(shí)間的時(shí)候讀取的時(shí)間除了年份是2099其他都正常呢
回復(fù)

使用道具 舉報(bào)

ID:822082 發(fā)表于 2025-3-25 20:41 | 顯示全部樓層
為啥我下載程序后沒有顯示啊,STM32103FC8T6,7針OLED顯示屏;代碼編譯沒有錯(cuò)誤

回復(fù)

使用道具 舉報(bào)

ID:982032 發(fā)表于 2025-4-4 22:07 | 顯示全部樓層
請(qǐng)教一下,怎么把DS1302的時(shí)間,通過一個(gè)模塊語音播報(bào)出來?
回復(fù)

使用道具 舉報(bào)

ID:66862 發(fā)表于 2025-4-8 23:07 | 顯示全部樓層
好資料先收藏起來,方便學(xué)習(xí)用
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 麻豆精品国产91久久久久久 | 在线欧美视频 | 男人阁久久 | 特一级毛片 | 日韩中文字幕区 | 操人网站| 91久久久久久 | 偷拍自拍网址 | 亚洲精品一区二区三区在线 | 国产视频1区 | 成人亚洲 | 69热视频在线观看 | 九九热在线免费视频 | 国产99热精品 | 欧美专区在线 | 成人一区二区三区在线观看 | 日韩成人一区 | 亚洲一区二区免费 | 欧美一区二区三区 | 国产精品1区 | 午夜精品在线 | 欧美黑人国产人伦爽爽爽 | 欧美综合国产精品久久丁香 | 成人3d动漫一区二区三区91 | 国产精品高潮呻吟久久aⅴ码 | 97操操| а天堂中文最新一区二区三区 | 欧美日韩综合视频 | 国产一级在线观看 | 国产成人久久精品 | 国产区在线免费观看 | 亚洲欧美日韩精品久久亚洲区 | 成人精品一区二区三区中文字幕 | 伊人网站视频 | 男女羞羞网站 | 久久久精品网站 | 日本高清精品 | 日韩精品网站 | 国产一区 | 精品久久精品 | 天天天堂 |