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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3472|回復(fù): 1
打印 上一主題 下一主題
收起左側(cè)

基于HC32F460開發(fā)板的RTC電子時鐘

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:776997 發(fā)表于 2020-9-29 11:32 | 只看該作者 |只看大圖 回帖獎勵 |倒序瀏覽 |閱讀模式
本帖最后由 jinglixixi 于 2020-9-29 11:34 編輯

HC32F460內(nèi)部配有RTC功能,這里我們?yōu)樗渖?/font>OLED屏顯示,這樣它就構(gòu)成一個RTC電子時鐘。
所用的OLED屏就是隨板子自帶的,該OLED屏的原理圖見圖1所示。

1  OLED屏原理圖

本想以I2C通訊來驅(qū)動OLED屏,但將其移到RTC的程序中,比較難協(xié)調(diào),最終還是以模擬I2C的方式來輕松地將兩者結(jié)合在一起。
由于SDASCL 仍占用原位置,故定義其輸出高低電平的語句如下:
#define OLED_SCLK_Set()   PORT_SetBits(PortD, Pin00)
#define OLED_SCLK_Clr()   PORT_ResetBits(PortD, Pin00)

#define OLED_SDIN_Set()   PORT_SetBits(PortD, Pin01)
#define OLED_SDIN_Clr()   PORT_ResetBits(PortD, Pin01)

所用的字符顯示函數(shù)為:
  1. void OLED_ShowString(uint8_t x,uint8_t y,uint8_t *chr,uint8_t Char_Size)
  2. {
  3.         unsigned char j=0;
  4.         while (chr[j]!='\0')
  5.         {
  6.                     OLED_ShowChar(x,y,chr[j],Char_Size);
  7.                     x+=8;
  8.                     if(x>120){x=0;y+=2;}
  9.                     j++;
  10.         }
  11. }
復(fù)制代碼

所用的數(shù)值顯示函數(shù)為:
  1. void OLED_ShowNum(uint8_t x,uint8_t y,uint32_t num,uint8_t len,uint8_t size2)
  2. {              
  3. uint8_t t,temp;
  4. uint8_t enshow=0;                                                   
  5. for(t=0;t<len;t++)
  6. {
  7. temp=(num/oled_pow(10,len-t-1))%10;
  8. if(enshow==0&&t<(len-1))
  9. {
  10. if(temp==0)
  11. {
  12. OLED_ShowChar(x+(size2/2)*t,y,' ',size2);
  13. continue;
  14. }else enshow=1;
  15. }
  16. OLED_ShowChar(x+(size2/2)*t,y,temp+'0',size2);
  17. }
  18. }
復(fù)制代碼

進(jìn)行RTC時間設(shè)置的函數(shù)為:
  1. static void Rtc_CalendarConfig(void)
  2. {
  3. stc_rtc_date_time_t stcRtcDateTimeCfg;
  4. MEM_ZERO_STRUCT(stcRtcDateTimeCfg);
  5. stcRtcDateTimeCfg.u8Year = 20u;
  6. stcRtcDateTimeCfg.u8Month = 9;
  7. stcRtcDateTimeCfg.u8Day = 27u;
  8. stcRtcDateTimeCfg.u8Weekday = RtcWeekdaySunday;
  9. stcRtcDateTimeCfg.u8Hour = 12u;
  10. stcRtcDateTimeCfg.u8Minute = 23u;
  11. stcRtcDateTimeCfg.u8Second = 01u;
  12. if (RTC_SetDateTime(RtcDataFormatDec, &stcRtcDateTimeCfg, Enable, Enable) != Ok)
  13. {
  14. printf("write calendar failed!\r\n");
  15. }
  16. }
復(fù)制代碼

實(shí)現(xiàn)圖1和圖2顯示效果的主程序如下:
  1. int32_t main(void)
  2. {
  3. stc_port_init_t stcPortInit;
  4. stc_rtc_date_time_t stcCurrDateTime;
  5. MEM_ZERO_STRUCT(stcPortInit);
  6. MEM_ZERO_STRUCT(stcCurrDateTime);
  7. LED0_OFF();
  8. stcPortInit.enPinMode = Pin_Mode_Out;
  9. PORT_Init(LED0_PORT, LED0_PIN, &stcPortInit);
  10. stcPortInit.enPinMode = Pin_Mode_Out;
  11. PORT_Init(PortD, Pin00, &stcPortInit);
  12. PORT_Init(PortD, Pin01, &stcPortInit);
  13. Xtal32_ClockConfig();
  14. Ddl_UartInit();
  15. Rtc_Config();
  16. OLED_Init();
  17. OLED_Clear();
  18. OLED_ShowString(0,0,"HC32F460 TEST",16);
  19. OLED_ShowString(0,2,"OLED & RTC",16);
  20. Ddl_Delay1ms(1000u);
  21. OLED_Clear();
  22. OLED_ShowString(0,0,"20  -  -",16);
  23. OLED_ShowString(0,2,"    :  :",16);
  24. while (1)
  25. {
  26. if (1u == u8SecIntFlag)
  27. {
  28. u8SecIntFlag = 0u;
  29. LED0_TOGGLE();
  30. if (RTC_GetDateTime(RtcDataFormatDec, &stcCurrDateTime) = Ok)
  31. {
  32. OLED_ShowNum(16,0,stcCurrDateTime.u8Year,2,16);
  33. OLED_ShowNum(40,0,stcCurrDateTime.u8Month,2,16);
  34. OLED_ShowNum(64,0,stcCurrDateTime.u8Day,2,16);
  35. OLED_ShowNum(16,2,stcCurrDateTime.u8Hour,2,16);
  36. OLED_ShowNum(40,2,stcCurrDateTime.u8Minute,2,16);
  37. OLED_ShowNum(64,2,stcCurrDateTime.u8Second,2,16);
  38. }
  39. }
  40. }
  41. }
復(fù)制代碼


2  初始界面


3  RTC運(yùn)行界面



評分

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

查看全部評分

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

使用道具 舉報

沙發(fā)
ID:968812 發(fā)表于 2021-10-2 15:12 | 只看該作者
請問這個開發(fā)板OLED的資料哪里可以下載?
回復(fù)

使用道具 舉報

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

本版積分規(guī)則

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

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

快速回復(fù) 返回頂部 返回列表
主站蜘蛛池模板: 不用播放器看的av | 精品无码久久久久久久动漫 | 亚洲国产一区二区视频 | 国产精品伦理一区二区三区 | av一区二区三区在线观看 | 九九热精 | 亚洲最新网址 | 欧美午夜影院 | 国产成人99久久亚洲综合精品 | 蜜桃一区| 91婷婷韩国欧美一区二区 | 亚洲一区二区日韩 | 精品一区二区久久久久久久网精 | 国产精品日韩欧美一区二区三区 | 国产毛片毛片 | 午夜精品久久久久久久久久久久久 | 精品亚洲永久免费精品 | 国产精品视频97 | 欧美日韩成人影院 | 欧美日韩中文字幕 | 偷拍亚洲色图 | 色桃网 | 久久婷婷av | 国产精品一区二区不卡 | 欧美v免费| 国产精品av久久久久久毛片 | 亚洲一区二区三区在线播放 | 免费看爱爱视频 | 一区二区久久电影 | 国产精品二区三区 | 一二区视频 | 亚洲视频www| 天堂一区二区三区 | 亚洲美女一区二区三区 | 亚洲欧美一区二区三区国产精品 | 无人区国产成人久久三区 | 91天堂| 国产91久久久久蜜臀青青天草二 | 精品一区二区视频 | 国产中文字幕亚洲 | 欧美成人一区二区三区 |