当前位置:   article > 正文

基于STM32的电子时钟设计,代码开源!!!_mdk实现电子钟显示

mdk实现电子钟显示


前言

使用STM32+ESP32开发一个电子时钟,拥有时钟显示,报警,自动对时等功能的电子时钟


一、运行环境及硬件参考

  1. MCU:STM32F103
  2. 通信:串口通信,波特率:115200、数据位:8、停止位:1、校验:None
  3. 开发软件:keil mdk
  4. 主要硬件连接:stm32与esp32通过串口相连
  5. 按键:SLLB510100,显示屏:VFD

二、硬件设计

1.原理图

硬件原理图如下,仅供参考,如有误,提示提出:
在这里插入图片描述
硬件资源:MCU、ESP32、usb、温度传感器、按键、蜂鸣器、VFD屏,晶振电路,复位电路。
友情提示,各位在焊接时,一定检查是否有虚焊,否则会像我一样,焊接第一版时,发现不能下载程序,一直怀疑是硬件问题,其实是晶振电路中,MCU其中一个引脚没有焊接好导致的,谨记!!!

2.硬件实物

硬件焊接后的实物如图:
实物背面如下,由于器件没有到全,所有没有焊接esp32和蜂鸣器在这里插入图片描述
正面就是一个vfd屏幕,这里简单搞了个驱动程序,可以看看效果,还是比较不错的在这里插入图片描述

三、软件设计

3.1 VFD驱动原理


VFD显示屏,8位5x7点阵
这里我使用的是SPI控制方式,引出了SPI引脚,默认使能高压电压转换,可以通过EN引脚置低电平关闭。根据使用手册列出以下命令,方便控制程序编写:

命令 功能
0x20 写入数据控制RAM命令
0x40 写入字符生成器RAM命令
0x60 写入附加数据RAM命令
0x80 写入通用数据RAM命令
0xE0 设置显示计时命令
0xE4 写入亮度控制数据命令
0xE8 显示灯正常操作
0xEA 将所有显示灯设置为关闭
0xE9 设置所有显示灯亮起
0xEC 待机模式关闭,正常操作模式
0xEC 待机模式开启,省电

且给出运行流程图:
在这里插入图片描述
这个流程图显示了从接通电源到显示器亮起的基本流程。接通电源后,将2和3中的值设置为所使用的每个VFD的固定值。

3.2 VFD驱动程序

3.2.1 驱动指令编写

/* 引脚宏定义,置高或者置低 */
/** DA */
#define clrDA()     GPIO_ResetBits(VFD_DA_PORT, VFD_DA_PIN)
#define setDA()     GPIO_SetBits  (VFD_DA_PORT, VFD_DA_PIN)
/** CP */
#define clrCP()     GPIO_ResetBits(VFD_CP_PORT, VFD_CP_PIN)
#define setCP()     GPIO_SetBits  (VFD_CP_PORT, VFD_CP_PIN)
/** #CS */
#define clrCS()     GPIO_ResetBits(VFD_CS_PORT, VFD_CS_PIN)
#define setCS()     GPIO_SetBits  (VFD_CS_PORT, VFD_CS_PIN)
/** High voltage switch operation */
#define clrHON()    GPIO_ResetBits(VFD_HON_PORT, VFD_HON_PIN)
#define setHON()    GPIO_SetBits  (VFD_HON_PORT, VFD_HON_PIN)
/** #RST */
#define clrRST()    GPIO_ResetBits(VFD_RST_PORT, VFD_RST_PIN)
#define setRST()    GPIO_SetBits  (VFD_RST_PORT, VFD_RST_PIN)

/* VFD命令 */
/** VFD 8-MD-06INKM  CMD */
#define Write_DCRAM_CMD     0x20    /* Write Data Control RAM Command */ 
#define Write_CGRAM_CMD     0x40    /* Write Character Generator RAM Command */ 
#define Write_ADRAM_CMD     0x60    /* Write Additional Data RAM Command */ 
#define Write_URAM_CMD      0x80    /* Write Univeral Data RAM Command */ 
#define Set_Timing_CMD      0xE0    /* Set Display Timming Command */ 
#define Set_Dimming_CMD     0xE4    /* Write Brightness Control Data Command */ 
#define Light_Normal_CMD    0xE8    /* Display Light Normal Operation */ 
#define Light_Off_CMD       0xEA    
  • 1
  • 2
  • 3
  • 4
  • 5
  • 6
  • 7
  • 8
  • 9
  • 10
  • 11
  • 12
  • 13
  • 14
  • 15
  • 16
  • 17
  • 18
  • 19
  • 20
  • 21
  • 22
  • 23
  • 24
  • 25
  • 26
声明:本文内容由网友自发贡献,不代表【wpsshop博客】立场,版权归原作者所有,本站不承担相应法律责任。如您发现有侵权的内容,请联系我们。转载请注明出处:https://www.wpsshop.cn/w/Monodyee/article/detail/294617
推荐阅读
相关标签
  

闽ICP备14008679号