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

QQ登錄

只需一步,快速開始

搜索
查看: 4839|回復(fù): 1
收起左側(cè)

求助為什么我的LCD1602只顯示一排黑塊

[復(fù)制鏈接]
ID:149973 發(fā)表于 2016-12-7 14:18 | 顯示全部樓層 |閱讀模式
這是程序
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
sbit LCDen=P2^2;
sbit LCDrs=P2^0;
sbit LCDrw=P2^1;
unsigned char code table[]="I LOVE MCx!";
unsigned char code table1[]="WWW.WZVCST.CN";

void delay(uint xms)
{
uint i,j;
        for(i=xms;i>0;i--)
                for(j=120;j>0;j--);
}

//R/W-->GND,no used
void write_com(uchar com)
{
    LCDrw=0;
        LCDrs=0;
        P0=com;
        delay(5);
        LCDen=1;
        delay(5);
        LCDen=0;
}

void write_data(uchar date)
{
        LCDrw=0
        LCDrs=1;
        P0=date;
        delay(5);
        LCDen=1;
        delay(5);
        LCDen=0;
}

void init()
{
        write_com(0x38);        //設(shè)置16*2顯示,5*7點(diǎn)陣,8位數(shù)據(jù)接口
        write_com(0x0c);        //設(shè)置開顯示,不顯示光標(biāo)
        write_com(0x06);        //寫一個(gè)字符后地址指針加1
        write_com(0x01);        //顯示清0,數(shù)據(jù)指針清0
}

void main()
{
unsigned char num;
        init();
        write_com(0x80);        //the data start at 0x80. ref to table 7.2.4
        for(num=0;num<11;num++)
        {
                write_data(table[num]);
                delay(5);
        }
        //display the second row
        write_com(0x80+0x40);
        for(num=0;num<13;num++)
        {
                write_data(table1[num]);
                delay(5);
        }
        while(1);
}
還有圖

求大神幫忙

Sheet1.rar

3.93 KB, 下載次數(shù): 6

原理圖

回復(fù)

使用道具 舉報(bào)

ID:149988 發(fā)表于 2016-12-8 10:20 | 顯示全部樓層

RE: 求助為什么我的LCD1602只顯示一排黑塊

做了幾點(diǎn)修改,通過普中6800HC V3.0板實(shí)驗(yàn),顯示正確,請(qǐng)參考。
出現(xiàn)的錯(cuò)誤:第一是寫數(shù)據(jù)函數(shù)LCDrw=0 //此處少“;”號(hào)。第二是寫第二行地址不應(yīng)該是write_com(0x80+0x40); 而應(yīng)該是write_com(0xc0);  顯示第二行的意思。檢查一下,時(shí)序分配的IO口是否正確,如果不正確將報(bào)警下載超時(shí)。
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
sbit LCDen=P2^7;//我的板子是P2^7;看看你的板子P2^2對(duì)不對(duì),不同的板子IO口不同
sbit LCDrs=P2^6;//我的板子是P2^6;看看你的板子P2^0對(duì)不對(duì),不同的板子IO口不同
sbit LCDrw=P2^5;//我的板子是P2^5;看看你的板子P2^1對(duì)不對(duì),不同的板子IO口不同
unsigned char code table[]="I LOVE MCx!";
unsigned char code table1[]="WWW.WZVCST.CN";
void delay(uint xms)
{
uint i,j;
        for(i=xms;i>0;i--)
                for(j=120;j>0;j--);
}
//R/W-->GND,no used
void write_com(uchar com)
{
    LCDrw=0;
        LCDrs=0;
        P0=com;
        delay(5);
        LCDen=1;
        delay(5);
        LCDen=0;
}
void write_data(uchar date)
{
        LCDrw=0; //此處少“;”號(hào)
        LCDrs=1;
        P0=date;
        delay(5);
        LCDen=1;
        delay(5);
        LCDen=0;
}
void init()
{
        write_com(0x38);        //設(shè)置16*2顯示,5*7點(diǎn)陣,8位數(shù)據(jù)接口
        write_com(0x0c);        //設(shè)置開顯示,不顯示光標(biāo)
        write_com(0x06);        //寫一個(gè)字符后地址指針加1
        write_com(0x01);        //顯示清0,數(shù)據(jù)指針清0
}
void main()
{
unsigned char num;
        init();
        write_com(0x80);        //the data start at 0x80. ref to table 7.2.4
        for(num=0;num<11;num++)
        {
                write_data(table[num]);
                delay(5);
        }
        //display the second row
        write_com(0xc0);  //此處不應(yīng)該是write_com(0x80+0x40);
        for(num=0;num<13;num++)
        {
                write_data(table1[num]);
                delay(5);
        }
        while(1);
}
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

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

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

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