完整的NOKIA5110液晶51单片机驱动程序.docx

上传人:b****1 文档编号:7070 上传时间:2023-04-28 格式:DOCX 页数:29 大小:19.65KB
下载 相关 举报
完整的NOKIA5110液晶51单片机驱动程序.docx_第1页
第1页 / 共29页
完整的NOKIA5110液晶51单片机驱动程序.docx_第2页
第2页 / 共29页
完整的NOKIA5110液晶51单片机驱动程序.docx_第3页
第3页 / 共29页
完整的NOKIA5110液晶51单片机驱动程序.docx_第4页
第4页 / 共29页
完整的NOKIA5110液晶51单片机驱动程序.docx_第5页
第5页 / 共29页
完整的NOKIA5110液晶51单片机驱动程序.docx_第6页
第6页 / 共29页
完整的NOKIA5110液晶51单片机驱动程序.docx_第7页
第7页 / 共29页
完整的NOKIA5110液晶51单片机驱动程序.docx_第8页
第8页 / 共29页
完整的NOKIA5110液晶51单片机驱动程序.docx_第9页
第9页 / 共29页
完整的NOKIA5110液晶51单片机驱动程序.docx_第10页
第10页 / 共29页
完整的NOKIA5110液晶51单片机驱动程序.docx_第11页
第11页 / 共29页
完整的NOKIA5110液晶51单片机驱动程序.docx_第12页
第12页 / 共29页
完整的NOKIA5110液晶51单片机驱动程序.docx_第13页
第13页 / 共29页
完整的NOKIA5110液晶51单片机驱动程序.docx_第14页
第14页 / 共29页
完整的NOKIA5110液晶51单片机驱动程序.docx_第15页
第15页 / 共29页
完整的NOKIA5110液晶51单片机驱动程序.docx_第16页
第16页 / 共29页
完整的NOKIA5110液晶51单片机驱动程序.docx_第17页
第17页 / 共29页
完整的NOKIA5110液晶51单片机驱动程序.docx_第18页
第18页 / 共29页
完整的NOKIA5110液晶51单片机驱动程序.docx_第19页
第19页 / 共29页
完整的NOKIA5110液晶51单片机驱动程序.docx_第20页
第20页 / 共29页
亲,该文档总共29页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

完整的NOKIA5110液晶51单片机驱动程序.docx

《完整的NOKIA5110液晶51单片机驱动程序.docx》由会员分享,可在线阅读,更多相关《完整的NOKIA5110液晶51单片机驱动程序.docx(29页珍藏版)》请在冰点文库上搜索。

完整的NOKIA5110液晶51单片机驱动程序.docx

完整的NOKIA5110液晶51单片机驱动程序

Nokia5110驱动

*说明:

本驱动适用于51单片机(5V或3.3V),液晶的VCC接5V或3.3V

修改偏置电压可改变5110点阵显示的亮度

5110接5V时偏置电压改为(0xa7,0),接3.3V时改为(0xc0,0)

*作者:

JK

*创建日期:

2013/1/26

*修改日期:

#include

#include"font.h"

#defineuintunsignedint

#defineucharunsignedchar

IO口定义区

 

sbitLCD_RST=P0^0;

sbitLCD_CE=P0^1;

sbitLCD_DC=P0^2;

sbitLCD_DIN=P0^3;

sbitLCD_CLK=P0^4;

函数声明区

voidLCD_Init(void);

voidLCD_WriteByte(unsignedchardat,unsignedcharcommand);

voidLCD_Set_XY(unsignedcharX,unsignedcharY);

voidLCD_Clear(void);

voidLCD_WriteChar(unsignedcharx,unsignedchary,unsignedcharc);

voidLCD_WriteString(unsignedcharX,unsignedcharY,char*s);

voidLCD_WriteNum(unsignedcharX,unsignedcharY,unsignedintnum);

voidLCD_Write_12X16Font(unsignedcharx,unsignedchary,unsignedcharc[2]);

voidLCD_DrawPicture(unsignedcharX,unsignedcharY,unsignedcharconst*map,

unsignedcharPix_x,unsignedcharPix_y);

*函数名:

LCD_Init

*功能:

初始化LCD

*参数:

*返回值:

*备注:

voidLCD_Init(void)

{

unsignedchari;

LCD_RST=0;//复位

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

LCD_RST=1;

LCD_WriteByte(0x21,0);//使用扩展命令设置LCD模式

LCD_WriteByte(0xc0,0);//设置偏置电压,修改可改变5110点阵显示的亮度

/*5110接5V时偏置电压改为(0xa7,0),接3.3V时改为(0xc0,0)*/

LCD_WriteByte(0x20,0);//使用基本命令。

并设置V=0,水平寻址

LCD_Clear();//清屏

LCD_WriteByte(0x0c,0);//设定显示模式,正常显示(普通显示)

LCD_CE=0;

}

*函数名:

LCD_WriteByte

*功能:

模拟SPI接口时序写数据/命令LCD

*参数:

data:

写入的数据;

command:

写数据

(1)/命令选择(0);

*返回值:

*备注:

voidLCD_WriteByte(unsignedchardat,unsignedcharcommand)

{

unsignedchari;

LCD_CE=0;//5110片选有效,允许输入数据

if(command==0)//写命令

LCD_DC=0;

else

LCD_DC=1;//写数据

for(i=0;i<8;i++)//传送8bit数据

{

if(dat&0x80)

LCD_DIN=1;

else

LCD_DIN=0;

LCD_CLK=0;

dat=dat<<1;

LCD_CLK=1;

}

LCD_CE=1;//禁止5110

}

*函数名:

LCD_Set_XY

*功能:

设置LCD坐标

*参数:

X:

0-83Y:

0-5

*返回值:

*备注:

voidLCD_Set_XY(unsignedcharX,unsignedcharY)

{

LCD_WriteByte(0x40|Y,0);//column列

LCD_WriteByte(0x80|X,0);//row行

}

*函数名:

LCD_Clear

*功能:

LCD清屏函数

*参数:

*返回值:

*备注:

voidLCD_Clear(void)

{

unsignedchart;

unsignedchark;

LCD_Set_XY(0,0);//设置RAM起始地址

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

{

for(k=0;k<84;k++)

{

LCD_WriteByte(0x00,1);

}

}

}

*函数名:

LCD_WriteChar

*功能:

LCD写一个6X8的字符

*参数:

c

*返回值:

备注:

voidLCD_WriteChar(unsignedcharx,unsignedchary,unsignedcharc)

{

unsignedchari;

c-=32;//数组的行号

LCD_Set_XY(x,y);

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

{

LCD_WriteByte(font6x12[c][i],1);

if(i==5)

{

y++;

LCD_Set_XY(x,y);

}

}

}

*函数名:

LCD_WriteString

*功能:

LCD写6X8的字符串

*参数:

X,Y,S

*返回值:

备注:

voidLCD_WriteString(unsignedcharX,unsignedcharY,char*s)

{

while(*s)

{

LCD_WriteChar(X,Y,*s);

s++;

X+=6;

}

}

*函数名:

LCD_WriteNum(unsignedintnum)

*功能:

写入数字

*参数:

num

*返回值:

voidLCD_WriteNum(unsignedcharX,unsignedcharY,unsignedintnum)

{

unsignedcharstr[8],i=0,len=0;

unsignedinttemp;

temp=num;

while(temp)

{

temp/=10;

len++;

}

if(!

num)

{

len++;

str[0]=0x30;

}

str[len]=0;

while(num)

{

str[len-i-1]=num%10+0x30;

num/=10;

i++;

}

LCD_WriteString(X,Y,(char*)str);

}

*函数名:

LCD_Write_16X16Font

*功能:

写一个16X16的汉字

*参数:

x,y,c[2]x:

0-83y:

0-5

*返回值:

*备注:

voidLCD_Write_12X16Font(unsignedcharx,unsignedchary,unsignedcharc[2])

