找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 4892|回复: 1
收起左侧

求助为什么我的LCD1602只显示一排黑块

[复制链接]
ID:149973 发表于 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);        //设置16*2显示,5*7点阵,8位数据接口
        write_com(0x0c);        //设置开显示,不显示光标
        write_com(0x06);        //写一个字符后地址指针加1
        write_com(0x01);        //显示清0,数据指针清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, 下载次数: 6

原理图

回复

使用道具 举报

ID:149988 发表于 2016-12-8 10:20 | 显示全部楼层

RE: 求助为什么我的LCD1602只显示一排黑块

做了几点修改,通过普中6800HC V3.0板实验,显示正确,请参考。
出现的错误:第一是写数据函数LCDrw=0 //此处少“;”号。第二是写第二行地址不应该是write_com(0x80+0x40); 而应该是write_com(0xc0);  显示第二行的意思。检查一下,时序分配的IO口是否正确,如果不正确将报警下载超时。
#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
sbit LCDen=P2^7;//我的板子是P2^7;看看你的板子P2^2对不对,不同的板子IO口不同
sbit LCDrs=P2^6;//我的板子是P2^6;看看你的板子P2^0对不对,不同的板子IO口不同
sbit LCDrw=P2^5;//我的板子是P2^5;看看你的板子P2^1对不对,不同的板子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; //此处少“;”号
        LCDrs=1;
        P0=date;
        delay(5);
        LCDen=1;
        delay(5);
        LCDen=0;
}
void init()
{
        write_com(0x38);        //设置16*2显示,5*7点阵,8位数据接口
        write_com(0x0c);        //设置开显示,不显示光标
        write_com(0x06);        //写一个字符后地址指针加1
        write_com(0x01);        //显示清0,数据指针清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);  //此处不应该是write_com(0x80+0x40);
        for(num=0;num<13;num++)
        {
                write_data(table1[num]);
                delay(5);
        }
        while(1);
}
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表