LPC1752控制LCD显示的原理与实现 @一板网 2015-5-13 1. 概述 本文档主要介绍LPC1752通过串行方式控制LCD的原理,对相关实现函数进行介绍,并进行测试。其中LCD采用的型号是COG12864B,是宝昌利电子推出的一款图形点阵液晶模块,主控型号采用ST7565R,采用COG封装。
2. 连接方式 LPC1752与LCD的连接方式如图1,其中P1.31连接LCD的片选信号CS(低有效);P1.0连接LCD的复位信号RST(低有效);P0.25连接LCD的命令数据选择端A0;P0.26连接LCD的串行模式时钟端DB6(SCL);P1.30连接LCD的串行模式数据端DB7(SI)。
图1 LPC1752与COG12864B连接图
3 驱动模块简介 3.1 定义 与LCD控制信号引脚相关的GPIO定义,包含P1.31、P1.0、P0.25、P0.26、P1.30。
LCD控制信号的操作定义:
LCD相关指令定义:
3.2发送数据函数lcd_write 向LCD的存储单元写入数据就能在图形上显示。写入过程应按照说明书及ST7565芯片手册上的时序图实现,如图3、图4所示。lcd_write函数的实现过程是:CS清零,SCL清零,将需要显示的数据发送到SI,SCL置位,发送下一个数据,发送完成后CS置位,SCL置位。具体实现代码见图2.
图2 lcd_write函数
图3 COG12864B串行时序 (Serial interface)图
图4 ST7565的串行控制时序图
3.3 LCD液晶屏初始化函数lcd_init() lcd_init()主要完成对GPIO的初始化、复位液晶屏、初始化液晶屏的状态。 初始化GPIO主要是设置GPIO为高电平的输出引脚。 初始化液晶屏的指令: LCD_Soft_Reset(0xE2)该指令初始化LCD模块的参数,其中包括显示起使行,列地址,页地址,ADC,内部分压电阻比等。 LCD_Bias_Set(0xA2)该指令设置LCD 的偏压比。 LCD_SET_ADC_Select(0xA0)该指令能够使显示RAM 的列地址和段驱动的输出反向。相当于左右反转。0xA0表示正向安装。 LCD_SET_Output_Mode(0xC0)该指令设置显示RAM 的行地址的输出反向。相当于上下反转。0xC0表示正向安装。
图5 lcd_init()函数
3.4 清屏函数ST7565_fill ST7565_fill函数主要是对LCD进行清屏操作,写入0x00是全白显示,写入0xFF是全部反白显示。具体实现代码见图6。
图6 lcd_fill函数
3.5 显示字符函数disp_char disp_char函数显示ASCII字符,字符集放置在font8x16数组中。先处理显示字符上部的数据,再处理显示字符下部的数据。具体实现代码见图7。
图7 disp_char函数
3.6 显示汉字函数disp_hz 汉字字模显示数据结构体FNT_GB16:
图8 FNT_GB16结构体 disp_hz函数通过轮询font_GB16字符集中的Index[2],如果查找到匹配汉字,则显示该汉字对应的Msk[32],否则显示最后一个汉字对应的Msk[32]。具体实现代码见图9。
图9 disp_hz函数
3.7显示字符串函数disp_str disp_str函数依次查询字符串中的字符,如果属于ASCII,则调用disp_char函数,否则调用disp_hz函数。具体实现代码见图10。
图10 disp_str函数
4 测试 测试程序主要是在液晶屏的第2行第32列显示“你好,World!”。具体实现代码见图11。
图11 测试程序main函数
|