这些小活动你都参加了吗?快来围观一下吧!>>
电子产品世界» 论坛首页» 综合技术» 基础知识» LCD1602无法显示数据,但程序在另一个单片机上却可以正常显示,点解?

共5条 1/1 1 跳转至

LCD1602无法显示数据,但程序在另一个单片机上却可以正常显示,点解?

工程师
2020-12-30 22:55:48 打赏

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




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




关键词: LCD1602 LCD LCM 液晶显示屏

工程师
2021-01-01 22:30:18 打赏
2楼

新年好!

先单独测试一下单片机看坏了没有?


工程师
2021-01-01 22:45:41 打赏
3楼

你的读和写的引脚是不是搞反了,调一下V0的10K电位器看看,调小一点,其实我认为哪用2K的就够,不会因为太大可白屏看不到显示。


工程师
2021-01-01 22:52:45 打赏
4楼

有没有调R1试试试,是不是对比度调得太大了,看不到显示,还有就是再检查一下电路有没有接错的地方。


工程师
2021-01-01 22:54:12 打赏
5楼

估计硬件问题的原因,仔细对比2个板子的差异看看。


共5条 1/1 1 跳转至

回复

匿名不能发帖!请先 [ 登陆 注册]