找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 4870|回复: 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);
        }
        
  }


分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
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 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

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

使用道具 举报

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

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

使用道具 举报

7#
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连线有虚线  我只能帮这么多了
回复

使用道具 举报

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

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

使用道具 举报

9#
ID:71347 发表于 2014-12-30 10:16 | 只看该作者
三个使能端你只用两个,真的可以仿真出来?做实物还需要写忙检测。

评分

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

查看全部评分

回复

使用道具 举报

10#
ID:71474 发表于 2015-1-1 17:30 | 只看该作者
同不会
回复

使用道具 举报

11#
ID:64754 发表于 2015-1-2 22:19 | 只看该作者
问题跟你一样多
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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