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

📄 12864.c[2008-11-01-13-50-24].sfb

📁 实现单片机对LCD12864液晶的控制
💻 SFB
字号:
#define uchar unsigned char
#define uint unsigned int
#include "zz1.c"
#define CLR_E P6OUT&=~BIT0;//p3.0
#define SET_E P6OUT|=BIT0;
#define CLR_WR P6OUT&=~BIT1;//p3.1
#define SET_WR P6OUT|=BIT1;
#define CLR_DI P6OUT&=~BIT2;//p3.2
#define SET_DI P6OUT|=BIT2;

#define CLR_CS1 P6OUT&=~BIT3;//p3.3
#define SET_CS1 P6OUT|=BIT3;
#define CLR_CS2 P6OUT&=~BIT4;//p3.4
#define SET_CS2 P6OUT|=BIT4;

#define  DATADIR  P5DIR
#define  DATAOUT  P5OUT
#define  DATAIN   P5IN
#define  Set_Disp_On 0x3F
#define  Set_Disp_Off 0x3E
#define  Set_Column  0x40
#define  Set_Page  0xB8
#define  Set_Start_Line 0xC0

//******************************************************
//************读状态***返回0为准备就绪,1为忙**************
//******************************************************
uchar checkstatus()
{
  uchar status=0;
  SET_WR;
  CLR_DI;
  SET_E;
  DATADIR=0x00;

  status=DATAIN;

  CLR_E;
  DATADIR=0xff;
  if(status&0x80==0x80)
      return 1;
  else
      return 0 ;
}

//指令寄存器写入函数

wcmd(uchar Reg_Code)
{
        while(checkstatus()==1);  
	CLR_DI;
	CLR_WR;
	DATADIR=0xff;
        DATAOUT=Reg_Code;
	SET_E;
	CLR_E;
}

//  显示数据写入函数
wdat(uchar Disp_Data)
{
  while(checkstatus()==1);   
  SET_DI;
  CLR_WR;
  DATAOUT=0X00;
  DATADIR=0xff;
  DATAOUT=Disp_Data;
  SET_E;
  _NOP();
  CLR_E;
}

//  设置XY地址,X用页表示,Y用行表示***********

void Set_XY(unsigned char X_PageColumn, unsigned char Y_Column)
{
  wcmd(Set_Page+X_PageColumn);
  wcmd(Set_Column+Y_Column);
}


//  12864寄存器初始化函数

init12864()
{ 
  DATADIR=0xff;
  P6DIR=0Xff;
  
  SET_CS1;
  SET_CS2;
  wcmd(Set_Disp_Off);
  wcmd(Set_Start_Line);
  wcmd(Set_Page);
  wcmd(Set_Column);
  wcmd(Set_Disp_On);
}




//*****************************************
//  清除12864显示存储器
//*****************************************
clr()
{ 
  unsigned char j,k;

  SET_CS1;
  SET_CS2;
  for(k=0;k<8;k++)
  {
    wcmd(Set_Page+k);
    wcmd(Set_Column);

    for(j=0;j<64;j++) 
    {
	while(checkstatus());
  	wdat(0x00);
    }
  }
}

//*****************************************
void display(uchar x,uchar y,uchar *k)	 //	16*16
{
  uchar i,j;
  for(j=0;j<2;j++)
  {	
    if(y<64)
    {
      SET_CS1;
      CLR_CS2;
      Set_XY(x+j,y);
    }
    else
    {
      CLR_CS1; 
      SET_CS2;
      Set_XY(x+j,y-64);
    }
    for(i=0;i<16;i++)
    {
      wdat(*(k+j*16+i));  
    }
  }
} 

//*****************************************
void display3(uchar x,uchar y,uchar *k)	 //	16*8
{
     uchar i,j;
	// uchar	rline=y,rcol=x;
    //if(rcol>120) {rline=rline+2;rcol=0;}
    for(j=0;j<2;j++)
	{	
		
	       if(y<64) 
	        {
			 SET_CS1;
		     CLR_CS2;
		     Set_XY(x+j,y);}
	       else
		     {
			  CLR_CS1; 
			  SET_CS2;
		      Set_XY(x+j,y-64);}
		   for(i=0;i<8;i++)
	    {
			    wdat(*(k+j*8+i));  
			//y=y+1;
	    }
	}
} 




  

⌨️ 快捷键说明

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