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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

基于HC32L136開發板的RTC電子時鐘

[復制鏈接]
ID:776997 發表于 2020-10-31 17:11 | 顯示全部樓層 |閱讀模式
HC32L136的例程中,只有筆段式液晶屏的測試程序,卻沒有提供一個可供用戶直接調用的數值顯示函數。
為此在了解液晶屏的工作原理后,在原例程的基礎上完成了它的數值顯示函數。
1. 液晶屏工作原理及顯示編碼
HC32L136開發板上,所配置的液晶屏為4位數字式顯示屏并配有小數點和時間分隔符,其布局如圖1所示。
                                 
1.jpg
1 液晶屏筆段布局顯示
盡管筆段式液晶屏在顯示顯示上與數碼管十分相近,但在工作原理和機制上卻差別很大。
以數碼管為例,它是通過段碼和位碼來控制顯示的,編寫好段碼表后,只需把段碼送到位碼控制的位置即可顯示出相應的內容。
例如“1”的顯示碼為0x06,即0000 0110對應CB被點亮。
而對于液晶屏就不同了,它是按節拍來完成代碼的輸出,按顯示位置的不同,是將顯示筆段分成4組,每組占2位,共8位。而每組內,相同位置所控制的筆段名稱相同,故只需定義一組編碼即可,然后按顯示的位置進行移位處理即可(例如第一組需移動6位,第二組需移動4位第三組需移動2位)。
若每組顯示碼占2個字節,則可到如下的顯示碼表:
z.jpg             

2.顯示程序
1)定義顯示數組
#define     LCD_POINT      0X0008
const uint16_t  lcd_tab[16] =
{
  0x0F05, 0x0600, 0x0B06, 0x0F02,0x0603, 0x0D03, 0x0D07, 0x0700, 0x0F07, 0x0F03,
  0x0707, 0x0C07, 0x0905, 0x0E05,0x0907, 0x0107,
};
2)清屏函數
  1. void Lcd_ClearDisp(void)
  2. {
  3. uint8_t tmp;
  4. volatile uint32_t *ram = NULL;
  5. ram = &M0P_LCD->RAM0;
  6. for(tmp=0;tmp<16;tmp++)
  7. {
  8. *ram = 0;
  9. ram++;
  10. }
  11. }
復制代碼
3)顯示函數
  1. void LCD_Display(uint16_t * str)
  2. {
  3. uint32_t   n;
  4. n   = str[1];
  5. n <<= 16;
  6. n  += str[0];
  7. M0P_LCD->RAM0 = n;
  8. n   = str[3];
  9. n <<= 16;
  10. n  += str[2];
  11. M0P_LCD->RAM1 = n;   
  12. }
復制代碼
3. RTC電子時鐘
HC32L136內部配置了RTC計時器,將它與SLCD液晶屏配合即可實現一個RTC電子時鐘。
實現電子時鐘的主程序為:
  1. int32_t main(void)
  2. {
  3. uint32_t       i;
  4. uint16_t       str[4];
  5. Sysctrl_ClkSourceEnable(SysctrlClkRCL,TRUE);
  6. Sysctrl_SetRCLTrim(SysctrlRclFreq32768);
  7. Sysctrl_SetPeripheralGate(SysctrlPeripheralLcd,TRUE);
  8. Sysctrl_SetPeripheralGate(SysctrlPeripheralGpio,TRUE);
  9. App_PortCfg();
  10. App_LcdCfg();
  11. Lcd_ClearDisp();
  12. stc_rtc_time_t readtime;
  13. Sysctrl_SetPeripheralGate(SysctrlPeripheralGpio,TRUE);
  14. Sysctrl_SetPeripheralGate(SysctrlPeripheralRtc,TRUE);
  15. Sysctrl_ClkSourceEnable(SysctrlClkRCL, TRUE);
  16. RTC_Cfg();
  17. EnableNvic(RTC_IRQn, IrqLevel3, TRUE);
  18. Rtc_Cmd(TRUE);
  19. while (1)
  20. {
  21. M0P_GPIO->PDOUT ^= (1U << 5);
  22. if(flag == 1)
  23. {
  24. flag = 0;
  25. Rtc_ReadDateTime(&readtime);
  26. second = readtime.u8Second;
  27. minute = readtime.u8Minute;
  28. hour   = readtime.u8Hour;
  29. str[0] = lcd_tab[minute>>4];
  30. str[1] = lcd_tab[minute&0x0f]|LCD_POINT;
  31. str[2] = lcd_tab[second>>4];
  32. str[3] = lcd_tab[second&0x0f];
  33. LCD_Display(str);
  34. }
  35. delay1ms(500);
  36. }
  37. }
復制代碼
有了顯示程序固然可喜,但下載工具的作用也是必不可少的,本人使用的第三方的下載工具,并通過虛擬串口來完成下載,見圖2和圖3所示。
2.jpg
2 下載工具

3.jpg
3 下載過程
在下載程序后,其顯示效果如圖4所示。
4.jpg

4運行效果

評分

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

查看全部評分

回復

使用道具 舉報

ID:833128 發表于 2020-12-11 08:58 | 顯示全部樓層
小時位好像沒設置判斷和限制
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产人久久人人人人爽 | 波多野结衣一二三区 | 国产精品一区二区三区在线 | 狠狠涩| 美女国产一区 | 91免费观看在线 | 精品国产一区二区三区久久狼黑人 | 成人高潮片免费视频欧美 | 亚洲成人一区二区 | 午夜电影福利 | 久久久成人免费视频 | 日韩三级 | 99精品一区| 成人精品一区亚洲午夜久久久 | 欧美aⅴ| 五月激情久久 | 国产福利网站 | 免费在线成人 | a亚洲精品 | 欧美一区二区视频 | 成人影院av | 国产99在线 | 欧美 | 日日噜噜噜夜夜爽爽狠狠视频, | 日韩在线 | 国产在线观 | 久久久激情 | 午夜免费在线观看 | 久久专区 | 99re66在线观看精品热 | 国产精品久久久亚洲 | 亚洲欧美精品在线 | 午夜影院在线观看 | 精品国产黄a∨片高清在线 成人区精品一区二区婷婷 日本一区二区视频 | 久久精品视频亚洲 | 欧美一区二区三区国产 | 国产一区高清 | 成人免费网站视频 | 97精品国产97久久久久久免费 | 成人性生交大免费 | 米奇狠狠鲁 | 亚洲综合在线播放 |