jinglixixi 发表于 2023-11-4 11:57

[ STM32F4-discovery开发板测评 ] 电子时钟

<p align="left">对于STM32F4-discovery开发板来讲,它内置了RTC计时器并提供了一些RTC的功能函数,它并没有一个完整使用示例,因此不便快速加以利用。</p>

<p align="left" >本打算实现一个RTC电子时钟,限于时间关系就不在这方面浪费时间了,直接利用延时函数与LCD屏就可快速地搭建一个电子时钟,其显示效果如图1所示。</p>

<p align="left" > &nbsp;</p>

<p align="left">图1 电子时钟</p>

<p align="left" >&nbsp;</p>

<p align="left" >关于LCD屏的显示驱动在前面的测评中已做过介绍,就不再细说,这里只补充一个数值显示函数以支持时间的显示。</p>

<p align="left" >相应的数值显示函数为:</p>

<pre>
<code class="language-cpp">void LCD_ShowNum(u16 x,u16 y,u16 num,u8 len,u16 color)
{
    u8 t,temp;
    u8 enshow=0;
    for(t=0;t&lt;len;t++)
    {
      temp=(num/mypow(10,len-t-1))%10;
      if(enshow==0&amp;&amp;t&lt;(len-1))
      {
            if(temp==0)
            {
                LCD_ShowChar(x+8*t,y,' ',0,color);
                continue;
            }
            elseenshow=1;
      }
      LCD_ShowChar(x+8*t,y,temp+48,0,color);
    }
}
</code></pre>

<p align="left">由于是利用延时函数进行计时,因此要添加相应的计时变量及进制处理,相应的主程序为:</p>

<pre>
<code class="language-cpp">int main(void)
{
    char ss=0,sm=58,sh=23;
    SystemClock_Config();
        lcd_gpio();
        Lcd_Init();
        BACK_COLOR=RED;
        LCD_Clear(RED);
    LCD_ShowString(20,25,"::",YELLOW);
        while (1)
    {
              LCD_ShowNum(68,25,ss,2,YELLOW);
                  LCD_ShowNum(44,25,sm,2,YELLOW);
                  LCD_ShowNum(20,25,sh,2,YELLOW);
                  ss=ss+1;
                  if(ss==60)
              {
                                ss=0;
                                sm=sm+1;
                  }
                  if(sm==60)
              {
                                sm=0;
                                sh=(sh+1)%24;
                  }
                  HAL_Delay(1000);
        }
}
</code></pre>

<p>经程序的编译和下载,其测试效果如图2和图3所示,说明它可以完成计时的进制变化要求是可以完成计时要求的。其不足是在断电情况下,无法再继续保存计时值。优点是程序简单,在24小时内的计时累计误差不会过大。</p>

<p>&nbsp;</p>

<p> &nbsp;</p>

<p align="left">图2 边界测试1</p>

<p align="left">&nbsp;</p>

<p align="left"> &nbsp;</p>

<p align="left">图3 边界测试2</p>

Gen_X 发表于 2023-11-4 21:28

<p>学习了.</p>

<p>不过以为是:STM32F4-disc1自带的LCD</p>

lugl4313820 发表于 2023-11-5 11:27

<p>大佬的LCD,无论在哪片板子上都是那么的用得好!</p>

jinglixixi 发表于 2023-11-6 08:08

Gen_X 发表于 2023-11-4 21:28
学习了.

不过以为是:STM32F4-disc1自带的LCD

<p>自带的是一块残屏,只能自己解决了。</p>

jinglixixi 发表于 2023-11-6 08:10

lugl4313820 发表于 2023-11-5 11:27
大佬的LCD,无论在哪片板子上都是那么的用得好!

<p>哈哈,现在价格合适的器件比较少呀!</p>
页: [1]
查看完整版本: [ STM32F4-discovery开发板测评 ] 电子时钟