这是我编写的一个只能显示一行的代码
#include "LCD1602.h"
#include "Delay.h"
/*sbit RS=P20;
sbit RW=P21;
sbit LE=P22;
DATA-->P1
*/
void lcd1602_busy()
{
RS=0;
RW=1;
P1=0xff;
while(1)
{
LE=1;
if(P1<0x80) break; //P^7!=0ʱ£¬ÖÕÖ¹
LE=0;
}
LE=0;
}
void Lcd1602_Init()
{
delay_ms(15);
WR_cmd(0x38);//ÉèÖÃÏÔʾģʽ
delay_ms(5);
WR_cmd(0x38);
delay_ms(5);
WR_cmd(0x38);
WR_cmd(0x38);
lcd1602_busy();//¼ìæ
WR_cmd(0x08); //¹ØÏÔʾ
lcd1602_busy();
WR_cmd(0x01); //ÏÔʾÇåÆÁ
lcd1602_busy();
WR_cmd(0x06); //ÏÔʾ¹â±êÒƶ¯ÉèÖÃ
lcd1602_busy();
WR_cmd(0x0c); //ÏÔʾ¿ª¼°¹â±êÉèÖÃ
}
void WR_data(uchar dat)
{
RS=1;
RW=0;
P1=dat;
// LE=0;
LE=1;
delay_ms(1);
LE=0;
delay_ms(1);
return;
}
void WR_cmd(uchar cmd)
{
RS=0;
RW=0;
P1=cmd;
// LE=0;
LE=1;
delay_ms(1);
LE=0;
delay_ms(1);
return;
}
// void LCD_dis_char(uchar x,uchar y,uchar dat)
// {
// uchar address;
// if(y==1)
// address=0x80+x;
// else
// address=0xc0+x;
// WR_cmd(address);
// WR_data(dat);
// }
void LCD_dis_str(/*uchar x,*/uchar y,uchar *str)//xΪ×ø±ê£¬yΪÐкÅ
{
uchar address;
if(y==1)
// address=0x80+x;
address=0x80;
else
// address=0xc0+x;
address=0xc0;
WR_cmd(address);
while( *str != ' ')
{
WR_data(*str);
str++;
}
}
-
一周热门 更多>