⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 lcd.h

📁 单片机键盘以及LCD和AD控制程序
💻 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 + -