侵权投诉
订阅
纠错
加入自媒体

LCD1602的温馨提示和实现代码

2019-05-24 09:52
云创硬见
关注

LCD1602的温馨提示

1.系统的电源从上电到稳定要有几十毫秒甚至更长的时间,这段时间极易使单片机程序走乱,或者开始几行代码没有正确执行。解决的方法是在配置位(--CONFIG())中一定要加入上电定时使能位:PWRTEN。这样就可以使得单片机在上电时的72MS内保持复位状态,避免由于电压还未稳定而发生程序执行错误等问题。

2.在字符间隔的空白处,要写入空格补齐,如数组里的字符串,即使不足16位,后面也要用空格补齐到16位,其他没有字符的空白处,同样写入空格。总的原则是:所有字符间隔的空白处,一定不要使它们处于游离状态。这样可以有效的抗电源等干扰,避免出现乱码。

3.如果程序的功能比较复杂,要完成的任务比较多,使用液晶时,一定要考虑的是:不要频繁的去读写液晶,那会占用很多的计时,会严重影响任务的执行。所以,刷新屏幕,更新数据一定要安排的合理。

下面的代码所用指令是STC 89C51单片机所用如需用其它芯片请另行更改。

LCD1602的实现代码

#include "reg51.h"

#include "LCD1602.h"

unsigned char code tab[]={"   wellcome to   "}

void delay_1602(uc z)    //延迟z  ms

uc x,y;

for(x=z;x>0;x--)

for(y=110;y>0;y--);

void write_com(uc com)            //写指令  参照时序写程序

lcd_rs=0;       //进入写命令模式

lcd_rw=0;

P1=com;        //P1口为数据口

delay_1602(5);      //延迟作用是等待数据稳定

lcd_en=0;      //下面4行为让E产生高脉冲

delay_1602(5);      //

lcd_en=1;      //

delay_1602(5);

lcd_en=0;

void write_date(uc date)      //写数据  参照时序写  参照写命令程序理解

lcd_rs=1;

lcd_rw=0;

P1=date;

delay_1602(5);

lcd_en=0;

delay_1602(5);

lcd_en=1;

delay_1602(5);

lcd_en=0;

void lcd_init()              //初始化程序。先设置显示开关和光标

//

lcd_en=0;

write_com(0x38);  //设置16*2显示。

write_com(0x0c);  //设置开显示,显示光标

write_com(0x06);  //写一个字符后地址指针加1

write_com(0x01);  //清平指令

void main()

lcd_init();     // 初始化LCD

delay_1602(100);     //延时10ms

while(1)

write_com(0x06);             //向右移动光标

while(tab[ i ] != '?')

write_date (tab[ i ]);     //显示字符"WLCOME  TO"

i++;

以上所有信息仅作为学习交流使用,不作为任何学习和商业标准。若您对文中任何信息有异议,欢迎随时提出,谢谢!

声明: 本文由入驻维科号的作者撰写,观点仅代表作者本人,不代表OFweek立场。如有侵权或其他问题,请联系举报。

发表评论

0条评论,0人参与

请输入评论内容...

请输入评论/评论长度6~500个字

您提交的评论过于频繁,请输入验证码继续

暂无评论

暂无评论

文章纠错
x
*文字标题:
*纠错内容:
联系邮箱:
*验 证 码:

粤公网安备 44030502002758号