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

📄 lcd7565r.h

📁 用proteus仿真
💻 H
字号:
//#include <reg51.h>
//#include <intrins.h>
#include <ASC_GB16.h>

sbit	R_S=	P1^5;
sbit	RES=	P1^1;
sbit	W_R= 	P1^6;
sbit    C_S=    P1^0;

uchar ID=0,IDF=0;
uchar ID0=0;
bit Fx_flage=0;

void LcdInit();	
void Clear();
void show_ad(void);	
void ADchange();
void Delayms(uint ms);	
void WrateC(uchar cmd);	
void WrateD(uchar dat);	
void Setadd(uchar xl,uchar yl);
void disp_ch(unsigned char c,uCol,uPage);
void disp_str(unsigned char *p,unsigned char uCol,uPage);

void WrateC(uchar cmd)
{	C_S=0;						
	R_S=0;
	W_R=0;
    P0=cmd;
	W_R=1;	
    C_S=1;
}

void WrateD(uchar dat)	
{	C_S=0;						
	R_S=1;
	W_R=0;
	P0=dat;
	W_R=1;	
    C_S=1;
}

void Clear()
{
   unsigned char  i,j,m=0;
   for(i=0;i<8;i++)   
    {
     Setadd(0,i); 	  	  
     for(j=0;j<128;j++) 
          WrateD(0x00);
     }
}

void Setadd(uchar xl,uchar yl)
{    uchar i;
     i=xl&0x0f;
     xl=(xl>>4)+0x10;
     WrateC(0xb0+yl); 	  
	 WrateC(xl);
 	 WrateC(i);	
}


void LcdInit()
{	
	RES=0;
	Delayms(50);
	RES=1;
	Delayms(20);							
	WrateC(0xe2);
	WrateC(0xA2);
	WrateC(0xA1);
	WrateC(0xc0);
	WrateC(0x2c);
	WrateC(0x2e);
	WrateC(0x2F);
	WrateC(0x81);
	WrateC(0x16);
	WrateC(0x25);
	WrateC(0xAF);
	WrateC(0x40);
	Clear();
}
	
void disp_ch(unsigned char c,uCol,uPage)
{
	unsigned char k,j,ch_w;
	unsigned char width;
	unsigned char len;

	len=sizeof(ASC_16)/sizeof(ASC_16[0]);
	for(k=0;k<len;k++)
	{
		if(c == ASC_16[k].Index[0] ) break;
	}
	if(k<len)
	{		
		if(c=='-'||c==':') 
			width=ASC_CHR_WIDTH-2;
		else if(c=='|')
			width=ASC_HZ_WIDTH-ASC_CHR_WIDTH;
		else 
			width=ASC_CHR_WIDTH;
		
		   Setadd(uCol,uPage);
			for(j=0;j<width;j++)
			{
				ch_w=ASC_16[k].Msk[j];	
				if(Fx_flage==1)
				  WrateD(ch_w); 
				else WrateD(~ch_w);
			}

			Setadd(uCol,uPage+1);
			for(j=0;j<width;j++)
			{
				ch_w=ASC_16[k].Msk[ASC_CHR_WIDTH+j];
				if(Fx_flage==1)
				  WrateD(ch_w); 
				else WrateD(~ch_w); 
			}		
	}

}


void disp_hz(unsigned char *hz,uCol,uPage)
{
	unsigned char k,j,ch_w;
    //sizeof 用来求一个变量或者一种类型所占用的字节数
	for(k=0;k<sizeof(GB_16)/sizeof(GB_16[0]);k++)
	{
		if(hz[0] == GB_16[k].Index[0] && hz[1] == GB_16[k].Index[1])
			break;
	}

	Setadd(uCol,uPage);
	for(j=0;j<ASC_HZ_WIDTH;j++)
	{		
		ch_w=GB_16[k].Msk[j];
				if(Fx_flage==1)
				  WrateD(ch_w); 
				else WrateD(~ch_w); 
	}

	Setadd(uCol,uPage+1);
	for(j=0;j<ASC_HZ_WIDTH;j++)
	{
		ch_w=GB_16[k].Msk[ASC_HZ_WIDTH+j];
				if(Fx_flage==1)
				  WrateD(ch_w); 
				else WrateD(~ch_w); 
	}
}



void disp_str(unsigned char *p,unsigned char uCol,uPage)
{
	unsigned char i=0;
	while(p[i]>0)
	{
		if(p[i] < 128)
		{	
			disp_ch(p[i],uCol,uPage);
            uCol+=8;
		}
		else
		{	
			disp_hz(&p[i],uCol,uPage);
			uCol+=12;
			i++;
		}
		i++;
	}
}

⌨️ 快捷键说明

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