本部分首要介绍1602液晶显现,显现内容为“Hello,Welcome to my site,my friends.”。
原理图如下:
程序如下:
#include
#define uchar unsigned char
#define uint unsigned int
sbit RS=P3^0; //数据/指令挑选端(H/L)
sbit EN=P3^2; //使能端
sbit RW=P3^1; //读/写挑选端(H/L),本文章只写,所以该端口供低电平
sbit wela=P3^3;//锁存器位选信号
uchar table1[]=“Hello,Welcome to my ”;//字符表1
uchar table2[]=“site,my friends.”;//字符表2
void delay(uint x) //延时函数
{
uint a,b;
for(a=x;a》0;a–)
for(b=10;b》0;b–);
}
void delay1(uint x) //延时函数
{
uint a,b;
for(a=x;a》0;a–)
for(b=100;b》0;b–);
}
void write_com(uchar com) //写指令函数
{
wela=1; //锁存器位选翻开
P2=com; //向P2口写指令
wela=0; //锁存器位选封闭
RS=0; //以下部分跟据1602手册的时序图写出
EN=0;
RW=0;
delay(10);
EN=1;
delay(10);
EN=0;
}
void write_date(uchar date) //写数据函数
{
wela=1;
P2=date;
wela=0;
RS=1;
EN=0;
RW=0;
delay(10);
EN=1;
delay(10);
EN=0;
}
void init() //初始化函数
{
write_com(0x38); //显现形式设置
delay(20);
write_com(0x0f);//显现开/关及光标设置
delay(20);
write_com(0x06);//当写一个字符后地址指针加一,光标加一
delay(20);
}
void main() //主函数
{
uchar a;
init();
write_com(0x80); //榜首行开始地址
delay(20);
for(a=0;a《25;a++)
{
write_date(table1[a]);//读取字符表
delay(20);
}
write_com(0xc0); //第二行开始地址
delay(20);
for(a=0;a《17;a++)
{
write_date(table2[a]);//读取字符表
delay(20);
}
while(1); //坚持显现
}
实验成果如下: