学了一段时间的51单片机,自己编了一些简略的程序,完成了一些比较简略的功用,我会把这些程序在后面几篇博客中贴上,供需求的人参阅。
这些程序都是我调试好的,都能正常运用仅仅或许有些功用我没有写完,不过我都加了注释提示,也比较简略,有时间的话,我会补全的。
有些当地写的不当或不简练,是因为才能所造成的,常识短缺,现在正在恶补……
下面的程序是操控1602液晶上下两行别离显现JUST DO IT !和DO YOUR BEST!两句话,并整屏左右移动三次,最终静态显现出来
#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)//推迟函数
{
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)//写数据
{
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++)//分次写入数据
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);
}
声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/bandaoti/fenxiao/256226.html