LCD12864编码显示汉字.docx

上传人:李医生 文档编号:6202765 上传时间:2020-09-23 格式:DOCX 页数:11 大小:33.17KB
返回 下载 相关 举报
LCD12864编码显示汉字.docx_第1页
第1页 / 共11页
LCD12864编码显示汉字.docx_第2页
第2页 / 共11页
LCD12864编码显示汉字.docx_第3页
第3页 / 共11页
LCD12864编码显示汉字.docx_第4页
第4页 / 共11页
LCD12864编码显示汉字.docx_第5页
第5页 / 共11页
点击查看更多>>
资源描述

《LCD12864编码显示汉字.docx》由会员分享,可在线阅读,更多相关《LCD12864编码显示汉字.docx(11页珍藏版)》请在三一文库上搜索。

1、.#include #include #define uint unsigned int#define uchar unsigned char#define DATA P0 /LCD12864数据线sbit RS=P22; /数据 指令选择sbit RW=P21; /读 写 选择sbit EN=P20; /读 写使能sbit CS1=P23; /片选 1sbit CS2=P24; /片选 2/*/*定义中文字库*/*/uchar code Hzk=/*-文字 : 各 -*/*-宋体 12; 此字体下对应的点阵为:宽x 高 =16x16-*/0x00,0x20,0x20,0x10,0x08,0x

2、8F,0xB4,0x44,0x44,0xA4,0x9C,0x04,0x00,0x00,0x00,0x00,0x02,0x02,0x02,0x01,0x7F,0x42,0x42,0x42,0x42,0x42,0x42,0x7F,0x01,0x03,0x01,0x00,/*-文字 :位-*/*-宋体 12;此字体下对应的点阵为:宽x 高 =16x16-*/0x00,0xC0,0x30,0xEC,0x03,0x2A,0xC8,0x09,0x0A,0x0E,0x08,0xE8,0x48,0x08,0x00,0x00,0x01,0x00,0x00,0x7F,0x20,0x20,0x20,0x27,0x2

3、0,0x30,0x2E,0x21,0x20,0x20,0x20,0x00,/*-文字 :单-*/*-宋体 12;此字体下对应的点阵为:宽x 高 =16x16-*/0x00,0x00,0xF8,0x28,0x29,0x2E,0x2A,0xF8,0x28,0x2C,0x2B,0x2A,0xF8,0x00,0x00,0x00,0x08,0x08,0x0B,0x09,0x09,0x09,0x09,0xFF,0x09,0x09,0x09,0x09,0x0B,0x08,0x08,0x00,/*-文字 :机-*/*-宋体 12;此字体下对应的点阵为:宽x 高 =16x16-*/0x08,0x08,0xC8,

4、0xFF,0x48,0x88,0x08,0x00,0xFE,0x02,0x02,0x02,0xFE,0x00,0x00,0x00,0x04,0x03,0x00,0xFF,0x00,0x41,0x30,0x0C,0x03,0x00,0x00,0x00,0x3F,0x40,0x78,0x00,/*-文字 :爱-*/*-宋体 12;此字体下对应的点阵为:宽x 高 =16x16-*/0x00,0x40,0xB2,0x96,0x9A,0x92,0xF6,0x9A,0x93,0x91,0x99,0x97,0x91,0x90,0x30,0x00, 0x40,0x20,0xA0,0x90,0x4C,0x47,

5、0x2A,0x2A,0x12,0x1A,0x26,0x22,0x40,0xC0,0x40,0x00,./*-文字 :好-*/*-宋体 12;此字体下对应的点阵为:宽x 高 =16x16-*/0x10,0x10,0xF0,0x1F,0x10,0xF0,0x80,0x82,0x82,0x82,0xF2,0x8A,0x86,0x82,0x80,0x00,0x80,0x43,0x22,0x14,0x0C,0x73,0x20,0x00,0x40,0x80,0x7F,0x00,0x00,0x00,0x00,0x00,/*-文字 :者-*/*-宋体 12;此字体下对应的点阵为:宽x 高 =16x16-*/0

6、x00,0x20,0x24,0x24,0x24,0x24,0xA4,0xBF,0x64,0x24,0x34,0x28,0x26,0x24,0x20,0x00,0x04,0x04,0x04,0x02,0x02,0xFF,0x49,0x49,0x49,0x49,0x49,0x49,0xFF,0x00,0x00,0x00,/*-文字 :你-*/*-宋体 12;此字体下对应的点阵为:宽x 高 =16x16-*/0x80,0x40,0xF0,0x2C,0x43,0x20,0x98,0x0F,0x0A,0xE8,0x08,0x88,0x28,0x1C,0x08,0x00,0x00,0x00,0x7F,0x

7、00,0x10,0x0C,0x03,0x21,0x40,0x3F,0x00,0x00,0x03,0x1C,0x08,0x00,/*-文字 :们-*/*-宋体 12;此字体下对应的点阵为:宽x 高 =16x16-*/0x80,0x40,0xF0,0x1C,0x03,0xF0,0x01,0x0E,0x04,0x00,0x04,0x04,0x04,0xFC,0x00,0x00,0x00,0x00,0x7F,0x00,0x00,0x7F,0x00,0x00,0x00,0x00,0x00,0x20,0x40,0x3F,0x00,0x00,/*-文字 :辛-*/*-宋体 12;此字体下对应的点阵为:宽x

8、高 =16x16-*/0x80,0x84,0x84,0x94,0xA4,0xC4,0x85,0x86,0x84,0xC4,0xA4,0x94,0x84,0x84,0x80,0x00,0x00,0x04,0x04,0x04,0x04,0x04,0x04,0xFF,0x04,0x04,0x04,0x04,0x04,0x00,0x00,0x00,/*-文字 :苦-*/*-宋体 12;此字体下对应的点阵为:宽x 高 =16x16-*/0x40,0x44,0x44,0x44,0x44,0x5F,0x44,0xF4,0x44,0x44,0x5F,0x44,0x44,0x44,0x44,0x00,0x00,

9、0x00,0x00,0x7E,0x22,0x22,0x22,0x23,0x22,0x22,0x22,0x7E,0x00,0x00,0x00,0x00,/*-文字 :了-*/*-宋体 12;此字体下对应的点阵为:宽x 高 =16x16-*/0x00,0x02,0x02,0x02,0x02,0x02,0x02,0xF2,0x12,0x0A,0x0A,0x06,0x06,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x80,0x7F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*-文字 :希-*/*-宋体 12;此字

10、体下对应的点阵为:宽x 高 =16x16-*/0x20,0x20,0x30,0x30,0xA9,0x6A,0x3A,0x24,0xE4,0x2A,0x29,0x30,0x20,0x20,0x20,0x00,0x08,0x04,0x02,0x01,0x3F,0x01,0x01,0x01,0xFF,0x01,0x21,0x61,0x3F,0x00,0x00,0x00,/*-文字 :望-*/*-宋体 12;此字体下对应的点阵为:宽x 高 =16x16-*/0x04,0x04,0xFC,0x85,0x46,0x24,0x04,0x80,0x7E,0x2A,0x2A,0xAA,0xAA,0xFE,0x0

11、0,0x00,0x00,0x40,0x42,0x4A,0x4A,0x4A,0x4A,0x7E,0x4A,0x4A,0x4A,0x4A,0x4A,0x42,0x40,0x00,./*-文字 :大-*/*-宋体 12;此字体下对应的点阵为:宽x 高 =16x16-*/0x20,0x20,0x20,0x20,0x20,0x20,0xA0,0x7F,0xA0,0x20,0x20,0x20,0x20,0x20,0x20,0x00,0x00,0x80,0x40,0x20,0x10,0x0C,0x03,0x00,0x01,0x06,0x08,0x30,0x60,0xC0,0x40,0x00,/*-文字 :家

12、-*/*-宋体 12;此字体下对应的点阵为:宽x 高 =16x16-*/0x00,0x18,0x04,0x14,0x94,0x94,0xD5,0xB6,0x14,0x14,0x94,0x04,0x14,0x0C,0x04,0x00,0x00,0x29,0x29,0x15,0x14,0x4A,0x89,0x44,0x3F,0x06,0x09,0x09,0x10,0x30,0x10,0x00,/*-文字 :能-*/*-宋体 12;此字体下对应的点阵为:宽x 高 =16x16-*/0x10,0xB8,0x97,0x92,0x90,0x94,0xB8,0x10,0x00,0x7F,0x48,0x48,

