[开发板与模块] 【ESK32-30519 + ESK32-21001测评】+基于MDM2802屏显示的电子时钟

[复制链接]
 楼主| jinglixixi 发表于 2022-9-28 15:44 | 显示全部楼层 |阅读模式
本帖最后由 eltonchang2001 于 2022-11-9 14:06 编辑

ESK32-30519开发板上配有数码管显示块,见图1所示,利用中间的D1D2笔段可以标识时间的内容。
1.jpg
1  数码管


通常的情况下,其内部是图2的形式进行连接,
2.jpg
2  内部连接

但由于缺少具体的介绍,但凭图3的原理图没能得到电路中间分割符的目的。
3.jpg
3 原理图

为此,就使用MDM2802屏完成了一个图4所示的电子时钟显示效果。
4.jpg
图4 显示效果

在该显示效果中,用到了一个时钟的显示图标,该显示图标的尺寸为80*80像素点,其显示函数为:
  1. void showimage(void)
  2. {
  3.     int i,j;
  4.     set_cursor(10,120);
  5.     gram_prepare();
  6.     for(j=0;j<80;j++)
  7.     {
  8.           set_cursor(10,120+j);
  9.           gram_prepare();
  10.           for(i=0;i<80;i++)
  11.           {
  12.               write_data(gImage_rtc[(j*80+i)*2]);
  13.               write_data(gImage_rtc[(j*80+i)*2+1]);
  14.           }
  15.     }
  16. }

此外为了时钟的显示,对时钟显示函数进行了修改,修改后的内容为:
  1. void Time_Display(u32 wTimeVar)
  2. {
  3.          u32 THH = 0, TMM = 0, TSS = 0;
  4.          u8 c;
  5.          wTimeVar %= 86400;
  6.          THH = wTimeVar/3600;
  7.          TMM = (wTimeVar % 3600)/60;
  8.          TSS = (wTimeVar % 3600)% 60;
  9.          c='0'+THH/10;
  10.          GUI_DispChar(c, 120,150);
  11.          c='0'+THH%10;
  12.          GUI_DispChar(c, 130,150);
  13.          c='0'+TMM/10;
  14.          GUI_DispChar(c, 150,150);
  15.          c='0'+TMM%10;
  16.          GUI_DispChar(c, 160,150);
  17.          c='0'+TSS/10;
  18.          GUI_DispChar(c, 180,150);c='0'+TSS%10;
  19.          GUI_DispChar(c, 190,150);
  20. }

为得到图5所示的计时效果,其主程序为:
  1. int main(void)
  2. {
  3.     CKCU_PeripClockConfig_TypeDef CKCUClock = {{0}};
  4.     CKCUClock.Bit.BKP        = 1;
  5.     CKCU_PeripClockConfig(CKCUClock, ENABLE);
  6.     #if (!LIBCFG_NO_PWRCU_TEST_REG)
  7.     if (PWRCU_CheckReadyAccessed() != PWRCU_OK)
  8.     {
  9.       while (1);
  10.     }
  11.     #endif
  12.     HT32F_DVB_LEDInit(HT_LED1);
  13.     RETARGET_Configuration();
  14.     NVIC_EnableIRQ(RTC_IRQn);
  15.     RTC_Configuration();
  16.     TimeReg = Time_Regulate();
  17.     RTC_Cmd(ENABLE);
  18.     app_tft_init();
  19.     ili9341_init();
  20.     ili9341_clear(RED);
  21.     LCD_DrawLine(WHITE ,0, 50, 239, 50);
  22.     LCD_DrawLine(WHITE,0, 290, 239, 290);
  23.     BACK_COLOR=RED;
  24.     POINT_COLOR=YELLOW;
  25.     showimage();
  26.     GUI_DispChar('R', 80,20);
  27.     GUI_DispChar('T', 90,20);
  28.     GUI_DispChar('C', 100,20);
  29.     showhanzi16(115,16,0,RED,WHITE);
  30.     showhanzi16(135,16,1,RED,WHITE);
  31.     showhanzi16(155,16,2,RED,WHITE);
  32.     showhanzi16(175,16,3,RED,WHITE);
  33.     GUI_DispChar(':', 140,150);
  34.     GUI_DispChar(':', 170,150);
  35.     LCD_ShowString(60,294,"BY: jinglixixi");
  36.     while (1)
  37.     {
  38.       if (gwTimeDisplay == 1)
  39.       {
  40.          Time_Display(RTC_GetCounter() + TimeReg);
  41.          gwTimeDisplay = 0;
  42.       }
  43.     }
  44. }

5.jpg
图5 计时效果







eltonchang2001 发表于 2022-9-30 16:15 | 显示全部楼层
MDM2802 是哪个厂商出的 LCD显示屏 ? 百度不到资料
 楼主| jinglixixi 发表于 2022-9-30 16:22 | 显示全部楼层
eltonchang2001 发表于 2022-9-30 16:15
MDM2802 是哪个厂商出的 LCD显示屏 ? 百度不到资料

是以前Freescale产品所配置的显示模块,使用起来比较节省引脚资源,基本用3个IO口就可以驱动该显示模块。
sdlls 发表于 2022-10-1 17:52 | 显示全部楼层
ESK32的刷屏速度怎么样              
uiint 发表于 2022-10-1 18:06 | 显示全部楼层
可以模拟辉光管实现吗              
pixhw 发表于 2022-10-1 18:28 | 显示全部楼层
使用RTC了吗              
dzfansman 发表于 2022-10-1 18:55 | 显示全部楼层
这个是什么显示屏呢              
 楼主| jinglixixi 发表于 2022-10-2 16:38 | 显示全部楼层
sdlls 发表于 2022-10-1 17:52
ESK32的刷屏速度怎么样

由于它的处理方式近于I2C,所以刷屏速度不是很快。
 楼主| jinglixixi 发表于 2022-10-2 16:42 | 显示全部楼层
uiint 发表于 2022-10-1 18:06
可以模拟辉光管实现吗

应该问题不大,关键是要构建相应数符的显示字模及显示函数。此外,对刷新的速度会高一下,否则在显示过程中会出现显示值的跳跃。
 楼主| jinglixixi 发表于 2022-10-2 16:43 | 显示全部楼层

用的是RTC呀
 楼主| jinglixixi 发表于 2022-10-2 16:45 | 显示全部楼层
dzfansman 发表于 2022-10-1 18:55
这个是什么显示屏呢

一款基于ili9341控制芯片的SPI接口2.8寸显示屏。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

518

主题

2933

帖子

39

粉丝
快速回复 在线客服 返回列表 返回顶部

518

主题

2933

帖子

39

粉丝
快速回复 在线客服 返回列表 返回顶部