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

📄 lcm1602.c

📁 用于1602字符型液晶屏显示驱动程序和测试程序
💻 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 + -