13、0x44,0x74,0x20,0x00,0x00,0xFF,0x0A,0x0A,0x4A,0x8A,0x7F,0x00,0x00,0x3F,0x44,0x44,0x42,0x72,0x20,0x00,/*-文字 :多-*/*-宋体 12;此字体下对应的点阵为:宽x 高 =16x16-*/0x00,0x00,0x00,0x20,0x90,0x88,0x54,0x53,0xA2,0x22,0x12,0x0A,0x06,0x00,0x00,0x00,0x00,0x81,0x89,0x89,0x44,0x44,0x42,0x25,0x29,0x11,0x11,0x09,0x05,0x03,0x01,0

14、x00,/*-文字 :多-*/*-宋体 12;此字体下对应的点阵为:宽x 高 =16x16-*/0x00,0x00,0x00,0x20,0x90,0x88,0x54,0x53,0xA2,0x22,0x12,0x0A,0x06,0x00,0x00,0x00,0x00,0x81,0x89,0x89,0x44,0x44,0x42,0x25,0x29,0x11,0x11,0x09,0x05,0x03,0x01,0x00,/*-文字 :交-*/*-宋体 12;此字体下对应的点阵为:宽x 高 =16x16-*/0x00,0x08,0x88,0x48,0x38,0x28,0x09,0x0E,0x0C,0x0

15、8,0x98,0x28,0x68,0x48,0x08,0x00,0x00,0x80,0x80,0x40,0x41,0x22,0x14,0x18,0x0C,0x16,0x23,0x61,0xC0,0x40,0x00,0x00,/*-文字 :流-*/*-宋体 12;此字体下对应的点阵为:宽x 高 =16x16-*/0x10,0x60,0x01,0x86,0x60,0x04,0x44,0x64,0x55,0x4E,0x44,0x64,0xC4,0x04,0x04,0x00,0x04,0x04,0xFC,0x03,0x40,0x30,0x0F,0x00,0x00,0x7F,0x00,0x3F,0x40

16、,0x40,0x70,0x00,/*-文字 :学-*/*-宋体 12;此字体下对应的点阵为:宽x 高 =16x16-*/0x40,0x30,0x10,0x12,0x5C,0x54,0x50,0x51,0x5E,0xD4,0x50,0x18,0x57,0x32,0x10,0x00,0x00,0x02,0x02,0x02,0x02,0x02,0x42,0x82,0x7F,0x02,0x02,0x02,0x02,0x02,0x02,0x00,/*-文字 :习-*/*-宋体 12;此字体下对应的点阵为:宽x 高 =16x16-*/0x00,0x00,0x02,0x02,0x0A,0x12,0x22,0

17、x62,0x02,0x82,0x82,0x42,0x02,0xFE,0x00,0x00,.0x00,0x00,0x04,0x0C,0x04,0x02,0x02,0x01,0x01,0x00,0x20,0x40,0x80,0x7F,0x00,0x00,/*-文字 :24-*/*-宋体 12;此字体下对应的点阵为:宽x 高 =16x16-*/0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

18、0x00,0x00,0x00,0x00,0x00,0x00,;/*/*定义 ASCII 字库 8 列 *16 行*/*/uchar code Ezk=/*-文字 :Q-*/*-宋体 12;此字体下对应的点阵为:宽x 高 =8x16-*/0xE0,0x10,0x08,0x08,0x08,0x10,0xE0,0x00,0x0F,0x18,0x24,0x24,0x38,0x50,0x4F,0x00,/*-文字 :Q-*/*-宋体 12;此字体下对应的点阵为:宽x 高 =8x16-*/0xE0,0x10,0x08,0x08,0x08,0x10,0xE0,0x00,0x0F,0x18,0x24,0x24

19、,0x38,0x50,0x4F,0x00,/*-文字 :3-*/*-宋体 12;此字体下对应的点阵为:宽x 高 =8x16-*/0x00,0x30,0x08,0x88,0x88,0x48,0x30,0x00,0x00,0x18,0x20,0x20,0x20,0x11,0x0E,0x00,/*-文字 :4-*/*-宋体 12;此字体下对应的点阵为:宽x 高 =8x16-*/0x00,0x00,0xC0,0x20,0x10,0xF8,0x00,0x00,0x00,0x07,0x04,0x24,0x24,0x3F,0x24,0x00,/*-文字 :5-*/*-宋体 12;此字体下对应的点阵为:宽x

20、高 =8x16-*/0x00,0xF8,0x08,0x88,0x88,0x08,0x08,0x00,0x00,0x19,0x21,0x20,0x20,0x11,0x0E,0x00,/*-文字 :4-*/*-宋体 12;此字体下对应的点阵为:宽x 高 =8x16-*/0x00,0x00,0xC0,0x20,0x10,0xF8,0x00,0x00,0x00,0x07,0x04,0x24,0x24,0x3F,0x24,0x00,/*-文字 :1-*/*-宋体 12;此字体下对应的点阵为:宽x 高 =8x16-*/0x00,0x10,0x10,0xF8,0x00,0x00,0x00,0x00,0x00

21、,0x20,0x20,0x3F,0x20,0x20,0x00,0x00,/*-文字 :5-*/*-宋体 12;此字体下对应的点阵为:宽x 高 =8x16-*/.0x00,0xF8,0x08,0x88,0x88,0x08,0x08,0x00,0x00,0x19,0x21,0x20,0x20,0x11,0x0E,0x00,/*-文字 :2-*/*-宋体 12;此字体下对应的点阵为:宽x 高 =8x16-*/0x00,0x70,0x08,0x08,0x08,0x88,0x70,0x00,0x00,0x30,0x28,0x24,0x22,0x21,0x30,0x00,/*-文字 :4-*/*-宋体 1

22、2;此字体下对应的点阵为:宽x 高 =8x16-*/0x00,0x00,0xC0,0x20,0x10,0xF8,0x00,0x00,0x00,0x07,0x04,0x24,0x24,0x3F,0x24,0x00,/*-文字 :4-*/*-宋体 12;此字体下对应的点阵为:宽x 高 =8x16-*/0x00,0x00,0xC0,0x20,0x10,0xF8,0x00,0x00,0x00,0x07,0x04,0x24,0x24,0x3F,0x24,0x00,/*-文字 :-*/*- 宋体 12; 此字体下对应的点阵为:宽 x 高 =8x16 -*/ 0x00,0x00,0x00,0x00,0x00

23、,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*-文字 :-*/*- 宋体 12; 此字体下对应的点阵为:宽 x 高 =8x16 -*/ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*-文字 :-*/*- 宋体 12; 此字体下对应的点阵为:宽 x 高 =8x16 -*/ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

24、0x00,0x00,/*-文字 :-*/*- 宋体 12; 此字体下对应的点阵为:宽 x 高 =8x16 -*/ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*-文字 :-*/*- 宋体 12; 此字体下对应的点阵为:宽 x 高 =8x16 -*/ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*-文字 :-*/*- 宋体 12; 此字体下对应的点阵为:宽 x 高

25、 =8x16 -*/ 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,;/* 状态检查, LCD 是否忙 */void CheckState().uchar dat;/状态信息(判断是否忙)RS=0; / 数据 指令选择, D/I ( RS) =“ L ” ,表示DB7 DB0 为显示指令数据RW=1; /R/W= “ H” , E=“ H”数据被读到DB7 DB0doDATA=0x00;EN=1; /EN下降源_nop_(); / 一个时钟延时dat=DATA;EN=0;dat=0

