基于5110液晶的毕业设计.docx
《基于5110液晶的毕业设计.docx》由会员分享,可在线阅读,更多相关《基于5110液晶的毕业设计.docx(10页珍藏版)》请在冰豆网上搜索。

基于5110液晶的毕业设计
基于5110液晶的毕业设计
篇一:
5110液晶屏完全新手学习
Nokia5110液晶屏完全新手学习笔记
(一)
发表于3年前(XX-11-2123:
00)阅读(5495)|评论
(1)4人收藏此文章,我要收藏
nokia5110pcd8544液晶屏驱动3310
小Jay已经很久没有接触嵌入式了,这些天在学习51,还故意买了块Nokia5110液晶屏来玩玩(因为便宜吧,嘻嘻~)。
一开始,小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+)的PBI/O口的连接方式:
5110_RSTPB2(P1.2)
5110_SCEPB3(P1.3)
MOSI(sdin)PB5(P1.5)
MISO(dc)PB6(P1.6)
SCKPB7(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(高位)。
指令集:
篇二:
LCD5110简易手册
诺基亚5110简易手册C8051F学习笔记:
Nokia5110驱动
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的5110。
Nokia5110原理图:
商家把该引出的管脚都引出了,下面就可以连接C8051F的相应管脚,写程序驱动5110了。
Nokia5110和Nokia3110是兼容的,用的都是同一款驱动芯片PHILIPSPCD8544。
(1)SPI接口时序写数据/命令
Nokia5110(PCD8544)的通信协议是一个没有MISO只有MOSI的SPI协议,如果单片机有富裕的SPI接口,也可以利用硬件SPI,但通常没有必要,只需要软件程序模拟即可。
/***********************************************************
函数名称:
LCD_write_byte
函数功能:
模拟SPI接口时序写数据/命令LCD
入口参数:
data:
写入的数据;
command:
写数据/命令选择;
出口参数:
无
备注:
***********************************************************/
voidLCD_write_byte(unsignedchardat,unsignedcharcommand){
unsignedchari;
LCD_CE=0;
if(command==0)//5110片选有效,允许输入数据//写命令
LCD_DC=0;
elseLCD_DC=1;
for(i=0;i {if(dat&0x80)SDIN=1;elseSDIN=0;SCLK=0;dat=dat //写数据//传送8bit数据}LCD_CE=1;
}
//禁止5110
管脚D/C(LCD_DC)用于选择写的是命令(D/C=0)还是数据(D/C=1)。
(2)Nokia5110的初始化
接通电源后,内部寄存器和RAM的内容是不确定的,这需要一个RES低电平脉冲复位一下。
当VDD变为高电平,达到VDDmin(或更高)之后,最多100ms,RST输入低电平(电平幅度 5110复位时序
/***********************************************************
函数名称:
LCD_init
函数功能:
5110初始化
入口参数:
无
出口参数:
无
备注:
***********************************************************/
voidLCD_init(void)
{
LCD_RST=0;//产生一个让LCD复位的低电平脉冲
delay_1us();
LCD_RST=1;
LCD_CE=0;//关闭LCD
delay_1us();
LCD_CE=1;//使能LCD
delay_1us();
LCD_write_byte(0x21,0);//使用扩展命令设置LCD模式
LCD_write_byte(0xc8,0);//设置液晶偏置电压
LCD_write_byte(0x06,0);//温度校正
LCD_write_byte(0x13,0);//1:
48
LCD_write_byte(0x20,0);//使用基本命令,V=0,水平寻址LCD_clear();//清屏
LCD_write_byte(0x0c,0);//设定显示模式,正常显示
LCD_CE=0;//关闭LCD
}
(3)设置Nokia5110液晶的坐标
Nokia5110(PCD8544)的命令集:
命令字符解释:
篇三:
5110液晶屏
#include
#include"systemInit.h"
#include"LCD5110.h"
#definePIN_HIGH0xFF
#definePIN_LOW0x00
#defineLCD_CLK_PERIPHSYSCTL_PERIPH_GPIOA
#defineLCD_PERIPHSYSCTL_PERIPH_GPIOA
#defineLCD_CLK_PORTGPIO_PORTE_BASE
#defineLCD_PORTGPIO_PORTA_BASE
#defineLCD_CLKGPIO_PIN_3
#defineLCD_DINGPIO_PIN_5
#defineLCD_DCGPIO_PIN_4
#defineLCD_CSGPIO_PIN_2
#defineLCD_RSTGPIO_PIN_1
#defineLCD_CLK_HGPIOPinWrite(LCD_PORT,LCD_CLK,PIN_HIGH)#defineLCD_CLK_LGPIOPinWrite(LCD_PORT,LCD_CLK,PIN_LOW)
#defineLCD_DIN_HGPIOPinWrite(LCD_PORT,LCD_DIN,PIN_HIGH)#defineLCD_DIN_LGPIOPinWrite(LCD_PORT,LCD_DIN,PIN_LOW)
#defineLCD_DC_HGPIOPinWrite(LCD_PORT,LCD_DC,PIN_HIGH)#defineLCD_DC_LGPIOPinWrite(LCD_PORT,LCD_DC,PIN_LOW)
#defineLCD_CS_HGPIOPinWrite(LCD_PORT,LCD_CS,PIN_HIGH)#defineLCD_CS_LGPIOPinWrite(LCD_PORT,LCD_CS,PIN_LOW)
#defineLCD_RST_HGPIOPinWrite(LCD_PORT,LCD_RST,PIN_HIGH)#defineLCD_RST_LGPIOPinWrite(LCD_PORT,LCD_RST,PIN_LOW)
unsignedcharFont_code[][6]={
{0x00,0x00,0x00,0x00,0x00,0x00},//(0)
{0x00,0x00,0x00,0x4F,0x00,0x00},//!
(1)
{0x00,0x00,0x07,0x00,0x07,0x00},//"
(2)
{0x00,0x14,0x7F,0x14,0x7F,0x14},//#(3)
{0x00,0x24,0x2A,0x7F,0x2A,0x12},//$(4)
{0x00,0x23,0x13,0x08,0x64,0x62},//%(5)
{0x00,0x36,0x49,0x55,0x22,0x50},//&(6)
{0x00,0x00,0x05,0x03,0x00,0x00},//'(7)
{0x00,0x00,0x1C,0x22,0x41,0x00},//((8)
{0x00,0x14,0x08,0x3E,0x08,0x14},//*(10)
{0x00,0x08,0x08,0x3E,0x08,0x08},//+(11)
{0x00,0x00,0x50,0x30,0x00,0x00},//,(12)
{0x00,0x08,0x08,0x08,0x08,0x08},//-(13)
{0x00,0x00,0x60,0x60,0x00,0x00},//.(14)
{0x00,0x20,0x10,0x08,0x04,0x02},///(15)
{0x00,0x3E,0x51,0x49,0x45,0x3E},//0(16)
{0x00,0x00,0x42,0x7F,0x40,0x00},//1(17)
{0x00,0x42,0x61,0x51,0x49,0x46},//2(18)
{0x00,0x21,0x41,0x45,0x4B,0x31},//3(19)
{0x00,0x18,0x14,0x12,0x7F,0x10},//4(20)
{0x00,0x27,0x45,0x45,0x45,0x39},//5(21)
{0x00,0x3C,0x4A,0x49,0x49,0x30},//6(22)
{0x00,0x01,0x71,0x09,0x05,0x03},//7(23)
{0x00,0x36,0x49,0x49,0x49,0x36},//8(24)
{0x00,0x06,0x49,0x49,0x29,0x1E},//9(25)
{0x00,0x00,0x36,0x36,0x00,0x00},//:
(26)
{0x00,0x00,0x56,0x36,0x00,0x00},//;(27)
{0x00,0x08,0x14,0x22,0x41,0x00},// {0x00,0x14,0x14,0x14,0x14,0x14},//=(29)
{0x00,0x00,0x41,0x22,0x14,0x08},//>(30)
{0x00,0x02,0x01,0x51,0x09,0x06},//?
(31)
{0x00,0x32,0x49,0x79,0x41,0x3E},//@(32)
{0x00,0x7E,0x11,0x11,0x11,0x7E},//A(33)
{0x00,0x7F,0x49,0x49,0x49,0x3E},//B(34)
{0x00,0x3E,0x41,0x41,0x41,0x22},//C(35)
{0x00,0x7F,0x41,0x41,0x22,0x1C},//D(36)
{0x00,0x7F,0x49,0x49,0x49,0x41},//E(37)
{0x00,0x7F,0x09,0x09,0x09,0x01},//F(38)
{0x00,0x3E,0x41,0x49,0x49,0x7A},//G(39)
{0x00,0x7F,0x08,0x08,0x08,0x7F},//H(40)
{0x00,0x00,0x41,0x7F,0x41,0x00},//I(41)
{0x00,0x20,0x40,0x41,0x3F,0x01},//J(42)
{0x00,0x7F,0x08,0x14,0x22,0x41},//K(43)
{0x00,0x7F,0x40,0x40,0x40,0x40},//L(44)
{0x00,0x7F,0x02,0x04,0x02,0x7F},//M(45)
{0x00,0x7F,0x04,0x08,0x10,0x7F},//N(46)
{0x00,0x3E,0x41,0x41,0x41,0x3E},//O(47)
{0x00,0x7F,0x09,0x09,0x09,0x06},//P(48)
{0x00,0x3E,0x41,0x51,0x21,0x5E},//Q(49)
{0x00,0x7F,0x09,0x19,0x29,0x46},//R(50)
{0x00,0x46,0x49,0x49,0x49,0x31},//S(51)
{0x00,0x01,0x01,0x7F,0x01,0x01},//T(52)
{0x00,0x1F,0x20,0x40,0x20,0x1F},//V(54)
{0x00,0x3F,0x40,0x38,0x40,0x3F},//W(55)
{0x00,0x63,0x14,0x08,0x14,0x63},//X(56)
{0x00,0x03,0x04,0x78,0x04,0x03},//Y(57)
{0x00,0x61,0x51,0x49,0x45,0x43},//Z(58)
{0x00,0x00,0x7F,0x41,0x41,0x00},//[(59)
{0x00,0x15,0x16,0x7C,0x16,0x15},//\(60)
{0x00,0x00,0x41,0x41,0x7F,0x00},//](61)
{0x00,0x04,0x02,0x01,0x02,0x04},//^(62)
{0x00,0x40,0x40,0x40,0x40,0x40},//_(63)
{0x00,0x00,0x01,0x02,0x04,0x00},//`(64)
{0x00,0x20,0x54,0x54,0x54,0x78},//a(65)
{0x00,0x7F,0x48,0x44,0x44,0x38},//b(66)
{0x00,0x38,0x44,0x44,0x44,0x20},//c(67)
{0x00,0x38,0x44,0x44,0x48,0x7F},//d(68)
{0x00,0x38,0x54,0x54,0x54,0x18},//e(69)
{0x00,0x08,0x7E,0x09,0x01,0x02},//f(70)
{0x00,0x0C,0x52,0x52,0x52,0x3E},//g(71)
{0x00,0x7F,0x08,0x04,0x04,0x78},//h(72)
{0x00,0x00,0x44,0x7D,0x40,0x00},//i(73)
{0x00,0x20,0x40,0x44,0x3D,0x00},//j(74)
{0x00,0x7F,0x10,0x28,0x44,0x00},//k(75)
{0x00,0x00,0x41,0x7F,0x40,0x00},//l(76)
{0x00,0x7E,0x02,0x0C,0x02,0x7C},//m(77)
{0x00,0x7E,0x04,0x02,0x02,0x7C},//n(78)
{0x00,0x38,0x44,0x44,0x44,0x38},//o(79)
{0x00,0x7C,0x14,0x14,0x14,0x08},//p(80)
{0x00,0x08,0x14,0x14,0x18,0x7C},//q(81)
{0x00,0x7C,0x08,0x04,0x04,0x08},//r(82)
{0x00,0x48,0x54,0x54,0x54,0x20},//s(83)
{0x00,0x04,0x3F,0x44,0x40,0x20},//t(84)
{0x00,0x3C,0x40,0x40,0x20,0x7C},//u(85)
{0x00,0x1C,0x20,0x40,0x20,0x1C},//v(86)
{0x00,0x3C,0x40,0x30,0x40,0x3C},//w(87)
{0x00,0x44,0x28,0x10,0x28,0x44},//x(88)
{0x00
0x0C,0x50,0x50,0x50,0x3C},//y(89)
{0x00,0x44,0x64,0x54,0x4C,0x44},//z(90)
{0x00,0x00,0x08,0x36,0x41,0x00},//{(91)
{0x00,0x00,0x00,0x7F,0x00,0x00},//|(92)
{0x00,0x00,0x41,0x36,0x08,0x00},//}(93)
{0x00,0x08,0x04,0x08,0x10,0x08},//~(94)
{0x00,0x08,0x08,0x2A,0x1C,0x08},//→(127)
{0x00,0x08,0x1C,0x2A,0x08,0x08},//←(128)
{0x00,0x04,0x02,0x7F,0x02,0x04},//↑(129)
{0x00,0x10,0x20,0x7F,0x20,0x10},//↓(130)
{0x00,0x1C,0x2A,0x32,0x2A,0x1C},//笑面(131)
{0x00,0x1C,0x22,0x44,0x22,0x1C}};//爱心(132)
/*--------------------------------------------------------------*/
/*--------------------------------------------------------------*/
//写入一个字节(数据或指令)
//wbyte:
待写入的数据
//dat_cmd:
1-数据,0-指令
voidLCD_write_byte(unsignedcharwbyte,unsignedchardat_cmd)
{
unsignedchari;
LCD_CS_H;
LCD_CS_L;
LCD_CS_L;//使能
GPIOPinWrite(LCD_PORT,LCD_DC,dat_cmd);//1-数据//0-指令
for(i=8;i;i--)//8位数据,先高后低
{
if(wbyte&0x80){LCD_DIN_H;}
else{LCD_DIN_L;}
LCD_CLK_L;
wbyte LCD_CLK_H;//上升沿写入
}
LCD_CS_H;//禁止
}
voidLCD_write_cmd(unsignedcharcmd){LCD_write_byte(cmd,0x00);}//写入指令voidLCD_write_dat(unsignedchardat){LCD_write_byte(dat,0xFF);}//写入数据
//显示清屏(清DDRAM)
voidLCD_clr_scr(void)
{
unsignedinti;
LCD_write_cmd(X_Col_Addr);
LCD_write_cmd(Y_Page_Addr);
for(i=504;i;i--)LCD_write_dat(0x00);
}
/*--------------------------------------------------------------*/
//显示清行
//num:
0-5
voidLCD_clr_row(unsignedcharnum)
{
unsignedchari;
LCD_pos_byte(0,num)