Nokia5110液晶屏完全新手学习笔记(一)

合集下载

NOKIA5110

NOKIA5110

Nokia5110 液晶应用
贴子发表于:2007/5/9 21:09:15
欢迎参与调查
背景:Nokia5110 的电路板在寒假回家的时候就已经画了一个版本了,当时是抄板,抄basic-avr上阿贵的板子,但是由于5110是导电胶模式的接口,测量有点失误,导致失败了,回来后不甘心,联系阿贵问怎么回事,没想到阿贵把5110的lib文件给我了,在此表示感谢,重新绘制电路板,终于搞定了!
综述:Nokia5110 是一款我认为很有市场和性价比很好的液晶产品,他是Nokia手机上的液晶屏,3.3v电压供电,唯一的缺点是没有背光,需要自己加LED作为背光,价格上绝对有优势,LCD1602 市场价格20~25元不等,而5110的裸屏价格为12元,(basic-avr上有卖)自己做一个电路板接口,再加上2个背光LED,估计也就20元左右,虽然没有字库,但是作为点阵型的液晶还是比字符的要好很多,起码做一个字符的字符浪费不了多少资源的,还可以显示开机图片动画或者中文菜单提示等等,介绍就到这里吧。

看看我的电路板图片,糟了,画的8个板子都焊接上了,没有pcb板子了,直接上传最终的效果吧!
第一张,用Study-3 开发板调试现象
第二张,来个近镜头
第三张,没有背光的效果
打算移植到msp430单片机上,板子上一共有8跟线,5跟接口线,电源、地、背光。

单片机之路—诺基亚5110LCD显示屏驱动

单片机之路—诺基亚5110LCD显示屏驱动

单片机之路—诺基亚5110LCD显示屏驱动电子产品在很多场合都需要提供和用户交互的人机界面,具备人机交互界面的电子产品可以给用户更好的使用,让电子产品更加直观。

今天给大家讲一个性价比很高的LCD显示器——诺基亚5110LCD。

可能很多人奇怪,为什么这个LCD显示屏被叫做诺基亚5110,那是因为这个显示屏诺基亚经典机型5110手机上使用的现实屏。

就是下图这部手机,曾经的经典。

记得第一部手机就是诺基亚的,那会还在读初中,宿舍的同学总是抢着来打贪吃蛇,打到满屏。

电子产品的更新换代实在太快了,现在已经很难找到这个手机的踪影了。

诺基亚5110手机5110LCD是一个84X48的点阵LCD,可以显示4行汉字。

和单片机的接口不是很复杂,是一个没有MISO只有MOSI的SPI协议。

用于通信的数据线是4根,其中有一根是用于设定传入的数据是命令还是数据的选择端口。

下图是在马云家买的一个诺基亚5110LCD模块,总共有8个引脚。

用于通信的引脚为4个,1个复位引脚,2个电源引脚,1个是背光灯控制引脚。

因为诺基亚LCD本身是不会发光的,为了能够在晚上也能够看到液晶显示屏显示的内容,需要增加背光灯。

诺基亚5110实物图和引脚描述我们把LCD需要单片机控制的5个引脚连接到单片机的P1口,背光灯通过一个电阻接到VCC5V,让背光灯保持常亮的状态,也可以接到单片机的引脚上去,通过单片机控制背光灯的亮灭。

5110LCD与单片机接口图我们来看一下怎么写程序驱动诺基亚5110,实现在5110上显示出字符。

由于接通电源后,LCD内部的RAM数据状态是不确定的,所以我们需要给LCD复位一下。

5110LCD复位时序//产生一个复位脉冲Lcd_res=0;delay_us();Lcd_res=1;我们需要往LCD写数据,SPI的写时序如下,这里实现的是通过单片机IO口模拟SPI时序,如果单片机有硬件的SPI接口是可以用来驱动的5110LCD的。

诺基亚5110学习(含字库,免财富)

诺基亚5110学习(含字库,免财富)

0x3C, 0x4A, 0x49, 0x49, 0x30, 0x01, 0x71, 0x09, 0x05, 0x03, 0x36, 0x49, 0x49, 0x49, 0x36, 0x06, 0x49, 0x49, 0x29, 0x1E, 0x00, 0x36, 0x36, 0x00, 0x00, 0x00, 0x56, 0x36, 0x00, 0x00, 0x08, 0x14, 0x22, 0x41, 0x00, 0x14, 0x14, 0x14, 0x14, 0x14, 0x00, 0x41, 0x22, 0x14, 0x08, 0x02, 0x01, 0x51, 0x09, 0x06, 0x32, 0x49, 0x59, 0x51, 0x3E, 0x7C, 0x12, 0x11, 0x12, 0x7C, 0x7F, 0x49, 0x49, 0x49, 0x36, 0x3E, 0x41, 0x41, 0x41, 0x22, 0x7F, 0x41, 0x41, 0x22, 0x1C, 0x7F, 0x49, 0x49, 0x49, 0x41, 0x7F, 0x09, 0x09, 0x09, 0x01, 0x3E, 0x41, 0x49, 0x49, 0x7A, 0x7F, 0x08, 0x08, 0x08, 0x7F, 0x00, 0x41, 0x7F, 0x41, 0x00, 0x20, 0x40, 0x41, 0x3F, 0x01, 0x7F, 0x08, 0x14, 0x22, 0x41, 0x7F, 0x40, 0x40, 0x40, 0x40, 0x7F, 0x02, 0x0C, 0x02, 0x7F, 0x7F, 0x04, 0x08, 0x10, 0x7F, 0x3E, 0x41, 0x41, 0x41, 0x3E, 0x7F, 0x09, 0x09, 0x09, 0x06, 0x3E, 0x41, 0x51, 0x21, 0x5E, 0x7F, 0x09, 0x19, 0x29, 0x46, 0x46, 0x49, 0x49, 0x49, 0x31, 0x01, 0x01, 0x7F, 0x01, 0x01, 0x3F, 0x40, 0x40, 0x40, 0x3F, 0x1F, 0x20, 0x40, 0x20, 0x1F, 0x3F, 0x40, 0x38, 0x40, 0x3F, 0x63, 0x14, 0x08, 0x14, 0x63, 0x07, 0x08, 0x70, 0x08, 0x07, 0x61, 0x51, 0x49, 0x45, 0x43, 0x00, 0x7F, 0x41, 0x41, 0x00, 0x55, 0x2A, 0x55, 0x2A, 0x55, 0x00, 0x41, 0x41, 0x7F, 0x00, 0x04, 0x02, 0x01, 0x02, 0x04, 0x40, 0x40, 0x40, 0x40, 0x40, 0x00, 0x01, 0x02, 0x04, 0x00, 0x20, 0x54, 0x54, 0x54, 0x78,

关于Nokia5110液晶显示黑屏或者白屏的解决办法

关于Nokia5110液晶显示黑屏或者白屏的解决办法

关于Nokia5110液晶显示黑屏或者白屏的解决办法——艾米电子赵亮1/3/2013Nokia5110是一款非常经典的液晶显示模块,本人从07年开始接触这款屏,至今已经有5年多的时间。

这里有几点调试的心得体会跟大家分享一下。

(1)该屏目前都是拆机件,没有全新,只不过是产品的成色问题。

(2)驱动的话,目前估计任何处理器的版本都能找到了,我这里提供51的程序下载,如有需要请与我联系。

(3)导电胶条,很多人都认为全新的导电胶条最好,从我的经验来讲,这个胶条有一个对应关系有的时候换一换就搞定了。

这是我测试的经验,一般测试100个屏,首次成功率有80%左右,剩余的20个屏调换一下液晶底板重新再测试,还能有10个以上调试通过,最后剩余的几个通过换导电胶条的方式也能搞定。

我测试的成功率目前是95%以上,从我手里经过的每一个屏都亲自测试过。

年销量大约8000片左右。

(4)就像我在上一条中提到的,这个屏是通过导电胶条接触的,在运输过程中因震动等原因造成的接触松动是常有的事,所以网友在测试的时候,一定首先要确保液晶接触良好,可以通过手轻微的碰一碰观察看看效果,另外可以拆下来重新装上也可以的。

后面有四个金属固定卡槽,用镊子或者尖嘴螺丝刀一碰就可以查下来,然后调整一下位置重新装上。

以上几点不是我今天要说的重点,最近几次通过客户反映、自己总结以及与供货商沟通发现一个规律,为此总结一下,希望能够解决部分问题。

主要是针对一部分应显示黑屏的问题。

以前一直没注意,其实这款液晶初始化的时候有参数可以调整对比度。

如图1所示,基本上市场上的液晶可以分为两种:(1)以LPH7366-x开头的一行字符信息,如图中1~5。

(2)不带有这行信息的如图中6所示。

图 1 5110液晶实物图一般来讲,图中6的液晶比较好驱动,用默认程序就可以点亮,而LPH7366-x开头的液晶有的时候会遇到黑屏或者有黑影的情况,此时可以通过驱动程序初始化进行调整:LCD_write_byte(0xc8, 0); // 设置偏置电压LCD_write_byte(0x06, 0); // 温度校正LCD_write_byte(0x13, 0); // 1:48图 2 液晶初始化参数如果遇到黑屏,可以调整第1行程序的参数,将0xc8进行调整,范围为0x80~0xFF,可以通过二分法进行凑配,比如设置0xaa或者0xee先看看效果,然后逐渐摸索规律进行修改。

LCD5110模块使用说明

