找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開(kāi)始

搜索
查看: 15247|回復(fù): 5
打印 上一主題 下一主題
收起左側(cè)

單片機(jī)+LCD1602只亮不顯示

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
ID:508945 發(fā)表于 2019-5-7 16:27 | 只看該作者 回帖獎(jiǎng)勵(lì) |倒序?yàn)g覽 |閱讀模式
最開(kāi)始1602第一排只顯示一排方塊,在1602上加了排針之后(因?yàn)楹附釉?602需要高一點(diǎn))就只亮不顯示任何東西了。下面是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);
        }
}

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:530180 發(fā)表于 2019-5-7 23:59 | 只看該作者
是不是沒(méi)接上拉電阻
回復(fù)

使用道具 舉報(bào)

板凳
ID:530187 發(fā)表于 2019-5-8 00:19 | 只看該作者
連接P0口要加上拉電阻,如果最開(kāi)始在1602液晶屏上能夠顯示16個(gè)5*7的黑塊,則說(shuō)明一開(kāi)始的連接沒(méi)有錯(cuò),能夠正常初始化的,因?yàn)閣rite_com(0x38);初始化后就是在第一行顯示黑塊的。后面只亮屏不顯示的話,你可以查看一下接線有沒(méi)錯(cuò)誤,如果沒(méi)錯(cuò),可以換塊液晶屏排查一下。另外對(duì)1602不熟悉的時(shí)候,你可以一步一步慢慢調(diào)試,熟悉后再進(jìn)行自己的編程操作
回復(fù)

使用道具 舉報(bào)

地板
ID:530187 發(fā)表于 2019-5-8 00:30 | 只看該作者
如果連接P0口需要加上拉電阻。只要一開(kāi)始能夠在第一行顯示一排5*7的黑塊,就是能夠正常初始化,后來(lái)焊了排針卻只亮的話,先查看下接線有沒(méi)接錯(cuò),或者有什么線路接觸不良。也有可能是因?yàn)閷?duì)比度沒(méi)調(diào)節(jié)好,你可以調(diào)一下那個(gè)可變電阻試一下。如果還不行,換一塊顯示屏試一下,看下是不是顯示屏壞了
回復(fù)

使用道具 舉報(bào)

5#
ID:213173 發(fā)表于 2019-5-8 06:35 | 只看該作者
你的這個(gè)程序本來(lái)就不完整,不可能正常顯示。開(kāi)始顯示一排方塊表明1602初始化失敗,說(shuō)明程序有問(wèn)題。被你折騰后只亮不顯示任何東西說(shuō)明不單純只是程序問(wèn)題了。
回復(fù)

使用道具 舉報(bào)

6#
ID:530228 發(fā)表于 2019-5-8 07:00 | 只看該作者
連接P0口要加上拉電阻
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表