(Display)LCD1602程序__版本2
扫描二维码
随时随地手机看文章
LCD1602从我接触单片机开始就在用,以前用的时候,有时用RS和EN,RW接地,有时也用四线模式,但是用到最后,我发现还是用8跟数据线,RS,RW,EN都接到单片机上是最好用的......
Proteus仿真图:
LCD1602.H代码:
#define _LCD1602_H_
#include
#include "TYPEDEF.H"
//液晶初始化函数:
void LCD1602_Init();
//液晶设置显示位置函数/设置DDRAM位置
void LCD1602_SetPosition( uint8 x, uint8 y );
//液晶写缓存函数
void LCD1602_WriteBuffer( uint8 *buffer );
//液晶写字符串函数
void LCD1602_WriteString( uint8 x, uint8 y, uint8 *str );
//显示数值函数
void LCD1602_WriteNum( uint8 x, uint8 y, uint32 dat );
//显示温度函数
void LCD1602_DispTemp( uint8 x, uint8 y, int8 temp );
//显示两位数函数
void LCD1602_Disp2bit( uint8 x, uint8 y, uint8 dat );
//开启光标函数
void LCD1602_OpenCursor( void );
//关闭光标函数
void LCD1602_CloseCursor( void );
//设定光标位置函数
void LCD1602_SetCursor( uint8 x, uint8 y );
#endif
LCD1602.C代码:
#include "LCD1602.H"
#include "TYPEDEF.H"
#include "CONFIG.H"
//写命令函数
static void LCD1602_WriteCommand( uint8 com );
//判忙函数
static void LCD1602_CheckBusy();
//写数据函数
static void LCD1602_WriteData( uint8 dat );
//将数据转化为字符串
static void Uint32_To_String( uint8 *str, uint32 dat );
//液晶初始化函数
void LCD1602_Init()
{
LCD1602_WriteCommand( 0x38 );//8跟数据线,2行显示,5*8点阵
LCD1602_WriteCommand( 0x06 );//写入数据后光标自动右移
LCD1602_WriteCommand( 0x01 );//清除DDRAM,清屏
LCD1602_WriteCommand( 0x0c );//不显示光标,不闪烁
}
void LCD1602_SetPosition( uint8 x, uint8 y )
{
if( x==0 )
LCD1602_WriteCommand( 0X80+y );
else if( x==1 )
LCD1602_WriteCommand( 0X80+0x40+y );
else
{
char Buffer[]={"Pos Error"};
LCD1602_WriteBuffer( Buffer );
while(1);
}
}
//液晶写缓存函数
void LCD1602_WriteBuffer( uint8 *buffer )
{
while( *buffer != '