📄 lcd.c
字号:
///////////////////////////////////////////////////////////////////////////////////////
//
//
//
//
//
//
//
/////////////////////////////////////////////////////////////////////////////////////////////
#include "lcd.h"
/*====================== 延时子程序=================================*/
void short_delay(uint i)
{ uint idata j;
for(j=0;j<=i;j++);
}
///////////////////////////////////////////////////////////////////////
void delayms(uint tickms)
{
uchar idata count,i;
_nop_();
_nop_();
_nop_();
for(i=tickms;i>0;i--)
{ for(count=0;count<=58;count++) {;}
_nop_();
}
}
/* ----------------写显示数据子程序------------------------*/
void WraDataByte(uchar dat0)
{
databus = 0xff;
a0=0;
_nop_();
databus=dat0;
_nop_();
_nop_();
cs =0;
wr = 0;
_nop_();
wr = 1;
cs = 1;
}
/*---------------读显示数据子程序-------------------------*/
uchar RdaDataByte(uchar addl,uchar addh)
{
uchar idata dat0;
databus = 0xff;
a0=0;
rd = 1;
wr = 1;
WraControlByte(0x59);
WraDataByte(0x06);
WraControlByte(0x4c);
WraControlByte(0x46); //设置光标指针
WraDataByte(addl);
WraDataByte(addh);
WraControlByte(0x43);
cs =0;
a0=1;
_nop_();
rd = 0;
_nop_();
dat0 = databus;
_nop_();
rd = 1;
a0=1;
cs = 1;
return(dat0);
}
/* ---------------写指令代码子程序-------------------------*/
void WraControlByte(uchar com)
{
databus=0xff;
a0=1;
databus=com;
cs = 0;
wr = 0;
_nop_();
wr = 1;
cs = 1;
a0 = 1;
}
/* ----------------------------------------*/
void FullWithTwoByte(uchar data1,uchar data2)
{
uchar idata i,j;
for(i=0;i<40;i++)
{
WraDataByte(data1);
}
for(j=0;j<40;j++)
{
WraDataByte(data2);
}
}
/* -----------清屏子程序-----------------------------*/
void clr(void)
{
uchar idata i;
WraControlByte(0x59);
WraDataByte(0x06);
WraControlByte(0x46);
WraDataByte(0x00);
WraDataByte(0x00);
WraControlByte(0x4C);
WraControlByte(0x42);
for(i=0;i<120;i++)
{
FullWithTwoByte(0x00,0x00);
}
}
/* ---------------写汉字子程序-------------------------*/
/*void wrhz(unsigned int row,unsigned int col)
{
int i,k;
unsigned int cursor,tempaddress;
unsigned int temprow,tempcol;
unsigned char addl,addh;
WraControlByte(0x59);
WraDataByte(0x06);
WraControlByte(0x4f); //光标下移
for(i=0;i<4;i++) //4个汉字
{
tempcol=col+i*2;
for(k=0;k<16;k++)
{
temprow=row+k;
cursor=0x0000+temprow*40+tempcol; //加上显示一区的起始地址
tempaddress=cursor;
addl=tempaddress&0x00ff;
addh=((cursor&0xff00)>>8);
WraControlByte(0x46); //设置光标指针
WraDataByte(addl);
WraDataByte(addh);
WraControlByte(0x42);
WraDataByte(hztab[i*32+2*k]);
}
for(k=0;k<16;k++)
{
temprow=row+k;
cursor=0x0000+temprow*40+tempcol+1; //加上显示一区的起始地址
tempaddress=cursor;
addl=tempaddress&0x00ff;
addh=((cursor&0xff00)>>8);
WraControlByte(0x46); //设置光标指针
WraDataByte(addl);
WraDataByte(addh);
WraControlByte(0x42);
WraDataByte(hztab[i*32+(2*k+1)]);
}
}
WraControlByte(0x4c);
}
*/
/* ---------------写一幅图片子程序-------------------------*/
/* void wramap(void)
{
uchar i,j;
long int n=0;
WraControlByte(0x59); // 开显示
WraDataByte(0x06);
WraControlByte(0x46); //设置光标指针
WraDataByte(0x00);
WraDataByte(0x00);
WraControlByte(0x4C); // 设置光标移动方向
WraControlByte(0x42); // 数据写入显示缓冲区
for(i=0;i<240;i++) // 240行
{
for(j=0;j<40;j++) // 每行写40字节 40X8 = 320
{
WraDataByte(maptab[n]);
n++;
}
}
}
*/
/* ---------------全显示子程序-------------------------*/
void allon(void)
{
uchar idata i;
WraControlByte(0x59);
WraDataByte(0x06);
WraControlByte(0x46);
WraDataByte(0x00);
WraDataByte(0x00);
WraControlByte(0x4C);
WraControlByte(0x42);
for(i=0;i<120;i++)
{
FullWithTwoByte(0xFF,0xFF);
}
}
/* -------------初始化子程序---------------------------*/
void LcdInitial()
{
WraControlByte(0x40);
WraDataByte(0x30);
WraDataByte(0x87);
WraDataByte(0x07);
WraDataByte(0x27);
WraDataByte(0x39);
WraDataByte(0xef);
WraDataByte(0x28);
WraDataByte(0x00);
WraControlByte(0x44);
WraDataByte(0x00); /* ----------一区首地址------------------------------*/
WraDataByte(0x00);
WraDataByte(0xef);
WraDataByte(0x00); /* ----------二区首地址------------------------------*/
WraDataByte(0x40);
WraDataByte(0xef);
WraDataByte(0x00); /* ----------三区首地址------------------------------*/
WraDataByte(0x80);
WraDataByte(0x00);
WraDataByte(0x00);
WraControlByte(0x5d);
WraDataByte(0x07);
WraDataByte(0x87);
WraControlByte(0x5a);
WraDataByte(0x00);
WraControlByte(0x5b);
WraDataByte(0x1c);
}
/* ----------------------------------------*/
/////////////////////////写任意图片////////////////////////////
void wrtu(uint row,uint col,uint high,uint long1,uchar zimo[],uchar flag1)
// row 行, 0-239
// col 列 0-319
// high 图像高 0-240
// long1 图像长 0-320
// flag1=0x88写zimo[]
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -