#include "lcd1602.h"
/*************宏定义***************/
#define Busy 0x80 //用于检测LCD状态字中的Busy标识
void busy_check(void)
{
DBPort = 0xFF;
LcdEn = 0;
LcdRs = 0;
LcdRw = 1;
LcdEn = 1;
while (DBPort & Busy);
LcdEn = 0;
}
/*--------------------------------------------------------------------------------------
-函数名称:void LCD_Write_Data(uchar dat)
----------------------------------------------------------------------------------------
-函数功能:写数据
-入口参数:数据标识
-出口参数:无
---------------------------------------------------------------------------------------*/
void LCD_Write_Data(uchar dat)
{
busy_check(); //检测忙
DBPort = dat;
LcdRs = 1;
LcdRw = 0;
LcdEn = 1;
LcdEn = 0;
}
/*--------------------------------------------------------------------------------------
-函数名称:void Write_com(uchar cmd)
----------------------------------------------------------------------------------------
-函数功能:写命令
-入口参数:命令标识
-出口参数:无
---------------------------------------------------------------------------------------*/
void LCD_Write_COM(uchar cmd)
{
busy_check();
DBPort = cmd;
LcdRs = 0;
LcdRw = 0;
LcdEn = 1;
LcdEn = 0;
}
/*--------------------------------------------------------------------------------------
-函数名称:void LCD_Initial(void)
----------------------------------------------------------------------------------------
-函数功能:lcd初始化,初始化为8位并口模式
-入口参数:无
-出口参数:无
---------------------------------------------------------------------------------------*/
void LCD_Initial(void)
{
LCD_Write_COM(LCD_INIT); //显示模式
LCD_Write_COM(LCD_SHOW|LCD_NO_CURSOR|LCD_NO_FLASH); //开显示,无光标,不闪动
LCD_Write_COM(LCD_AC_UP|LCD_AC_NO_MOVE); //光标超界不移动且每次自增1
LCD_Write_COM(LCD_CLEAR_SCREEN); //清屏
}
/*--------------------------------------------------------------------------------------
-函数名称:void LCD_ShowString(uchar row,uchar column,uchar *str)
----------------------------------------------------------------------------------------
-函数功能:lcd显示字符串函数
-入口参数:row:行,column:列,*str:字符串
-出口参数:无
---------------------------------------------------------------------------------------*/
void LCD_ShowString(uchar row,uchar column,uchar *str)
{
uint i = 0;
if(row==0)
LCD_Write_COM(0x80|column);
if(row==1)
LCD_Write_COM(0x80|(column+0x40));
while(str[i] != '\0')
{
LCD_Write_Data(str[i]);
i++;
}
}
/*****************************************************************************************
*函数名称:void LCD_ShowNum(uchar row,uchar column,int num)
******************************************************************************************
*函数功能:LCD显示一个三位以内的整数
*入口参数:row:行,column:列,num:整数
*出口参数:无
******************************************************************************************/
void LCD_ShowNum(uchar row,uchar column,int num)
{
if(row==0)
LCD_Write_COM(0x80|column);
if(row==1)
LCD_Write_COM(0x80|(column+0x40));
LCD_Write_Data(num/100 + 48);
LCD_Write_Data((num/10)%10 + 48);
LCD_Write_Data(num % 10 + 48);
}
/*****************************************************************************************
*函数名称:void LCD_Showchar(uchar row,uchar column,uchar x)
******************************************************************************************
*函数功能:LCD显示一个三位以内的整数
*入口参数:row:行,column:列,x:字符
*出口参数:无
******************************************************************************************/
void LCD_Showchar(uchar row,uchar column,uchar x)
{
if(row==0)
LCD_Write_COM(0x80|column);
if(row==1)
LCD_Write_COM(0x80|(column+0x40));
LCD_Write_Data(x);
}
评论1