📄 lcm12864driver.c
字号:
#include <Reg52.h>
#include <intrins.h>
#include <LCM12864driver.H>
sbit LCM_RST= P1^4;
void Delay(int num)
{
while(num--) ;
}
void Delay12864(unsigned int t)//
{
unsigned int i,j;
for(i=0;i<t;i++)
{
for(j=0;j<10;j++);
}
}
/******************************************************************************/
void write_com(unsigned char cmdcode)//左屏写命令到LCD
{
LCMCS1W_COM = cmdcode;
}
void write1_com(unsigned char cmdcode)//右屏写命令到LCD
{
LCMCS2W_COM = cmdcode;
}
/******************************************************************************/
void write_data(unsigned char Dispdata)//左屏写数据到LCD
{
LCMCS1W_DAT = Dispdata;
}
void write1_data(unsigned char Dispdata)//右屏写数据到LCD
{
LCMCS2W_DAT = Dispdata;
}
/******************************************************************************/
/*******************************************************************************
void frame(void)//显示边框
{
unsigned char i;
Mcs = 1;
Scs = 1;
write_com(Page_Add+0);
write_com(Col_Add+0);
for(i=0;i<64;i++)
{
write_data(0x01);
}
write_com(Page_Add+7);
write_com(Col_Add+0);
for(i=0;i<64;i++)
{
write_data(0x80);
}
for(i=0;i<8;i++)
{
Mcs=0;
Scs=1;
write_com(Page_Add+i);
write_com(Col_Add+63);
write_data(0xff);
Mcs=1;
Scs=0;
write_com(Page_Add+i);
write_com(Col_Add+0);
write_data(0xff);
}
}
/***************************清除内存***************************************************/
void Clr_Scr(void)//
{
unsigned char j,k;
for(k=0;k<8;k++)
{
Delay(10);
write_com(Page_Add+k);
write_com(Col_Add+0);
for(j=0;j<64;j++)
{
write_data(0x00);
}
Delay(10);
write1_com(Page_Add+k);
write1_com(Col_Add+0);
for(j=64;j<128;j++)
{
write1_data(0x00);
}
}
}
/**********************************显示12864图片*********************************************/
void Disp_Img(unsigned char code *img)//
{
unsigned char j,k;
for(k=0;k<8;k++)
{
Delay(10);
write_com(Page_Add+k);
write_com(Col_Add+0);
for(j=0;j<64;j++)
{
write_data(img[k*128+j]);
}
Delay(10);
write1_com(Page_Add+k);
write1_com(Col_Add+0);
for(j=64;j<128;j++)
{
write1_data(img[k*128+j]);
}
}
}
/***************************指定位置显示汉字16*16****************************************************/
void Disp_Chinese(unsigned char pag,unsigned char col, char code *hzk)
{
unsigned char j=0,i=0;
for(j=0;j<2;j++)
{
write_com(Page_Add+pag+j);
write_com(Col_Add+col);
for(i=0;i<16;i++)
{
write_data(hzk[16*j+i]);
}
}
}
void Disp1_Chinese(unsigned char pag,unsigned char col, char code *hzk)
{
unsigned char j=0,i=0;
for(j=0;j<2;j++)
{
write1_com(Page_Add+pag+j);
write1_com(Col_Add+col);
for(i=0;i<16;i++)
{
write1_data(hzk[16*j+i]);
}
}
}
/**************************指定位置显示字母或数字8*16*****************************************************/
void Disp_Digit(unsigned char pag,unsigned char col, unsigned char code *hzk)
{
unsigned char j=0, i=0;
for(j=0;j<2;j++)
{
write_com(Page_Add+pag+j);
write_com(Col_Add+col);
for(i=0;i<8;i++)
{
write_data(hzk[8*j+i]);
}
}
}
void Disp1_Digit(unsigned char pag,unsigned char col, unsigned char code *hzk)
{
unsigned char j=0, i=0;
for(j=0;j<2;j++)
{
write1_com(Page_Add+pag+j);
write1_com(Col_Add+col);
for(i=0;i<8;i++)
{
write1_data(hzk[8*j+i]);
}
}
}
/**************************初始化LCD屏******************************************************/
void Init_lcd(void)
{
LCM_RST=0;
Delay12864(100);
LCM_RST=1;
Delay12864(100);
write_com(Disp_Off);
write_com(Page_Add+0);
write_com(Start_Line+0);
write_com(Col_Add+0);
write_com(Disp_On);
write1_com(Disp_Off);
write1_com(Page_Add+0);
write1_com(Start_Line+0);
write1_com(Col_Add+0);
write1_com(Disp_On);
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -