找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 4269|回复: 10
收起左侧

刚刚开始学LCD1602编了一个程序,但怎么不显示??

[复制链接]
ID:69996 发表于 2014-12-22 17:42 | 显示全部楼层 |阅读模式
刚刚开始学LCD1602编了一个程序,但怎么不显示??
#include<reg52.h>
#define  uint  unsigned  int
#define  uchar  unsigned char
uchar code table[]="I miss you!";/////第一行显示
uchar  code table1[]="YOU!!";/////第二行显示
sbit lcden=P3^4;        //////申明引脚
sbit lcdrs=P3^5;
sbit  dula=P2^6;
sbit  wela=P2^7;
uchar  a,x;
void  delayms(uint);


void delayms(uint  xms)         ///////延时
{
  uint i,j;
  for(i=xms;x>0;x--)
  for(j=110;j>0;j--);
}


void write_com(uchar  com)        //////////命令操作
{
  lcdrs=1;
  P0=com;
  delayms(5);
  lcden=1;
  delayms(5);
  lcden=0;
}



void write_date(uchar  date) /////////数据操作
  {
    lcdrs=1;
         P0=date;
         delayms(5);
         lcden=1;
         delayms(5);
         lcden=0;
  }


void init()   //////////////初始化
{
    dula=0;
        wela=0;
        lcden=0;
        
        write_com(0x38);
        write_com(0x0c);
        write_com(0x06);
        write_com(0x01);
}
  void main() ////////////主函数
  {
    init();
        write_com(0x80);
        for(a=0;a<11;a++)
          {
            write_date(table[a]);
                delayms(1000);
          }
        write_com(0x38+0x40);
        for(a=0;a<5;a++)
        {
           write_date(table1[a]);
           delayms(1000);
        }
        
  }


回复

使用道具 举报

ID:70650 发表于 2014-12-22 20:04 | 显示全部楼层
显示乱码 还是黑色的方块? 有背光吗  检查焊接了没有?

评分

参与人数 1黑币 +50 收起 理由
admin + 50 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

ID:69996 发表于 2014-12-22 21:47 | 显示全部楼层
它只显示方块。。。
回复

使用道具 举报

ID:69679 发表于 2014-12-22 23:51 来自手机 | 显示全部楼层
我想是背光的问题调一下电阻,最好先仿真一下看是否是软件的问题

评分

参与人数 1黑币 +50 收起 理由
admin + 50 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

ID:69679 发表于 2014-12-22 23:56 来自手机 | 显示全部楼层
我仔细看了一下,你的程序也有问题,有些马虎了数据操作和命令操作的第一个指令有一个是错误的
回复

使用道具 举报

ID:69996 发表于 2014-12-23 10:40 | 显示全部楼层
海哥沧海一笑 发表于 2014-12-22 23:56
我仔细看了一下,你的程序也有问题,有些马虎了数据操作和命令操作的第一个指令有一个是错误的

用仿真可以显示。但用实际电路板只显示命令。不显示数据。
回复

使用道具 举报

ID:69679 发表于 2014-12-23 12:56 | 显示全部楼层
若尘1 发表于 2014-12-23 10:40
用仿真可以显示。但用实际电路板只显示命令。不显示数据。

既然仿真正确,那就证明程序没错,可是就你贴上的程序有几次错误,1就是void write_com(uchar  com)        //////////命令操作
{
  lcdrs=1;
lcdrs应该=0;
2就是write_com(0x38+0x40);
位置错误write_com(0x80+0x40);


硬件的话没看到实物.猜测1是p0口上拉电阻,2lcd的电位器没调好,3连线有虚线  我只能帮这么多了
回复

使用道具 举报

ID:69996 发表于 2014-12-23 17:44 | 显示全部楼层
海哥沧海一笑 发表于 2014-12-23 12:56
既然仿真正确,那就证明程序没错,可是就你贴上的程序有几次错误,1就是void write_com(uchar  com)      ...

感谢!!!我也发现了。
回复

使用道具 举报

ID:71347 发表于 2014-12-30 10:16 | 显示全部楼层
三个使能端你只用两个,真的可以仿真出来?做实物还需要写忙检测。

评分

参与人数 1黑币 +20 收起 理由
admin + 20 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

ID:71474 发表于 2015-1-1 17:30 | 显示全部楼层
同不会
回复

使用道具 举报

ID:64754 发表于 2015-1-2 22:19 | 显示全部楼层
问题跟你一样多
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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