{

unsignedchari,k;

LCD_Set_XY(x,y);

for(k=0;k<25;k++)//K的值表示汉字库最多存放的字的数量(可改大)

{

if((font12x16[k].Index[0]==c[0])&&(font12x16[k].Index[1]==c[1]))

{

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

{

LCD_WriteByte(font12x16[k].Msk[i],1);

if(i==11)

{

y++;

LCD_Set_XY(x,y);

}

}

}

}

}

*函数名:

LCD_DrawPicture

*功能:

绘图

*参数:

X、Y:

位图绘制的起始X、Y坐标;

*map:

位图点阵数据;

Pix_x:

位图像素(长)<=84

Pix_y:

位图像素(宽)<=48

*返回值:

*备注:

voidLCD_DrawPicture(unsignedcharX,unsignedcharY,unsignedcharconst*map,

unsignedcharPix_x,unsignedcharPix_y)

{

unsignedinti,n;

unsignedcharrow;

//计算位图所占行数

if(Pix_y%8==0)//如果为位图所占行数为整数

row=Pix_y/8;

else

row=Pix_y/8+1;//如果为位图所占行数不是整数

LCD_Set_XY(X,Y);

for(n=0;n

{

for(i=0;i

{

LCD_Set_XY(X+i,Y+n);

LCD_WriteByte(map[i+n*Pix_x],1);

}

}

}

-------main函数--------

*函数名:

主函数

*备注:

voidmain()

{

LCD_Init();

while

(1)

{

LCD_WriteNum(0,0,123);//写入数字int型的

LCD_WriteNum(18,0,7);//写入数字int型的

LCD_WriteNum(24,0,9);

LCD_WriteChar(48,0,'I');//写一个6X8的字符

LCD_WriteChar(54,0,'J');

LCD_WriteChar(60,0,'K');

LCD_WriteString(0,2,"jhf");//写6X8的字符串

LCD_DrawPicture(32,2,gImage_1,16,16);//绘图

LCD_Write_12X16Font(12,4,"我");//写一个16X16的汉字

LCD_Write_12X16Font(24,4,"是");

LCD_Write_12X16Font(36,4,"中");

LCD_Write_12X16Font(48,4,"国");

LCD_Write_12X16Font(60,4,"银");

}

 

}

 

/////////////////////////////////////////以下是font.h的内容///////////////////////////////////////////////////

*说明:

该font.h文件中包含的是5110显示所用的ASCII、部分汉字、

及图片字模。

取模软件使用“PCtoLCD2002”,取模方式选项:

阴码、逆向、列行式、十六进制数。

汉字取模:

宽12、高12

//6x8font

//1pixelspaceatleftandbottom

//index=ASCII-32

codeunsignedcharfont6x12[][12]=

{

/*--文字:

--*/

/*--宋体9;此字体下对应的点阵为:

宽x高=6x12--*/

/*--高度不是8的倍数,现调整为:

宽度x高度=6x16--*/

{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},

/*--文字:

!

--*/

/*--宋体9;此字体下对应的点阵为:

宽x高=6x12--*/

/*--高度不是8的倍数,现调整为:

宽度x高度=6x16--*/

{0x00,0x00,0xFC,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x00},

/*--文字:

"--*/

/*--宋体9;此字体下对应的点阵为:

宽x高=6x12--*/

/*--高度不是8的倍数,现调整为:

宽度x高度=6x16--*/

{0x00,0x0C,0x02,0x0C,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00},

/*--文字:

#--*/

/*--宋体9;此字体下对应的点阵为:

宽x高=6x12--*/

/*--高度不是8的倍数,现调整为:

宽度x高度=6x16--*/

{0x90,0xD0,0xBC,0xD0,0xBC,0x90,0x00,0x03,0x00,0x03,0x00,0x00},

/*--文字:

$--*/

/*--宋体9;此字体下对应的点阵为:

宽x高=6x12--*/

/*--高度不是8的倍数,现调整为:

宽度x高度=6x16--*/

{0x18,0x24,0xFE,0x44,0x8C,0x00,0x03,0x02,0x07,0x02,0x01,0x00},

/*--文字:

%--*/

/*--宋体9;此字体下对应的点阵为:

宽x高=6x12--*/

/*--高度不是8的倍数,现调整为:

宽度x高度=6x16--*/

{0x18,0x24,0xD8,0xB0,0x4C,0x80,0x00,0x03,0x00,0x01,0x02,0x01},

/*--文字:

&--*/

/*--宋体9;此字体下对应的点阵为:

宽x高=6x12--*/

/*--高度不是8的倍数,现调整为:

宽度x高度=6x16--*/

{0xC0,0x38,0xE4,0x38,0xE0,0x00,0x01,0x02,0x02,0x01,0x02,0x02},

/*--文字:

'--*/

/*--宋体9;此字体下对应的点阵为:

宽x高=6x12--*/

/*--高度不是8的倍数,现调整为:

宽度x高度=6x16--*/

{0x08,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00},

/*--文字:

(--*/

/*--宋体9;此字体下对应的点阵为:

宽x高=6x12--*/

/*--高度不是8的倍数,现调整为:

宽度x高度=6x16--*/

{0x00,0x00,0x00,0xF8,0x04,0x02,0x00,0x00,0x00,0x01,0x02,0x04},

/*--文字:

)--*/

/*--宋体9;此字体下对应的点阵为:

宽x高=6x12--*/

/*--高度不是8的倍数,现调整为:

宽度x高度=6x16--*/

{0x00,0x02,0x04,0xF8,0x00,0x00,0x00,0x04,0x02,0x01,0x00,0x00},

/*--文字:

*--*/

/*--宋体9;此字体下对应的点阵为:

宽x高=6x12--*/

/*--高度不是8的倍数,现调整为:

宽度x高度=6x16--*/

{0x90,0x60,0xF8,0x60,0x90,0x00,0x00,0x00,0x01,0x00,0x00,0x00},

/*--文字:

+--*/

/*--宋体9;此字体下对应的点阵为:

宽x高=6x12--*/

/*--高度不是8的倍数,现调整为:

宽度x高度=6x16--*/

{0x20,0x20,0xFC,0x20,0x20,0x00,0x00,0x00,0x01,0x00,0x00,0x00},

/*--文字:

--*/

/*--宋体9;此字体下对应的点阵为:

宽x高=6x12--*/

/*--高度不是8的倍数,现调整为:

宽度x高度=6x16--*/

{0x00,0x00,0x00,0x00,0x00,0x00,0x08,0x06,0x00,0x00,0x00,0x00},

/*--文字:

---*/

/*--宋体9;此字体下对应的点阵为:

宽x高=6x12--*/

/*--高度不是8的倍数,现调整为:

宽度x高度=6x16--*/

{0x20,0x20,0x20,0x20,0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00},

/*--文字:

.--*/

/*--宋体9;此字体下对应的点阵为:

宽x高=6x12--*/

/*--高度不是8的倍数,现调整为:

宽度x高度=6x16--*/

{0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x00,0x00},

/*--文字:

/--*/

/*--宋体9;此字体下对应的点阵为:

宽x高=6x12--*/

/*--高度不是8的倍数,现调整为:

宽度x高度=6x16--*/

{0x00,0x80,0x60,0x1C,0x02,0x00,0x04,0x03,0x00,0x00,0x00,0x00},

/*--文字:

0--*/

/*--宋体9;此字体下对应的点阵为:

宽x高=6x12--*/

/*--高度不是8的倍数,现调整为:

宽度x高度=6x16--*/

{0xF8,0x04,0x04,0x04,0xF8,0x00,0x01,0x02,0x02,0x02,0x01,0x00},

/*--文字:

1--*/

/*--宋体9;此字体下对应的点阵为:

宽x高=6x12--*/

/*--高度不是8的倍数,现调整为:

宽度x高度=6x16--*/

{0x00,0x08,0xFC,0x00,0x00,0x00,0x00,0x02,0x03,0x02,0x00,0x00},

/*--文字:

2--*/

/*--宋体9;此字体下对应的点阵为:

宽x高=6x12--*/

/*--高度不是8的倍数,现调整为:

宽度x高度=6x16--*/

{0x18,0x84,0x44,0x24,0x18,0x00,0x03,0x02,0x02,0x02,0x02,0x00},

/*--文字:

3--*/

/*--宋体9;此字体下对应的点阵为:

宽x高=6x12--*/

/*--高度不是8的倍数,现调整为:

宽度x高度=6x16--*/

{0x08,0x04,0x24,0x24,0xD8,0x00,0x01,0x02,0x02,0x02,0x01,0x00},

/*--文字:

4--*/

/*--宋体9;此字体下对应的点阵为:

宽x高=6x12--*/

/*--高度不是8的倍数,现调整为:

宽度x高度=6x16--*/

{0x40,0xB0,0x88,0xFC,0x80,0x00,0x00,0x00,0x00,0x03,0x02,0x00},

/*--文字:

5--*/

/*--宋体9;此字体下对应的点阵为:

宽x高=6x12--*/

/*--高度不是8的倍数,现调整为:

宽度x高度=6x16--*/

{0x3C,0x24,0x24,0x24,0xC4,0x00,0x01,0x02,0x02,0x02,0x01,0x00},

/*--文字:

6--*/

/*--宋体9;此字体下对应的点阵为:

宽x高=6x12--*/

/*--高度不是8的倍数,现调整为:

宽度x高度=6x16--*/

{0xF8,0x24,0x24,0x2C,0xC0,0x00,0x01,0x02,0x02,0x02,0x01,0x00},

/*--文字:

7--*/

/*--宋体9;此字体下对应的点阵为:

宽x高=6x12--*/

/*--高度不是8的倍数,现调整为:

宽度x高度=6x16--*/

{0x0C,0x04,0xE4,0x1C,0x04,0x00,0x00,0x00,0x03,0x00,0x00,0x00},

/*--文字:

8--*/

/*--宋体9;此字体下对应的点阵为:

宽x高=6x12--*/

/*--高度不是8的倍数,现调整为:

宽度x高度=6x16--*/

{0xD8,0x24,0x24,0x24,0xD8,0x00,0x01,0x02,0x02,0x02,0x01,0x00},

/*--文字:

9--*/

/*--宋体9;此字体下对应的点阵为:

宽x高=6x12--*/

/*--高度不是8的倍数,现调整为:

宽度x高度=6x16--*/

{0x38,0x44,0x44,0x44,0xF8,0x00,0x00,0x03,0x02,0x02,0x01,0x00},

/*--文字:

:

--*/

/*--宋体9;此字体下对应的点阵为:

宽x高=6x12--*/

/*--高度不是8的倍数,现调整为:

宽度x高度=6x16--*/

{0x00,0x00,0x10,0x00,0x00,0x00,0x00,0x00,0x02,0x00,0x00,0x00},

/*--文字:

;--*/

/*--宋体9;此字体下对应的点阵为:

宽x高=6x12--*/

/*--高度不是8的倍数,现调整为:

宽度x高度=6x16--*/

{0x00,0x00,0x20,0x00,0x00,0x00,0x00,0x00,0x06,0x00,0x00,0x00},

/*--文字:

<--*/

/*--宋体9;此字体下对应的点阵为:

宽x高=6x12--*/

/*--高度不是8的倍数,现调整为:

宽度x高度=6x16--*/

{0x00,0x20,0x50,0x88,0x04,0x02,0x00,0x00,0x00,0x00,0x01,0x02},

/*--文字:

=--*/

/*--宋体9;此字体下对应的点阵为:

宽x高=6x12--*/

/*--高度不是8的倍数,现调整为:

宽度x高度=6x16--*/

{0x90,0x90,0x90,0x90,0x90,0x00,0x00,0x00,0x00,0x00,0x00,0x00},

/*--文字:

>--*/

/*--宋体9;此字体下对应的点阵为:

宽x高=6x12--*/

/*--高度不是8的倍数,现调整为:

宽度x高度=6x16--*/

{0x00,0x02,0x04,0x88,0x50,0x20,0x00,0x02,0x01,0x00,0x00,0x00},

/*--文字:

?

--*/

/*--宋体9;此字体下对应的点阵为:

宽x高=6x1

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

当前位置:首页 > 经管营销 > 经济市场

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2