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

📄 lcd.c

📁 12864专用驱动C程序 有需要的朋友可与我联系
💻 C
字号:
#include <intrins.h>
#include "main.h"
#include "lcd.h"
#include	"mcs51.h"
//extern uchar code HZ16[][16];
/*--------液晶驱动----*/
void write_com(unsigned char cmdcode)//写命令到LCD
{
  Di = 0;
  Rw = 0;
  Lcd_Bus = cmdcode;
  Delay12864(0);
  E = 1;
  Delay12864(0);
  E = 0;
}

/************************/
void write_data(unsigned char Dispdata)//写数据到LCD
{
  Di = 1;
  Rw = 0;
  Lcd_Bus = Dispdata;
  Delay12864(0);
  E = 1;
  Delay12864(0);
  E = 0;
}



/***************************/
void Clr_Scr(void)//清除内存
{ unsigned char j,k;
  CS1=1;CS2=1;
  write_com(Page_Add+0);
  write_com(Col_Add+0);
  for(k=0;k<8;k++){
    write_com(Page_Add+k);
    write_com(Col_Add+0);
    for(j=0;j<64;j++){
      write_data(0x00);
    }
  }
}



/****************************/
void Disp_Chinese(unsigned char pag,unsigned char col,  char code *hzk)
{ unsigned char j=0,i=0;//指定位置显示汉字16*16
  for(j=0;j<2;j++){
    write_com(Page_Add+pag+j);
    write_com(Col_Add+col);
    for(i=0;i<16;i++){
      write_data(hzk[16*j+i]);
    }
  }
}

/*************************/
void Disp_Digit(unsigned char pag,unsigned char col, unsigned char code *hzk)
{ unsigned char j=0, i=0; //指定位置显示字母或数字8*16
  for(j=0;j<2;j++){
    write_com(Page_Add+pag+j);
    write_com(Col_Add+col);
    for(i=0;i<8;i++){
      write_data(hzk[8*j+i]);
    }
  }
}

/***********************************/
/*void Display_1(uchar type,uchar xy,uint display_data)//teye=1显示汉字teye=0显示ASCII码
{
	uchar row,line;
	CS1=0;CS2=0;
	row = (xy%16)*8;//列
	line = 2 * (xy/16);	//行
	if(type)
	{
		putHZ(row,line,display_data);
	}
	else
	{
		putASCII(row,line,display_data);
	}
	CS1=1;CS2=1;
}*/
/************显示汉字驱动***********************/
/*void putHZ(uchar x,uchar y,uint show_data_index)//Y=ROW X=COLUMN
{
	uchar i;
	//pagenum--页地址,低四位(0~8)
	//hcolumnnum--行地址高四位
	//lcolumnnum--行地址低四位
	uchar pagenum,hcolumnnum,lcolumnnum;
	pagenum=y|0x0B0;
	hcolumnnum=((x)/0x10)|0x10;
	lcolumnnum=((x)%0x10);

	SerialWrite(0,pagenum);
	//STARTROWADDR--初始化显示行
	SerialWrite(0,STARTROWADDR);
	SerialWrite(0,hcolumnnum);
	SerialWrite(0,lcolumnnum);
	for(i=0;i<16;i++)
	{
		SerialWrite(1,HZ16[show_data_index][i]);
	}
	pagenum++;
	SerialWrite(0,pagenum);
	//STARTROWADDR--初始化显示行
	SerialWrite(0,STARTROWADDR);
	SerialWrite(0,hcolumnnum);
	SerialWrite(0,lcolumnnum);
	for(i=0;i<16;i++)
	{
		SerialWrite(1,HZ16[show_data_index+1][i]);
	}
}*/
/******************显示ASCII码驱动******************************/
/*void putASCII(uchar x,uchar y,uint show_data_index)
{
	uchar i,pagenum,hcolumnnum,lcolumnnum;
	CS1=0;CS2=0;
	pagenum=y|0xB0;
	hcolumnnum=((x)/0x10)|0x10;
	lcolumnnum=((x)%0x10);
	SerialWrite(0,pagenum);
	//STARTROWADDR--初始化显示行
	SerialWrite(0,STARTROWADDR);
	SerialWrite(0,hcolumnnum);
	SerialWrite(0,lcolumnnum);
	for(i=0;i<8;i++)
	{
		SerialWrite(1,HZ16[show_data_index][i]);
	}
	pagenum++;
	SerialWrite(0,pagenum);
	//STARTROWADDR--初始化显示行
	SerialWrite(0,STARTROWADDR);
	SerialWrite(0,hcolumnnum);
	SerialWrite(0,lcolumnnum);
	for(i=0;i<8;i++)
	{
		SerialWrite(1,HZ16[show_data_index][i+8]);
	}
	CS1=1;CS2=1;
}*/
/*************显示首地址*********************/
/*void SerialWrite(uchar ComDatFlag,uchar OutData)
{
	uchar j;
	Rw=ComDatFlag;	//DATA=1,COMMAND=0
	for(j=0;j<8;j++)
	{
		E=0;
		if((OutData&0x80)==0x80)
			Di=1;
		else
			Di=0;
		_nop_();
		OutData<<=1;
		E=1;
		_nop_();
	}
}*/
void Init_lcd(void)//初始化LCD屏
{
  CS1=1;
  CS2=1;
  Delay12864(100);
  write_com(Disp_Off);
  write_com(Page_Add+0);
  write_com(Start_Line+0);
  write_com(Col_Add+0);
  write_com(Disp_On);
}

/******************************************************************************/
void Uplcd()
{
  Rst=1;
  CS1=0;CS2=0;
  CS1=1;
  ACC=0x03F;
  W_INST();
  CS1=0;
  CS2=1;
  ACC=0x03F;
  W_INST();
}
void W_INST()      // 写指令子程序(INST)
{
  Di=0;
  Delay12864(0);
  Rw=0;
  Delay12864(0);
  ACC=P0;
  E=1;
  Delay12864(0);
  E=0;
}
void Delay12864(unsigned int t)//
{ unsigned int i,j;
  for(i=0;i<t;i++){
    for(j=0;j<10;j++);
  }
}

⌨️ 快捷键说明

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