找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2170|回复: 9
收起左侧

LCD1602无法显示数据,但程序在另一个单片机上却可以正常显示,请问是怎么回事?

[复制链接]
ID:796670 发表于 2020-12-30 10:39 | 显示全部楼层 |阅读模式
本帖最后由 明日香 于 2020-12-30 10:41 编辑

我用LCD1602连接一个单片机A显示数据,是一个最简单的LCD程序,但LCD1602只发亮却没有显示任何数据
这是这个单片机的电路图:需要让P37=0才能打开背光;
捕获.PNG

但相同的程序,我用另一块单片机B却可以正常显示,请问这是为什么?出了什么问题呢?
这两个开发板的区别就是开发板A需要让P37=0打开背光,而开发板B是简单的学习版,不需要打开背光
我感觉是这块开发板比较特殊,是不是少写了一些程序?求大家帮忙看看,指点下,谢谢。
这是程序:
#include <reg52.h>
#include <intrins.h>
#include <stdlib.h>
#include <stdio.h>
#define uchar unsigned char
#define uint  unsigned int

sbit E=P3^4;    //1602使能引脚
sbit RW=P3^6;    //1602读写引脚   
sbit RS=P3^5;    //1602数据/命令选择引脚
sbit BL=P3^7;  //背光

/*sbit E=P2^7;    //1602使能引脚
sbit RW=P2^5;    //1602读写引脚   
sbit RS=P2^6;*/

uchar code table[]="1234";//要显示的数据

void lcd_delay(uint ms)
{
uint i,j;
        for(i=ms;i>0;i--)
        
         for(j=110;j>0;j--);

}

void wcmd(uchar del)//写命令函数
{
        RS=0;//命令选择端
        RW=0;//写命令
        lcd_delay(1000);
        P0=del;  //把命令字写入
        lcd_delay(100);
        E=1;//使能
        E=0;
}

void lcd1602_writedata(uchar dat)//写数据函数
{
        RS=1;//数据选择端
        RW=0;//写命令
        lcd_delay(1000);
        P0=dat;  //把要显示的数据写入
        lcd_delay(1000);
        E=1;
        E=0;
}

void lcd1602_init()//LCD初始化
{
BL=0; //打开背光
wcmd(0x38);
lcd_delay(1000);
wcmd(0x0c);
lcd_delay(1000);
wcmd(0x06);
lcd_delay(1000);
wcmd(0x01);
}

void main()
{
uchar m=0;
lcd1602_init();
lcd_delay(100);
wcmd(0x80);
for(m=0;m<4;m++)
        {

        lcd1602_writedata(table[m]);
        }
while(1);
}


回复

使用道具 举报

ID:390416 发表于 2020-12-30 11:19 | 显示全部楼层
这是我发的贴子 ,自己去复制代码吧。
http://www.51hei.com/bbs/dpj-200685-1.html
回复

使用道具 举报

ID:796670 发表于 2020-12-30 13:45 | 显示全部楼层
人人学会单片机 发表于 2020-12-30 11:19
这是我发的贴子 ,自己去复制代码吧。
http://www.51hei.com/bbs/dpj-200685-1.html

老哥,帖子被删了
回复

使用道具 举报

ID:453974 发表于 2020-12-30 14:52 | 显示全部楼层
兄弟,测试一下单片机看坏了没有
回复

使用道具 举报

ID:429356 发表于 2020-12-30 16:07 | 显示全部楼层
你的读和写的引脚是不是搞反了,调一下V0的10K电位器看看,调小一点,其实我认为哪用2K的就够,不会因为太大可白屏看不到显示
回复

使用道具 举报

ID:692599 发表于 2020-12-30 19:32 | 显示全部楼层
有没有调R1试试试,是不是对比度调得太大了,看不到显示,还有就是再检查一下电路有没有接错的地方
回复

使用道具 举报

ID:814525 发表于 2020-12-30 21:10 | 显示全部楼层
有可能你现在的单片机工作指令频率比原来的快,
把 lcd_delay(100);  E=1;  E=0;      改为   E=1;  cd_delay(100);  E=0;
其他地方也照这样修改,再试试
回复

使用道具 举报

ID:808384 发表于 2020-12-30 21:37 | 显示全部楼层
那LCD1602需要有一个可调电阻,来调节它的电阻值,来让它数据显示出来的
回复

使用道具 举报

ID:871286 发表于 2020-12-30 23:49 | 显示全部楼层
看看是不是线路还有引脚问题 我之前也是这样 改过就没事了
回复

使用道具 举报

ID:420836 发表于 2020-12-31 01:24 | 显示全部楼层
把P37设为低电平
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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