📄 lcd.h
字号:
/****************************************
*文 件 名:lcd.c
*功能说明:LCD显示,采用TG12864E-02 LCD显示模块(带中文字库),液晶显示C文件。
*接线说明:起始地址0x4000,并行传输数据PSB选择高(H)
*版 本 号:L.00.00
*修改时间:2007-08-10
****************************************/
#include<aduc842.h>
#include<absacc.h>
#define ComWe XBYTE[0xa000] //写命令
#define DatWe XBYTE[0xa001] //写数据
#define ComRd XBYTE[0xa002] //读状态
#define DatRd XBYTE[0xa003] //读数据
/*参数定义*/
sbit BF=ACC^7; //忙碌标志位
unsigned char ClearNum=7; //数据清除位数
unsigned char code gImage_word2[1024]; //图片数组
/*函数定义*/
void Lcd_clear(); //清除显示
void Delay(unsigned long t); //延时函数
void Read_bf(void); //读忙碌
unsigned char Read_data(void); //读数据
void Write_com(unsigned char d); //写命令
void Write_data(unsigned char d); //写数据
void Lcd_initial(void); //LCD初始化
void Disp_picture(unsigned char *p); //显示一幅图片
void Disp_word(unsigned char pos,unsigned char *p); //显示一个汉字
void Disp_words(unsigned char posx,unsigned char *p,unsigned char n); //显示一串汉字
void Disp_char(unsigned char pos,unsigned char dat); //显示一个字符
void Disp_chars(unsigned char pos,unsigned char *p,unsigned char n); //显示一串字符
void Disp_number(unsigned char pos,unsigned long dat); //显示一个数字
void Cursor_Reset(); //光标复位
void Cursor_Set(unsigned char pos); //设置光标位置
/****************************************
*函数名称:Lcd_clear()
*函数功能:清除显示
*输入参数:无
*还 回 值:无
*说 明:无
****************************************/
void Lcd_clear()
{
Write_com(0x01);
Write_com(0x34);
Write_com(0x30);
}
/**************************************
*设置光标位置
*说明:第一行:0-7
* 第二行:8-15
* 第三行:16-23
* 第四行:24-31
*****************************************/
void Cursor_Set(unsigned char pos)
{ unsigned char row;
row=(pos/8)%2;
row=row<<4;
pos=pos%8+8*(pos/16);
Write_com(0x80|row|pos);
}
/*****************************************
*函数功能:光标复位
*****************************************/
void Cursor_Reset()
{
Write_com(0x02);
}
/****************************************
*函数名称:Delay(unsigned long t)
*函数功能:延时
*输入参数:t,时间参数
*还 回 值:无
*说 明:60000约为1s
****************************************/
void Delay(unsigned long t)
{
unsigned long i;
for(i=0;i<t;i++);
}
/****************************************
*函数名称:Read_bf(void)
*函数功能:测忙碌
*输入参数:无
*还 回 值:无
*说 明:BF为表示内部忙碌中,BF为0方可写指令
****************************************/
void Read_bf(void)
{
BF = 1;
do
{
ACC=ComRd;
}
while(BF);
}
/****************************************
*函数名称:Write_com(unsigned char d)
*函数功能:写命令字
*输入参数:d,命令代码
*还 回 值:无
*说 明:无
****************************************/
void Write_com(unsigned char d)
{
Read_bf();
ComWe = d;
}
/****************************************
*函数名称:Write_data(unsigned char d)
*函数功能:写数据
*输入参数:d,需要写入的数据
*还 回 值:无
*说 明:无
****************************************/
void Write_data(unsigned char d)
{
Read_bf();
DatWe = d;
}
/****************************************
*函数名称:char Read_data(void)
*函数功能:读数据
*输入参数:无
*还 回 值:d,读出数据
*说 明:无
****************************************/
unsigned char Read_data(void)
{
unsigned char d = 0;
Read_bf();
d = DatRd;
return(d);
}
/****************************************
*函数名称:Lcd_system()
*函数功能:LCD初始化
*输入参数:无
*还 回 值:无
*说 明:无
****************************************/
void Lcd_initial(void)
{
Write_com(0x34); //扩充指令操作
Delay(500);
Write_com(0x30); //基本指令操作
Delay(500);
Write_com(0x01); //清除显示
Delay(500);
Write_com(0x06); //指定在资料写入或读取时,光标的移动方向
Delay(500);
Write_com(0x0f); //开显示,开光标,闪烁
Delay(500);
}
/****************************************
*函数名称:Disp_picture(unsigned char *p)
*函数功能:显示图形
*输入参数:P,图片数组地址指针
*还 回 值:无
*说 明:无
****************************************/
void Disp_picture(unsigned char *p)
{
unsigned int j=0;
unsigned char x;
unsigned char y;
unsigned char z;
unsigned char lcd_x=0x80;
unsigned char lcd_y=0x80;
Lcd_clear(); //如果上一次显示的是图形可以不清屏
for(x=0;x<2;x++)
{
lcd_y=0x80;
for(y=0;y<32;y++)
{
Write_com(0x34);
Write_com(lcd_y);
Write_com(lcd_x);
Write_com(0x30);
for(z=0;z<16;z++)
{
Write_data(p[j]);
j++;
}
lcd_y++;
}
lcd_x=0x88;
}
Write_com(0x36);
Write_com(0x30);
}
/****************************************
*函数名称:Disp_word(unsigned char pos,unsigned int dat)
*函数功能:显示一个汉字
*输入参数:pos,显示位置(第一行:0-7,第二行:8-15,第三行:16-23,第四行:24-31)
* dat,汉字码
*还 回 值:无
*说 明:无
****************************************/
void Disp_word(unsigned char pos,unsigned char *p)
{
unsigned char row;
row=(pos/8)%2;
row=row<<4;
pos=pos%8+8*(pos/16);
Write_com(0x80|row|pos);
Write_data(p[0]);
Write_data(p[1]);
}
/****************************************
*函数名称:Disp_words(unsigned char posx,unsigned char *p,unsigned char n)
*函数功能:显示一串汉字
*输入参数:pos,显示位置(第一行:0-7,第二行:8-15,第三行:16-23,第四行:24-31)
* p,汉字码的地址指针,
* n,显示字的个数,
*还 回 值:无
*说 明:无
****************************************/
void Disp_words(unsigned char pos,unsigned char *p,unsigned char n)
{
unsigned char i=0;
unsigned char row;
unsigned char pos0;
for(i=0;i<n;i++)
{
row=(pos/8)%2;
row=row<<4;
pos0=pos%8+8*(pos/16);
Write_com(0x80|row|pos0);
Write_data(p[0]);
Write_data(p[1]);
pos++;
p=p+2;
}
}
/****************************************
*函数名称:Disp_char(unsigned char pos,unsigned char dat)
*函数功能:显示一个字母或数字
*输入参数:pos,显示位置(第一行:0-15,第二行:16-31,第一行:32-47,第二行:48-63)
* dat,数字码
*还 回 值:无
*说 明:无
****************************************/
void Disp_char(unsigned char pos,unsigned char dat)
{
unsigned char row;
unsigned char pos0;
row=(pos/16)%2;
row=row<<4;
pos0=(pos%16)/2+8*(pos/32);
Write_com(0x80|row|pos0);
if((pos+1)/2!=(pos/2))
{
Read_data();
}
Write_data(dat);
}
/****************************************
*函数名称:Disp_chars(unsigned char pos,unsigned char *p,unsigned char n)
*函数功能:显示一串字母或数字
*输入参数:pos,显示位置(第一行:0-15,第二行:16-31,第一行:32-47,第二行:48-63),
* dat,数字码
* n,显示数字或字母的个数
*还 回 值:无
*说 明:无
****************************************/
void Disp_chars(unsigned char pos,unsigned char *p,unsigned char n)
{
unsigned char i=0;
unsigned char pos0;
unsigned char row;
for(i=0;i<n;i++)
{
row=(pos/16)%2;
row=row<<4;
pos0=(pos%16)/2+8*(pos/32);
Write_com(0x80|row|pos0);
if((pos+1)/2!=(pos/2))
{
Read_data();
}
Write_data(*p);
pos++;
p++;
}
}
/****************************************
*函数名称:Disp_number(unsigned char pos,unsigned long dat)
*函数功能:显示一个数(0--4294967295)
*输入参数:pos,显示位置
* dat,显示数据
*还 回 值:无
*说 明:如果显示数据比前一次数据位数少,清楚前一次多余的数据再显示
****************************************/
void Disp_number(unsigned char pos,unsigned long dat)
{
unsigned char i=0;
unsigned char j=0;
unsigned long d=dat;
for(j=0;j<ClearNum;j++)
{
Disp_char(pos+j,0x20);
}
while(d)
{
d=d/10;
i++;
}
Disp_char(pos,48);
for(j=0;j<i;j++)
{
Disp_char(pos+i-j-1,(dat%10)+48);
dat=dat/10;
}
Write_com(0x80+pos+i);
}
unsigned char code gImage_word2[1024] = {
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,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,0X01,0XF8,0X00,0X00,0X00,0X18,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X00,0X0F,0X0F,0X00,0X00,0X00,0X38,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X00,0X30,0X00,0XC0,0X00,0X00,0X38,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X00,0XC1,0X88,0X30,0X00,0X0E,0XF0,0X00,0X00,0X00,0X00,0X01,0X00,0X00,0X01,0XC0,
0X01,0X99,0X98,0X18,0X00,0X0F,0XE0,0X03,0X00,0X21,0X00,0X27,0X00,0X00,0X01,0XE0,
0X03,0X18,0X00,0X8C,0X00,0X0F,0XC0,0X07,0X00,0X73,0XC0,0XE7,0X00,0X00,0X0F,0XE0,
0X06,0X03,0XFC,0X86,0X00,0X07,0XE0,0X07,0X00,0XE7,0X80,0XFF,0X00,0X40,0X1F,0X80,
0X04,0XCF,0XFF,0X1A,0X00,0X03,0XD0,0X07,0XC0,0XCF,0X00,0XFE,0X00,0XC0,0X1F,0XC0,
0X08,0X5A,0X95,0X91,0X00,0X07,0XB0,0X3F,0XE1,0XF7,0X81,0X60,0X00,0XF0,0X1F,0XC0,
0X08,0X3E,0XF7,0XC1,0X00,0X0F,0XF0,0X3F,0XC1,0XF7,0XC0,0XF6,0X01,0XE0,0X1F,0XC0,
0X10,0X7C,0XF3,0XE0,0X80,0X0F,0XE0,0X3F,0X03,0XFF,0XC0,0XE6,0X01,0XC0,0X1B,0XF0,
0X10,0X7F,0XFF,0XE0,0X80,0X03,0XF0,0X1E,0X02,0XFF,0X80,0XFE,0X01,0XC0,0X0E,0X60,
0X10,0XF8,0X61,0XF0,0X80,0X03,0XF0,0X06,0X00,0XFF,0X01,0XFE,0X01,0XE0,0X3F,0X00,
0X3E,0XFF,0X9F,0XF4,0XC0,0X03,0XFC,0X06,0X00,0XF3,0X01,0XFC,0X01,0X7C,0XFF,0X00,
0X2E,0XFF,0XFF,0XF7,0X40,0X07,0XFC,0X06,0X00,0XF3,0X01,0XFD,0X83,0X1E,0X63,0X40,
0X2E,0XF8,0X01,0XF4,0X40,0X07,0XC0,0X06,0X00,0XC3,0X00,0XEF,0X86,0X1C,0X03,0XC0,
0X26,0XFF,0XFF,0XF7,0X40,0X0E,0XC0,0X06,0X00,0X03,0X03,0XE7,0X80,0X00,0X07,0X00,
0X28,0XFF,0XFF,0XF4,0X40,0X1E,0XC0,0X06,0X00,0X03,0X03,0X60,0X00,0X00,0X07,0X00,
0X30,0XFC,0X03,0XF7,0XC0,0X78,0XC0,0X00,0X00,0X02,0X00,0X40,0X00,0X00,0X03,0X00,
0X16,0XFB,0XFD,0XF0,0X80,0X61,0XC0,0X00,0X00,0X02,0X00,0X00,0X00,0X00,0X00,0X00,
0X15,0X7B,0X9D,0XEE,0X80,0X00,0X80,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X17,0X7F,0X6F,0XEB,0X80,0X01,0X80,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X0A,0XBC,0XF7,0XDD,0X00,0X01,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X09,0X5B,0XFD,0XA9,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X05,0XAF,0XFF,0X3A,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X06,0X63,0XFC,0XD6,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X03,0X7C,0X03,0XCC,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X01,0X8B,0X79,0X18,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X00,0XCD,0X1B,0X30,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X00,0X30,0X20,0XC0,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X00,0X0F,0X0F,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,
0X00,0X01,0XF8,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,0X0D,0X00,0X1C,0X80,0X00,0X09,0X00,0X00,0X04,0X2C,0X08,0X00,0X02,0X00,0X00,
0X00,0X0D,0X00,0X04,0X80,0X00,0X0D,0X00,0X00,0X04,0X2C,0X00,0X00,0X00,0X40,0X00,
0X00,0X0F,0X2B,0XC8,0XE6,0X77,0X8B,0X3B,0XBE,0XE4,0X2D,0XCA,0XB9,0XAA,0XEE,0X00,
0X00,0X0D,0X29,0XC8,0XAF,0X57,0X8B,0X2B,0X2A,0XE4,0X2D,0X4A,0XB9,0X3A,0X4C,0X00,
0X00,0X0D,0X3B,0XDC,0XA6,0X57,0X89,0X3B,0X2A,0XE4,0X39,0X49,0X39,0X2A,0X6C,0X00,
0X00,0X00,0X00,0X00,0X00,0X01,0X80,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X04,0X00,
0X00,0X00,0X00,0X00,0X00,0X03,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X00,0X18,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
};
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -