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

📄 ocmc2x16a.h

📁 1602液晶模块的显示驱动头文件
💻 H
字号:
#include "AT89X52.h"

//////////////////////////在此进行端口映射////////////////////////////////////////////////////////////////////////
#define RS (P1_0)
#define RW (P1_1)
#define E  (P1_2)
#define LCD_IO P3
#define BF P3_7
////////////////////////////////////////宏指令/////////////////////////////////////////////////////////////////////
#define LCD_clear   Send_I(0x01)  ////清显示屏
#define LCD_RetToZ  Send_I(0x03)  ////光标归位,AC归零
///显示模式设置
#define	LCD_initial_1  Send_I(0x3C)	 //8位数据总线,两行显示模式,5X10点阵
#define	LCD_initial_2  Send_I(0x38)	 //8位数据总线,两行显示模式,5X7点阵
#define	LCD_initial_3  Send_I(0x34)	 //8位数据总线,单行显示模式,5X10点阵
#define	LCD_initial_4  Send_I(0x30)	 //8位数据总线,单行显示模式,5X7点阵
#define	LCD_initial_5  Send_I(0x2C)	 //4位数据总线,两行显示模式,5X10点阵
#define	LCD_initial_6  Send_I(0x28)	 //4位数据总线,两行显示模式,5X7点阵
#define	LCD_initial_7  Send_I(0x24)	 //4位数据总线,单行显示模式,5X10点阵
#define	LCD_initial_8  Send_I(0x20)	 //4位数据总线,单行显示模式,5X7点阵
///光标显示控制
#define LCD_close   Send_I(0x0B)  ////关显示屏
#define LCD_Mark	Send_I(0x0C)  ////开显示,无光标,无方块
#define LCD_MarkN   Send_I(0x0E)  ////只有光标,无黑色方块
#define LCD_MarkY   Send_I(0x0F)  ////有光标,有方块
///光标位移控制
#define Mark_Mov1 	Send_I(0x10)  ///光标向左移动,AC自动减1
#define Mark_Mov2   Send_I(0x14)  ///光标向右移动,AC自动加1
#define Mark_Mov3   Send_I(0x18)  ///光标和显示一起向左移动,AC值不变
#define Mark_Mov4   Send_I(0x1C)  ///光标和显示一起向右移动,AC值不变

//OCMC2X16A LCD Driver
//by:FFgamelife
//08.8.23



char LCD_initial(void);			///初始化
void Mark_set(char,char);		///设置光标位置
void Send_I(unsigned char);		///发送指令
void Send_D(unsigned char);		///发送数据
unsigned char Read_D(void);		///读取数据
void CheakBF(void);				///忙标志检测
void Delay(unsigned int);		///延时
void Showinf(char *);           ///字符串写屏
///////////////////////////////////////////初始化子程序////////////////////////////////////////////////
char LCD_initial(void)
{
   LCD_clear;				   //清显示屏
   LCD_RetToZ;				   //光标归位,AC归零
   LCD_MarkY;			   //开光标,开显示屏
   return 0;
}

//////////////////////////////////////////设置光标位置/////////////////////////////////////////////////
void Mark_set(char line,char Num)
{
   if(line==1)
     Send_I(0x80+Num);
   else
     Send_I(0xC0+Num); 
}
//////////////////////////////////////////写指令子程序/////////////////////////////////////////////////
void Send_I(unsigned char i)
{
   CheakBF();
   RS=0;
   RW=0;
   LCD_IO=i;
   E=1;
   Delay(1);
   E=0;
}

//////////////////////////////////////////写数据子程序/////////////////////////////////////////////////
void Send_D(unsigned char Data)
{
   CheakBF();
   RS=1;
   RW=0;
   LCD_IO=Data;
   E=1;
   Delay(1);
   E=0;
}

//////////////////////////////////////////读数据子程序/////////////////////////////////////////////////
unsigned char Read_D()
{
  unsigned char Data;
  CheakBF();
  RS=1;
  RW=1;
  E=1;
  Delay(1);
  Data=LCD_IO;
  return Data;  
}

///////////////////////////////////////////忙标志位检测////////////////////////////////////////////////
void CheakBF(void)
{
  LCD_IO=0xFF;
  RS=0;
  RW=1;
  E=1;
  while(BF);
  E=0;
}

//////////////////////////////////////////延时子程序////////////////////////////////////////////////////
void Delay(unsigned int time)
{
  unsigned int i,j;
  for(i=0;i<time;i++)
  for(j=0;j<time;j++);
}
/////////////////////////////////////////输入字符串/////////////////////////////////////////////////////
void Showinf(char *str)
{
  while(*str!='\0')
  {
    Send_D(*str);
	str++;
  }

}
















⌨️ 快捷键说明

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