电子时钟设计
前言
一、运行环境及硬件参考
二、硬件设计
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
好文链接
发表评论