|
工作电压低、功耗小、微型化、易与集成电路匹配、驱动简单、寿命长、耐冲击、性能稳定。传统LED多以51单片机控制为主,但是由于这类单片机的运行速度、功耗等问题,已经难以满足显示区域较大、显示内容相对复杂的应用场合。文章针对上述问题,研究的是基于STM32的LED电子屏的显示,不论对自己就业还是对我国LED显示技术的发展都有非常现实与积极的意义。
1 系统总体设计
LED显示系统主要由上位机、无线传输模块、单片机、时钟芯片及点阵显示模块组成,总体框图如图1所示。系统通过上位机进行信息的传输并对其中任意一块点阵屏进行控制,从而显示出汉字、图形等。
文章说的LED显示指的是LED图文显示,LED图文屏的主要特点是控制LED中的二极管的通断,而不控制LED发亮程度。不管是图形还是文字,都与组成这些图形或文字的各点所在位置相对应的LED是否发光有关。
2 系统硬件设计
2.1 核心控制模块
本系统采用ST公司推出的STM32F103VET6,内置高速存储器(64K RAM,512K Flash),具有100引脚LQFP封装。STM32采用ARM最新的Cortex-M3内核,处理速度可达72MHz,其ROM和RAM也是目前同类型板载主芯片中容量最大的。具有丰富的I/O资源,而且其外围电路简单,在片内即可实现所有控制。STM32F103VET6共有80个通用I/O端口,4 个定时器,2 个 I2 C 接口,3个 UART 接口,2个 SPI 接口,为以后的扩展提供了条件。
2.2 无线传输模块
HC-12无线串口通信模块是新一代的多通道嵌入式无线数传模块。模块最大发射功率为100mW(20dBm),5000bps空中波特率下接收灵敏度-116dBm,开阔地1000米的通信距离。产品特点:远距离无线传输,工作频率范围(433.4-473.0MHz,多达100个通信频道),发射功率(可设置8档功率),其原理图如图2所示。
图2中,一共有9个引脚,其中引脚1接直流电源3.2-5.5V;引脚2、7、8接公共地;引脚3为数据接收端RXD口;引脚4为无线数据发送端TXD口;引脚5通过SW1接地进入参数设置状态,悬空则退出;引脚6为天线接口;引脚9无连接,用于固定。
2.3 时钟模块
本系统采用单片机自身携带的时钟模块。RTC可以通过STRB/LDRB指令将8位BCD码数据送至CPU,这些BCD数据包括秒,分,时,日期,星期,月和年。能够为人们提供精确的实时时间,或者为电子系统提供精确的时间基准。其原理框图如图3所示。
图3中,RTC由两部分组成:APB1接口部分以及RTC核心部分。RTC核心部分又分为预分频模块和一个32位的可编程计数器。首先,通过设置寄存器RCC_APB1ENR的PWREN和BKPEN位来打开电源和后备接口的时钟;其次,电源控制寄存器(PWR_CR)的DBP位来使能对后备寄存器和RTC的访问;接着,初始化复位BKP寄存器;然后,设置RTCCLK;将RTC输入时钟选择为LSE时钟输入并使能RTC,等待RTC和APB时钟同步;最后,配置RTC时钟参数。
2.4 点阵屏模块
该系统有两块16*64LED点阵屏。每一块采用16个LED8*8显示屏,构成16行*64列点阵显示模块。采用74HC138三-八译码器和74HC595移位寄存器。一个16*64的显示屏可以显示各种文字或单色图像,全屏能显示4个汉字。由138和595的信号,控制二极管的亮、灭来显示出所要求的字符、汉字。
在图4中,列驱动采用移位寄存器74HC595芯片,一块16*64的点阵屏需要8片74HC595。可以把串行输入的8位数据并行输出,第1片595的串行输出接到第2片595的串行输入端,同理,其他引脚的连接方式一样,通过这种级联的方式,把8个595芯片连在一起,同时每个595芯片的并行输出连接8个LED的列。
行驱动采用74HC138和74HC4953芯片,需要两片138和8片4953。74HC138功能是控制扫描的,输入A、B和OE信号输出4个信号来控制2片4953。2片138的16路输出分别通过4953的驱动用于选通相应的行,实现对行的控制。
3 系统软件设计
系统软件由在单片机主控程序协调下,由通信程序;时针修改及读取程序;点阵信息显示程序等组成。
3.1 总体软件流
LED显示主要流程如图6所示。一开始主程序需要进行初始化。然后可以校准时间并显示;确认按键之后获取的内容,即可显示;上位机数据传输至下位机进行显示。
3.2 子程序设计
3.2.1时钟模块初始化部分程序编写
void RCC_Config(void)
{
SystemInit();
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC, ENABLE);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOD, ENABLE);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);
RCC_APB2PeriphClockCmd(RCC_APB2Periph_AFIO, ENABLE);
}
3.2.2 LED显示缓冲部分程序编写
u8 DisBuf[16][LedNum_X + 2]; /* 显示缓冲区 */
unsigned char EffectBuf[16][LedNum_X];/* 效果缓冲区,用于实现不同显示效果 */
3.2.3 无线模块程序编写
模块参数设置AT指令
测试指令:AT
更改串口波特率指令:AT+Bxxxx
更改模块串口通透模式:AT+FUx
获取模块所有参数:AT+Rx
设置串口通信的数据位数、检验位、停止位:AT+Uxxx
4 系统调试结果
文章完成了系统的软、硬件设计,包括各个硬件模块电路设计和软件中系统初始化、传输数据、显示驱动程序,设置了无线模块、字模提取。实现了LED的显示功能,下图为STM32控制显示屏的显示效果。
5 结束语
文章介绍了基于STM32的LED显示系统的硬软件构成,该系统采用STM32F103为控制核心,传递数据,用74HC138三-八译码器和74HC595移位寄存器来驱动两块16*64点阵屏,对其中任意一块点阵屏进行控制,从而显示出汉字、ASCⅡ码字符等。
参考文献
[1]李志明,檀永,等.STM32嵌入式系统开发实战指南[M].北京:机械工业出版社,2013.
[2]韩旭,王娣.C语言从入门到精通[M].北京:清华大学出版社,2010.
[3]马忠梅,等.单片机的C语言应用程序设计[M].北京:北京航空航天大学出版社,2007.
[4]任全会,黄根岭.基于STM32LED书写点阵屏设计与实现[J].郑州铁路职业技术学院学报,2012,24(1):34-36.
[5]林秀明,秦德茂,等.基于STM32实现多区域显示的LED点阵屏的设计[J].西部交通科技,2015,5(94):75-82.
[6]刘志龙,吴昊.STM32F103ZET6芯片在LED显示屏控制应用中的探索[J].科技创新与应用,2014(4):30-31. |
|