Nokia5110液晶屏.docx

上传人:b****5 文档编号:12586747 上传时间:2023-04-20 格式:DOCX 页数:13 大小:454.16KB
下载 相关 举报
Nokia5110液晶屏.docx_第1页
第1页 / 共13页
Nokia5110液晶屏.docx_第2页
第2页 / 共13页
Nokia5110液晶屏.docx_第3页
第3页 / 共13页
Nokia5110液晶屏.docx_第4页
第4页 / 共13页
Nokia5110液晶屏.docx_第5页
第5页 / 共13页
点击查看更多>>
下载资源
资源描述

Nokia5110液晶屏.docx

《Nokia5110液晶屏.docx》由会员分享,可在线阅读,更多相关《Nokia5110液晶屏.docx(13页珍藏版)》请在冰豆网上搜索。

Nokia5110液晶屏.docx

Nokia5110液晶屏

一、硬件链接:

首先,看一下硬件(仅供参考,读者已对自己的硬件很熟悉,可以直接跳过。

):

说明:

图1:

排针从左至右1到8位。

图2:

5110接口在板子中的区域。

图3:

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

图4:

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

再看一下我的板子的原理图:

 

图5中,显示了8位排针JP19(即5110液晶屏的引脚)其中的5根与51单片机(本人的为STC89C516RD+)的PBI/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的程序默认接线为:

sbitsce=P1^3;//片选

sbitres=P1^2;//复位,0复位

sbitdc=P1^6;//1写数据,0写指令

sbitsdin=P1^5;//数据

sbitsclk=P1^7;//时钟

看了这些默认接线,可能有个疑问:

“这些位变量(引脚)究竟有什么用呢?

”,带着这个疑问,请看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种,分别是:

显示空白,普通模式,开所有显示段,反转映象模式。

这些模式分别使用DandE来组合控制。

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

第三条(红色横线3),写入数据指令:

写入数据,首先D/C必须为1,表示现在是写入数据RAM模式,DB7~DB0就是相应的数据值。

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

那么,我们如何把指令值写进去呢?

四、时序图

没错,要向液晶屏写入数据,我们需要通过模拟一个串行总线协议来写入数据。

先来看看传送一个字节(指令)的时序图:

如果能看懂时这些序图的兄弟,就不要听我废话啦。

请飘过~~

从时序图1看出:

1.SCE片选为0时开始发送数据。

2.时钟信号SCLK仅在SCE片选为0时有效。

3.SDIN数据输入,需要在时钟信号SCLK有效时开始发送数据,且在SCLK的正边缘取样,注意,数据是从高位开始发送的。

知道了传送数据的时序,我们需要使用程序来模拟这个时序,从而发送指令控制液晶屏。

接下来,看看实例。

五、程序实例

代码一:

/*--------------------------------------------

LCD_write_byte:

使用SPI接口写数据到LCD

输入参数:

dt:

写入的数据;

command:

写数据/命令选择;

编写日期:

20080918

----------------------------------------------*/

voidLCD_write_byte(unsignedchardt,unsignedcharcommand)

{

unsignedchari;

sce=0;

dc=command;

for(i=0;i<8;i++)

{

if(dt&0x80)

sdin=1;

else

sdin=0;

dt=dt<<1;

sclk=0;

sclk=1;

}

dc=1;

sce=1;

sdin=1;

}

代码分析:

这个是一个写入一个字节数据的模拟时序函数,具有两个参数,dt为要写入的字节,command为数据/命令选择。

首先,需要sce拉低电平,开始发送数据。

i循环8次,写入8位数据,现以“设置扩展指令集”(即写入0x21)全过程如下:

∙i=0:

dt=0x21=00100001b

dt&0x80:

00100000

10000000&

00000000=0,则sdin=0(DB7),

dt左移1位,dt<<1=01000010b,

模拟时钟信号sclk=0,sclk=1,以使采样

∙i=1:

dt=01000010b

dt&0x80:

01000010

10000000&

00000000=0, 则sdin=0(DB6),

dt左移1位,dt<<1=10000100b,

模拟时钟信号sclk=0,sclk=1,以使采样 

∙i=2:

dt=10000100b

dt&0x80:

10000100

10000000&

10000000!

=0,则sdin=1 (DB5), 

dt左移1位,dt<<1=00001000b,

模拟时钟信号sclk=0,sclk=1,以使采样 

∙i=3:

dt=00001000b

dt&0x80:

00001000

10000000&

00000000=0,则sdin=0 (DB4), 

dt左移1位,dt<<1=00010000b,

模拟时钟信号sclk=0,sclk=1,以使采样

∙i=4:

dt=00010000b

dt&0x80:

00010000

10000000&

00000000=0,则sdin=0 (DB3), 

dt左移1位,dt<<1=00100000b,

模拟时钟信号sclk=0,sclk=1,以使采样

∙i=5:

dt=00100000b

dt&0x80:

00100000

10000000&

00000000=0,则sdin=0 (DB2), 

dt左移1位,dt<<1=01000000b,

模拟时钟信号sclk=0,sclk=1,以使采样 

∙i=6:

dt=01000000b

dt&0x80:

01000000

10000000&

00000000=0,则sdin=0 (DB1), 

dt左移1位,dt<<1=10000000b,

模拟时钟信号sclk=0,sclk=1,以使采样 

∙i=7:

dt=10000000b

dt&0x80:

10000000

10000000&

10000000!

=0,则sdin=1 (DB0), 

dt左移1位,dt<<1=00000000b,

模拟时钟信号sclk=0,sclk=1,以使采样  

过程很罗嗦,不过很简单,呵呵~~

可见,这样循环8次,写入了8位数,DB7~DB0=00100001b=0x20,正是“扩展指令集”的指令值。

代码二:

/*--------------------------------------------

LCD_init:

初始化LCD_init

输入参数:

编写日期:

20080918

----------------------------------------------*/

voidLCD_init(void)

{

res=0;

delayms(10);

res=1;

LCD_write_byte(0x21,0);//1、初始化Lcd,功能设定使用扩充指令

LCD_write_byte(0xd0,0);//2、设定液晶偏置电压

LCD_write_byte(0x20,0);//3、使用基本指令

LCD_write_byte(0x0C,0);//4、设定显示模式,正常显示

}

代码分析:

初始化步骤可以参照芯片手册中的编程示例:

代码三:

/*-----------------------------------------------------------------------

LCD_write_char:

显示英文字符

输入参数:

c:

显示的字符;

编写日期:

2004-8-10

最后修改日期:

2004-8-10

-----------------------------------------------------------------------*/

voidLCD_write_char_my(unsignedchar*font)

{

unsignedchari;

for(i=0;i<6;i++)

LCD_write_byte(font[i],1);

}

代码分析:

 

我们可以使用字模软件,求出一个6*8大小的字符“A”,该组值为:

 

unsignedcharA[6]={0x00,0x7C,0x12,0x11,0x12,0x7C};

这些很容易理解,还原看一下:

 

上面的矩阵,就是一个字母"A",可见只要把这组值写入即可以显示“A”。

最后,到这里,我们已经学会了Nokia5110液晶屏的原理和基本控制。

是不是觉得很简单。

呵呵~~~希望帮到大家,写得不好,请见谅,写的不对,望指正

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 初中教育 > 初中作文

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1