标题:
单片机+LCD1602只亮不显示
[打印本页]
作者:
薄荷味徐福记
时间:
2019-5-7 16:27
标题:
单片机+LCD1602只亮不显示
最开始1602第一排只显示一排方块,在1602上加了排针之后(因为焊接原因1602需要高一点)就只亮不显示任何东西了。下面是1602部分的程序:
#include<at89x51.h>
#include <intrins.h>
#define uint unsigned int
#define uchar unsigned char
void delay(uint z)
{
uint a,b;
for(a=z;a>0;a--)
for(b=640;b>0;b--);
}
sbit LcdRs = P2^5;
sbit LcdRw = P2^6;
sbit LcdEn = P2^7;
#define DBPort P0
#define LCD_COMMAND 0
#define LCD_DATA 1
#define LCD_CLEAR_SCREEN 0x01
#define LCD_HOMING 0x02
void LCD_Write(bit style, unsigned char input)
{
LcdEn=0;
LcdRs=style;
LcdRw=0; _nop_();
DBPort=input; _nop_();
LcdEn=1; _nop_();
LcdEn=0; _nop_();
_nop_();
delay(1);//
}
#define LCD_SHOW 0x04
#define LCD_HIDE 0x00
#define LCD_CURSOR 0x02
#define LCD_NO_CURSOR 0x00
#define LCD_FLASH 0x01
#define LCD_NO_FLASH 0x00
void LCD_SetDisplay(unsigned char DisplayMode)
{
LCD_Write(LCD_COMMAND, 0x08|DisplayMode);
}
#define LCD_AC_UP 0x02
#define LCD_AC_DOWN 0x00
#define LCD_MOVE 0x01
#define LCD_NO_MOVE 0x00
void LCD_SetInput(unsigned char InputMode)
{
LCD_Write(LCD_COMMAND, 0x04|InputMode);
}
void LCD_Initial()
{
LcdEn=0;
LCD_Write(LCD_COMMAND,0x38);
delay(15);
LCD_Write(LCD_COMMAND,0x38);
delay(15);
LCD_Write(LCD_COMMAND,0x38);
delay(15);
LCD_Write(LCD_COMMAND,0x38);
delay(15);
LCD_SetDisplay(LCD_SHOW|LCD_NO_CURSOR);
delay(15);
LCD_Write(LCD_COMMAND,LCD_CLEAR_SCREEN);
delay(15);
LCD_SetInput(LCD_AC_UP|LCD_NO_MOVE);
delay(15);
}
void GotoXY(unsigned char x, unsigned char y)
{
if(y==0)
LCD_Write(LCD_COMMAND,0x80|x);
if(y==1)
LCD_Write(LCD_COMMAND,0x80|(x-0x40));
delay(2);
}
void Print(unsigned char *str)
{
while(*str!='\0')
{
LCD_Write(LCD_DATA,*str);
str++;
delay(2);
}
}
作者:
889754946dhz
时间:
2019-5-7 23:59
是不是没接上拉电阻
作者:
nangecy_5
时间:
2019-5-8 00:19
连接P0口要加上拉电阻,如果最开始在1602液晶屏上能够显示16个5*7的黑块,则说明一开始的连接没有错,能够正常初始化的,因为write_com(0x38);初始化后就是在第一行显示黑块的。后面只亮屏不显示的话,你可以查看一下接线有没错误,如果没错,可以换块液晶屏排查一下。另外对1602不熟悉的时候,你可以一步一步慢慢调试,熟悉后再进行自己的编程操作
作者:
nangecy_5
时间:
2019-5-8 00:30
如果连接P0口需要加上拉电阻。只要一开始能够在第一行显示一排5*7的黑块,就是能够正常初始化,后来焊了排针却只亮的话,先查看下接线有没接错,或者有什么线路接触不良。也有可能是因为对比度没调节好,你可以调一下那个可变电阻试一下。如果还不行,换一块显示屏试一下,看下是不是显示屏坏了
作者:
wulin
时间:
2019-5-8 06:35
你的这个程序本来就不完整,不可能正常显示。开始显示一排方块表明1602初始化失败,说明程序有问题。被你折腾后只亮不显示任何东西说明不单纯只是程序问题了。
作者:
soul=
时间:
2019-5-8 07:00
连接P0口要加上拉电阻
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1