LCD5110模块使用说明
专营各类电子元器件,货源充足,欢迎采购!
专营各类电子元器件,货源充足,欢迎采购!
注意:JP1为背光LED负极与电源负极的跳线,若想给LCD模块供电 的同时点亮背光灯,请短接JP1的焊点,若使用LIGHT脚控制背光灯 就不用短接了。
● 管脚名称及功能:
管脚编号 管脚名称功能1来自RST 复位2
CE 片选
专营各类电子元器件,货源充足,欢迎采购! LCD5110模块使用说明
●电源供电电压:2.7—3.3V,也可使用5V,但是经测试在5V供电时 部分屏幕背景颜色发黑。 ●数据接口电平:2.7—5V ●背光电源电压:背光电源最高3.3V ●模块尺寸大小:43.6mm×43.1mm(横×竖) ●安装孔径大小:2mm ●电路原理图:
3
DC 数据/指令选择
4
DIN 串行数据线
5
CLK 串行时钟线
6
3.3V 电源正极
7
LIGHT 背光控制,接地时背光灯亮。
8
GND 电源负极

诺基亚5110液晶显示器应用课程设计

诺基亚5110液晶显示器应用课程设计

单片机原理及应用课程设计电气工程学院一、课程设计任务书1.课程设计项目诺基亚5110液晶显示器应用。

2.设计内容1)设计诺基亚5110液晶显示器应用的总体设计方案;2)以MCS-51系列单片机为核心器件和诺基亚5110液晶显示器组成液晶显示硬件系统;3)系统程序编制与调试;4)电路系统的综合调试;5)撰写课程设计论文;6)完成课程设计论文答辩。

3.设计要求1)以STC89C51单片机为控制核心,对诺基亚5110液晶显示器进行控制。

编程使得在LCD显示器上显示字符,如多行滚动显示:“吉林工程技术师范学院”“电气工程学院”。

等字符,还可以显示别的文字;2)单片机课程设计题目的硬件电路、程序由学生自行设计完成。

3)液晶显示器上要显示出设计人的班级,组长的学号等信息。

4.设计进度(2011年6月13日至2011年6月24日)时间设计内容第1-2天查阅资料,方案比较、设计与论证,理论分析与计算第3-5天硬件电路调试第6-8天系统调试第9-10天书写报告、答辩5.设计地点新实验楼323微机实验室二.参考资料[1]李广弟,朱月秀,王秀山编著.单片机基础. 北京:北京航空航天大学出版社,2001[2] 何立民编著.MCS-51系列单片机应用系统设计系统配置与接口技术.北京:北京航空航天大学出版社,1999[3] 蔡美琴等编著.MCS-51 单片机系统及应用.北京:高等教育出版社.1992二、评语及成绩成绩:指导教师:单片机原理及应用课程设计班级:自动化0845 姓名:刘旭阳学号: 11 号指导教师:方健撰写日期: 2011年6月23日Nokia LCD多功能显示摘要液晶显示器件[1](LCD)是一种高新技术的基础元器件。

它利用液晶的各种电光效应,把液晶对电场、磁场、光线和温度等外界条件的变化在一定条件下转换为可视信号而制成的显示器。

液晶显示器具有低电压、低功耗的特点,与CMOS集成电路相匹配.电池作为电源,适合于便携式显示。

LCD5110_Basic库使用教程

LCD5110_Basic库使用教程
LCD5110_Basic 库的使用语句教程 注解: 语句: LCD5110(SCK,MOSI,DC,RST,CS);//设置引脚 LCD5110 myGLCD(8,9,10,11,12); InitLCD([contrast]);//初始化 myGLCD.initLCD(); setContrast(contrast);//设置对比度(0-127) myGLCD.setContrast(70); enableSleep();//设置睡眠状态 myGLCD.enableSleep(); disableSleep();//关闭睡眠状态 myGLCD.disableSleep(); clrScr();//清屏 myGLCD.clrScr(); clrRow(row[,start_x[,end_x]]);//清除行的一部分或者整行 myGLCD.clrRow(5,42); invert(mode);//正常显示 myGLCD.invert(false); invert(mode);//倒置 myGLCD.invert(true); print(st,x,y);//显示字符串 myGLCD.print("Hello Wrold",h[,filler]]);//显示整数 myGLCD.printNumI(num, CENTER, 0); printNumF(num,dec,x,y[,divider[,length[,filler]]]);//显示小数 myGLCD.printNumF(num, 3,CENTER, 0); setFont(fontname);//设置字体大小;字符串 myGLCD.setFont(SmallFont); setFont(fontname);//设置数字小 myGLCD.setFont(MediumNumbers); setFont(fontname);//设置数字大 myGLCD.setFont(BigNumbers); drawBitmap(x,y,data,sx,sy);//用于显示自定义字符 myGLCD.drawBitmap(0,0,bitmap,32,32); 打开5110的反相绘制功能 myGLCD.invertText(true); 关闭5110的反相绘制功能 myGLCD.invertText(false);

5110LCD程序

5110LCD程序

