#include
#define uint unsigned int
#define uchar unsigned char
/* ***************************
PIN
*************************/
#define LCD1602_DB P0//
sbit LCD1602_RS=P2^5;
sbit LCD1602_RW=P2^6;
sbit LCD1602_EN=P2^7;
/*
*****************************
*/
void LCD1602_check_busy(void)
{
unsigned char sta;
LCD1602_DB=0xff;
LCD1602_RS=0;
LCD1602_RW=1;
do
{
LCD1602_EN=1;
sta=LCD1602_DB;
LCD1602_EN=0;
}while(sta & 0x80);
}
void wrcmd1602(char cmd)
{
LCD1602_check_busy();
LCD1602_RS=0;
LCD1602_RW=0;
LCD1602_DB=cmd;
LCD1602_EN=1;
LCD1602_EN=0;
}
void wrdata1602(char mdata)
{
LCD1602_check_busy();
LCD1602_RS=1;
LCD1602_RW=0;
LCD1602_DB=mdata;
LCD1602_EN=1;
LCD1602_EN=0;
}
void LcdSetCursor(unsigned char x,unsigned char y)
{
unsigned char addr;
if(x==0)
addr=0x00 + y;
else
addr=0x40 + y;
wrcmd1602(0x80+addr);
}
void LcdShowStr(unsigned char x,unsigned char y,unsigned char *str)
{
LcdSetCursor(x,y);
while(*str!='')
{
wrdata1602(*str++);
}
}
void InitLcd1602()
{
LCD1602_RW=0;
LCD1602_EN=0;
wrcmd1602(0x38);
wrcmd1602(0x0c);
wrcmd1602(0x06);
wrcmd1602(0x01);
wrcmd1602(0x80);
}
void LCD1602_cls()
{
LCD1602_check_busy();
LCD1602_RS=0;
LCD1602_RW=0;
LCD1602_DB=0x01;
LCD1602_EN=1;
LCD1602_EN=0;
}
/*
***************?÷oˉêy**************
*/
void main()
{
InitLcd1602();
LCD1602_cls();
LcdShowStr(0,0," Hello!zxf");
LcdShowStr(1,0," Hello!");
while(1);
}
相关文章