LCD lgm12864程序代码.docx
- 文档编号:3458408
- 上传时间:2023-05-05
- 格式:DOCX
- 页数:18
- 大小:18.31KB
LCD lgm12864程序代码.docx
《LCD lgm12864程序代码.docx》由会员分享,可在线阅读,更多相关《LCD lgm12864程序代码.docx(18页珍藏版)》请在冰点文库上搜索。
LCDlgm12864程序代码
LCDlgm12864程序代码
/**************************************
LCD:
lgm12864,
LCDcontrolIC:
KS0108
**************************************/
#defineucharunsignedchar
#defineuintunsignedint
#defineDataPortP0//LCD:
D0-D7
sbitRS=P2^1;//DataorInstrumentSelect
sbitRW=P2^2;//WriteorRead
sbitE=P2^3;//Enablesingle
sbitCS1=P2^4;//Masterchipenable
sbitCS2=P2^5;
sbitRST=P2^6;//Lcmreset
/*数字数组*/
unsignedcharcodesuzidot[160]={
/*0CHAR_30*/
0x00,0xE0,0xF0,0x18,0x08,0x18,0xF0,0xE0,0x00,0x0F,0x1F,0x30,0x20,0x30,0x1F,0x0F,
/*1CHAR_31*/
0x00,0x10,0x10,0xF8,0xF8,0x00,0x00,0x00,0x00,0x20,0x20,0x3F,0x3F,0x20,0x20,0x00,
/*2CHAR_32*/
0x00,0x70,0x78,0x08,0x08,0x88,0xF8,0x70,0x00,0x30,0x38,0x2C,0x26,0x23,0x31,0x30,
/*3CHAR_33*/
0x00,0x30,0x38,0x88,0x88,0xC8,0x78,0x30,0x00,0x18,0x38,0x20,0x20,0x31,0x1F,0x0E,
/*4CHAR_34*/
0x00,0x00,0xC0,0xE0,0x30,0xF8,0xF8,0x00,0x00,0x07,0x07,0x24,0x24,0x3F,0x3F,0x24,
/*5CHAR_35*/
0x00,0xF8,0xF8,0x88,0x88,0x88,0x08,0x08,0x00,0x19,0x39,0x21,0x20,0x31,0x1F,0x0E,
/*6CHAR_36*/
0x00,0xE0,0xF0,0x98,0x88,0x98,0x18,0x00,0x00,0x0F,0x1F,0x31,0x20,0x31,0x1F,0x0E,
/*7CHAR_37*/
0x00,0x38,0x38,0x08,0xC8,0xF8,0x38,0x08,0x00,0x00,0x00,0x3F,0x3F,0x00,0x00,0x00,
/*8CHAR_38*/
0x00,0x70,0xF8,0x88,0x08,0x88,0xF8,0x70,0x00,0x1C,0x3E,0x23,0x21,0x23,0x3E,0x1C,
/*9CHAR_39*/
0x00,0xE0,0xF0,0x18,0x08,0x18,0xF0,0xE0,0x00,0x00,0x31,0x33,0x22,0x33,0x1F,0x0F
};
unsignedcharcodehzdot[416]={
/*盐CD1CE*/
0x80,0x88,0x88,0x88,0xFF,0x48,0x48,0x48,0x00,0xFF,0x00,0x08,0x30,0x60,0x00,0x00,
0x40,0x41,0x40,0x7E,0x42,0x42,0x7E,0x42,0x42,0x7E,0x42,0x42,0x7E,0x40,0x40,0x00,
/*城CB3C7*/
0x10,0x10,0xFF,0x10,0x10,0xF8,0x48,0x48,0xC8,0x08,0xFF,0x08,0x0A,0xEC,0x48,0x00,
0x04,0x0C,0x07,0x42,0x32,0x0F,0x08,0x58,0x4F,0x20,0x13,0x0C,0x33,0x40,0x38,0x00,
/*工CB9A4*/
0x00,0x00,0x02,0x02,0x02,0x02,0x02,0xFE,0x02,0x02,0x02,0x02,0x02,0x02,0x00,0x00,
0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x3F,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x00,
/*学CD1A7*/
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,
/*院CD4BA*/
0xFE,0x02,0x32,0x4A,0x86,0x0C,0x24,0x24,0x25,0x26,0x24,0x24,0x24,0x0C,0x04,0x00,
0xFF,0x00,0x02,0x04,0x83,0x41,0x31,0x0F,0x01,0x01,0x7F,0x81,0x81,0x81,0xF1,0x00,
};
unsignedcharcodehzdottime[]={
/*年CC4EA*/
0x00,0x20,0x10,0xCC,0x47,0x44,0x44,0xFC,0x44,0x44,0x44,0x64,0x46,0x04,0x00,0x00,
0x04,0x04,0x04,0x07,0x04,0x04,0x04,0xFF,0x04,0x04,0x04,0x04,0x04,0x06,0x04,0x00,
/*月CD4C2*/
0x00,0x00,0x00,0x00,0xFE,0x22,0x22,0x22,0x22,0x22,0x22,0xFF,0x02,0x00,0x00,0x00,
0x00,0x80,0x40,0x30,0x0F,0x02,0x02,0x02,0x02,0x42,0x82,0x7F,0x00,0x00,0x00,0x00,
/*日CC8D5*/
0x00,0x00,0x00,0xFE,0x82,0x82,0x82,0x82,0x82,0x82,0x82,0xFF,0x02,0x00,0x00,0x00,
0x00,0x00,0x00,0x7F,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x7F,0x00,0x00,0x00,0x00,
/*时CCAB1*/
0x00,0xFC,0x84,0x84,0x84,0xFE,0x14,0x10,0x90,0x10,0x10,0x10,0xFF,0x10,0x10,0x00,
0x00,0x3F,0x10,0x10,0x10,0x3F,0x00,0x00,0x00,0x23,0x40,0x80,0x7F,0x00,0x00,0x00,
/*分CB7D6*/
0x00,0x80,0x40,0x20,0x98,0x86,0x80,0x80,0x83,0x8C,0x90,0x20,0xC0,0x80,0x80,0x00,
0x01,0x00,0x80,0x40,0x20,0x1F,0x00,0x40,0x80,0x40,0x3F,0x00,0x00,0x01,0x00,0x00,
/*秒CC3EB*/
0x20,0x24,0x24,0xA4,0xFE,0xA3,0x22,0x80,0x70,0x00,0xFF,0x00,0x10,0x20,0x60,0x00,
0x10,0x08,0x06,0x01,0xFF,0x00,0x81,0x80,0x40,0x20,0x17,0x08,0x04,0x03,0x00,0x00,
/*周CD6DC*/
0x00,0x00,0xFE,0x82,0x92,0x92,0x92,0xFE,0x92,0x9A,0xD2,0x82,0xFF,0x02,0x00,0x00,
0x40,0x20,0x1F,0x00,0x00,0x7E,0x22,0x22,0x22,0x3F,0x42,0x80,0x7F,0x00,0x00,0x00,
/*一CD2BB*/
0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0xC0,0x80,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
/*二CB6FE*/
0x00,0x00,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x08,0x0C,0x08,0x00,0x00,0x00,
0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x10,0x18,0x10,0x00,
/*三CC8FD*/
0x00,0x04,0x84,0x84,0x84,0x84,0x84,0x84,0x84,0x84,0x84,0xC4,0x86,0x04,0x00,0x00,
0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x20,0x30,0x20,0x00,
/*四CCBC4*/
0x00,0xFC,0x04,0x04,0x04,0xFC,0x04,0x04,0x04,0xFC,0x04,0x04,0x04,0xFE,0x04,0x00,
0x00,0x7F,0x20,0x28,0x24,0x23,0x20,0x20,0x20,0x21,0x22,0x22,0x22,0x7F,0x00,0x00,
/*五CCEE5*/
0x00,0x04,0x84,0x84,0x84,0x84,0xFC,0x84,0x84,0x84,0x84,0xC4,0x86,0x84,0x00,0x00,
0x40,0x40,0x40,0x40,0x78,0x47,0x40,0x40,0x40,0x40,0x40,0x7F,0x40,0x60,0x40,0x00,
/*六CC1F9*/
0x20,0x20,0x20,0x20,0x20,0x22,0x2C,0x38,0x20,0x20,0x20,0x20,0x20,0x30,0x20,0x00,
0x00,0x40,0x20,0x18,0x06,0x03,0x00,0x00,0x00,0x01,0x02,0x0C,0x38,0x70,0x00,0x00,
/*星CD0C7*/
0x00,0x00,0xBE,0x2A,0x2A,0x2A,0x2A,0xEA,0x2A,0x2A,0x2A,0x2A,0xBF,0x02,0x00,0x00,
0x48,0x44,0x4B,0x49,0x49,0x49,0x49,0x7F,0x49,0x49,0x49,0x4D,0x49,0x61,0x40,0x00,
/*期CC6DA*/
0x00,0x08,0xFF,0xA8,0xA8,0xA8,0xFF,0x08,0x00,0xFE,0x22,0x22,0x22,0xFF,0x02,0x00,
0x84,0x44,0x37,0x04,0x04,0x14,0xA7,0x44,0x24,0x1F,0x02,0x42,0x82,0x7F,0x00,0x00
};
voidDelay(void)
{_nop_();_nop_();_nop_();_nop_();_nop_();
}
/*写一个字节数据或命令*/
voidout_byte(ucharbyte,bitRW0,bitRS0)
{Delay();Delay();Delay();//Delay();
RW=RW0;
RS=RS0;
Delay();
DataPort=byte;
Delay();
E=1;Delay();//LCD使能
E=0;Delay();
}
//设定行地址(页)--X0-7
voidSetLine(ucharline)
{line=line&0x07;//0<=line<=7
line=line|0xb8;//10111xxx
out_byte(line,0,0);//写行地址命令
}
//设定列地址--Y0-63
voidSetColumn(ucharcolumn)
{
column=column&0x3f;//0= column=column|0x40;//01xxxxxx out_byte(column,0,0);//写列地址命令 } //设定显示开始行--XX voidSetStartLine(ucharstartline)//0--63 { startline=startline&0x3f; startline=startline|0xc0;//11000000 out_byte(startline,0,0); } //选择屏幕 //screen: 0-全屏,1-左屏,2-右屏 voidSelectScreen(ucharscreen) { switch(screen) {case0: CS1=1;Delay();//全屏 CS2=1;Delay(); break; case1: CS1=1;Delay();//左屏 CS2=0;Delay(); break; case2: CS1=0;Delay();//右屏 CS2=1;Delay(); break; } } //清屏 //screen: 0-全屏,1-左屏,2-右屏 voidClearScreen(ucharscreen) {uchari,j; SelectScreen(screen); for(i=0;i<8;i++) {SetLine(i); for(j=0;j<64;j++) { out_byte(0x00,0,1);//写数据0x00清屏 } } } voidClearScreen123(void) {uchari; ClearScreen (1);for(i=0;i<20;i++);//清屏 ClearScreen (2);for(i=0;i<20;i++); } //显示8*8点阵 //旋转90度: 字模被竖着切分 //lin: 行(0-7),column: 列(0-7) //address: 字模区首地址 voidShow88(ucharlin,ucharcolumn,uchar*str) { uchari; SetLine(lin); SetColumn(column<<3);//每隔八点为一列,共0-7列 for(i=0;i<8;i++)out_byte(*(str+i),0,1); } //显示8*16字符 //screen: 屏幕选择 //lin: 行(0-3),column: 列(0-7) voidShowChar(ucharscreen,ucharlin,ucharcolumn,uchar*ch) {lin=lin<<1; SelectScreen(screen); Show88(lin,column,ch); Show88(lin+1,column,ch+8); } //显示一个汉字 //screen: 屏幕选择 //lin: 行(0-3),column: 列(0-7) //hzcode: 汉字代码(自定义的) voidShowHZ(ucharscreen,ucharlin,ucharcolumn,ucharhzcode[]) {lin=lin<<1;//lin*2 SelectScreen(screen); Show88(lin,column,hzcode); Show88(lin,column+1,hzcode+8); Show88(lin+1,column,hzcode+16); Show88(lin+1,column+1,hzcode+24); } //连续显示汉字-lin: 行(0-3),column: 列(0-7) //N: 一行连续显示汉字个数 voidShowHZL(ucharscreen,ucharlin,ucharcolumn,ucharN,ucharhz[]) {uchari; ucharidatan0,n1,n2,col; col=column<<3; n0=(64-col)/16;//一屏可显示汉字个数(<=4) if(N<=n0) {for(i=0;i {ShowHZ(screen,lin,column,hz+i*32);//hz+i*32表示连续的汉字 column=column+2; } } elseif(N>n0)//超出一屏可显示汉字个数(<=4) {for(i=0;i {ShowHZ(screen,lin,column,hz+i*32); column=column+2; } n1=N-n0;//剩余字数 if(++screen>2)return;//在下一屏显示剩余字数,如屏幕超出则返回 col=0;//在下一屏0列开始显示剩余字数 if(n1<=4) {for(i=0;i {ShowHZ(screen,lin,col,(hz+n0*32)+i*32); col=col+2; } } elseif(n1>4)//超出一屏可显示汉字个数(<=4) {for(i=0;i<4;i++) {ShowHZ(screen,lin,col,(hz+n0*32)+i*32); col=col+2; } n2=n1-4;//剩余字数 if(++screen>2)return; col=0; for(i=0;i {ShowHZ(screen,lin,col,(hz+n0*32+128)+i*32); col=col+2; } } } } //连续显示数字或字母 //N: 一行连续显示字符个数 voidShowCharL(ucharscreen,ucharlin,ucharcolumn,ucharN,ucharch[]) {uchari; ucharidatan0,n1,n2,col; col=column<<3; n0=(64-col)/8;//一屏可显示字符个数(<=8) if(N<=n0) {for(i=0;i {ShowChar(screen,lin,column,ch+i*16); column=column+1; } } elseif(N>n0) {for(i=0;i {ShowChar(screen,lin,column,ch+i*16); column=column+1; } n1=N-n0;//剩余字数 if(++screen>2)return; col=0; if(n1<=8) {for(i=0;i {ShowChar(screen,lin,col,(ch+n0*16)+i*16); col=col+1; } } elseif(n1>8) {for(i=0;i<8;i++) {ShowChar(screen,lin,col,(ch+n0*16)+i*16); col=col+1; } n2=n1-8;//剩余字数 if(++screen>2)return; col=0; for(i=0;i {ShowChar(screen,lin,col,(ch+n0*16+128)+i*16); col=col+1; } } } } //读显示数据 ucharReadByte() { uchardat; //CheckState(); RS=1;RW=1; DataPort=0xff; E=1; dat=DataPort; Delay(); //for(i=0;i<10;i++); E=0; return(dat); } //反显一个8*8字块 //lin: 行(0-3),column: 列(0-7) voidReverseShow88(ucharlin,ucharcolumn) { uchari; uchartab[8]; SetLine(lin);//读上部8列,每个方块8*8大小 SetColumn(column<<3); tab[0]=ReadByte();//空读! ! ! ! ! //? for(i=0;i<8;i++)tab[i]=~ReadByte(); //写回 SetLine(lin); SetColumn(column<<3); for(i=0;i<8;i++)out_byte(tab[i],0,1); } //反显一个字符8*16 //lin: 行(0-3),column: 列(0-7) voidReverseShowChar(ucharscreen,ucharlin,ucharcolumn) {lin=lin<<1; SelectScreen(screen); ReverseShow88(lin,column); ReverseShow88(lin+1,column); } //反显一个汉字16×16 //lin: 行(0-3),column: 列(0-7) voidReverseShowHZ(ucharscreen,ucharlin,ucharcolumn) { lin=lin<<1; SelectScreen(screen); ReverseShow88(lin,column); ReverseShow88(lin,column+1); ReverseShow88(lin+1,column); ReverseShow88(lin+1,column+1); } //连续反白显示汉字 //N: 一行连续显示汉字个数 voidReverseShowHZL(ucharscreen
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- LCD lgm12864 程序代码