#include <reg52.h>
#include "lcd1602.h"
/****端口初始化*******************************************************************/
sbit LCDRS =DEFINE_RS;
sbit LCDRW =DEFINE_RW;
sbit LCDEN =DEFINE_EN;
unsigned char code DISNUM[]="0123456789";
/*****函数声明*******************************************************************/
static void Delay_xms(unsigned int xms);
static void LCDWriteCommand(unsigned char Command);
static void LCDWriteData(unsigned char Data);
/****************************************************************************
***函数名称:Delay_xms
***函数目的: 延时等待
***入口参数:xms:延时时间,单位ms,取值范围:1~65535
***出口参数:无
***其他说明:无
******************************************************************************/
static void Delay_xms(unsigned int xms)
{
unsigned int i;
for(; xms>0; xms--)
for(i=110; i>0; i--);
}
/***********************************************************************************
函数名称:void LCDWriteCommand(unsigned char Command)
函数目的:液晶写指令函数
入口参数:命令
出口参数:无
***********************************************************************************/
void LCDWriteCommand(unsigned char Command)
{
LCDRS=0;
LCDEN=1;
Delay_xms(5);
PORTX=Command;
LCDEN=1;
Delay_xms(5);
LCDEN=0;
}
/***********************************************************************************
函数名称:LCDWriteData(unsigned char Data)
函数目的:液晶写数据函数
入口参数:数据
出口参数:无
***********************************************************************************/
void LCDWriteData(unsigned char Data)
{
LCDRS=1;
LCDEN=1;
Delay_xms(5);
PORTX=Data;
LCDEN=1;
Delay_xms(5);
LCDEN=0;
}
/***********************************************************************************
函数名称:void LCDInit(void)
函数目的:液晶初始化
***********************************************************************************/
void LCDInit(void)
{
LCDRW=0;
LCDEN=0;
LCDWriteCommand(0X38);
LCDWriteCommand(0X0C);
LCDWriteCommand(0X06);
LCDWriteCommand(0X01);
}
/***********************************************************************************
函数名称:LCDDisplayChars(unsigned char ROW,unsigned char NUM,unsigned char *p)
函数目的:显示字符串函数
入口参数:ROW,排,NUM:显示为第几个,DATA,显示内容
出口参数:无
***********************************************************************************/
void LCDDisplayChars(unsigned char ROW,unsigned char NUM,unsigned char *p)
{
unsigned char XROW;
if(ROW==1)XROW=0X80;
if(ROW==2)XROW=0X80+0X40;
LCDWriteCommand(XROW+(NUM-1)); //表示显示的行,第几个字节,和数据
while(!(*p=='\0'))
{
LCDWriteData(*p++);
}
}