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

📄 lcd_12864.h

📁 第二个万年历时钟 电路图 程序 都有!!和前面那个有点区别
💻 H
字号:
/*****************************************
程序名:lcd_12864.h
设计者:wanggguangxi11@163.com
时  间:2007-12-12
功  能:12864汉字液晶显示驱动程序(不带字库)
******************************************/
#define  uchar unsigned char 
#define  uint  unsigned int
#include <reg52.h>

//软件复位程序
void  IntRst(void)
       {
           RST=0;
           _nop_();
		   _nop_();
           RST=1;        //软件复位
		}

//忙判别
void Busy(void)
{
	DI=0;RW=1;P0=0xff;
	while(1)
	{
		ALE=1;
		if(P0<0x80)break;
		ALE=0;
	}
	ALE=0;
}

//12864发送命令子程序
void  ComSend(uchar com)
	{
		Busy();
		RW=0;
		DI=0;
		P0=com;
		ALE=1;
		_nop_();		   //NOP		
		ALE=0;
	}

//12864发送数据子程序 
void	DaSend(uchar data1)
	{ 
		DI=1;
		RW=0;
		P0=data1;
		ALE=1;
		_nop_();		//NOP
		ALE=0;
	}

//左半屏写命令子程序 
void	Left_ComSend(uchar com)
	{
		CS2=1;CS1=0;
		ComSend(com);
		CS1=0;
	}

//左半屏写数据子程序 
void	Left_DaSend(uchar data2)
	{
		CS2=1;CS1=0;
		DaSend(data2);
		CS1=0;
	}

//右半屏写命令子程序 
void	Right_ComSend(uchar com)
	{
		CS1=1;CS2=0;
		ComSend(com);
		CS2=0;
	}

//右半屏写数据子程序 
void	Right_DaSend(uchar data3)
	{
		CS1=1;CS2=0;
		DaSend(data3);
		CS2=0;
	}

//左半屏写一个字节数据程序,
//入口参数为X,Y的起始地址
//以及Y的变址范围(写入的字节数)和写入数据的指针
void	Left_Bytes_DaSend(uchar x,uchar y,uchar *loc,uchar bytes)
		{	uchar	i;
			Left_ComSend(x|0xB8);		//填入特征位0xB8,定位X即行			
			Left_ComSend(y|0x40);		//填入特征位0x40 ,定位Y即列
			for(i=0;i<bytes;i++)				
				Left_DaSend(*(loc+i));
		}

//右半屏写一个字节数据程序,
//入口参数为X,Y的起始地址
//以及Y的变址范围(写入的字节数)和写入数据的指针
void	Right_Bytes_DaSend(uchar x,uchar y,uchar *loc,uchar bytes)
		{	uchar	i;			
			Right_ComSend(x|0xB8);		//填入特征位0xB8 ,定位X即行						
			Right_ComSend(y|0x40);		//填入特征位0x40, 定位Y即列
			for(i=0;i<bytes;i++)				
				Right_DaSend(*(loc+i));				
		}

//开LCD
void    Lcd_On(void)
        {
             Left_ComSend(0x3F);
             Right_ComSend(0x3F);
        }

//关LCD
void	Lcd_Off(void)
		{
			 Left_ComSend(0x3e);
             Right_ComSend(0x3e);	
		}

//设置Z地址 
void	Lcd_SetZ(uchar z)
		{	
			z=z*8;		
            Left_ComSend(z|0xc0);
            Right_ComSend(z|0xc0);	
		}

//右边显示汉字数组内元素的子程序
void	Right_Show_Word(uchar x,uchar y,uchar word_num)
	{
		uchar	*pointer;
		pointer=(words+word_num*32);
	//	y=y*16;				
		Right_Bytes_DaSend(x,y,pointer,16);	     //先写汉字上半部分
		Right_Bytes_DaSend(x+1,y,pointer+16,16); //后写汉字下半部分		
	}

//右边显示一个16*8的字符
void	Right_Show_letter(uchar	x,uchar	y,uchar	letter_num)
	{
		uchar	*pointer;
		pointer=(letter+letter_num*16);        //y=y*16;				
		Right_Bytes_DaSend(x,y,pointer,8);	   //先写字符上半部分
		Right_Bytes_DaSend(x+1,y,pointer+8,8); //后写字符下半部分		
	}

//左边显示汉字数组内元素的子程序
void	Left_Show_Word(uchar	x,uchar	y,uchar	word_num)
	{
		uchar	*pointer;
		pointer=(words+word_num*32);             //y=y*16;				
		Left_Bytes_DaSend(x	,y,pointer,16);		 //先写汉字上半部分
		Left_Bytes_DaSend(x+1,y,pointer+16,16);	 //后写汉字下半部分	
	}

//左边显示一个16*8的字符
void	Left_Show_letter(uchar	x,uchar	y,uchar	letter_num)
	{
		uchar	*pointer;
		pointer=(letter+letter_num*16);         //y=y*16;				
		Left_Bytes_DaSend(x,y,pointer,8);
		Left_Bytes_DaSend(x+1,y,pointer+8,8);		
	}

//左边显示空字符
void	Left_Show_Null(uchar	x,uchar	y)
	{
		uchar *pointer;
		pointer=nulls;				
		Left_Bytes_DaSend(x	,y,pointer	,16);
		Left_Bytes_DaSend(x+1,y,pointer+16,16);		
	}

//右边显示空字符
void	Right_Show_Null(uchar	x,uchar	y)
	{
		uchar *pointer;
		pointer=nulls;				
		Right_Bytes_DaSend(x	,y,pointer	,16);
		Right_Bytes_DaSend(x+1	,y,pointer+16,16);		
	}

//清屏
void	Show_Null(void) 
	{
		uchar	i,j,x,y;	
		for(i=0;i<4;i++)
			{for(j=0;j<4;j++)
				{	
					x=i*2;y=j*16;
					Right_Show_Null(x,y);
					Left_Show_Null(x,y);
				}
			}
	}

⌨️ 快捷键说明

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