26、x80 & dat; / 仅当第 7 位为 0 时才可操作 (判别 busy 信号 )while(!(dat=0x00);/* 写命令到LCD 中 */SendCommandToLCD(uchar com)CheckState();/ 状态检查, LCD 是否忙RS=0;/向 LCD 发送命令。 RS=0 写指令, RS=1 写数据RW=0;/R/W= “ L ” , E=“H L ”数据被写到IR 或 DRDA TA=com;/com : 命令EN=1;/EN 下降源_nop_();_nop_();EN=0;/* 设置页0xb8 是页的首地址*/void SetLine(uchar page

27、)page=0xb8|page; /1011 1xxx 0=page=7 设定页地址 -X 0-7,8 行为一页 64/8=8 ,共 8 页 SendCommandToLCD(page);/* 设定显示开始行,0xc0 是行的首地址*/void SetStartLine(uchar startline)startline=0xc0|startline; /1100 0000SendCommandToLCD(startline); / 设置从哪行开始:0-63,一般从0 行开始显示/* 设定列地址 -Y 0-63 , 0x40 是列的首地址 */void SetColumn(uchar colu

28、mn).column=column &0x3f; /column最大值为64,越出0=column=63column= 0x40|column; /01xx xxxxSendCommandToLCD(column);/* 开关显示, 0x3f 是开显示, 0x3e 是关显示 */void SetOnOff(uchar onoff)onoff=0x3e|onoff; /0011 111x,onoff 只能为0 或者 1SendCommandToLCD(onoff);/* 写显示数据*/void WriteByte(uchar dat)CheckState();/ 状态检查, LCD 是否忙RS=

29、1; /RS=0 写指令, RS=1 写数据RW=0;/R/W= “ L” , E=“ H L ”数据被写到IR 或 DRDA TA=dat;/dat: 显示数据EN=1; /EN 下降源_nop_();_nop_();EN=0;/* 选择屏幕screen: 0-全屏 ,1-左屏 ,2-右屏 */void SelectScreen(uchar screen)switch(screen) case 0: CS1=0;/ 全屏_nop_(); _nop_(); _nop_();CS2=0;_nop_(); _nop_(); _nop_();break;case 1: CS1=1;/左屏_nop_(

30、); _nop_(); _nop_();CS2=0;_nop_(); _nop_(); _nop_();break;case 2: CS1=0;/右屏_nop_(); _nop_(); _nop_();.CS2=1;_nop_(); _nop_(); _nop_();break;/* 清屏 screen: 0-全屏 ,1-左屏 ,2-右 */void ClearScreen(uchar screen)uchar i,j;SelectScreen(screen);for(i=0;i8;i+)/ 控制页数0-7,共 8 页SetLine(i);SetColumn(0);for(j=0;j64;j+

31、)/控制列数0-63,共 64 列WriteByte(0x00); / 写点内容,列地址自动加1/* 延时程序 */void delay(uint z)uint i,j;for(i=0; iz; i+)for(j = 0; j 110; j+);/* 向上滚屏 */* 这里用做滚动显示*/*voidlcd_rol()uint i;for(i = 0; i 64; i+)CS1=0; / 片选 1SendCommandToLCD(0xc0+i);CS1=1;CS2=0;/ 片选 2SendCommandToLCD(0xc0+62-i);CS2=0; / 片选 2.delay(6);*/* 初始化

32、 LCD*/void InitLCD()CheckState();SelectScreen(0);SetOnOff(0); / 关显示SelectScreen(0);SetOnOff(1); / 开显示SelectScreen(0);ClearScreen(0);/清屏SetStartLine(0); / 开始行 :0/* 显示全角汉字 */void Display(uchar ss,uchar page,uchar column,uchar number)int i; / 选屏参数, pagr 选页参数, column 选列参数, number 选第几汉字输出SelectScreen(ss)

33、;column=column&0x3f;SetLine(page); /写上半页SetColumn(column); / 控制列for(i=0;i16;i+)/控制 16 列的数据输出WriteByte(Hzki+32*number); /i+32*number汉字的前16 个数据输出SetLine(page+1);/写下半页SetColumn(column);/控制列for(i=0;i16;i+)/ 控制 16 列的数据输出.WriteByte(Hzki+32*number+16);/i+32*number+16汉字的后 16 个数据输出/* 显示半角汉字和数字和字母*/void Displ

34、ayen(uchar ss,uchar page,uchar column,uchar number)uint i;/ 选屏参数, pagr 选页参数, column 选列参数, number 选第几汉字输出SelectScreen(ss);column=column&0x3f;SetLine(page); /写上半页SetColumn(column);for(i=0;i8;i+)WriteByte(Ezki+16*number);SetLine(page+1);/写下半页SetColumn(column);for(i=0;i8;i+)WriteByte(Ezki+16*number+8);/

35、* 主函数 */void main()uint i;InitLCD();/ 初始 12864ClearScreen(0);/清屏SetStartLine(0);/ 显示开始行while(1)/* 可以单个显示Display(2,0,0*16,0);/.Display(2,0,1*16,1);/Display(2,0,2*16,2);/Display(2,0,3*16,3);/Display(1,0,4*16,4);/Display(1,0,5*16,5);/Display(1,0,6*16,6);/*/* 可以多个显示,这里是4 个一起显示 */for(i=0;i4;i+)Display(1,

36、0,i*16,i);/*Display(选屏参数 (CS2,CS1),pagr 选页参数, column 选列参数, number 选第几汉字输出)*/_nop_();Display(2,0,i*16,i+4);_nop_();Display(1,0+2,i*16,i+8);_nop_();Display(2,0+2,i*16,i+12);_nop_();Display(1,0+2+2,i*16,i+16);_nop_();Display(2,0+2+2,i*16,i+20);for(i=0;i8;i+)Displayen(1,0+2+2+2,i*8,i);_nop_(); ;Displayen(2,0+2+2+2,i*8,i+8);/* 这里用做滚动显示*/*while(1)lcd_rol();delay(1000);*/.

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

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


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