微波EDA网,见证研发工程师的成长!
首页 > 硬件设计 > 嵌入式设计 > 1602液晶动态显示

1602液晶动态显示

时间:11-28 来源:互联网 点击:
学了一段时间的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);

}

Copyright © 2017-2020 微波EDA网 版权所有

网站地图

Top