📄 lcd1602.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 + -