學(xué)了一段時(shí)間的51單片機(jī),自己編了一些簡(jiǎn)單的程序,實(shí)現(xiàn)了一些比較簡(jiǎn)單的功能,我會(huì)把這些程序在后面幾篇博客中貼上,供需要的人參考。這些程序都是我調(diào)試好的,都能正常使用只是可能有些功能我沒(méi)有寫(xiě)完,不過(guò)我都加了注釋提醒,也比較簡(jiǎn)單,有時(shí)間的話(huà),我會(huì)補(bǔ)全的。
本文引用地址:http://www.biyoush.com/article/201611/322829.htm有些地方寫(xiě)的不妥或不簡(jiǎn)潔,是因?yàn)槟芰λ拢R(shí)欠缺,現(xiàn)在正在惡補(bǔ)……
下面的程序是控制1602液晶上下兩行分別顯示JUST DO IT !和DO YOUR BEST!兩句話(huà),并整屏左右移動(dòng)三次,最后靜態(tài)顯示出來(lái)
#include
#defineucharunsignedchar
#defineuintunsignedint
uchar code table1[]="JUST DO IT !";
uchar code table2[]="DO YOUR BEST !";
sbit lcden=P2^7;
sbit rd=P2^6;
sbit wr=P2^5;
uchar num,t;
voiddelay(uint z)//延遲函數(shù)
{
uint x,y;
for(x=z;x>0;x--)
for(y=110;y>0;y--)
;
}
voidwrite_com(uchar com)//寫(xiě)指令
{
rd=0;
wr=0;
delay(5);
lcden=1;
P0=com;
delay(5);
lcden=0;
}
voidwrite_date(uchar date)//寫(xiě)數(shù)據(jù)
{
rd=1;
wr=0;
delay(5);
lcden=1;
P0=date;
delay(5);
lcden=0;
}
voidinit()//初始化
{
write_com(0x38);
write_com(0x0e);
write_com(0x06);
write_com(0x01);
}
voidmain()
{
init();
write_com(0x80+0x10);
for(num=0;num<12;num++)//分次寫(xiě)入數(shù)據(jù)
write_date(table1[num]);
delay(20);
write_com(0x80+0x52);
for(num=0;num<14;num++)
write_date(table2[num]);
delay(20);
for(t=0;t<=2;t++)//來(lái)回整屏移動(dòng)三次
{
for(num=0;num<=15;num++)
{write_com(0x18);//整屏左移
delay(200);//移動(dòng)間隔為ms
}
delay(1000);
for(num=0;num<=15;num++)
{write_com(0x 1c);//整屏右移
delay(200);
}
delay(1000);
}
for(num=0;num<=15;num++)
{write_com(0x18);
delay(200);
}
while(1);
}
評(píng)論