找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 7116|回复: 12
收起左侧

单片机驱动lcd1602显示乱码

[复制链接]
ID:553020 发表于 2020-9-23 16:24 | 显示全部楼层 |阅读模式
10黑币
仿真lcd1602秒的十位是正常的,一到做实物,lcd1602显示的秒十位就是乱码。
在线求解

4%MEL84IY(C_DJNGFQGO(5X.png
仿真显示正常

IMG_20200923_161832.jpg
实物的秒的十位显示错误,成了;或者超过了6的各种奇怪乱码

最佳答案

查看完整内容

你要搞清楚时序图 //**************************************************** //写指令 //**************************************************** void LCD1602_write_com(unsigned char com) { LCD1602_RS = 0; //LCD1602_delay_ms(1); LCD1602_EN = 0; //
回复

使用道具 举报

ID:155507 发表于 2020-9-23 16:24 | 显示全部楼层

你要搞清楚时序图
LCD1602-timingDiagram.jpg




//****************************************************
//写指令
//****************************************************
void LCD1602_write_com(unsigned char com)
{
        LCD1602_RS = 0;
        //LCD1602_delay_ms(1);
        LCD1602_EN = 0;  //<------
        LCD1602_PORT = com;
        LCD1602_EN = 1;  //<------
        LCD1602_delay_ms(1);
        LCD1602_EN = 0;
}

//****************************************************
//写数据
//****************************************************
void LCD1602_write_data(unsigned char dat)
{
        LCD1602_RS = 1;
        //LCD1602_delay_ms(1);
        LCD1602_EN = 0;    //<------     
        LCD1602_PORT = dat;
        LCD1602_EN = 1;
        LCD1602_delay_ms(1);
        LCD1602_EN = 0;
}


回复

使用道具 举报

ID:553020 发表于 2020-9-23 16:26 | 显示全部楼层
除了仿真使用的是89c52,实物使用的是89c54RD芯片以外,其余连接均和仿真一样
回复

使用道具 举报

ID:337139 发表于 2020-9-23 17:12 | 显示全部楼层
本帖最后由 长风007 于 2020-9-23 17:16 编辑

查一下你的显示位,还有显示的时间间隔。实物是有时序要求的!

可以参考一下这个图

可以参考一下这个图
回复

使用道具 举报

ID:553020 发表于 2020-9-23 22:10 | 显示全部楼层
长风007 发表于 2020-9-23 17:12
查一下你的显示位,还有显示的时间间隔。实物是有时序要求的!

这是lcd1602的程序,时序有问题吗?

#include "LCD1602.h"

//****************************************************
//MS延时函数(12M晶振下测试)
//****************************************************
void LCD1602_delay_ms(unsigned int n)
{
        unsigned int  i,j;
        for(i=0;i<n;i++)
                for(j=0;j<123;j++);
}

//****************************************************
//写指令
//****************************************************
void LCD1602_write_com(unsigned char com)
{
        LCD1602_RS = 0;
        LCD1602_delay_ms(1);
        LCD1602_EN = 1;
        LCD1602_PORT = com;
        LCD1602_delay_ms(1);
        LCD1602_EN = 0;
}

//****************************************************
//写数据
//****************************************************
void LCD1602_write_data(unsigned char dat)
{
        LCD1602_RS = 1;
        LCD1602_delay_ms(1);       
        LCD1602_PORT = dat;
        LCD1602_EN = 1;
        LCD1602_delay_ms(1);
        LCD1602_EN = 0;
}

//****************************************************
//连续写字符
//****************************************************
void LCD1602_write_word(unsigned char *s)
{
        while(*s>0)
        {
                LCD1602_write_data(*s);
                s++;
        }
}

void Init_LCD1602()
{
        LCD1602_EN = 0;                                                //设置为写状态
        LCD1602_write_com(0x38);                        //显示模式设定
        LCD1602_write_com(0x0c);                        //开关显示、光标有无设置、光标闪烁设置
        LCD1602_write_com(0x06);                        //写一个字符后指针加一
        LCD1602_write_com(0x01);                        //清屏指令
}


回复

使用道具 举报

ID:96682 发表于 2020-9-24 05:15 来自触屏版 | 显示全部楼层
除了使用不同参数的芯片外,无需修改延时数值
回复

使用道具 举报

ID:822755 发表于 2020-9-24 12:05 | 显示全部楼层
检查写的字符串有没有结束符“\x00",  
回复

使用道具 举报

ID:315554 发表于 2020-9-24 12:40 | 显示全部楼层
有DS1302等芯片吗?IO线接对没,芯片确定正常?我以前遇过时钟芯片不正常有类似情况,99:00
回复

使用道具 举报

ID:117977 发表于 2020-9-24 13:16 | 显示全部楼层
理论上你是在读DS1302的时钟,但是没看到你这部分代码
回复

使用道具 举报

ID:117977 发表于 2020-9-24 13:18 | 显示全部楼层
两个思路  读取1302的时序适当加点延时,1302坏 换一片 读取的数据可以通过发串口来测试
回复

使用道具 举报

ID:16255 发表于 2020-9-24 23:49 | 显示全部楼层
我估计你是用到时钟芯片了。DS1302、1307等。
可能是读取芯片数据没有正确读取出来,
检查一下程序是否正确?适当加一点延时可能会有帮助。
数据线是否正确连接?数据线上加上拉电阻了吗?
回复

使用道具 举报

ID:620337 发表于 2020-9-26 09:01 | 显示全部楼层
原因:程序语句里是否含有中文字符,或者不可见字符,第二,通信异常,延迟不足也会产生,但是我更觉得是字符问题
回复

使用道具 举报

ID:822755 发表于 2020-9-26 10:15 | 显示全部楼层
可能是读出的时钟数据没有屏蔽掉无关的位。
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表