基于STM32电子秤系统的设计与实现

开始初始化显示固定界面根据数值的改变刷新显示结束 图4-2 TFT触控液晶模块程序流程图

TFT触控液晶屏的初始化包括主控芯片与模块相连IO口工作模式的设置和显示驱动芯片ILI9320的初始化,其具体设置如下:

IO口PB0~15作为液晶显示的数据口,采用16位并行方式连接。当主控芯片从模块读数据时设置为上拉输入模式,写数据时设置为上拉输出模式。其余引脚如8080并口的信号线CS、WR、RD和RS都设为推挽输出模式[11]。对于显示驱动芯片ILI9320的初始化,首先读取TFTLCD的控制芯片的型号,然后再根据具体型号向芯片写入一系列的特定命令,例如开启振荡器、设置纵向26万色显示、设置纵向更新GRAM等,然后启动TFTLCD的显示,整屏填充白色[13]。

在程序工程中初始化函数为:void LCD_Init(void)。通过函数将字符和数字显示到TFTLCD模块上。本设计编写的各个功能函如下:

显示数字的函数:void LCD_ShowNum(u16 x,u16 y,u32 num,u8 len,u8 size,u8 mode);

显示一个字符串的函数:void LCD_ShowString(u16 x,u16 y,const u8 *p); 显示汉字的函数:void Show_Str(u16 x, u16 y, u8 *str, u8 mode); 绘制矩形的函数:void LCD_DrawRectangle(u16 x1, u16 y1, u16 x2, u16 y2); 系统显示界面如图4-3。

- XXI -

图4-3 开机前的初始化界面

图4-4 使用时的主界面

TFT触控液晶屏的触控部分程序流程如图4-5。

- XXII -

开始初始化是否有校正值YN校正是否触摸?Y中断服务函数N结束

图4-5 触控部分程序流程图

在初始化程序中主要执行TFT触控液晶模块和主控芯片连接的IO配置和中断初始化,触控芯片XPT2046与主控芯片采用模拟SPI通讯,接口MOSI、SCK、CS都设为推挽输出模式,SPI的MISO和触控标志PEN设置为上拉输入模式。此外还初始化了外部中断,当有触控动作时,触控动作产生的下降沿会触发中断,进而执行中断服务函数[11]。中断服务函数中包括了键值扫描(根据触摸位置返回不同键值)和一些设置界面的标志位处理。

在初始化完后还要进行触控点和液晶显示位置的匹配。每触摸一次屏幕,触控芯片XPT2046都会得出一个触控点坐标,液晶屏自身有像素坐标,这两个坐标之间的关系是线性的,因此计算公式如下:

XLCD=Xfac*Px+xoff; YLCD=Yfac*Py+yoff。

式中的XLCD和YLCD是液晶屏上的像素坐标;Xfac和Yfac是触摸屏上读出的触控点坐标;Px和Py分别为两坐标的比例系数;xoff和yoff是横向和纵向的偏移量。

在程序工程中关于触控的主要功能函数如下: 触控初始化函数:void Touch_Init(void); 触控点校准程序:void Convert_Pos(void); 触控键值扫描函数:u8 touch_scan(void)。

- XXIII -

4.2.2 WT588D语音模块部分

在使用WT588D语音模块前需要将语音块下载到模块中,然后再通过主控芯片向WT588D芯片发送命令,WT588D调用flash的语音进而发音。

本设计中使用语音合成软件合成0~9、十、百、千和各个商品等的读音,然后通过VoiceChip V-B编译软件来建立语音工程,将各个语音块对应到flash的固定地址,然后编译下载到WT588D语音模块中。VoiceChip V-B的语音工程如图4-6。

图4-6 VoiceChip V-B建立的语音工程

WT588D语音模块与主控芯片之间采用一线串口通讯模式,主控芯片通过模块的DATA脚发送指令

>>展开全文<<
12@gma联系客服:779662525#qq.com(#替换为@) 苏ICP备20003344号-4