學(xué)了一段時間的51單片機,自己編了一些簡單的程序,實現(xiàn)了一些比較簡單的功能,我會把這些程序在后面幾篇博客中貼上,供需要的人參考。這些程序都是我調(diào)試好的,都能正常使用只是可能有些功能我沒有寫完,不過我都加了注釋提醒,也比較簡單,有時間的話,我會補全的。
本文引用地址:http://www.ex-cimer.com/article/201611/322829.htm有些地方寫的不妥或不簡潔,是因為能力所致,知識欠缺,現(xiàn)在正在惡補……
下面的程序是控制1602液晶上下兩行分別顯示JUST DO IT !和DO YOUR BEST!兩句話,并整屏左右移動三次,最后靜態(tà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)//寫指令
{
rd=0;
wr=0;
delay(5);
lcden=1;
P0=com;
delay(5);
lcden=0;
}
voidwrite_date(uchar date)//寫數(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++)//分次寫入數(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++)//來回整屏移動三次
{
for(num=0;num<=15;num++)
{write_com(0x18);//整屏左移
delay(200);//移動間隔為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);
}
評論