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

📄 st7565.h

📁 LCD_12864 driver write with c language in ads1.2 environment ,the cpu is lpc2132 . can diaplay chine
💻 H
字号:
/*#include   "config.h" 
#define    A0     (1<<28)//p0.28
#define    RST    (1<<29)//p0.29
#define    DAT    (1<<25)//p0.25
#define    CLK    (1<<17)//p1.17
#define    St7565_IO0_CON  A0|RST|DAT
#define    St7565_IO1_CON	CLK
void Init_Disp(void);
void ST7565P_Control(uint8 sendbyte);
void ST7565P_data(uint8 sendbyte1);
void ST7565P_clear(void);
void ST_delay(uint32  dly);
uint8  col_add;
uint8  col_counter;
uint32  row_counter;
const uint8  hz[];
const uint8  hz1[];

void Init_Disp(void)
{
  IO0SET=RST;
  ST_delay(10);
  IO0CLR=RST;
  ST_delay(10);
  IO0SET=RST;        // Hardware Reset  
  ST7565P_Control(0xE2);      
  ST_delay(10);
  ST7565P_Control(0x2F);      
  ST7565P_Control(0x24);      
  ST7565P_Control(0xA2);      
  ST7565P_Control(0x81);      
  ST7565P_Control(0x70);      
  ST7565P_Control(0xC0);      
  ST7565P_Control(0xA0);      
  ST7565P_Control(0x40);      
  ST7565P_Control(0xA6);      
  ST7565P_Control(0xAF);
}
//--------------------------------
void ST7565P_Control(uint8 sendbyte)
{
	uint8 i;
	IO0CLR=A0;
	for(i=0;i<8;i++)
	{
  		IO1CLR=CLK;
  		if((sendbyte&0x80)!=0)
  			IO0SET=DAT;
  		else 
  			IO0CLR=DAT;
  		IO1SET=CLK;
 	    sendbyte=sendbyte<<1;
	}
}
//--------------------------------
void ST7565P_data(uint8 sendbyte1)
{
	uint8 i;
	IO0SET=A0;
	for(i=0;i<8;i++)
	{
  		IO1CLR=CLK;
  		if((sendbyte1&0x80)!=0)
  			IO0SET=DAT;
  		else 
  			IO0CLR=DAT;
  		IO1SET=CLK;
    sendbyte1=sendbyte1<<1;
}
}
//-------------------------------
 void ST7565P_hz(uint8 x,uint8 y,uint8 jtsz) 
{
	uint8 i,a,b,temp1=0,temp2=0,j=0;
	if(x==1)
		x=0xb6;                  //哪一行
	else if(x==2)
		x=0xb3;
	a=0x10+(y*24)/16; 
	b=(y*24)%16;
	row_counter=jtsz*75;
	temp1=a;
	temp2=b;
	for(j=0;j<3;j++)
	{
		for(i=0;i<24;i++)  
		{  
    		ST7565P_Control(x);
    		ST7565P_Control(a);
    		ST7565P_Control(b);
    		ST7565P_data(hz[row_counter]);
    		row_counter++;
    		b++;
    		if(b>15)
    		{
    			b=0;a++;
    		}    
    	}
    	row_counter++;
   	    a=temp1;
		b=temp2;
    	x--;
   }
} 



 void ST7565P_sz_xiaoshu(uint8 x,uint8 y,uint8 jtsz) 
{
	uint8 i,a,b,temp1=0,temp2=0,j=0;
	if(x==1)
		x=0xb6;                  //哪一行
	else if(x==2)
		x=0xb3;
	a=0x10+(y*12-4)/16; 
	b=(y*12-4)%16;	
	row_counter=jtsz*39;
	temp1=a;
	temp2=b;
	for(j=0;j<3;j++)
	{
		for(i=0;i<12;i++)  
		{  
    		ST7565P_Control(x);
    		ST7565P_Control(a);
    		ST7565P_Control(b);
    		ST7565P_data(hz1[row_counter]);
    		row_counter++;
    		b++;
    		if(b>15)
    		{
    			b=0;a++;
    		}    
    	}
    row_counter++;
    a=temp1;
	b=temp2;
    x--;
    }
}
 void ST7565P_sz(uint8 x,uint8 y,uint8 jtsz) 
{
	uint8 i,a,b,temp1=0,temp2=0,j=0;
	if(x==1)
		x=0xb6;                  //哪一行
	else if(x==2)
	x=0xb3;	
	a=0x10+(y*12)/16; 
	b=(y*12)%16;

	row_counter=jtsz*39;
	temp1=a;
	temp2=b;
	for(j=0;j<3;j++)
	{
		for(i=0;i<12;i++)  
		{  
    		ST7565P_Control(x);
    		ST7565P_Control(a);
    		ST7565P_Control(b);
    		ST7565P_data(hz1[row_counter]);
    		row_counter++;
    		b++;
    		if(b>15)
    		{
    			b=0;a++;
    		}    
   		}
    	row_counter++;
   		a=temp1;
		b=temp2;
    	x--;
    }
}
   
//-------------------------------
void ST7565P_clear(void)
{
	for(col_counter=0,col_add=0xb0;col_counter<8;col_counter++,col_add++)
	{
    	ST7565P_Control(col_add);
    	ST7565P_Control(0x10);
    	ST7565P_Control(0x00);
    	for(row_counter=0;row_counter<128;row_counter++)
    		ST7565P_data(0x00);   
	}  

}  
//-------------------------------
void ST_delay(uint32  dly)
{
  uint32  i;
  for(;dly>0;dly--)
     for(i=0;i<50000;i++);
}

void display(uint32 koukuan,uint32 shengyu )
{
	uint32 temp=0;
	uint8 i=0,xiaoshu=0,x=0;
	ST7565P_hz(1,0,0);//扣
   	ST7565P_hz(1,1,1);//款   
   	ST7565P_hz(2,0,2);   //显示汉字//第一参数为哪一行共4行1-4 ,第二参数为哪一列共8列0-7,第三参数具体显示什么汉字 用数字0-n,在hz[]对应  
   	ST7565P_hz(2,1,3);   	
   	if(koukuan!=0)
   	{
   	temp=10000000;
	while(!i)
	{
		i=koukuan/temp;
		if(temp!=1)
		temp/=10;
	}
	temp*=10;
	if(temp<100000)
		i=5;
	else
		i=4;//作为显示数字的y轴坐标,即从某行的第5列开始显示,前面是汉字	
	x=i;
	while(temp>=1)
	 {
	 	if(temp==10)//该数字只含有小数部分或整数部分已经显示完毕
	 	{
	 	  xiaoshu=1;
	 	  if(i==x)//该数字只含有小数部分,要另外显示一个0作为整数部分
	 	  {
	 	   	ST7565P_sz_xiaoshu(1,i++,0);//显示0
	 	  }
	 	  ST7565P_sz(1,i++,10);//显示小数点
	 	}
	 	if(xiaoshu)
	 	{
	 		ST7565P_sz_xiaoshu(1,i++,koukuan/temp);
	 	}
	 	else
	 		ST7565P_sz(1,i++,koukuan/temp);
	 	koukuan%=temp;
	 	temp/=10;
	 }
	 
	}//end if(koukuan!=0))
	else
	{
		ST7565P_sz(1,5,0);//5
	}	
	xiaoshu=0; 
	temp=0;
	i=0;
	if(shengyu!=0)
   	{
   	temp=10000000;
	while(!i)
	{
		i=shengyu/temp;
		if(temp!=1)
		temp/=10;
	}
	temp*=10;
	if(temp<100000)
		i=5;
	else
		i=4;//作为显示数字的y轴坐标,即从某行的第5列开始显示,前面是汉字	
	x=i;
	while(temp>=1)
	 {
	 	if(temp==10)//该数字只含有小数部分或整数部分已经显示完毕
	 	{
	 	  xiaoshu=1;
	 	  if(i==x)//该数字只含有小数部分,要另外显示一个0作为整数部分
	 	  {
	 	   	ST7565P_sz_xiaoshu(2,i++,0);//显示0
	 	  }
	 	  ST7565P_sz(2,i++,10);//显示小数点
	 	}
	 	if(xiaoshu)
	 	{
	 		ST7565P_sz_xiaoshu(2,i++,shengyu/temp);
	 	}
	 	else
	 		ST7565P_sz(2,i++,shengyu/temp);
	 	shengyu%=temp;
	 	temp/=10;
	 }
	 
	}//end if(koukuan!=0))
	else
	{
		ST7565P_sz(2,5,0);//5
	}	
}


*/


⌨️ 快捷键说明

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