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

📄 1602drive.h

📁 max1293,12Bit,220Ksps,ADC驱动
💻 H
字号:
/*********************************************************/
//1602液晶驱动程序(H)
//
//
/********************************************************/
#ifndef _LCD1602_H_
#define _LCD1602_H_
//*******************************************************
//根据需要定义液晶IO口
/*
#ifdef  _1602PIN_
#define   RS       P2^7  // (黑)
#define   R_W      P2^6  //(白)
#define   E        P2^5  // (灰)
#define   DATA     P0
#endif
*/

sbit      RS  =      P3^5;
sbit      R_W =      P3^6;
sbit	  E   =      P3^7;
#define   DATA       P2

//为了编程方便定义的位变量
sbit a0   = ACC ^ 0;
sbit a1   = ACC ^ 1;
sbit a2   = ACC ^ 2;
sbit a3   = ACC ^ 3;
sbit a4   = ACC ^ 4;
sbit a5   = ACC ^ 5;
sbit a6   = ACC ^ 6;
sbit a7   = ACC ^ 7;
/*************************************************************
******************声明LCD的有关函数***************************
*************************************************************/
   void LCDdelay(unsigned char count);
   void WriteInstruction(unsigned char );
   void CheckBusy(void);
   void WriteData(unsigned char aa );
   void LCDInitial(void);
   void Modify(unsigned char position);
   void ClrLCD(void);
   void WriteDatas(void);
   void Writeonedata(unsigned char lcd_addr,unsigned char dat);

/*********************************************************************
  函数名称: LCDInitial()
  函数功能: 液晶初始化
  输入参数: 无
  输出参数: 无    
  返回值:   无
*********************************************************************/
/*******************************************************/
//INITIAL 初始化子程序
//设定液晶模块的工作方式  数据长度:8位     DL=1
//						  显示行数:2行     N=1
//						  点阵字型:5x7     F=0		则为function set=38H
//设定液晶模块的显示方式  显示器开关:开    D=1
//						  光标开关:  开    C=1
//						  光标闪烁:  不闪  B=0	    则为display on/off control=0EH
//设定液晶模块的进入方式  画面不动:        S=0
//						  光标右移          I/D=1    则为enter mode set=06H
///*****************************************************/

 void LCDInitial(void)
 {
 	WriteInstruction(0x38);
	WriteInstruction(0x08);
	WriteInstruction(0x01);
	WriteInstruction(0x0e);
	WriteInstruction(0x06);
 }
/*********************************************************************
  函数名称: LCDdelay延时子程序
  函数功能: 检测液晶状态时,给液晶延时
  输入参数: count
  输出参数: 无    
  返回值:   无
*********************************************************************/
  void LCDdelay(unsigned char count)
 {
    unsigned char i;
  	while(count--!=0)
		{
			for(i=20;i>0;i--)
			{
				;
			}
		}
 }
/*********************************************************************
  函数名称: CHECK_BUSY 
  函数功能: 读忙子程序
  输入参数: 无
  输出参数: 无    
  返回值:   无
*********************************************************************/
void CheckBusy(void) 
 {
 	E=0;            //Disable LCD
	R_W=1;          // 
	RS=0;           //Read Instruction Register
	E=1;            //enable LCD
	ACC=DATA;
	if(a7==1)
		{
			ACC=DATA; //check  LCD is busy or not
		}
	E=0;            //Disable LCD
	LCDdelay(20);


 }
/*********************************************************************
  函数名称: WRITE_INSTRUCTION   
  函数功能: 写指令寄存器子程序,将ACC中的数据写到相应地址的指令寄存器中
  输入参数: aa(指令代码)
  输出参数: 无    
  返回值:   无
*********************************************************************/
  void  WriteInstruction(unsigned char aa)
  {
  	 CheckBusy();
	 E=0;
	 R_W=0;
	 RS=0;
	 E=1;
	 DATA =aa;
	 
	 E=0;	
  }

/*********************************************************************
  函数名称: WRITE_DATA    
  函数功能: 写数据寄存器子程序,将ACC中的数据写到数据寄存器中
  输入参数: aa(数据)
  输出参数: 无    
  返回值:   无
*********************************************************************/
 void WriteData(unsigned char aa )
 {
 	CheckBusy();
	E=0;
	R_W=0;
	RS=1;
	E=1;
	DATA=aa;
	
	E=0;
 }  
/*********************************************************************
  函数名称: ClrLCD
  函数功能: 将液晶清屏
  输入参数: 无
  输出参数: 无    
  返回值:   无
*********************************************************************/
void  ClrLCD(void)
 {
 	WriteInstruction(0x01);
 }
/*********************************************************************
  函数名称: WriteDatas
  函数功能: 写数据流子程序
  输入参数: 无
  输出参数: 无    
  返回值:   无
*********************************************************************/
#ifdef _1602DATAS_
void WriteDatas(void)
 {
 	unsigned char b;
	WriteInstruction(0x80);					  //Write Datas in line 1
	
     										 
	for(b=0;b<16;)
		{
		 	WriteData(ram1[b]);
			b++;
		}
	WriteInstruction(0xc0);					 //Write Datas in line 2
	for(b=0;b<16;)
		{
			WriteData(ram2[b]);
			b++;
		}
 }

#endif
/*********************************************************************
  函数名称: Writeonedata
  函数功能: 给液晶写一个数据
  输入参数: lcd_addr(液晶显示地址),dat(液晶显示数据,ASCII码)
  输出参数: 无    
  返回值:   无
*********************************************************************/
void  Writeonedata(unsigned char lcd_addr,unsigned char dat)
  {
		WriteInstruction(lcd_addr);
		WriteData(dat);
  }
/*********************************************************************
  函数名称: Modify
  函数功能: 液晶修改子程序
  输入参数: position(修改地址)
  输出参数: 无    
  返回值:   无
*********************************************************************/
#ifdef _1602MODIFY_
void Modify(unsigned char position)
 {
 	WriteInstruction(0x0f);								//	显示 光标开 光标闪烁 0x0f
	WriteInstruction(position);							//

 }
#endif
  
#endif
/*********************************************************************
end of file
**********************************************************************/










⌨️ 快捷键说明

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