这几天精神状态不佳,今天才出成果,LCD1602 显示,由于使用的是字符型的LCD,所以无法显示汉字,只能是字符,好了,代码来袭~~
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
sbit LCDE=P2^7;
sbit RS=P2^6;
sbit RW=P2^5;
uchar code table1[]="x=1,y=1"; //显示第一行内容
uchar code table2[]="x=2,y=2"; //显示第二行内容
void LCD_write_com(uchar com); //写指令
void LCD_write_dat(uchar dat); //写数据
void delay(uint z);
void init();
void LCD_write_com(uchar com)
{
RS=0;
P0=com;
delay(5);
LCDE=1;
delay(5);
LCDE=0;
}
void LCD_write_dat(uchar dat)
{
RS=1;
P0=dat;
delay(5);
LCDE=1;
delay(5);
LCDE=0;
}
void init()
{
RW=0;
LCD_write_com(0x38); //数据总线8位,显示2行,5*7点阵每字符
LCD_write_com(0x0c); //显示功能开,无光标
LCD_write_com(0x06); //光标设置
LCD_write_com(0x80+0x10); //数据指针位置
LCD_write_com(0x01); //清屏
}
void delay(uchar z)
{uint a,b;
for(a=z;a>0;a--)
for(b=110;b>0;b--);}
void main()
{uchar a;
init();
LCD_write_com(0x80);
for(a=0;a<7;a++)
{
LCD_write_dat(table1[a]);
delay(30);
}
LCD_write_com(0x80+0x40);
for(a=0;a<7;a++)
{LCD_write_dat(table2[a]);
delay(30);
}
delay(4500);
for(a=0;a<20;a++)
{
LCD_write_com(0x18);
delay(150);
}
}
|