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

📄 splc501_lcd.h

📁 8051单片机对SPLC501液晶驱动读写程序.c语言写的.很实用
💻 H
字号:
/******************************************************************
           文件名:SPLC501_LCD.H         
			 功能:完成液晶驱动有初始化
		   设计者:ZHOUHONG
		     时间:05/8/25
*******************************************************************/
#ifndef SPLC501_LCD_H
#define SPLC501_LCD_H
#include <AT89X52.H>
#include <Delay.h>

/*************************定义SPLC501液晶端口*****************/
#define SPLC501_Data P0  //液晶数据口
sbit SPLC501_RES=P2^4;   //液晶复位口(低电平有效)
sbit SPLC501_A0=P2^3;    //液晶数据命令选择脚
sbit SPLC501_RW=P2^2;    //液晶读/写信号
sbit SPLC501_EP=P2^1;    //液晶时钟信号使能脚
/************************************************************/
 
/*********************************函数声明****************************************/
extern void SPLC501_WriteCommand(unsigned char comData);
extern void SPLC501_Init(void);
extern void SPLC501_WriteData(unsigned char dispData);
extern void SetPage(unsigned char pageNum );
extern void SetColuAddr(unsigned char coluAdd);
extern void ClearScreen( bit isTrue);
extern void ClearGrid(unsigned char pageNum,unsigned char coluAdd,bit cleaMode);
extern void ClearPage(unsigned char pageNum,bit cleaMode);
extern void SetPos( unsigned char pageNum,unsigned char coluAdd);
extern void ShowChin(unsigned char pageNum,unsigned char coluAdd,bit dispMode,unsigned char *p); 
extern void ShowASS(unsigned char pageNum,unsigned char coluAdd,bit dispMode,unsigned char *p);
//=================================================================================
//===================================子函数========================== 

/*********************************液晶初始化子函数*************************/
void SPLC501_Init(void)
{     
     SPLC501_RES=0;   //液晶复位(低电平有效)
     wait;
     SPLC501_RES=1;
     SPLC501_WriteCommand(0xe2);    //复位
     SPLC501_WriteCommand(0xe3);    //空操作 
     SPLC501_WriteCommand(0xc8);    //COM口扫描方向 c8 63---0    c0 0----63
     SPLC501_WriteCommand(0xa1);    //ADC(segment方向)设定为A1 反向  A0  normal
	 //电源设定
     //========================================================
	 SPLC501_WriteCommand(0xa2);    //LCD偏压设定 1/9 bias
     SPLC501_WriteCommand(0x24);    //V5电压内部电阻调整设置
	 SPLC501_WriteCommand(0x81);    //电量设置模式 (双字节)
	 SPLC501_WriteCommand(0x10);    //调整显示屏亮度  10~1f共16个等级
	 SPLC501_WriteCommand(0xd2);    //驱动模式
	 SPLC501_WriteCommand(0x00);    //模式2
     SPLC501_WriteCommand(0x2c);    //上电控制设置   REGULATOR on
	 SPLC501_WriteCommand(0x2e);    //上电控制设置   +FOLLOWER oFF  
	 SPLC501_WriteCommand(0x2f);    //上电控制设置   +FOLLOWER on   
	                                //power set  over
	 //======================================================================
	 SPLC501_WriteCommand(0xaf);   //开显示
	 SetPage(0x00);                //页设置为第0页 
	 SPLC501_WriteCommand(0x40);   //显示起始行设置为第0行
	 SetColuAddr(0x00);            //列设置为第0列
	 SPLC501_WriteCommand(0xa5);   //全屏点亮
	 SPLC501_WriteCommand(0xa4);   //正常显示
     SPLC501_WriteCommand(0xa6);   //正向显示  a7为反向
	 ClearScreen(0);               //清屏全部ROM填零
}

/*************************** 向SPLC501LCD写命令函数  ******************* */
void SPLC501_WriteCommand(unsigned char comData)
{    
	SPLC501_A0=0;     //设置各管脚电平	
	SPLC501_EP=1; 
	SPLC501_RW=0;	
	SPLC501_Data=comData;
    WAIT3;	          // 即3个_NOP_();可以不加,起到稳定的作用
	SPLC501_EP=0;
}


/**************************************************************
          向SPLC501LCD写数据函数
 **************************************************************/
void SPLC501_WriteData(unsigned char dispData)
{
    SPLC501_A0=1;     //设置各管脚电平 	
    SPLC501_EP=1; 
    SPLC501_RW=0; 
    SPLC501_Data=dispData;
    WAIT3;	   //即3个_NOP_(); 可以不加,起到稳定的作用
    SPLC501_EP=0;
}


/**********************************************************   
                页设置子函数( PageNum= 0,1.......8  )
 **********************************************************/
void SetPage(unsigned char pageNum )
{
    pageNum+=0xb0;
    SPLC501_WriteCommand(pageNum);
}


/*********************************************************
            列设置子函数 (coluAdd= 0,1,.........131  )
 *********************************************************/
