LCD lgm12864程序代码.docx

上传人:b****7 文档编号:11198918 上传时间:2023-02-25 格式:DOCX 页数:18 大小:18.31KB
下载 相关 举报
LCD lgm12864程序代码.docx_第1页
第1页 / 共18页
LCD lgm12864程序代码.docx_第2页
第2页 / 共18页
LCD lgm12864程序代码.docx_第3页
第3页 / 共18页
LCD lgm12864程序代码.docx_第4页
第4页 / 共18页
LCD lgm12864程序代码.docx_第5页
第5页 / 共18页
点击查看更多>>
下载资源
资源描述

LCD lgm12864程序代码.docx

《LCD lgm12864程序代码.docx》由会员分享,可在线阅读,更多相关《LCD lgm12864程序代码.docx(18页珍藏版)》请在冰豆网上搜索。

LCD lgm12864程序代码.docx

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

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

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

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1