电子时钟设计

前言

一、运行环境及硬件参考

二、硬件设计

1.原理图

2.硬件实物

三、软件设计

3.1 VFD驱动原理

3.2 VFD驱动程序

3.2.1 驱动指令编写

3.2.2 屏幕初始化

3.2.3 显示数字

3.2.4 定时显示

3.3 按键

3.4 esp32获取时间

3.4.1 wifi模块初始化

3.4.2 从服务器获取时间

四、总结

前言

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

一、运行环境及硬件参考

MCU:STM32F103

通信:串口通信,波特率:115200、数据位:8、停止位:1、校验:None

开发软件:keil mdk

主要硬件连接:stm32与esp32通过串口相连

按键: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

好文链接

评论可见,请评论后查看内容,谢谢!!!
 您阅读本篇文章共花了: