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

📄 drive_functions.h

📁 站长把时间都花费在为您修正说明上。压缩包解压时不能有密码。系统会自动删除debug和release目录
💻 H
字号:
#include<reg51.h>
#define uchar unsigned char
#define uint unsigned int
#define RST P20
#define E 	P21
#define RW 	P22
#define DI 	P23
#define CS2 P24
#define CS1 P25

#define UP 1          //scroll up control
#define DOWN 0        //scroll down control
uchar direction=UP;   //scroll up by default
uchar color=0x00;
bit shut_flag=0;
sbit P20=P2^0;
sbit P21=P2^1;
sbit P22=P2^2;
sbit P23=P2^3;
sbit P24=P2^4;
sbit P25=P2^5;

bit busy_bit=1;
bit menu=0;
uchar line=0;
uchar select=0;

#define LCD P1

/*************************** check busy ************************/

bit CheckBusy(void)
{
	uchar state=0;

	LCD=0xFF;//空读操作
	RW=1;
	DI=0;
	E=1;
	state=LCD;
	E=0;

	LCD=0xFF;//再读才有效
	RW=1;
	DI=0;
	E=1;
	state=LCD;
	E=0;
	busy_bit=(bit)(state>>7);
	
	return(busy_bit);
	}


/******************* display on **********************/

/*void DspOn(void)
{
   	while(CheckBusy());
	CS1=1;
	CS2=0;
	LCD=0xFF;
	RW=0;
   	DI=0;
   	LCD=0x3F;
	E=1;
	E=0;

	while(CheckBusy());
	CS1=0;
	CS2=1;
	LCD=0xFF;
	RW=0;
   	DI=0;
   	LCD=0x3F;
	E=1;
	E=0;
    }
/*
/********************* display off ***********************/

/*void DspOff(void)
{
	while(CheckBusy());
	CS1=1;
	CS2=0;
	LCD=0xFF;
	RW=0;
	DI=0;
	LCD=0x3E;
	E=1;
	E=0;

	while(CheckBusy());
	CS1=0;
	CS2=1;
	LCD=0xFF;
	RW=0;
	DI=0;
	LCD=0x3E;
	E=1;
	E=0;
	}
*/
/******************** set display start line **************/

void SetStartLine(uchar line)
{
	CS1=1;
	CS2=0;
	while(CheckBusy());
	LCD=0xFF;
	RW=0;
	DI=0;
	LCD=line+0xC0;
	E=1;
	E=0;

	CS1=0;
	CS2=1;
	while(CheckBusy());
	LCD=0xFF;
	RW=0;
	DI=0;
	LCD=line+0xC0;
	E=1;
	E=0;
	}

/************************* set display page ****************/ 

void SetPage(uchar page)
{	
	CS1=1;
	CS2=0;
	while(CheckBusy());
	LCD=0xFF;
	RW=0;
	DI=0;
	LCD=page+0xB8;
	E=1;
	E=0;

	CS1=0;
	CS2=1;
	while(CheckBusy());
	LCD=0xFF;
	RW=0;
	DI=0;
	LCD=page+0xB8;
	E=1;
	E=0;
	}

/************************ set display column *****************/

void SetColumn(uchar column)
{
	CS1=1;
	CS2=0;
	while(CheckBusy());
	LCD=0xFF;
	RW=0;
	DI=0;
	LCD=column+0x40;
	E=1;
	E=0;

	CS1=0;
	CS2=1;
	while(CheckBusy());
	LCD=0xFF;
	RW=0;
	DI=0;
	LCD=column+0x40;
	E=1;
	E=0;
	}


/***************************** write data ************************/

void WriteData(uchar dsp_data,chip_select)
{
	while(CheckBusy());
	LCD=0xFF;
	if(chip_select==1)
	{
		CS1=1;
		CS2=0;
		}
	 else{
			CS1=0;
			CS2=1;
			}
	RW=0;
	DI=1;
	if(menu)LCD=~dsp_data;
	else LCD=dsp_data;
	E=1;
	E=0;
	}

/**************************** read data ***********************/

/*uchar ReadData(uchar dsp_data,chip_select)
{
	while(CheckBusy());
	LCD=0xFF;
	if(chip_select==1)
	{
		CS2=0;
		CS1=1;
		}
	 else{
	 		CS2=1;
			CS1=0;
			}
	RW=1;
	DI=1;
	E=1;
	dsp_data=LCD;
	E=0;
	return(dsp_data);
	}
*/
/******************** clear LCD *******************************/

void ClearLCD(void)
{
	uchar page,column;
if(shut_flag==1)color=0xFF;   //设置清屏颜色
else color=0x00;
	for(page=0;page<8;page++)
	{
	  SetPage(page);
	  SetColumn(0);
	  for(column=0;column<64;column++)
	  {	    
		WriteData(color,1);               //clear chip1
	     	WriteData(color,2);         //clear chip2
		}
	   }
	  }
void ClearLCD2(void)
{
	uchar page,column;
if(shut_flag==1)color=0xFF;   //设置清屏颜色
else color=0x00;
	for(page=0;page<8;page++)
	{
	  SetPage(page);
	  SetColumn(0);
	  for(column=0;column<64;column++)
	  {	    
	              //clear chip1
		WriteData(color,2);               //clear chip2
		}
	   }
	  }

/***********************display up area of character *****************/

void DspUp(uchar code * character,uchar chip_select)
{
	uchar i;
	for(i=0;i<16;i++)
	{
	  WriteData(* (character+i),chip_select);
	  }
	}

/*********************** display down area of character ***************/

void DspDown(uchar code * character,uchar chip_select)
{
	uchar i;
	for(i=16;i<32;i++)
	{
	  WriteData(* (character+i),chip_select);
	  }
	}




⌨️ 快捷键说明

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