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

📄 lcd1602.h

📁 本源程序是基于AT89C51单片机的
💻 H
字号:
/***********************************************************************************
 ***********************************************************************************
                        ********************************                      
                         液晶模块LCD1602的操作与控制程序
                        ********************************
    文件名称:LCD1602.h
    功  能:对液晶模块进行操作与控制。主要包括对1602的初始化函数、写命令函数
                  和写数据函数    
    设 计 者:黄开坤
 **********************************************************************************/
#ifndef         LCD1620                 //条件编译
#include        <intrins.h>
/***端口定义***********************************************************************/
sbit LCD_Rs     =P2^5;                  //命令/数据控制线
sbit LCD_Rw     =P2^6;                  //读/写控制线
sbit LCD_En     =P2^7 ;                 //使能控制线
sfr  DBport     =0x80 ;                 //数据端口,P0=0x80,P1=0x90,P2=0xA0,P3=0xB0
/***测试LCD忙函数******************************************************************/
void LCD_Busy(void)
{    LCD_Rs=0;
     LCD_Rw=1;
	 _nop_() ;                          
     LCD_En=1;
     _nop_() ;
    // while(DBport&0x80);                //如果DBport的第七位为1,则LCD忙,继续等待
     LCD_En=0;
}
/***向LCD写入命令或数据函数********************************************************/
#define LCD_COM             0           //命令
#define LCD_DATA            1           //数据
#define LCD_CLEAR           0x01        //清屏
#define LCD_HOME            0x02        //光标返回
void LCD_Write(bit style, unsigned char input)//写命令或数据函数
{    LCD_En=0;
     LCD_Rs=style;                      //style=1为读写数据;style=0为写命令
     LCD_Rw=0 ;                         //置写状态
     _nop_();
     DBport=input;                      //写数据
     LCD_En=1;
     _nop_();
     LCD_En=0;
     _nop_();
     LCD_Busy();                          
}
/***置显示模式*********************************************************************/
#define LCD_SHOW            0x04        //显示开
#define LCD_HIDE            0x00        //显示关
#define LCD_CORSOR          0x02        //显示光标
#define LCD_NO_CORSOR       0x00        //关闭光标
#define LCD_FLASH           0x01        //光标闪烁
#define LCD_NO_FLASH        0x00        //光标不闪烁
void LCD_ShowMode(unsigned char ShowMode)//设置显示模式函数
{    
     LCD_Write(LCD_COM,0x08|ShowMode);
}
/***置输入模式*********************************************************************/
#define LCD_AC_UP          0x02         //地址计数器AC自增
#define LCD_AC_DOWN        0x00         //地址计数器AC自减
void LCD_InPutMode(unsigned char InPut) //设置输入模式函数
{
     LCD_Write(LCD_COM,0x04|InPut);         
}
/***初使化LCD**********************************************************************/
void LCD_Initial(void)
{    
     LCD_Write(LCD_COM,0x38);             //设计8位数据接口,2行显示,5*7点阵字
     LCD_Write(LCD_COM,0x38);
     LCD_ShowMode(LCD_SHOW|LCD_NO_CORSOR);//开显示,无光标
     LCD_Write(LCD_COM,LCD_CLEAR);        //清屏
     LCD_InPutMode(LCD_AC_UP);            //地址计数器自增,
}
/***显示定位***********************************************************************/
void LCD_GoToXY(unsigned char x,unsigned char y)//用于指定显示内容在LCD屏上的位置
{
     if(y==1) 
         LCD_Write(LCD_COM,0x80|x);				//第一行,第X个字符
	 if(y==2)
	     LCD_Write(LCD_COM,0xC0|x);				//第二行,第X个字符
}
/***显示数据***********************************************************************/
void LCD_Print(unsigned char *str)          //用于将待显示内容送入LCD显示
{
     while(*str!='\0')
	      {LCD_Write(LCD_DATA,*str);
		   str++;
		   }
}
/***结束***************************************************************************/
endif 
                  

⌨️ 快捷键说明

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