5110LCD程序在综合版提供的程序中void LCD_init(void){PORTB &= ~LCD_RST; // 产生一个让LCD复位的低电平脉冲delay_1us();PORTB |= LCD_RST;PORTB &= ~LCD_CE ; // 关闭LCDdelay_1us();PORTB |= LCD_CE; // 使能LCDdelay_1us();LCD_write_byte(0x21, 0); // 使用扩展命令设置LCD模式LCD_write_byte(0xc8, 0); // 设置偏置电压LCD_write_byte(0x06, 0); // 温度校正LCD_write_byte(0x13, 0); // 1:48LCD_write_byte(0x20, 0); // 使用基本命令LCD_clear(); // 清屏LCD_write_byte(0x0c, 0); // 设定显示模式,正常显示PORTB &= ~LCD_CE ; // 关闭LCD}根据datasheet,LCD_write_byte(0xc8, 0);是写Vop到寄存器,但是改变它的值也看不出对程序的影响,不知道Vop6~Vop0各个值的设置对程序有什么影响?代表什么意思?谢谢!偏置电压改变它的对比度,不同批号的5110可能出厂偏置电压不同导致对比度不同,这就是为什么同样的程序有些5110没有显示(对比度太低),有些显示全黑(对比度太高)。

这种情况可以通过程序修改对比度调整。

这个程序是从一个国外网站的例程改过来的,去掉了很多东西,有助于大家理解5110的工作原理和基本显示实现,在家其他显示函数相对简单一些;原例程里的一些东西不好理解。

///////////////////////////以下是代码/////////////////////////////////////////////////////////////////ICC-AVR application builder : 2007-5-3 4:45:38// T arget : M16// Crystal: 1.0000Mhz#include <iom16v.h>#include <macros.h>#define LCD_DC_PIN 0x04 // PB2#define LCD_CE_PIN 0x02 // PB1#define SPI_MOSI_PIN 0x20 // PB5#define LCD_RST_PIN 0x01 // PB0#define SPI_CLK_PIN 0x80 // PB7#define X_Length 45#define X_Init 2#define Y_Init 2/*--------------------------------------------------------------------------------------------------Global Variables0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,10个--------------------------------------------------------------------------------------------------*///字模"FUCK JAPAN"unsigned char const X_TAB[] ={0x7E,0x0A,0x0A,0x0A,0x00,0x7E,0x40,0x40,0x7E,0x00,0x7E,0x42,0x42,0x42,0 x00,0x7E,0x18,0x24,0x42,0x00,0x00,0x00,0x42,0x7E,0x02,0x00,0x7C,0x12,0x1 2,0x7C,0x00,0x7E,0x0A,0x0A,0x0E,0x00,0x7C,0x12,0x12,0x7C,0x00,0x7E,0x08,0x10,0x 7E};/*--------------------------------------------------------------------------------------------------Public function prototypes--------------------------------------------------------------------------------------------------*/void LcdInit ( void );void LcdClear ( void );static void LcdSend ( unsigned char, unsigned char);static void Delay ( void );void LcdGotoXY ( unsigned char, unsigned char );/////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////////// //////////////////////////////////////////////////////////////////////////////////////////////////// //////////*--------------------------------------------------------------------------------------------------Name : LcdInitDescription : Performs MCU SPI & LCD controller initialization.Argument(s) : None.Return value : None.--------------------------------------------------------------------------------------------------*/void LcdInit( void ){//unsigned char Clear;// Pull-up on reset pin,上电复位端口,此时为高,不复位;PORTB |= LCD_RST_PIN;// Set output bits on port B,设置输出口;DDRB |= LCD_RST_PIN | LCD_DC_PIN | LCD_CE_PIN | SPI_MOSI_PIN | SPI_CLK_PIN;Delay();// Toggle display reset pin.PORTB &= ~LCD_RST_PIN; //上电复位;Delay();PORTB |= LCD_RST_PIN; //复位完;// SPI初始化;Enable SPI port: No interrupt, MSBit first, Master mode, CPOL->0, CPHA->0, Clk/4SPCR = BIT(SPE)|BIT(MSTR); //使能SPI,主机模式;//SPSR = 0x00; //似乎不用这几句也能正常运行;//Clear= SPSR;//Clear= SPDR;// Disable LCD controllerPORTB |= LCD_CE_PIN;LcdSend( 0x21, 0 ); // LCD Extended Commands.LcdSend( 0xC8, 0 ); // Set LCD Vop (Contrast).LcdSend( 0x06, 0 ); // Set Temp coefficent.LcdSend( 0x13, 0 ); // LCD bias mode 1:48.LcdSend( 0x20, 0 ); // LCD Standard Commands, Horizontal addressing mode. LcdSend( 0x0C, 0 ); // LCD in normal mode.LcdClear();}/*--------------------------------------------------------------------------------------------------Name : LcdClearDescription : Clears the display.Argument(s) : None.Return value : None.--------------------------------------------------------------------------------------------------*/void LcdClear(void){unsigned int i;LcdSend(0x0c, 0);LcdSend(0x80, 0); //此时默认操作为清屏for (i=0; i<504; i++)LcdSend(0, 1);}/*--------------------------------------------------------------------------------------------------Name : LcdGotoXY 设置块坐标Description : Sets cursor location to xy location corresponding to basic font size. Argument(s) : x, y -> Coordinate for new cursor position. Range: 1,1 .. 14,6 Return value : None.--------------------------------------------------------------------------------------------------*/void LcdGotoXY(unsigned char X, unsigned char Y){LcdSend(0x40 | Y, 0); // columnLcdSend(0x80 | X, 0); // row}/*--------------------------------------------------------------------------------------------------Name : LcdSendDescription : Sends data to display controller.Argument(s) : data -> Data to be sentcd -> Command or data (see/use enum)Return value : None.--------------------------------------------------------------------------------------------------*/static void LcdSend (unsigned char data, unsigned char command){PORTB &= ~LCD_CE_PIN ; // 使能LCDif (command == 0)PORTB &= ~LCD_DC_PIN ; // 传送命令elsePORTB |= LCD_DC_PIN ; // 传送数据SPDR = data; // 传送数据到SPI寄存器while ((SPSR & 0x80) == 0); // 等待数据传送完毕PORTB |= LCD_CE_PIN ; // 关闭LCD}/*--------------------------------------------------------------------------------------------------Name : DelayDescription : Uncalibrated delay for LCD init routine.Argument(s) : None.Return value : None.--------------------------------------------------------------------------------------------------*/static void Delay ( void ){int i;for ( i = -12000; i < 12000; i++ );}/*--------------------------------------------------------------------------------------------------Name : mainDescription :Argument(s) :Return value : None.--------------------------------------------------------------------------------------------------*/void main(void){ unsigned char X; //v=0,按行显示,x对应某个bank(0~83) LcdInit();while(1){LcdGotoXY(X_Init,Y_Init);for(X=0;X<X_Length;X++)LcdSend(X_TAB[X],1);}}。

LCD5110(PCD8544)的使用

LCD5110(PCD8544)的使用

OSC:振荡器当使用芯片内置振荡器时,引脚必须接到VDD(芯片内置振荡器提供显示系统的时钟信号。

)。

使用外部振荡器时则连接到此引脚。

如果OSC 引脚连接到VSS,则禁止内部振荡器及外部振荡器,显示不计时并停留在直流状态。

为避免这种情况,在停止时钟之前使芯片进入关闭模式。

(!!!由原理图可知,OSC接VDD,故默认使用内置振荡器) 振荡器驱动时钟发生器产生驱动内部电路的多种信号。

内部芯片操作不影响数据总线上的操作。

D/C: 模式选择输入:选择命令/地址或输入数据SCE: 芯片使能使能引脚充许输入数据,低电平有效。

RES:复位此信号会复位设备,应用于初始化芯片。

低电平有效。

功能描述地址计数器 (AC)地址计数器为写入显示数据存储器指定地址。

X地址 X6~X0和Y地址Y2~Y0 分别设置。

写入操作之后,地址计数器依照V标志自动加1。

显示状态(所有点开/关和正常/反转映象)通过‘显示控制’命令的E、D位来设置。

寻址列通过地址指针寻址,地址范围为:X:0~83(1010011),Y :0~5(101)。

地址不充许超出这个范围。

在垂直寻址模式(V=1),Y地址在每个字节之后递增.经最后的Y地址(Y=5)之后,Y绕回0,X递增到下一列的地址。

在水平寻址模式(V=0),X地址在每个字节之后递增(见图6),经最后的X地址(X=83)之后,X绕回0,Y递增到下一行的地址。

经每一个最后地址之后(X=83,Y=5),地址指针绕回地址(X=0,Y=0)。

温度补偿由于液晶体的温度依赖,在低温时必须增加LCD控制电压VLCD来维持对比度。

图7展示高速率的VLCD。

在 PCD8544,VLCD的温度系数可以通过设置TC1和TC0位来选择四个值(见表2)。

(例程中选择V LCD温度系数2,即TC1 and TC0为10)串行接口时序指令&数据指令格式分为两种模式:如果D/C(模式选择)置为低,当前字节解释为命令字节。

如果D/C置为高,接下来的字节将存储到显示数据RAM。

液晶显示器学习笔记

液晶显示器学习笔记

液晶显示器学习笔记1.液晶显示器的结构液晶显示器件从结构上说,属于平板显示器件。

其基本结构,呈平板形。

不同类型的液晶显示器件其部分部件可能会有不同,如:相变型、PDLC、多稳态型液晶显示器件没有偏振片,有源矩阵型液晶显示器件在基板上制作有有源矩阵电路等,但是所有液晶显示器件都可以认为是由两片光刻有透明导电电极的基板,夹持一个液晶层,封接成一个偏平盒,有时在外表面还可能贴装上偏振片等构成。

典型液晶显示器件基本结构如图3-7所示。

它主要由偏光片、前玻璃基板、封接边、后玻璃基板、偏光片这几大部分组成,如图3-8所示。

构成液晶显示器件的三大基本部件和特点介绍如下:(1)玻璃基板是一种表面极其平整的浮法生产薄玻璃片。

表面蒸镀有一层In2O3或SnO2透明导电层,即ITO膜层。

经光刻加工制成透明导电图形。

这些图形由像素图形和外引线图形组成。

因此,外引线不能进行传统的锡焊,只能通过导电橡胶条或导电胶带等进行连接。

如果划伤、割断或腐蚀,则会造成器件报废。

(2)液晶材料是液晶显示器的主体。

不同器件所用液晶材料不同,液晶材料大都是由几种乃至十几种单体液晶材料混合而成。

每种液晶材料都有自己固定的清亮点T L和结晶点Ts。

因此也要求每种液晶显示器件必须使用和保存在Ts~T L之间的一定温度范围内,如果使用或保存温度过低,结晶会破坏液晶显示器件的定向层;而温度过高,液晶会失去液晶态,也就失去了液晶显示器件的功能。

(3)偏振片又称偏光片,由塑料膜材料制成。

涂有一层光学压敏胶,可以贴在液晶盒的表面。

前偏振片表面还有一保护膜,使用时应揭去,偏振片怕高温、高湿条件下会使其退偏振或起泡。

2.液晶显示器的工作原理目前使用的最普遍的是扭曲向列TFT液晶显示器(Twisted Nematic TFT LCD),TFT就是“Thin Film Transistor”的简称,一般代指薄膜液晶显示器,而实际上指的是薄膜晶体管(矩阵)——可以“主动的”对屏幕上的各个独立的象素进行控制,这也就是所谓的主动矩阵TFT(active matrix TFT)的来历。

(整理)诺基亚LCD5110液晶接线图和程序

(整理)诺基亚LCD5110液晶接线图和程序

该模块具有以下特点:●84x48 的点阵LCD,可以显示4 行汉字,●采用串行接口与主处理器进行通信,接口信号线数量大幅度减少,包括电源和地在内的信号线仅有9 条。

支持多种串行通信协议(如AVR 单片机的SPI、MCS51 的串口模式0等),传输速率高达4Mbps,可全速写入显示数据,无等待时间。

●可通过导电胶连接模块与印制版,而不用连接电缆,用模块上的金属钩可将模块固定到印制板上,因而非常便于安装和更换。

●LCD 控制器/驱动器芯片已绑定到LCD 晶片上,模块的体积很小。

●采用低电压供电,正常显示时的工作电流在200μA 以下,且具有掉电模式。

LPH7366 的这些特点非常适合于电池供电的便携式通信设备和测试设备中C8051F学习笔记:Nokia 5110驱动Nokia5110是一款经典机型,可能由于经典的缘故,旧机器很多,所以很多电子工程师就把旧机器的屏幕拆下来,自己驱动Nokia5110,用于开发的设备显示,取代LCD1602。

使用Nokia5110液晶的四大理由1)性价比高,LCD1602可以显示32个字符,而Nokia5110可以显示15个汉字,30个字符。

