📄 lcd.c
字号:
0xFE,0x0F,0xFF,0xE0,0x00,0x07,0x00,0x00,0x00,0x0E,0xE7,0x60,0x00,0x00,0x00,0x10,
0x0C,0x00,0x00,0x00,0x0E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x07,0x00,0x00,0x00,0x06,0xE7,0xC0,0x00,0x00,0x00,0x07,0x1C,0x00,
0x00,0x00,0x0E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x07,0x00,0x00,0x00,0x01,0xE7,0x00,0x00,0x00,0x00,0x01,0xF8,0x00,0x00,0x00,
0x0E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,
0x00,0x00,0x00,0x00,0xE7,0x00,0x00,0x00,0x00,0x01,0xF8,0x00,0x00,0x00,0x0F,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0x00,0x00,
0x00,0xFF,0xFF,0xFF,0xC0,0x00,0x00,0x0F,0xBF,0x00,0x00,0x00,0x07,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0x00,0x00,0x01,0xFF,
0xFF,0xFF,0xC0,0x00,0x07,0xFE,0x0F,0xFE,0x00,0x00,0x07,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0E,0x00,0x00,0x01,0xF0,0x00,0xFF,
0x80,0x00,0x07,0xF8,0x03,0xFC,0x00,0x00,0x07,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x0E,0x00,0x00,0x01,0x00,0x00,0x0F,0x00,0x00,
0x01,0xC0,0x00,0xFC,0x00,0x00,0x03,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x1E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x10,0x00,0x00,0x01,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x3C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x01,0xF0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x7F,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xF0,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x7F,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xE0,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x07,0xFF,0xFF,
0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFF,0xFE,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
};
//////////////////延时函数1///////////////////////////////////////////////
void LCD_NOP(void)
{
uchar i;
for(i=0;i<5;i++);
}
//////////////////延时函数2///////////////////////////////////////////////
void Delay(int x)
{
int i,j;
for(j=0;j<x;j++)
{
for(i=0;i<250;i++);
}
}
//////////////////LCD写命令字函数 ///////////////////////////////////////
void LCD_Write_Com(uchar CMD)
{
// Check_Busy();///检测忙信号////
PORTB=CMD; /// 将命令字符送往数据口 ///
CS=0;
RAD=1;
RS=0;
WRT=0;
LCD_NOP();
WRT=1;
RS=1;
CS=1;
}
//////////////LCD写数据函数 /////////////////////////////////////////////////
void LCD_Write_Dat(uchar x_data)
{
// Check_Busy();///检测忙信号////
PORTB=x_data; /// 将数据字符送往数据口 ///
CS=0;
RAD=1;
RS=1;
WRT=0;
LCD_NOP();
WRT=1;
RS=1;
CS=1;
}
//////////////LCD读取数据函数 /////////////////////////////////////////////////
uchar LCD_Read_Dat(void)
{
uchar x_data;
// Check_Busy();///检测忙信号////
PORTB=0xff; /// 将数据0xff送往数据口 ///
CS=0;
WRT=1;
RS=0;
RAD=0;
LCD_NOP();
x_data=PORTB;
RS=1;
RAD=1;
CS=1;
return(x_data);
}
//////////////LCD设定功能函数 /////////////////////////////////////////////////
void LCD_Write_Funtion(uchar CMD,uchar x_data)
{
LCD_Write_Com(CMD);
LCD_Write_Com(x_data);
}
//////////////LCD读取缓冲器函数 /////////////////////////////////////////////////
uchar LCD_Read_Funtion(uchar CMD)
{
LCD_Write_Com(CMD);
return(LCD_Read_Dat());
}
//////////////LCD参数初始化函数 /////////////////////////////////////////////////
void LCD_Init(void)
{
//初始化参数表:前面的是寄存器地址,后面的是参数
//LCD_Write_Funtion(0x00,0xCD);//LCD基本显示功能设定 文本模式
LCD_Write_Funtion(0x00,0xCC);//LCD基本显示功能设定 文本模式
LCD_Write_Funtion(0x01,0xF0);//中断准位(高电平) / 设定系统频率8MHz
LCD_Write_Funtion(0x02,0x10);//LCD内存读写速度与功能设定(读字形ROM)
LCD_Write_Funtion(0x03,0x80);//LCD特殊显示功能
// LCD_Write_Funtion(0x10,0x6B);//LCD基本显示功能设定 2
LCD_Write_Funtion(0x10,0x4B);//LCD基本显示功能设定 光标不自动移位
LCD_Write_Funtion(0x11,0x20);//光标高度和行距设定
LCD_Write_Funtion(0x12,0x91) ;//显示层设定:高位8灰度,9水平单一层,A单二层,B同时一二层
LCD_Write_Funtion(0x20,0x1E) ;//实际显示窗口垂直结束地址(LCD屏的分辨率30*8=240)
LCD_Write_Funtion(0x30,0x7F) ;//实际显示窗口水平结束地址(128)
LCD_Write_Funtion(0x40,0x00) ;//实际显示窗口垂直起始地址
LCD_Write_Funtion(0x50,0x00) ;//实际显示窗口水平起始地址
LCD_Write_Funtion(0x21,0x1E) ;//工作区窗口垂直结束地址(用户指定的显示窗口)
LCD_Write_Funtion(0x31,0x7F) ;//工作区窗口水平结束地址
LCD_Write_Funtion(0x41,0x00) ;//工作区窗口垂直起始地址
LCD_Write_Funtion(0x51,0x00) ;//工作区窗口水平起始地址
LCD_Write_Funtion(0x60,0x00) ;//地址定位
LCD_Write_Funtion(0x61,0x00) ;//
LCD_Write_Funtion(0x70,0x00) ;//
LCD_Write_Funtion(0x71,0x00) ;//
LCD_Write_Funtion(0x72,0x00) ;//
LCD_Write_Funtion(0x80,0x35) ;//光标闪烁时间
LCD_Write_Funtion(0x81,0x04) ;//保留
LCD_Write_Funtion(0x91,0x00) ;//保留
LCD_Write_Funtion(0x90,0x10) ;//值太大屏幕会闪烁
LCD_Write_Funtion(0xA0,0x11) ;//键、触摸屏、光标行列状态
LCD_Write_Funtion(0xA1,0x00) ;
LCD_Write_Funtion(0xA2,0x00) ;
LCD_Write_Funtion(0xA3,0x00) ;
LCD_Write_Funtion(0xB0,0x27) ;
LCD_Write_Funtion(0xB1,0xEF) ;
LCD_Write_Funtion(0xC0,0x00) ;
LCD_Write_Funtion(0xC1,0x0A) ;
LCD_Write_Funtion(0xC8,0x80) ;
LCD_Write_Funtion(0xC9,0x80) ;
LCD_Write_Funtion(0xCA,0x00) ;
LCD_Write_Funtion(0xD0,0x80) ;
LCD_Write_Funtion(0xE0,0x00) ;//自动写此寄存器的数据到DDRAM(图形模式有效)
LCD_Write_Funtion(0xF0,0xA0) ;//字符字体控制
LCD_Write_Funtion(0xF1,0x0F) ;//字符点阵大小控制
///39//
}
//////////清除文本层显示数据函数 /////文本层清屏//////////////
void LCD_Clear_Text(void)
{
uchar i,j;
LCD_Write_Funtion(0x00,0xCD);//文本模式
LCD_Write_Funtion(0x10,0x61);//写光标bu自动移位//光标不显示//光标不闪烁//自适应宽度//
LCD_Write_Funtion(0xF0,0xA0);//ASII区块0//
for(i=0;i<8;i++)/////共8行文本//////
{
for(j=0;j<30;j++)////水平30个字节宽//
{
LCD_Write_Funtion(0x60,j);//地址定位
LCD_Write_Funtion(0x70,16*i);//地址定位
LCD_Write_Dat(0x20);////连续写入8X30个空格的ASII码//
}
}
}
//////////清除图形层显示数据函数 ///////图形层清屏////////////
void LCD_Clear_Graphics(void)
{
uchar i,j;
LCD_Write_Funtion(0x00,0xC5); //图形模式
LCD_Write_Funtion(0x10,0x61);//写光标bu自动移位//光标不显示//光标不闪烁//自适应宽度//
LCD_Write_Funtion(0x12,0x91);//显示层设定:高位8灰度,9水平单一层,A单二层,B同时一二层
for(i=0;i<128;i++)/////垂直共128行//////
{
for(j=0;j<30;j++)////水平30个字节宽//
{
LCD_Write_Funtion(0x60,j);//地址定位
LCD_Write_Funtion(0x70,i);//地址定位
LCD_Write_Dat(0x00); ////每页连续写入128X30个数据/////
}
}
}
//////////////////写汉字//字符串函数 /////////////////////////////////
void LCD_Write_word(uchar LCM_X,uchar LCM_Y,uchar *ptr,bit g)//LCM_X的范围是0-29//写汉字时应该为偶数,写字符串时无限制/////////////////
{ ////////LCM_Y的范围是0-127///////
uchar i=0;
LCD_Write_Funtion(0x00,0xCD);//文本模式
if(g==0) LCD_Write_Funtion(0x10,0x69);//写光标自动移位//光标不显示//光标不闪烁//自适应宽度//
else LCD_Write_Funtion(0x10,0x6f);//写光标自动移位//光标显示//光标闪烁//自适应宽度//
LCD_Write_Funtion(0xF0,0xA0);//ASII区块0//
LCD_Write_Funtion(0x60,LCM_X);//地址定位
LCD_Write_Funtion(0x70,LCM_Y);//地址定位
while (*ptr != '%')////利用数组最后有空格作为信息结束的判断/////
{
if((LCM_X+i)>=30)
{
LCM_X=0;
LCM_Y=LCM_Y+16;
i=0;
LCD_Write_Funtion(0x60,LCM_X) ;//地址定位
LCD_Write_Funtion(0x70,LCM_Y) ;//地址定位
}
LCD_Write_Dat(*ptr++);
i++;
}
}
//////////////////横向写不规则字符串函数 /////////////////////////////////
void H_Write_abnormity_string(uchar LCM_X,uchar LCM_Y,uchar x_data,uchar number)//LCM_X的范围是0-29//写汉字时应该为偶数,写字符串时无限制/////////////////
{ ////////LCM_Y的范围是0-127/////uchar x_data是不规则字符的ASCII码////uchar number是不规则字符的个数//
uchar j;
uchar i=0;
LCD_Write_Funtion(0x00,0xCD);//文本模式
LCD_Write_Funtion(0x10,0x69);//写光标自动移位//光标不显示//光标不闪烁//自适应宽度//
LCD_Write_Funtion(0xF0,0xA4);//ASCII区块0////所有输入的数据都以ASCII解码////
LCD_Write_Funtion(0x60,LCM_X);//地址定位
LCD_Write_Funtion(0x70,LCM_Y);//地址定位
for(j=0;j<number;j++)////利用数组最后有空格作为信息结束的判断/////
{
if((LCM_X+i)>=30)
{
LCM_X=0;
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -