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

QQ登錄

只需一步,快速開始

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

為什么LCD1602不顯示?

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
樓主
這個(gè)程序的目的是顯示出welcome Harbin China
我先是使用的查忙程序,但是LCD沒有顯示
后來用的這個(gè)程序沒有使用差忙的程序,而是使用的延時(shí)函數(shù),但是1602液晶屏還是沒有顯示,誰知道是怎么回事嗎?
#include<reg51.h>
#include<intrins.h>
#define uchar unsigned char
#define out P0
sbit RS=P2^0;//將P2口的0,1,2號(hào)口作為RS RW E的接口
sbit RW=P2^1;//
sbit E=P2^2;//
void LCD_initialize();//初始化函數(shù)
void check_busy();//查忙函數(shù),但是這次沒有用到
void write_command(uchar com);//寫命令函數(shù)
void write_data(uchar dat);//寫數(shù)據(jù)函數(shù)
void string(uchar ad,uchar*p,uchar n);//使Lcd顯示字符的函數(shù)
void delay(uchar i);//延時(shí)函數(shù)
void main()
{
  LCD_initialize();//LCD初始化
  while(1)
  {
    string(0x85,"welcome",7);//寫入welcome
  string(0xc2,"Harbin China",12);//寫入Harbin China
  delay(100);
  write_command(0x01);//清屏
  delay(100);
   }
}
void delay(uchar i)//延時(shí)函數(shù)
{
  uchar t;
  while(i--)
  {
    for(t=0;t<120;t++);
  }
}
void write_command(uchar com)//寫命令函數(shù)
{
delay(1);
E=0;
RS=0;
RW=0;
out=com;
delay(1);
E=1;
_nop_();
E=0;
delay(1);
}
void LCD_initialize()//初始化函數(shù)
{
  write_command(0x38);
  _nop_();
  write_command(0x0c);
  _nop_();
  write_command(0x0b);
  _nop_();
  write_command(0x01);
  delay(1);
}
void write_data(uchar dat)//寫數(shù)據(jù)函數(shù)
{
delay(1);
E=0;
RS=1;
RW=0;
out=dat;
delay(1);
E=1;
_nop_();
E=0;
delay(1);
}
void string(uchar ad,uchar *p,uchar n)//顯示字符函數(shù)
{
  uchar i;
  write_command(ad);
  for(i=0;i<n;i++)
  {
    write_data(*p++);
  delay(100);
  }
}