void SetColuAddr(unsigned char coluAdd)
{
    unsigned char temp;  //临时变量
    temp=coluAdd>>4;  //取列地址的高4位
    temp+=0x10;
    SPLC501_WriteCommand(temp);
    temp=coluAdd & 0x0f;  //取列地址的低4位	
    SPLC501_WriteCommand(temp);
}


/***********************************************************
           清屏子函数     fill ROM with 0 or 1
 ***********************************************************/
void ClearScreen( bit isTrue)
{
    unsigned char z1,z2,temp;
    if(isTrue==1) 
       temp=0xff;
    else
       temp=0x00;
    for(z1=0;z1<8;z1++)
    {
      SetPage(z1);
      SetColuAddr(0);           
      for(z2=0;z2<132;z2++)
      {
          SPLC501_WriteData(temp);
      }
    }
}


/*********************************************************
                      定位函数	
			  ( PageNum= 0,1..........7    )  
			  ( coluAdd= 0,1,.........131  )
 *********************************************************/
void SetPos(unsigned char pageNum,unsigned char coluAdd)
{
    if(pageNum<8)
	{
    	SetPage(7-pageNum);           
    	SetColuAddr(coluAdd+4);       
	}
}


/*********************************************************
                    显示汉字函数           
	 其中:
	      PageNum= 0,1.......8  
	      coluAdd= 0,1,.........131 
 	      dispMode 显示方式.0为反显,1为正显
	      p为显示数据的指针
 *********************************************************/ 
void ShowChin(unsigned char pageNum,unsigned char coluAdd,bit dispMode, unsigned char *p)  
{
    unsigned char i;	
    SetPos(pageNum,coluAdd);
    for(i=0;i<16;i++)
    {
	if(dispMode)
	{
	  SPLC501_WriteData(*p);
	}
	else
	{
	  SPLC501_WriteData(~(*p));
	}			
	p++;
    }
    SetPos(pageNum+1,coluAdd);
    for(i=0;i<16;i++)
    {
	if(dispMode)
	{
	  SPLC501_WriteData(*p);
	}
	else
	{
	  SPLC501_WriteData(~(*p));
	}			
	p++;
    }	
}


/*********************************************************
               显示ASSICC函数      
	 其中:
	      PageNum= 0,1.......8  
	      coluAdd= 0,1,.........131 
 	      dispMode 显示方式.0为反显,1为正显
	      p为显示数据的指针
 *********************************************************/ 
void ShowASS(unsigned char pageNum,unsigned char coluAdd,bit dispMode,unsigned char *p) 
{
    unsigned char i;	
    SetPos(pageNum,coluAdd);
    for(i=0;i<8;i++)
    {
      if(dispMode)
      {
	SPLC501_WriteData(*p);
      }
      else
      {
	SPLC501_WriteData(~(*p));
      }			
      p++;
    }
    SetPos(pageNum+1,coluAdd);
    for(i=0;i<8;i++)
    {
    if(dispMode)
    {
      SPLC501_WriteData(*p);
    }
    else
    {
      SPLC501_WriteData(~(*p));
    }	
    p++;
    }
}


/*********************************************************
               显示ClearGrid()函数    
	 其中:                        
	      PageNum= 0,1.......8  
	      coluAdd= 0,1,.........131 
 	      cleaMode 显示方式.0为全灭,1为全亮		 
 *********************************************************/ 
void ClearGrid(unsigned char pageNum,unsigned char coluAdd,bit cleaMode)
{
    unsigned char i;	
    SetPos(pageNum,coluAdd);
    for(i=0;i<8;i++)
    {
      if(cleaMode)
      {
	SPLC501_WriteData(0xff);
      }
      else
      {
        SPLC501_WriteData(0x00);
      }
    }
    SetPos(pageNum+1,coluAdd);
    for(i=0;i<8;i++)
    {
      if(cleaMode)
      {
	SPLC501_WriteData(0xff);
       }
      else
      {
	SPLC501_WriteData(0x00);
      }
    }
}
/*********************************************************
               显示ClearPage()函数    
	 其中:                        
	      PageNum= 0,1.......8  
	      coluAdd= 0,1,.........131 
 	      cleaMode 显示方式.0为全灭,1为全亮		 
 *********************************************************/ 
void ClearPage(unsigned char pageNum,bit cleaMode)
{
    unsigned char i;	
    SetPos(pageNum,0);
    for(i=0;i<128;i++)
    {
      if(cleaMode)
      {
	SPLC501_WriteData(0xff);
      }
      else
      {
        SPLC501_WriteData(0x00);
      }
    }
    SetPos(pageNum+1,0);
    for(i=0;i<128;i++)
    {
      if(cleaMode)
      {
	SPLC501_WriteData(0xff);
       }
      else
      {
	SPLC501_WriteData(0x00);
      }
    }
}


 //===================================液晶部分结束=============================
#endif

⌨️ 快捷键说明

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