51单片机编写lcd1602显示程序,第一行显示自己的姓名,第二行显示学号

51单片机编写lcd1602显示程序,第一行显示自己的姓名,第二行显示学号,第1张

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,"$$$$$$$$$$

")

}

}


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/12522292.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-26
下一篇 2023-05-26

发表评论

登录后才能评论

评论列表(0条)

保存