T@(7QC0)[TGTT$@@%6FEQPO.png (63.88 KB, 下載次數(shù): 102)

T@(7QC0)[TGTT$@@%6FEQPO.png
分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:111634 發(fā)表于 2018-5-2 12:52 | 只看該作者
實(shí)例67  LCD1602顯示屏顯示
Proteus仿真一下,確認(rèn)有效。
實(shí)例61 LCD1602顯示屏顯示.rar (49.26 KB, 下載次數(shù): 289)

以上摘自張志良編著《80C51單片機(jī)仿真設(shè)計(jì)實(shí)例教程——基于Keil CProteus》清華大學(xué)出版社ISBN 978-7-302-41682-1。書中電路和程序設(shè)計(jì)有詳細(xì)說明,程序語(yǔ)句條條有注解。
回復(fù)

使用道具 舉報(bào)

板凳
ID:213173 發(fā)表于 2018-5-2 16:27 | 只看該作者

改了一下,實(shí)物驗(yàn)證正常。
#include<reg51.h>
#include<intrins.h>
#define uchar unsigned char
#define out P0
sbit RS=P2^0;//將P2口的0,1,2號(hào)口作為RS RW E的接口
sbit RW=P2^1;//
sbit E=P2^2;//
//void LCD_initialize();//初始化函數(shù)
//void check_busy();//查忙函數(shù),但是這次沒有用到
//void write_command(uchar com);//寫命令函數(shù)
//void write_data(uchar dat);//寫數(shù)據(jù)函數(shù)
//void string(uchar ad,uchar*p,uchar n);//使Lcd顯示字符的函數(shù)
//void delay(uchar i);//延時(shí)函數(shù)

void delay(uchar i)//延時(shí)函數(shù)
{
  uchar t;
  while(i--)
  {
    for(t=0;t<120;t++);
  }
}
void write_command(uchar com)//寫命令函數(shù)
{
//        delay(1);
        E=0;
        RS=0;
//        RW=0;
        out=com;
        delay(1);
        E=1;
        delay(1);
        E=0;
//        delay(1);
}

void write_data(uchar dat)//寫數(shù)據(jù)函數(shù)
{
//        delay(1);
//        E=0;
        RS=1;
//        RW=0;
        out=dat;
        delay(1);
        E=1;
        delay(1);
        E=0;
//        delay(1);
}
void LCD_initialize()//初始化函數(shù)
{
        RW=0;
        write_command(0x38);
        write_command(0x01);
        write_command(0x0c);
        write_command(0x06);
//        write_command(0x0b);
        write_command(0x80);
}

void string(uchar ad,uchar *p,uchar n)//顯示字符函數(shù)
{
        uchar i;
        write_command(ad);
        for(i=0;i<n;i++)
        {
                write_data(*p++);
                delay(100);
        }
}

void main()
{
        LCD_initialize();//LCD初始化
        while(1)
        {
                string(0x85,"welcome",7);//寫入welcome
                string(0xc2,"Harbin China",12);//寫入Harbin China
                delay(100);
                write_command(0x01);//清屏
                delay(100);
        }
}

回復(fù)

使用道具 舉報(bào)

地板
ID:301728 發(fā)表于 2018-5-4 07:47 | 只看該作者
wulin 發(fā)表于 2018-5-2 16:27
改了一下,實(shí)物驗(yàn)證正常。
#include
#include

行,已經(jīng)改好了,多謝幫助!
回復(fù)

使用道具 舉報(bào)

5#
ID:301728 發(fā)表于 2018-5-4 07:48 | 只看該作者
zl2168 發(fā)表于 2018-5-2 12:52
實(shí)例67  LCD1602顯示屏顯示
先Proteus仿真一下,確認(rèn)有效。
以上摘自張志良編著《80C51單片機(jī)仿真設(shè)計(jì)實(shí) ...

已經(jīng)改好了,多謝幫助!
回復(fù)

使用道具 舉報(bào)

6#
ID:316256 發(fā)表于 2018-5-4 09:41 | 只看該作者
時(shí)序問題或者電位器
回復(fù)

使用道具 舉報(bào)

7#
ID:586957 發(fā)表于 2019-8-3 12:30 | 只看該作者
void string(uchar ad,uchar *p,uchar n)//顯示字符函數(shù)
{
        uchar i;
        write_command(ad);
        for(i=0;i<n;i++)
        {
                write_data(*p++);
                delay(100);
        }
}
請(qǐng)問這個(gè)*號(hào)是什么呢?為什么去掉之后就不對(duì)了,而顯示亂碼
回復(fù)

使用道具 舉報(bào)

8#
ID:511461 發(fā)表于 2019-8-3 14:13 | 只看該作者
*是指針
回復(fù)

使用道具 舉報(bào)

9#
ID:586957 發(fā)表于 2019-8-4 10:49 | 只看該作者

謝謝蟹蟹,還有個(gè)問題,這兩個(gè)*都不可省略嘛????
回復(fù)

使用道具 舉報(bào)

10#
ID:586957 發(fā)表于 2019-8-4 12:50 | 只看該作者
* 指針運(yùn)算符 //*p為p所指向的存儲(chǔ)單元的內(nèi)容
p就相當(dāng)于存儲(chǔ)單元地址
回復(fù)

使用道具 舉報(bào)

11#
ID:586680 發(fā)表于 2019-8-4 13:45 | 只看該作者
檢查一下是a6還是a18
回復(fù)

使用道具 舉報(bào)

12#
ID:594980 發(fā)表于 2019-8-4 13:56 | 只看該作者
void LCD_initialize()//初始化函數(shù)
{
  write_command(0x38);
  _nop_();
  write_command(0x0c);
  _nop_();
  write_command(0x0b);
  _nop_();
  write_command(0x01);
  delay(1);
}
這個(gè)你把0xb改為0x6就可以顯示,但是顯示是一次顯示的。我用自己的實(shí)驗(yàn)板演示了以下。
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

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