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的初始化函数,首先创建一个无限循环,然后添加两个字符串,这里以两行显示百度经验的网址为例,再进行延时以及使用清屏函数进行刷新。
常用的LCD有1602,可以查找其硬件电路,其程序也很容易找到,这是其常用的子程序:sbit rw=P1^4//定义管脚,3个控制引脚 1个8位数据口
sbit rs=P1^3
sbit lcden=P1^5
#define db P2
void write_com(uchar com)//液晶屏写命令,控制液晶屏开关或字符位置的数据是命令
{
db=com
rs=0
rw = 0
lcden=0
Delay1ms(12)
lcden=1
Delay1ms(12)
lcden=0
}
void write_date(uchar date)//液晶屏写数据,将要显示的字符是数据
{
db=date
rs=1
rw = 0
lcden=0
Delay1ms(12)
lcden=1
Delay1ms(12)
lcden=0
}
void init2()//液晶屏初始化
{
rw=0
write_com(0x38)
Delay1ms(12)
write_com(0x0f)
Delay1ms(12)
write_com(0x06)
Delay1ms(12)
write_com(0x01)
Delay1ms(12)
}
void display_1602(uchar temp)//显示一个字符型变量的子程序
{
uchar A1,A2,A3
A1=temp/1000//分离出 个 十 百
A2=temp/100%10
A3=temp%10
write_com(0x80)//第1行,第1字
write_date(A1+0x30)送的是ASCI码,因此如果显示2,就 要送0x32
Delay1ms(1)
write_date( A2+0x30)
Delay1ms(1)
write_date(A3+0x30)
Delay1ms(12)
}
如果想显示字符"A" 就 write_date(‘A’)
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)