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

📄 lcd128x64_1.h

📁 图形式液晶LCD128*64的典型驱动~ 包含很多常用的画图函数和指令~
💻 H
字号:
/*-----------------------------------------------------------------------*/
/*
File: LCD128X64_1.H
Date: 08/7/21
Time: 14:29
Note: LCD128*64驱动程序
Author: 未知
*/


#ifndef	__LCD128X64_1_H__
#define __LCD128X64_1_H__

/*-----------------------------------------------------------------------*/
//部分宏定义
#define Disp_On     0x3f   //显示开指令
#define Disp_Off    0x3e   //显示关指令
#define Col_Add     0x40   //定位到第0列指令
#define Page_Add    0xb8   //定位到第0页指令
#define Start_Line  0xc0   //定位从DDROM中的第0行开始往屏幕上显示



/*-----------------------------------------------------------------------*/
//数据接口定义
//LCD128X64
sbit RST = P2^0;     //LCD复位端
sbit E   = P2^1;     //使能端
sbit RW  = P2^2;     //读写控制端
sbit RS  = P2^3;     //数据指令寄存器控制端
sbit CS1 = P2^4;     //左边屏幕使能		//低电平有效
sbit CS2 = P2^5;     //右边屏幕使能		//低电平有效
sfr	 Port= 0x80;	 //P0 数据D0~D7 
					 //P0=0x80; /P1=0x90; /P2=0xA0; /P3=0xB0;



/*-----------------------------------------------------------------------*/
//函数声明
void write_command(unsigned char cmd);		//写入指令到LCD128X64

void write_data(unsigned char dat);		    //写入数据到LCD128X64

//unsigned char read_data(void);			//读出LCD128X64中的数据

//void frame(void);							//显示边框

void clr_scr(void);							//显示清屏

void Disp_Img(unsigned char code *img);		//显示128X64图片

//void Disp_H_Line(void);					//显示横线

//void Disp_V_Line(void);					//显示列线

void sz_disp(unsigned char pag, unsigned char col, unsigned char code *sz);	//指定位置显示数字8*16

void hz_disp(unsigned char pag, unsigned char col, unsigned char code *hz);	//指定位置显示汉字16*16

void init_lcd(void);						//初始化LCD128*64





/*-----------------------------------------------------------------------*/
//代码区

unsigned char code kongbai2[]={    //   '空白'  16*16 //
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
};

unsigned char code kongbai1[]={    //   '空白'  8*16 //
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
};

unsigned char code sz0[]={    //数字  0  8*16 //
0x00,0xE0,0x10,0x08,0x08,0x10,0xE0,0x00,0x00,0x0F,0x10,0x20,0x20,0x10,0x0F,0x00,
};

unsigned char code sz1[]={    //数字  1  8*16 //
0x00,0x10,0x10,0xF8,0x00,0x00,0x00,0x00,0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00,
};

unsigned char code sz2[]={    //数字  2  8*16 //
0x00,0x70,0x08,0x08,0x08,0x88,0x70,0x00,0x00,0x30,0x28,0x24,0x22,0x21,0x30,0x00,
};

unsigned char code sz3[]={    // 数字 3  8*16 //
0x00,0x30,0x08,0x88,0x88,0x48,0x30,0x00,0x00,0x18,0x20,0x20,0x20,0x11,0x0E,0x00,
};

unsigned char code sz4[]={    // 数字 4  8*16 //
0x00,0x00,0xC0,0x20,0x10,0xF8,0x00,0x00,0x00,0x07,0x04,0x24,0x24,0x3F,0x24,0x00,
};

unsigned char code sz5[]={    // 数字 5  8*16 //
0x00,0xF8,0x08,0x88,0x88,0x08,0x08,0x00,0x00,0x19,0x21,0x20,0x20,0x11,0x0E,0x00,
};

unsigned char code sz6[]={    // 数字 6  8*16 //
0x00,0xE0,0x10,0x88,0x88,0x18,0x00,0x00,0x00,0x0F,0x11,0x20,0x20,0x11,0x0E,0x00,
};

unsigned char code sz7[]={    // 数字 7  8*16 //
0x00,0x38,0x08,0x08,0xC8,0x38,0x08,0x00,0x00,0x00,0x00,0x3F,0x00,0x00,0x00,0x00,
};

unsigned char code sz8[]={    // 数字 8  8*16 //
0x00,0x70,0x88,0x08,0x08,0x88,0x70,0x00,0x00,0x1C,0x22,0x21,0x21,0x22,0x1C,0x00,
};

unsigned char code sz9[]={    // 数字 9  8*16 //
0x00,0xE0,0x10,0x08,0x08,0x10,0xE0,0x00,0x00,0x00,0x31,0x22,0x22,0x11,0x0F,0x00,
};

unsigned char code *shuzi[]={sz0,sz1,sz2,sz3,sz4,sz5,sz6,sz7,sz8,sz9};




/*-----------------------------------------------------------------------*/
//写入指令到LCD128X64
void write_command(unsigned char cmd)
{
	RS=0;		//指令
	RW=0;		//写入
	Port=cmd;
	E=1;		//高脉冲有效
	E=0;
}



/*-----------------------------------------------------------------------*/
//写入数据到LCD128X64
void write_data(unsigned char dat)
{
	RS=1;		//数据
	RW=0;		//写入
	Port=dat;
	E=1;		//高脉冲有效
	E=0;
}



/*-----------------------------------------------------------------------*/
/*
//读出LCD128X64中的数据
unsigned char read_data(void)
{
	unsigned char temp;
	RS=1;		//数据
	RW=1;		//读出
	E=1;		//高脉冲
	E=0;
	temp=Port;
	return (temp);
}
*/




/*-----------------------------------------------------------------------*/
//显示边框
/*
void frame(void)
{
	unsigned char i;
	CS2=1;
	CS1=1;
	write_command(Page_Add+0);
	write_command(Col_Add +0);
	for(i=0;i<64;i++)	
		write_data(0x01);
	write_command(Page_Add+7);
	write_command(Col_Add+ 0);
	for(i=0;i<64;i++)
		write_data(0x80);
	for(i=0;i<8;i++)
	{
		CS2=0;		//右屏
		CS1=1;
		write_command(Page_Add+i);
		write_command(Col_Add+63);
		write_data(0xff);
		CS2=1;		//左屏
		CS1=0;
		write_command(Page_Add+i);
		write_command(Col_Add+0);
		write_data(0xff);
	}
}
*/



/*-----------------------------------------------------------------------*/
//显示清屏
void clr_scr(void)
{
	unsigned char j,k;
	CS2=1;
	CS1=0;				//清左半屏
	{
		write_command(Page_Add+0);
		write_command(Col_Add+0);
		for(k=0;k<4;k++)			// 清左上半屏
		{
			for(j=0;j<64;j++)
				write_data(0x00);
		}
		for(k=0;k<4;k++)			// 清左下半屏
		{
			for(j=0;j<64;j++)
				write_data(0x00);
		}
		for(k=0;k<4;k++)
		{
			write_command(Page_Add+4);
			for(j=0;j<64;j++)
				write_data(0x00);
		}
	}

	CS2=0;
	CS1=1;				// 清右半屏
	{
		write_command(Page_Add+0);
		write_command(Col_Add+0);
		for(k=0;k<4;k++)	   	// 清右上半屏
		{
			for(j=0;j<64;j++)
				write_data(0x00);
		}
		for(k=0;k<4;k++)		// 清右下半屏 
		{
			write_command(Page_Add+4);
			for(j=0;j<64;j++)
				write_data(0x00);
		}
	}
}



/*-----------------------------------------------------------------------*/
//显示128X64图片
void Disp_Img(unsigned char code *img)
{
	unsigned char j,k;
	for(k=0;k<8;k++)
	{
		CS2=1;		//左屏
		CS1=0;
		write_command(Page_Add+k);
		write_command(Col_Add+0);
		for(j=0;j<64;j++)
			write_data(img[k*128+j]);

		CS2=0;		//右屏
		CS1=1;
		write_command(Page_Add+k);
		write_command(Col_Add+0);
		for(j=64;j<128;j++)
			write_data(img[k*128+j]);
	}
}



/*-----------------------------------------------------------------------*/
//显示横线
/*
void Disp_H_Line(void)
{
	unsigned char i,j;
	CS2=1;
	CS1=1;
	write_command(Disp_On);
	write_command(Page_Add);
	write_command(Start_Line);
	write_command(Col_Add);
	for(j=0;j<8;j++)
	{
		write_command(Page_Add+j);
		write_command(Col_Add+0);
		write_command(Start_Line+0);
		for(i=0;i<64;i++)
			write_data(0x55);
	}
}
*/



/*-----------------------------------------------------------------------*/
//显示列线
/*
void Disp_V_Line(void)
{
	unsigned char i,j;
	write_command(Disp_On);
	write_command(Page_Add);
	write_command(Start_Line);
	write_command(Col_Add);
	for(j=0;j<8;j++)
	{
		write_command(Page_Add+j);
		write_command(Col_Add+0);
		for(i=0;i<32;i++)
		{
			write_data(0x00);
			write_data(0xff);
		}
	}
}
*/



/*-----------------------------------------------------------------------*/
//指定位置显示数字8*16
void sz_disp(unsigned char pag, unsigned char col, unsigned char code *sz)
{
	unsigned char i=0,j=0;
	for(j=0;j<2;j++)
	{
		write_command(Page_Add+pag+j);
		write_command(Col_Add+col);
		for(i=0;i<8;i++)
			write_data(sz[8*j+i]);
	}
}



/*-----------------------------------------------------------------------*/
//指定位置显示汉字16*16
void hz_disp(unsigned char pag, unsigned char col, unsigned char code *hz)
{
	unsigned char i=0,j=0;
	for(j=0;j<2;j++)
	{
		write_command(Page_Add+pag+j);
		write_command(Col_Add+col);
		for(i=0;i<16;i++)
			write_data(hz[16*j+i]);
	}
}




/*-----------------------------------------------------------------------*/
//初始化LCD128*64
void init_lcd(void)
{
	RST=0;
	RST=1;

	CS2=1;
	CS1=1;

	write_command(Disp_Off);
	write_command(Page_Add+0);
	write_command(Start_Line+0);
	write_command(Col_Add+0);
	write_command(Disp_On);
}



#endif


		



			



	




 

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -