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的初始化函数,首先创建一个无限循环,然后添加两个字符串,这里以两行显示百度经验的网址为例,再进行延时以及使用清屏函数进行刷新。
1602液晶的程序我有,要做数字锁的话其实用到液晶也不多。因为你显示密码是时候不应该都是现实*****吗?
你只需把键盘写入的数据存在一个数组中,然后跟密码数组对比就好了。
还有就是值得注意的是数据类型问题。
输入的键值看你处理的方式而定,密码存放的格式,还有输出显示的是ascll码。注意转换。
下面附带一段51的1602LCD的C程序,自己仔细琢磨。
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
uchar table[16]="abcdefghijklmnyz"
uchar table1[16]="0123456789abcdef"
sbit lcden=P2^0
sbit lcdrs=P2^1
sbit dula=P2^6
sbit wela=P2^7
uchar num
void delay(uint z)
{
uint x,y
for(x=zx>0x--)
for(y=110y>0y--)
}
void write_com(uchar com)
{ wela=0
lcdrs=0
P0=com
delay(5)
lcden=1
delay(5)
lcden=0
}
void write_data(uchar date)
{ wela=0
lcdrs=1
P0=date
delay(5)
lcden=1
delay(5)
lcden=0
}
void init()
{
lcden=0
write_com(0x38)
write_com(0x0e)
write_com(0x06)
write_com(0x01)
write_com(0x80)
}
void main()
{
init()
for(num=0num<16num++)
{
write_data(table[num])
delay(20)
}
write_com(1)
write_com(0x80+0x40)
for(num=0num<16num++)
{
write_data(table1[num])
delay(20)
}
while(1)
}
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)