1、首先我们打开Keil μVision编译器,新建一个工程,然后保存在硬盘上的位置,然后选择Atmel-AT89C51单片机为模型,并启动器添加STARTUP.A51文件,然后在当前目禅昌录下新建一个C文件,并将其添加入工作路径。
2、导入51单片机的头文件以及LCD1602的头文件。
3、创建一个延时函数,可以传入想要具体延时的时长,其内部实现是由一个二重循环,两个循环的次数相乘积。
4、然后创建写命令的函数,指定RS和E同时为0时,才可以写入命令,设定完成后,将com写入输出端口,规定写命令时,E为正脉冲,然后空 *** 作一个机器周期等待机器反应。
5、然后创建写数据的函数,规定写数据时,E为正脉冲,规定当RS=1和RW=0时才可以写入数据,然后将数据从输出端口输出,最后让E产生正跳变。
6、然后创建初始化LCD1602的函数,指定显示模式位两行显示,5*7,8位数据、整体显示,无光标,无闪烁、写入一个字符后地址指针加1,袜袭毁最后进行清屏 *** 作。
7、最后在主函数中首先执行LCD1602的初始化函数,首先创建一个无告备限循环,然后添加两个字符串,这里以两行显示百度经验的网址为例,再进行延时以及使用清屏函数进行刷新。
#include<reg51.h>
#define
uchar
unsigned
char
#define
uint
unsigned
int
uchar
xpos
,ypos
sbit
key=P2^0
sbit
rs=P3^0
sbit
rw=P3^1
sbit
e=P3^2
void
nop(){}
void
delay(uint
z)
//延时
{
uint
x,y
for(x=zx>0x--)
for(y=112y>袜察0y--)
}
void
check()
//判忙
{
rs=0
rw=1
e=0
P1=0xff
e=1
nop()
nop()
while(P1&0x80){}
}
void
wrc(uchar
com)
//写指令
{
check()
rs=0
rw=0
e=1
P1=com
nop()
e=0
nop()
}
void
wrd(uchar
date)
//写数据
{
check()
rs=1
rw=0
e=1
P1=date
nop()
e=0
nop()
}
void
init()
//初始化
{
wrc(0x38)
wrc(0x01)
wrc(0x0c)
wrc(0x06)
}
void
lcdpos()
//内部数据地址指针定位
{
xpos&=0x01
ypos&=0x1f
if(xpos==0x00)
wrc(ypos|0x80)
else
wrc((ypos+0x40)|0x80)
}
void
lcdw(uchar
x,uchar
y,uchar
*s)
//在指定的坐标下写字符串缓睁
{
xpos=x
for(ypos=yypos<20ypos++)
{
lcdpos()
wrd(*s)
s++
}
}
void
main()
{
init()
cgram()
while(1)
{
lcdw(0,0,"##########
")
lcdw(1,1,"!!!!!!!!!!
")
lcdw(2,2,"&&&&&&&&&&
"告哪茄)
lcdw(3,3,"$$$$$$$$$$
")
}
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)