完整的NOKIA 5110液晶51单片机驱动程序.doc

上传人:PIYPING 文档编号:11083155 上传时间:2021-06-28 格式:DOC 页数:68 大小:188KB
返回 下载 相关 举报
完整的NOKIA 5110液晶51单片机驱动程序.doc_第1页
第1页 / 共68页
完整的NOKIA 5110液晶51单片机驱动程序.doc_第2页
第2页 / 共68页
完整的NOKIA 5110液晶51单片机驱动程序.doc_第3页
第3页 / 共68页
完整的NOKIA 5110液晶51单片机驱动程序.doc_第4页
第4页 / 共68页
完整的NOKIA 5110液晶51单片机驱动程序.doc_第5页
第5页 / 共68页
点击查看更多>>
资源描述

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

1、/* Nokia 5110驱动*说明:本驱动适用于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#define uint unsigned int#define uchar unsigned char/* IO口定义区*/sbit LCD_RST = P00;sbit LCD_CE = P01;sbit LCD_DC = P02;sbit LCD_DIN =

2、 P03;sbit LCD_CLK = P04;/* 函数声明区*/void LCD_Init(void);void LCD_WriteByte(unsigned char dat, unsigned char command);void LCD_Set_XY(unsigned char X, unsigned char Y);void LCD_Clear(void);void LCD_WriteChar(unsigned char x,unsigned char y,unsigned char c);void LCD_WriteString(unsigned char X,unsigned

3、char Y,char *s);void LCD_WriteNum(unsigned char X,unsigned char Y,unsigned int num);void LCD_Write_12X16Font(unsigned char x,unsigned char y,unsigned char c2);void LCD_DrawPicture(unsigned char X,unsigned char Y,unsigned char const *map, unsigned char Pix_x,unsigned char Pix_y);/* *函数名:LCD_Init*功能:初

4、始化LCD*参数:无 *返回值:无*备 注: */void LCD_Init(void) unsigned char i; LCD_RST=0; /复位 for(i=0;i150;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(); / 清屏

5、LCD_WriteByte(0x0c, 0);/ 设定显示模式,正常显示(普通显示) LCD_CE=0; /* *函数名:LCD_WriteByte*功能:模拟SPI接口时序写数据/命令LCD*参数:data :写入的数据; command :写数据(1)/命令选择(0);*返回值:无*备 注: */void LCD_WriteByte(unsigned char dat, unsigned char command) unsigned char i; LCD_CE=0;/5110片选有效,允许输入数据 if (command = 0)/写命令 LCD_DC=0; else LCD_DC=1;

6、 /写数据 for(i=0;i8;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-83 Y:0-5 *返回值:无*备 注: */void LCD_Set_XY(unsigned char X, unsigned char Y) LCD_WriteByte(0x40 | Y, 0);/ column 列 LCD_WriteByte(0x80 | X, 0);

7、/ row 行 /* *函数名:LCD_Clear*功能: LCD清屏函数 *参数:无 *返回值:无*备 注: */void LCD_Clear(void) unsigned char t; unsigned char k; LCD_Set_XY(0, 0);/设置RAM起始地址 for(t=0;t6;t+) for(k=0;k84;k+) LCD_WriteByte(0x00,1); /* *函数名:LCD_WriteChar*功能: LCD写一个6X8的字符 *参数:c *返回值:无备 注: */void LCD_WriteChar(unsigned char x,unsigned cha

8、r y,unsigned char c) unsigned char i; c -= 32; /数组的行号 LCD_Set_XY(x,y); for(i=0; i12; i+) LCD_WriteByte(font6x12ci, 1); if(i=5) y+; LCD_Set_XY(x,y); /* *函数名:LCD_WriteString*功能: LCD写6X8的字符串 *参数:X , Y , S *返回值:无备 注: */void LCD_WriteString(unsigned char X,unsigned char Y,char *s) while(*s) LCD_WriteChar

9、(X,Y,*s); s+; X += 6; /*函数名:LCD_WriteNum(unsigned int num)*功能:写入数字*参数:num *返回值:无*/void LCD_WriteNum(unsigned char X,unsigned char Y,unsigned int num) unsigned char str8,i=0,len=0; unsigned int temp; temp = num; while(temp) temp /=10; len+; if(!num) len+; str0=0x30; strlen = 0; while(num) strlen-i-1

10、= num%10 + 0x30; num /=10; i+; LCD_WriteString(X,Y,(char *)str);/* *函数名:LCD_Write_16X16Font*功能: 写一个16X16的汉字 *参数:x , y , c2 x:0-83 y:0-5 *返回值:无*备 注: */void LCD_Write_12X16Font(unsigned char x,unsigned char y,unsigned char c2) unsigned char i,k; LCD_Set_XY(x,y); for(k=0; k25; k+) /K的值表示汉字库最多存放的字的数量(可改

11、大) if(font12x16k.Index0=c0)&(font12x16k.Index1=c1) for(i=0; i24; i+) LCD_WriteByte(font12x16k.Mski, 1); if(i=11) y+; LCD_Set_XY(x,y); /* *函数名:LCD_DrawPicture*功能: 绘图 *参数: X、Y :位图绘制的起始X、Y坐标; *map :位图点阵数据; Pix_x :位图像素(长) =84 Pix_y :位图像素(宽) =48 *返回值:无*备 注: */void LCD_DrawPicture(unsigned char X,unsigned

12、 char Y,unsigned char const *map, unsigned char Pix_x,unsigned char Pix_y)unsigned int i,n;unsigned char row; /计算位图所占行数 if (Pix_y%8=0) /如果为位图所占行数为整数 row=Pix_y/8; else row=Pix_y/8+1; /如果为位图所占行数不是整数 LCD_Set_XY(X,Y); for (n=0;nrow;n+) /换行 for(i=0;iPix_x;i+) LCD_Set_XY(X+i,Y+n); LCD_WriteByte(mapi+n*Pix

13、_x, 1); /* -main函数-*函数名:主函数*备 注: */void main() 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

14、_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*/ 6

15、 x 8 font/ 1 pixel space at left and bottom/ index = ASCII - 32code unsigned char font6x1212 =/*- 文字: -*/*- 宋体9; 此字体下对应的点阵为:宽x高=6x12 -*/*- 高度不是8的倍数,现调整为:宽度x高度=6x16 -*/0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*- 文字: ! -*/*- 宋体9; 此字体下对应的点阵为:宽x高=6x12 -*/*- 高度不是8的倍数,现调整为:宽度x高度=6x16 -

16、*/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,

17、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,

18、/*- 文字: & -*/*- 宋体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; 此字体下对应的点阵为:

19、宽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的倍数,现调整为:宽

20、度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,0x

21、00,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,0x

22、00,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 -*/*- 宋

23、体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 -*/*-

24、高度不是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 -*/0x

25、3C,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,0x

26、00,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,/*

27、- 文字: : -*/*- 宋体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

28、高=6x12 -*/*- 高度不是8的倍数,现调整为:宽度x高度=6x16 -*/0x00,0x02,0x04,0x88,0x50,0x20,0x00,0x02,0x01,0x00,0x00,0x00,/*- 文字: ? -*/*- 宋体9; 此字体下对应的点阵为:宽x高=6x12 -*/*- 高度不是8的倍数,现调整为:宽度x高度=6x16 -*/0x18,0x04,0xC4,0x24,0x18,0x00,0x00,0x00,0x02,0x00,0x00,0x00,/*- 文字: -*/*- 宋体9; 此字体下对应的点阵为:宽x高=6x12 -*/*- 高度不是8的倍数,现调整为:宽度x高度

29、=6x16 -*/0xF8,0x04,0xE4,0x94,0xF8,0x00,0x01,0x02,0x02,0x02,0x02,0x00,/*- 文字: A -*/*- 宋体9; 此字体下对应的点阵为:宽x高=6x12 -*/*- 高度不是8的倍数,现调整为:宽度x高度=6x16 -*/0x00,0xE0,0x9C,0xF0,0x80,0x00,0x02,0x03,0x00,0x00,0x03,0x02,/*- 文字: B -*/*- 宋体9; 此字体下对应的点阵为:宽x高=6x12 -*/*- 高度不是8的倍数,现调整为:宽度x高度=6x16 -*/0x04,0xFC,0x24,0x24,0

30、xD8,0x00,0x02,0x03,0x02,0x02,0x01,0x00,/*- 文字: C -*/*- 宋体9; 此字体下对应的点阵为:宽x高=6x12 -*/*- 高度不是8的倍数,现调整为:宽度x高度=6x16 -*/0xF8,0x04,0x04,0x04,0x0C,0x00,0x01,0x02,0x02,0x02,0x01,0x00,/*- 文字: D -*/*- 宋体9; 此字体下对应的点阵为:宽x高=6x12 -*/*- 高度不是8的倍数,现调整为:宽度x高度=6x16 -*/0x04,0xFC,0x04,0x04,0xF8,0x00,0x02,0x03,0x02,0x02,0

31、x01,0x00,/*- 文字: E -*/*- 宋体9; 此字体下对应的点阵为:宽x高=6x12 -*/*- 高度不是8的倍数,现调整为:宽度x高度=6x16 -*/0x04,0xFC,0x24,0x74,0x0C,0x00,0x02,0x03,0x02,0x02,0x03,0x00,/*- 文字: F -*/*- 宋体9; 此字体下对应的点阵为:宽x高=6x12 -*/*- 高度不是8的倍数,现调整为:宽度x高度=6x16 -*/0x04,0xFC,0x24,0x74,0x0C,0x00,0x02,0x03,0x02,0x00,0x00,0x00,/*- 文字: G -*/*- 宋体9;

32、此字体下对应的点阵为:宽x高=6x12 -*/*- 高度不是8的倍数,现调整为:宽度x高度=6x16 -*/0xF0,0x08,0x04,0x44,0xCC,0x40,0x00,0x01,0x02,0x02,0x01,0x00,/*- 文字: H -*/*- 宋体9; 此字体下对应的点阵为:宽x高=6x12 -*/*- 高度不是8的倍数,现调整为:宽度x高度=6x16 -*/0x04,0xFC,0x20,0x20,0xFC,0x04,0x02,0x03,0x00,0x00,0x03,0x02,/*- 文字: I -*/*- 宋体9; 此字体下对应的点阵为:宽x高=6x12 -*/*- 高度不是

33、8的倍数,现调整为:宽度x高度=6x16 -*/0x04,0x04,0xFC,0x04,0x04,0x00,0x02,0x02,0x03,0x02,0x02,0x00,/*- 文字: J -*/*- 宋体9; 此字体下对应的点阵为:宽x高=6x12 -*/*- 高度不是8的倍数,现调整为:宽度x高度=6x16 -*/0x00,0x04,0x04,0xFC,0x04,0x04,0x06,0x04,0x04,0x03,0x00,0x00,/*- 文字: K -*/*- 宋体9; 此字体下对应的点阵为:宽x高=6x12 -*/*- 高度不是8的倍数,现调整为:宽度x高度=6x16 -*/0x04,0xFC,0x24,0xD0,0x0C,0x04,0x02,0x03,0x02,0x00,0x03,0x02,/*- 文

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

当前位置:首页 > 科普知识


经营许可证编号:宁ICP备18001539号-1