重点5110液晶显示.docx
- 文档编号:26836213
- 上传时间:2023-06-23
- 格式:DOCX
- 页数:10
- 大小:125.81KB
重点5110液晶显示.docx
《重点5110液晶显示.docx》由会员分享,可在线阅读,更多相关《重点5110液晶显示.docx(10页珍藏版)》请在冰豆网上搜索。
重点5110液晶显示
[重点]5110液晶显示
一、硬件链接:
首先,看一下硬件,仅供参考,读者已对自己的硬件很熟悉,可以直接跳过。
,:
说明:
图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就能设置液晶“使用基本指令集”。
0x是16进制打头标志
同理,使用“使用扩展指令集”,指令值为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:
00100001
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液晶屏的原理和基本控制。
是不是觉得很简单。
呵呵~~~希望帮到大家,写得不好,请见谅,写的不对,望指正
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 重点 5110 液晶显示
![提示](https://static.bdocx.com/images/bang_tan.gif)