📄 lcd12864.c
字号:
#include "LCD12864.h"
void LCDStatusLeft(void) //判断左边屏幕的状态
{
while((LCD1_RS&0x80)|(LCD1_RS&0x10));//等待LCD完成复位并且空闲
}
void LCDStatusRight(void) //判断右边屏幕的状态
{
while((LCD2_RS&0x80)|(LCD2_RS&0x10));//等待LCD完成复位并且空闲
}
void LCD12864WriteCmdLeft(unsigned char cmd)
{
LCDStatusLeft();
LCD1_ORG=cmd;
}
void LCD12864WriteCmdRight(unsigned char cmd)
{
LCDStatusRight();
LCD2_ORG=cmd;
}
void LCD12864WriteDataLeft(unsigned char lcddata)
{
LCDStatusLeft();
LCD1_WD=lcddata;
}
void LCD12864WriteDataRight(unsigned char lcddata)
{
LCDStatusRight();
LCD2_WD=lcddata;
}
void LCD12864Init(void) //LCD初始化
{
/*
delay(100);
CS2=1; CS1=0;
delay(100);
write_cmd(DISP_OFF);
write_cmd(PAGE);
write_cmd(START_LINE);
write_cmd(COL);
write_cmd(DISP_ON);
CS2=0; CS1=1;
delay(100);
write_cmd(DISP_OFF);
write_cmd(PAGE);
write_cmd(START_LINE);
write_cmd(COL);
write_cmd(DISP_ON);*/
//左半屏幕
LCD12864WriteCmdLeft(DISP_OFF);
LCD12864WriteCmdLeft(PAGE);
LCD12864WriteCmdLeft(START_LINE);
LCD12864WriteCmdLeft(COL);
LCD12864WriteCmdLeft(DISP_ON);
//右半屏幕
LCD12864WriteCmdRight(DISP_OFF);
LCD12864WriteCmdRight(PAGE);
LCD12864WriteCmdRight(START_LINE);
LCD12864WriteCmdRight(COL);
LCD12864WriteCmdRight(DISP_ON);
}
void LCD12864Cls(void) //清屏函数
{
/*
uchar j,k;
CS2=1;CS1=0;
for(k=0;k<8;k++)
{
write_cmd(PAGE+k);
write_cmd(COL); //列地址0
for(j=0;j<64;j++) //列地址自动加一
write_data(0x00);
}
CS2=0;CS1=1;
for(k=0;k<8;k++)
{
write_cmd(PAGE+k);
write_cmd(COL); //列地址0
for(j=0;j<64;j++) //列地址自动加一
write_data(0x00);
}*/
unsigned char j,k;
for(k=0;k<8;k++)
{
LCD12864WriteCmdLeft(PAGE+k);
LCD12864WriteCmdLeft(COL); //列地址0
for(j=0;j<64;j++) //列地址自动加一
LCD12864WriteDataLeft(0x00);
}
for(k=0;k<8;k++)
{
LCD12864WriteCmdRight(PAGE+k);
LCD12864WriteCmdRight(COL); //列地址0
for(j=0;j<64;j++) //列地址自动加一
LCD12864WriteDataRight(0x00);
}
}
/**************************************************************************************************
*
*显示12*16点阵的汉字函数
*函数声明:void LCDDisplayChinese(uchar page,uchar col,uchar code *str,uchar n);
*函数参数:page为页地址(0-7),col为列地址(0-127),str为数组名,n为要显示第n个汉字点阵
*函数作用:
*
**************************************************************************************************/
void LCDDisplayChinese(unsigned char page,unsigned char col,unsigned char code *str,unsigned char n)
{
unsigned char i,j;
unsigned char num;
if(col<=52)
{
for(j=0;j<2;j++)
{
LCD12864WriteCmdLeft(PAGE+page+j);LCD12864WriteCmdLeft(COL+col);
for(i=0;i<12;i++)
LCD12864WriteDataLeft(str[n*24+12*j+i]);
}
}
else if(col>=64)
{
col=col-64;
for(j=0;j<2;j++)
{
LCD12864WriteCmdRight(PAGE+page+j); LCD12864WriteCmdRight(COL+col);
for(i=0;i<12;i++)
LCD12864WriteDataRight(str[n*24+12*j+i]);
}
}
else if(col>52&&col<64) //处理跨屏幕的汉字书写的函数
{
num=64-col;
for(j=0;j<2;j++)
{
LCD12864WriteCmdLeft(PAGE+page+j); LCD12864WriteCmdLeft(COL+col);
for(i=0;i<num;i++)
LCD12864WriteDataLeft(str[n*24+12*j+i]);
}
col=0;
for(j=0;j<2;j++)
{
LCD12864WriteCmdRight(PAGE+page+j);LCD12864WriteCmdRight(COL+col);
for(i=num;i<12;i++)
LCD12864WriteDataRight(str[n*24+12*j+i]);
}
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -