📄 lcm1602.c
字号:
/***************************************************************************
**
** 文件: LCM1602.c
** 作者: 李建明
** 日期: 2007-10-19
** 说明: 用于Seril_1602板上LCM1602,模拟总线
** Email:new.embed@163.com
** QQ: 156580784
**
****************************************************************************/
#include <reg51.h>
sbit __Lcm1602Rs =P3^5; // 定义LCM引脚
sbit __Lcm1602Rw =P3^4;
sbit __Lcm1602En =P3^3;
#define __Lcm1602DataPort P1
/***************************************************************************
**
** 函数: __Dly
** 入口: s - 延时个数
** 出口: 无
** 说明: 延时子程序
**
****************************************************************************/
void __Dly(int s)
{
int i =0;
char j =0;
for( i=0; i<s; i++)
{
for( j=50; j>0; j--)
{
;
}
}
}
/***************************************************************************
**
** 函数: __Lcm1602SendCmd
** 入口: Cmd - 命令字
** 出口: 无
** 说明: 发送命令
**
****************************************************************************/
void __Lcm1602SendCmd(char Cmd)
{
__Lcm1602DataPort =Cmd;
__Lcm1602Rs =0;
__Lcm1602Rw =0;
__Lcm1602En =0;
__Dly(25);
__Lcm1602En =1;
}
/***************************************************************************
**
** 函数: Lcm1602WrByte
** 入口: DisByte - 数据
** 出口: 无
** 说明: 显示1个字节数据
**
****************************************************************************/
void Lcm1602WrByte(char DisByte)
{
__Lcm1602DataPort =DisByte;
__Lcm1602Rs =1;
__Lcm1602Rw =0;
__Lcm1602En =0;
__Dly(25);
__Lcm1602En =1;
}
/***************************************************************************
**
** 函数: Lcm1602WrString
** 入口: DisStr - 数据首地址
** num - 数据个数
** 出口: 无
** 说明: 显示连续字符串
**
****************************************************************************/
void Lcm1602WrString(char * DisStr,char num)
{
char i =0;
char Data =0;
for(i =0; i<num; i++)
{
Data = *(DisStr +i);
Lcm1602WrByte(Data);
if( Data == 0)
{
break;
}
}
}
/***************************************************************************
**
** 函数: Lcm1602Init
** 入口: 无
** 出口: 无
** 说明: 初始化1602液晶屏
**
****************************************************************************/
void Lcm1602Init(void)
{
/* The Screen Init */
__Lcm1602SendCmd(0x01); // Clear screen
__Lcm1602SendCmd(0x38); // 8 bit dot
__Lcm1602SendCmd(0x0F); // Display on
__Lcm1602SendCmd(0x06); // Move the cursor
__Lcm1602SendCmd(0x80); // Display the location
__Lcm1602SendCmd(0x01); // Clear screen
/* The Screen Init End */
}
/***************************************************************************
**
** 函数: Lcm1602NextRow
** 入口: 无
** 出口: 无
** 说明: 换行显示
**
****************************************************************************/
void Lcm1602NextRow(void)
{
__Lcm1602SendCmd(0xC0);
}
/****************************************************************************
** File End
****************************************************************************/
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -