CH554评测:硬件SPI点亮Nokia5110液晶
继续对CH554T板子进行评测,本次测试单片机的硬件SPI接口,社区已经有网友通过软件模拟驱动Nokia5110液晶
本次使用硬件接口来实现。
调试硬件SPI前先用软件模拟实现显示,先上两张软件驱动显示效果,使用接口为P1.1-P1.5。
硬件连接如下:
SCLK = P1^5;
SDIN = P1^4;
LCD_DC = P1^3;
LCD_CE = P1^2;
LCD_RST = P1^1;
下面进如正题,通过硬件SPI接口来实现,首先需要对SPI接口相关寄存器进行配置;
包括时钟、主从模式、引脚配置等
厂家提供的例程中为我们定义好了基本的配置,可以直接使用。
SPI设置函数(例程已给出,可以直接用)
主机模式,发送数据函数
硬件SPI使用的引脚情况如下:
P14-P17,因只用主发送,所以实际P16没有使用
因为Nokia5110液晶接口原因还需要用到两个接口RST和DC(复位端口与数据/命令选择端口)
测试中使用了P11、P13(自定义,可以根据需要
此内容由EEWORLD论坛网友zhang7309原创,如需转载或用于商业用途需征得作者同意并注明出处
修改);实际使用的也是5个IO(P11、P13、P14、P15、P17)
程序及编译界面
液晶驱动程序中可直接调用硬件SPI发送数据函数,
程序下载界面
显示效果
小结:SPI使用比较方便,厂家提供了相关配置函数可以直接调用;对于驱动5110液晶模块与软件模拟驱动相比,硬件SPI可以设置数据发送速率(通过设置分频实现);当然软件模拟SPI其用到的IO口相对更灵活。
教你玩转Nokia 5110液晶屏
液晶显示模块具有体积小、显示内容丰富、超薄、轻巧等优点,在嵌入式系统,尤其是低功耗场合中,得到越来越广泛的应用。目前,市场上比较常见的液晶显示屏有LCD1602、LCD12232、LCD12864等,但这几款液晶屏的功耗都比较高,本文将介绍一款低功耗的液晶显示模块——Nokia 5110,它是从诺基亚的经典手机Nokia 5110上拆下来的,具有较高的性价比。
Nokia 5110液晶屏(见图23.1)采用串行通信接口与主控制器进行通信,具有84像素×48像素的分辨率,工作电压为2.7~3.3V,在正常工作模式下,电流为240µA,具有掉电模式,特别适合以电池供电的便携式移动设备。
图23.1 Nokia 5110实物图
表23.1 Nokia 5110液晶屏的引脚
硬件电路设计
Nokia 5110液晶屏共有9个引脚,除去电源和地,通信引脚只有5个,功能如表23.1所示。CLK为时钟输入引脚,最高输入频率为4MHz;DIN为串行数据输入引脚,在时钟的上升沿传输;D/C为数据和指令切换引脚,高电平发送数据,低电平发送控制指令;CS为片选引脚,低电平有效;OSC为振荡器引脚,如果使用内部振荡器,需要将该引脚接高电平,如果使用外部振荡器,则直接将该引脚连接外部晶体振荡器;VOUT为供电设置引脚,外接0.1µF电容;RST为复位引脚,用于初始化液晶屏,低电平有效。
Nokia 5110液晶的串行通信接口只需要简单的几个阻容元件即可工作,电路如图23.2所示。使用内部振荡器,OSC引脚直接接高电平,VOUT引脚通过一个0.1µF电容接地。Nokia 5110液晶屏自身并没有背光电路,需要外接几个LED作为背光源,经实际验证表明,以贴片的蓝光或者白光二极管作为背光源,效果比较好,图23.2中共有4路蓝色LED作为背光源。
图23.2 Nokia 5110硬件电路原理图
驱动程序设计
1. 驱动指令
Nokia 5110 液晶屏通过控制D/C 引脚的电平高、低显示数据或者发送控制指令。当D/C为低电平时,输出的是控制指令信息;当D/C为高电平时,输出的是显示数据。由于控制指令数目比较少,因此Nokia 5110内部并没有设置寄存器存储指令,通过指令的数据格式进行识别,指令集如表23.2所示。不同指令的数据格式明显不同,总是在传输字节的某一位置高电平,如X坐标的第7位固定为高电平,Y坐标的第6位固定为高电平。
功能设置指令的PD位用来设置液晶工作模式,当PD为1时,芯片处于掉电模式,消耗电流降低到1.5µA;V位用来设置液晶屏寻址方式,当V为1时,启用垂直寻址方式,当V为0时,启用水平寻址方式,一般启用后者;H位用来控制指令集选择,H为高电平时,使用扩展指令集,H设置为低电平时,使用基本指令集。
显示设置通过D位和E位的组合进行调整,当D、E设置为0、0时,液晶屏显示空白,设置为1、0时,对应普通显示模式,0、1和1、1方式用得比较少。X坐标通过组合X6~X0设置,地址范围为0~83,Y坐标通过组合Y2~Y0设置,地址范围为0~5。
扩展指令集主要用于设置液晶屏的工作参数,可以根据经验进行设置。温度控制一般设置为0x06;偏置系统设置为0x13;Vop用于设置液晶屏操作电压,可通过下式进行计算,其中Vop取值范围为0~0x7F,即Vlcd设置范围为3.06~10.68V。
表23.2 Nokia 5110液晶屏的指令集
2. 程序设计
Nokia 5110 液晶屏的驱动程序包括初始化、清屏、显示字符、显示汉字、显示图形等函数,用户也可以根据需要开发新的接口程序。首先来看一下Nokia 5110液晶屏的时序图(见图23.3),在CS片选线的低电平有效期间发送数据,图中用圆圈标注的地方表示上升沿传输数据或者指令,传输数据高电平在先、低电平在后。串行总线发送多个字节的时序图,如图23.4所示。
图23.3 串行总线传送1个字节
图23.4 串行总线传送多个字节
这里以STC89C51 单片机为例,介绍Nokia 5110 液晶屏的驱动过程,如果采用AVR 或STM32 等自带 SPI 接口的单片机,可以通过 SPI 串行接口直接与 Nokia 5110 液晶屏通信。STC89C51单片机没有SPI接口,通过I/O口进行模拟也很方便。
鉴于篇幅关系,函数不再一一介绍,有需要的读者可以从qq群657864614上下载源代码。
应用案例
由于Nokia 5110液晶屏本身不含有字库,因此实际应用过程中,需要用户自己做字库、图形文件,存储在嵌入式处理器或者外部的存储器中。如果显示字符信息,字模大小一般设置为6像素×8像素,则每行可以显示14个字符,显示6行,一共84个字符。
这里向大家介绍一款不错的字模软件——3310液晶显示屏汉字提取程序,其界面如图23.5所示,该软件可以很方便地制作出12像素×12像素与16像素×16像素大小的汉字字库。如果用户需要制作其他格式的字库,可以使用Zimo21软件,该软件功能强大,除了制作字库,还可以生成图片的HEX代码。
通过STC89C51单片机运行如下主程序,即可显示汉字和图形,如图23.6和图23.7所示。用户可以参照本文,很方便地将Nokia 5110液晶屏应用到自己的产品设计中。
main(void)
{
LCD_init();//初始化液晶
LCD_clear();//清屏
while(1)
{
LCD_write_english_string(0,0," Nokia5110 LCD ");//显示字符
LCD_write_chinese_string(15,2,12,4,0,2);//显示汉字
LCD_write_chinese_string(1,4,12,6,4,2);//显示汉字
//LCD_draw_bmp_pixel (0,0,picture1,40,40);//显示图形1
//LCD_draw_bmp_pixel (42,0,picture2,40,40);//显示图形2
}
}
图23.5 3310液晶显示屏汉字提取程序
图23.6 Nokia 5110液晶屏显示汉字
图23.7 Nokia 5110液晶屏显示图形
相关问答
帮个忙同志们十万火急!兰州哪里有售ADC发泡剂原料今日价格,...[回答]ADC0809是带有8位A/D转换器、8路多路开关以及微处理机兼容的控制逻辑的CMOS组件。它是逐次逼近式A/D转换器,可以和单片机直接接口。(1)ADC0809的内...