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

📄 lgm12864.h

📁 我做的关于液晶lgm12864的头文件
💻 H
字号:
/*************************
名称:12864液晶显示

作者:廖杰

修改时间:2007.4.23

功能:   LGMl264
*************************/
#include<reg51.h>
#include<intrins.h>
#include<absacc.h>

#define write_cmd_addr_1 XBYTE[0x8fff]	   //写指令地址左 
#define read_state_addr_1 XBYTE[0xafff]    //读状态地址左 
#define write_data_addr_1 XBYTE[0x9fff]    //写数据地址左 
#define read_data_addr_1 XBYTE[0xbfff]     //读数据地址左 

#define write_cmd_addr_2 XBYTE[0x4fff]	   //写指令地址右 
#define read_state_addr_2 XBYTE[0x6fff]    //读状态地址右 
#define write_data_addr_2 XBYTE[0x5fff]    //写数据地址右 
#define read_data_addr_2 XBYTE[0x7fff]     //读数据地址右 

#define Disp_On 0x3f//开显示
#define Disp_Off 0x3e//关显示
#define Col_Add 0x40//列地址
#define Page_Add 0xb8//页地址
#define Start_line 0xc0//起始页

unsigned char qingping[]=
{
	 /*-- 清屏  --*/
	 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00
};

/************************************************/
unsigned char code test[64]={0xff,0xfd,0xfa,0xf9,0xf8,0xf5,0xf3,0xf0,0xe9,0xe8,0xe2,0xe1,0xdf,0xdd,0xdc,0xcc,0xcc,0xbb,
0xba,0xb5,0xaa
};

/*********函数声明***********/
void busy_check_1(void);
void busy_check_2(void);
void write_cmd_1(unsigned char command);
void write_cmd_2(unsigned char command);
void write_data_1(unsigned char dis_data);
void write_data_2(unsigned char dis_data);
void clear_1(void);
void clear_2(void);
void Chinese_disp_1(unsigned char pag,unsigned char col,unsigned char n);
void Chinese_disp_2(unsigned char pag,unsigned char col,unsigned char n);
void display(void);
void tanhao_disp(unsigned char pag,unsigned char col,unsigned char *chinese2);
void qingping_disp1(unsigned char pag,unsigned char col,unsigned char *chinese2);
void qingping_disp2(unsigned char pag,unsigned char col,unsigned char *chinese2);

/***********************

检测忙状态左

***********************/
void busy_check_1(void)
{
	unsigned char busy;
	while(busy&0x80)
	{
		busy=read_state_addr_1;
	}
}
/***********************

检测忙状态右

***********************/
void busy_check_2(void)
{
	 unsigned char busy;
	 while(busy&0x80)
	 {	
		busy=read_state_addr_2;
	 }
	 
}
/***********************

写命令左

***********************/
void write_cmd_1(unsigned char command)
{
	 busy_check_1();
	 write_cmd_addr_1=command;
}
/***********************

写命令右  

***********************/
void write_cmd_2(unsigned char command)
{
	 busy_check_2();
	 write_cmd_addr_2=command;
}
/***********************

写数据左  

***********************/
void write_data_1(unsigned char dis_data)
{
	busy_check_1();
	write_data_addr_1=dis_data;
}
/***********************

写数据右  

***********************/
void write_data_2(unsigned char dis_data)
{
 	busy_check_2();
	write_data_addr_2=dis_data;
}
/***********************

清内存左  

***********************/
void clear_1(void)
{
 	unsigned char i;
	unsigned char k;
	write_cmd_1(Page_Add+0);
	write_cmd_1(Col_Add+0);
	for(i=0;i<8;i++)
	{
	 	 write_cmd_1(Page_Add+i);
		 for(k=0;k<64;k++)
		 	//write_data_1(0x00);
			qingping_disp1(i,k,qingping);
		
	}
}
/***********************

清内存右  

***********************/
void clear_2(void)
{
 	unsigned char i;
	unsigned char k;
	write_cmd_2(Page_Add+0);
	write_cmd_2(Col_Add+0);
	for(i=0;i<8;i++)
	{
	 	 write_cmd_2(Page_Add+i);
		 for(k=0;k<64;k++)
		 	//write_data_2(0x00);
			qingping_disp2(i,k,qingping);
		 
	}
}
/***********************

显示汉字16*16左	  

************************/
void Chinese_disp_1(unsigned char pag,unsigned char col,unsigned char n)
{
	unsigned char i=0;
	unsigned char j=0;
	for(i=0;i<2;i++)
	{	
		write_cmd_1(Page_Add+pag+i);
		write_cmd_1(Col_Add+col);
		for(j=0;j<16;j++)
			write_data_1(Chinese_character[n][16*i+j]);
	
	}

}
/***********************

显示汉字16*16右	  

***********************/
void Chinese_disp_2(unsigned char pag,unsigned char col,unsigned char n)
{
	unsigned char i=0;
	unsigned char j=0;
	for(i=0;i<2;i++)
	{	
		write_cmd_2(Page_Add+pag+i);
		write_cmd_2(Col_Add+col);
		for(j=0;j<16;j++)
			write_data_2(Chinese_character[n][16*i+j]);
		
	}

}

/***********************

清屏左	

***********************/
void qingping_disp1(unsigned char pag,unsigned char col,unsigned char *chinese2)
{
	unsigned char i=0;
	unsigned char j=0;
	for(i=0;i<2;i++)
	{	
		write_cmd_1(Page_Add+pag+i);
		write_cmd_1(Col_Add+col);
		for(j=0;j<8;j++)
			write_data_1(chinese2[8*i+j]);
		
	}

}
/***********************

清屏右	

***********************/
void qingping_disp2(unsigned char pag,unsigned char col,unsigned char *chinese2)
{
	unsigned char i=0;
	unsigned char j=0;
	for(i=0;i<2;i++)
	{	
		write_cmd_2(Page_Add+pag+i);
		write_cmd_2(Col_Add+col);
		for(j=0;j<8;j++)
			write_data_2(chinese2[8*i+j]);
		
	}

}

void lcd_line()
{unsigned char i;
write_cmd_1(Page_Add+0);
write_cmd_1(Col_Add+16);
for(i=0;i<64;i++)
write_data_1(test[i]);

}



⌨️ 快捷键说明

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