Nokia5110裸屏仅8.8元,LCD1602一般15元左右,LCD12864一般50~70元。

2)接口简单,仅四根I/O线即可驱动,LCD1602需11根I/O线,LCD12864需12根。

3)速度快,是LCD12864的20倍,是LCD1602的40倍。

4)Nokia5110工作电压3.3V,正常显示时工作电流200uA以下,具有掉电模式,适合电池供电的便携式移动设备。

可以在市场上买到Nokia5110的裸屏和带PCB的Nokia5110屏幕,因为Nokia5110是不带背光的,所以通常商家会在PCB上按了几个背光LED,上电就能亮,建议大家还是买那种连上PCB的51 10。

Nokia5110原理图:商家把该引出的管脚都引出了,下面就可以连接C8051F的相应管脚,写程序驱动5110了。

51学习笔记

51学习笔记
AT89C51和AT89S51
51单片机命名法则:
AT代表公司
8代表 8位单片机
9代表 flash储存,若使0代表rom储存 若是7 代表Eprom储存
C代表CMOS工艺,S代表采用ISP编程方式
最后一位1代表 内部程序储存器大小为4K 2代表8K
AT89S51片内含4k Bytes ISP(In-system programmable)的可反复擦写1000次的Flash只读程序存储器,编程功能:AT89C51仅支持并行编程,而AT89S51不但支持并行编程还支持ISP再线编程。在编程电压方面,AT89C51的编程电压除正常工作的5V外,另Vpp需要12V,而AT89S51仅仅需要4-5V即可。AT89C51极限工作频率是24MHZ,而AT89S51最高工作频率是33MHZ,(AT89S51芯片有两中型号,支持最高工作频率分别为24MHZ和33MHZ)从而具有更快的计算速度。
&是取地址符
root是一个普通变量
&root是表示去root的地址
11·
C中的static函数分类
static 函数内部函数和外部函数 当一个源程序由多个源文件组成时,C语言根据函数能否被其它源文件中的函数调用,将函数分为内部函数和外部函数。
内部函数
(又称静态函数) 如果在一个源文件中定义的函数,只能被本文件中的函数调用,而不能被同一程序其它文件中的函数调用,这种函数称为内部函数。 定义一个内部函数,只需在函数类型前再加一个“static”关键字即可,如下所示: static 函数类型 函数名(函数参数表) {……} 关键字“static”,译成中文就是“静态的”,所以内部函数又称静态函数。但此处“static”的含义不是指存储方式,而是指对函数的作用域仅局限于本文件。 使用内部函数的好处是:不同的人编写不同的函数时,不用担心自己定义的函数,是否会与其它文件中的函数同名,因为同名也没有关系。

必看说明

必看说明

5110说明
屏幕电压:
5110屏幕的最佳工作电压是3V-3.3V;,过高会灰度加重,影响显示效果,过低会显示不清晰。

如果你的MCU是5V的,请使用降压芯片或者用TL431加一个9014来稳定电压到3V-3.3V,或者在5V电源后面串联3个整流二极管也可以(一个二极管的压降是0.7V左右)。

IO连接
接线图请根据程序里的定义连接,51的程序默认接线为:
sbit sce = P2^0; //片选
sbit res = P2^1; //复位,0复位
sbit dc = P2^2; //1写数据,0写指令
sbit sdin = P2^3; //数据
sbit sclk = P2^4; //时钟
A VR的默认接线为:(程序中用的是M16)
#define sce_1() PORTA|=(1<<0) //片选PA0 #define sce_0() PORTA&=~(1<<0) //片选
#define res_1() PORTA|=(1<<1) //复位,0复位PA1 #define res_0() PORTA&=~(1<<1) //复位,0复位
#define dc_1() PORTA|=(1<<2) //1写数据,0写指令PA2 #define dc_0() PORTA&=~(1<<2) //1写数据,0写指令
A VR是使用的硬件SPI,剩下两个脚的接法当然是
DN-PB5( spi data out)
SCLK-PB7(clock)。

Nokia3310 5110液晶显示(使用说明+C程序)

Nokia3310 5110液晶显示(使用说明+C程序)

3.3V的稳压管Nokia5110液晶屏完全新手学习笔记(一)3人收藏此文章, 我要收藏发表于1年前 , 已有3442次阅读共1个评论小Jay已经很久没有接触嵌入式了,这些天在学习51,还故意买了块Nokia 5110液晶屏来玩玩(因为便宜吧,嘻嘻~)。

一开始,小Jay不才,看5110芯片资料一头雾水,囧!不过呢,小Jay还是很努力的,经过几番研究,终于有些眉目,其实5110也并不难的。

此文提供给和我一样的鸟哥参考,希望能帮得上忙。

(*^__^*) 嘻嘻声明:1、本文章用于自己的知识回顾和提供给有需要的初学者,高手请飘过~2、本文章的内容均从“诺基亚5110液晶屏资料驱动芯片PCD8544中文数据手册.pdf”中,结合自己的理解,整理并简化出来的知识,更多详细内容请查看芯片手册。

另外,内容有不对的地方,望指正。

现在我们一步一步来:一、硬件链接:首先,看一下硬件(仅供参考,读者已对自己的硬件很熟悉,可以直接跳过。

):说明:图1:排针从左至右1到8位。

图2: 5110接口在板子中的区域。

图3: 8位排针对应连接5110液晶屏相应的引脚。

图4: 5110液晶显示屏对应8位排针JP19的插入方向。

再看一下我的板子的原理图:图5中,显示了8位排针JP19(即5110液晶屏的引脚)其中的5根与51单片机(本人的为STC89C516RD+)的PB I/O口的连接方式:5110_RST <---> PB2(P1.2)5110_SCE <---> PB3(P1.3)MOSI(sdin) <---> PB5(P1.5)MISO(dc) <---> PB6(P1.6)SCK <---> PB7(P1.7)这样,我们知道了用51单片机中的I/O口和5110引脚的链接方式。

二、引脚接线图请根据程序里的定义连接,51的程序默认接线为:看了这些默认接线,可能有个疑问:“这些位变量(引脚)究竟有什么用呢?”,带着这个疑问,请看5110芯片手册中的引脚说明(重点看红色区域):从这个引脚说明中,我们知道了不同的引脚,对应的功能。

5110调试笔记

5110调试笔记

一、驱动不成功的原因刚开始时使用STC89C52单片机,LCD接的是P0口,而且P0口没有加上拉电阻所以不能产生高电平。

实验中也发现复位引脚正常工作后就需要维持高电平。

二、一直黑屏的原因使用P1口驱动成功后调试却一直是黑屏,以为是LCD使用了5V电源引起的,改用3.3V发现还是一样。

关闭单片机电源后发现显示突然正常,开始怀疑是单片机引脚的问题,于是换了一块STC12C5A60S2烧录代码后显示正常。

原来真是IO脚的不同引起的吗?三、Vlcd和单片机工作频率影响了对比度经过反复实验发现即使使用的是STC89C52也可以正常显示了。

总结原因是Vlcd和单片机工作频率会影响对比度,Vlcd内部发生器产生主要受到外部VDD和Vop寄存器值的影响,所以要不断修改Vop寄存器的值找到最佳显示效果。

