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

📄 lcd.h

📁 基于51单片机的触摸屏驱动程序 经调试通过
💻 H
字号:

/*-------------------端口定义-----------------------------*/
#define INT  BIT0		//???????;?????
#define STA  BIT1		//??????,1:?   0:??
#define SS   BIT2		//chip select;?????
#define MOSI BIT3		//DIN
#define MISO BIT4		//DOUT
#define SCK  BIT5		//DCLK
/*---------------------LCD??-----------------------------*/
#define data_out   P2OUT	//MCU PORTC<------> LCM
#define state    P1IN		//?????PINB,?????PINB
#define control	 P1OUT		//?????PORTB	
#define req  BIT6  			//????,H??
#define busy BIT7  			//H:??????????,L:???????
/*----------------------------------------------------------*/
#define uchar      unsigned char
#define uint       unsigned int
#define cbi(srf,bit) (srf&=~bit)
#define sbi(srf,bit) (srf|=bit)


/*--------------------IO???----------------------------*/
void io_init(void)		//IO???
{
	P2DIR=0xff;			//??????			
        P1DIR=0xff;
        P1OUT=0x00;
        P1DIR&=~INT;
        P1DIR&=~busy;
        P1DIR&=~MOSI;
}

void send (uchar dat)               //??????
{
	while (state&busy);
	data_out=dat;
	sbi(control,req);
	while (!(state&busy));
	cbi(control,req);
}
/*-----------------????------------------*/
void wr_zb (uchar comm,uchar addr_x,uchar addr_y)//????
{
	send(comm);
	send(addr_x);
	send(addr_y);
}
/*---------------????---------------------*/
void delayms (uchar time)
{     int j,k;
	while(time--)
	{
	  for(j=100;j>0;j--)
            for(k=200;k>0;k--)
              ;
	}
}
/*-------------------????8X8-------------------*/
void dis_byte (uchar x,uchar y,uchar code)
{
	wr_zb(0xf1,x,y);
	send(code);
}
/*-------------------????8X16-------------------*/
void dis_byte_big (uchar x,uchar y,uchar code)
{
	wr_zb(0xf9,x,y);
	send(code);
}
/*--------------------?????--------------------*/
void dis_bit_lat (uchar x,uchar y,uchar data)
{
    wr_zb(0xf2,x,y);
    send(data);
}
/*--------------------??????-------------------*/
void dis_byte_lat (uchar x,uchar y,uchar data)
{
    wr_zb(0xf3,x,y);
    send(data);
}
/*--------------------????8bit----------------------*/
void dis_cursor (void)
{
    send(0xfb);
    send(0x07);
}
/*--------------------????16bit----------------------*/
void dis_cursor_big (void)
{
    send(0xfb);
    send(0x0f);
}
/*-----------------------????------------------------*/
void close_cursor (void)
{
    send(0xfb);
    send(0x00);
}
/*----------------------??????1bit-----------------------*/
void move_1 (void)
{
    send(0xfc);
    send(0x00);
}
/*----------------------??????2bit-----------------------*/
void move_2 (void)
{
    send(0xfc);
    send(0x01);
}
/*----------------------??????8bit-----------------------*/
void move_8 (void)
{
    send(0xfc);
    send(0x07);
}
/*----------------------????-----------------------*/
void dis_img (uchar  *img)
{
  uchar i,j;
  for(j=0;j<128;j++)
  {
    for(i=0;i<30;i++)
    {
      wr_zb(0xf3,i,j);
      send(img[j*20+i]);
    }
  }
}
/*-----------------???????------------------*/
void dis_chn (uchar x,uchar y,uchar num,uchar *chn)
{
  uchar i=0,j=0;
  while(num--)
  {
    if((x+i)<15)
    {
      wr_zb(0xf0,x+i,y+j);
      send(chn[j*30+i*2]-0xa0);
      send(chn[j*30+i*2+1]-0xa0);
	  i++;
    }
	else
	{
		i=0;
		j++;
		num++;
		if(j==8)
		{
			break;
		}
	}
  }
}
/*-----------------???????8X16-------------------*/
void dis_eng_big (uchar x,uchar y,uchar *eng)
{
  uchar i=0,j=0;
  while(1) 
  {
    if((x+i)<30)
    {
      wr_zb(0xf9,x+i,(y+j)*16);
      send(eng[j*30+i]);
	  i++;
	  if(eng[j*30+i]=='\0')
	  {
		break;
	  }
    }
	else
	{
		i=0;
		j++;
		if(j==8)
		{
			break;
		}
		if(eng[j*30+i]=='\0')
		{
			break;
		}
	}
  }
}
/*-----------------???????8X8-------------------*/
 void dis_eng (uchar x,uchar y,uchar *eng)
{
  uchar i=0,j=0;
  while(1) 
  {
    if((x+i)<30)
    {
      wr_zb(0xf1,x+i,(y+j)*8);
      send(eng[j*30+i]);
	  i++;
	  if(eng[j*30+i]=='\0')
	  {
		break;
	  }
    }
	else
	{
		i=0;
		j++;
		if(j==8)
		{
			break;
		}
		if(eng[j*30+i]=='\0')
		{
			break;
		}
	}
  }
}

⌨️ 快捷键说明

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