本部分主要介紹1602液晶顯示,顯示內(nèi)容為“Hello,Welcome to my site,my friends.”。
原理圖如下:
程序如下:
#include
#define uchar unsigned char
#define uint unsigned int
sbit RS=P3^0; //數(shù)據(jù)/命令選擇端(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) //延時函數(shù)
{
uint a,b;
for(a=x;a>0;a--)
for(b=10;b>0;b--);
}
void delay1(uint x) //延時函數(shù)
{
uint a,b;
for(a=x;a>0;a--)
for(b=100;b>0;b--);
}
void write_com(uchar com) //寫命令函數(shù)
{
wela=1; //鎖存器位選打開
P2=com; //向P2口寫命令
wela=0; //鎖存器位選關(guān)閉
RS=0; //以下部分跟據(jù)1602手冊的時序圖寫出
EN=0;
RW=0;
delay(10);
EN=1;
delay(10);
EN=0;
}
void write_date(uchar date) //寫數(shù)據(jù)函數(shù)
{
wela=1;
P2=date;
wela=0;
RS=1;
EN=0;
RW=0;
delay(10);
EN=1;
delay(10);
EN=0;
}
void init() //初始化函數(shù)
{
write_com(0x38); //顯示模式設(shè)置
delay(20);
write_com(0x0f);//顯示開/關(guān)及光標(biāo)設(shè)置
delay(20);
write_com(0x06);//當(dāng)寫一個字符后地址指針加一,光標(biāo)加一
delay(20);
}
void main() //主函數(shù)
{
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); //保持顯示
}
試驗結(jié)果如下: