赞
踩
使用STM32+ESP32开发一个电子时钟,拥有时钟显示,报警,自动对时等功能的电子时钟
硬件原理图如下,仅供参考,如有误,提示提出:
硬件资源:MCU、ESP32、usb、温度传感器、按键、蜂鸣器、VFD屏,晶振电路,复位电路。
友情提示,各位在焊接时,一定检查是否有虚焊,否则会像我一样,焊接第一版时,发现不能下载程序,一直怀疑是硬件问题,其实是晶振电路中,MCU其中一个引脚没有焊接好导致的,谨记!!!
硬件焊接后的实物如图:
实物背面如下,由于器件没有到全,所有没有焊接esp32和蜂鸣器
正面就是一个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的固定值。
/* 引脚宏定义,置高或者置低 */ /** 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
Copyright © 2003-2013 www.wpsshop.cn 版权所有,并保留所有权利。