同时单片机工作频率越高显示就会越不明显,反之背景就一片黑。

利用文档提供的Vlcd计算公式很难得到实际的效果值,一般只能通过实验测试得到满意的数值。

下面是几个实验数据:以STC89C52单片机为测试LCD-VDD(V)Vop寄存器单片机晶振频率(MHz)3.3 0x82 123.7 0xA5 245.0 0x85 24四、网上说的几点测试看到论坛上有说调整Vlcd(修改Vop寄存器)前要在复位之后先拉低串口使能再拉高,要不然修改Vop寄存器就没反应。

至少我这边的实验结果是不需要做这一步也同样可以修改Vop寄存器。

混合率是调整对比度吗?通过实验发现没有明显影响。

有温度校正背景不会太黑但是也可以通过调整Vlcd得到相同效果。

网上看到5110LCD有好几个版本,也可能是不用版本的调试结果不一样。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

Nokia5110液晶屏完全新手学习笔记(一)
3人收藏此文章, 我要收藏发表于1年前, 已有3735次阅读共1个评论
小Jay已经很久没有接触嵌入式了,这些天在学习51,还故意买了块Nokia 5110液晶屏来玩玩(因为便宜吧,嘻嘻~)。

一开始,小Jay不才,看5110芯片资料一头雾水,囧!不过呢,小Jay还是很努力的,经过几番研究,终于有些眉目,其实5110也并不难的。

此文提供给和我一样的鸟哥参考,希望能帮得上忙。

(*^__^*) 嘻嘻
声明:
1、本文章用于自己的知识回顾和提供给有需要的初学者,高手请飘过~
2、本文章的内容均从“诺基亚5110液晶屏资料驱动芯片PCD8544中文数据手册.pdf”中,结合自己的理解,整理并简化出来的知识,更多详细内容请查看芯片手册。

另外,内容有不对的地方,望指正。

现在我们一步一步来:
一、硬件链接:
首先,看一下硬件(仅供参考,读者已对自己的硬件很熟悉,可以直接跳过。

):
说明:
图1:排针从左至右1到8位。

图2: 5110接口在板子中的区域。

图3: 8位排针对应连接5110液晶屏相应的引脚。

图4:5110液晶显示屏对应8位排针JP19的插入方向。

再看一下我的板子的原理图:
图5中,显示了8位排针JP19(即5110液晶屏的引脚)其中的5根与51单片机(本人的为STC89C516RD+)的PB I/O口的连接方式:
5110_RST <---> PB2(P1.2)
5110_SCE <---> PB3(P1.3)
MOSI(sdin) <---> PB5(P1.5)
MISO(dc) <---> PB6(P1.6)
SCK <---> PB7(P1.7)
这样,我们知道了用51单片机中的I/O口和5110引脚的链接方式。

二、引脚
接线图请根据程序里的定义连接,51的程序默认接线为:
看了这些默认接线,可能有个疑问:“这些位变量(引脚)究竟有什么用呢?”,带着这个疑问,请看5110芯片手册中的引脚说明
(重点看红色区域):
从这个引脚说明中,我们知道了不同的引脚,对应的功能。

那么,如何使用这些引脚来控制5110工作呢?
三、指令
5110液晶显示屏(PCD8544芯片),是通过发送指令和写入数据RAM 来控制和显示数据的。

指令格式分为两种模式:
1、如果D/C(模式选择)置为低(为0),即位变量dc = 0,为发送指令模式,那么接下来发送的8位字节解释为命令字节。

2、如果D/C置为高,即dc = 1; 为写入数据RAM模式,接下来的字节将存储到显示数据RAM。

注意:
1、每一个数据字节存入之后,地址计数自动递增。

在数据字节最后一位期间会读取D/C信号的电平。

2、每一条指令可用任意次序发送到PCD8544。

首先传送的是字节的MSB(高位)。

指令集:
结合表1和表2, 指令集不难读懂。

现在以红色横线所标识的指令来举例说明:
第一条(红色横线1),功能设置指令:
首先,D/C为0, 表示现在是指令模式,然后从表2看:
若要“使用基本指令集”,则PD = 0, V = 0, H = 0,那么相应地DB7~DB0分别为 00100000b,即0x20。

也就是说,发送0x20就能设置液晶“使用基本指令集”。

同理,使用“使用扩展指令集”,指令值为0x21。

第二条(红色横线2),显示控制:
显示模式有4种,分别是:显示空白,普通模式,开所有显示段,反转映象模式。

这些模式分别使用D and E来组合控制。

这样,我们控制显示为“普通模式”, 那么D要为1,E要为0, 这时DB7~DB0分别为 0000 1100b,即指令值为0x0C。

第三条(红色横线3),写入数据指令:
写入数据,首先D/C必须为1,表示现在是写入数据RAM模式,DB7~DB0就是相应的数据值。

到这里,我们知道了5110液晶屏是使用这样的指令集来控制和显示数据的。

那么,我们如何把指令值写进去呢?
一篇发不完,请看笔记二。

相关文档
最新文档