找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 3743|回复: 16
打印 上一主题 下一主题
收起左侧

LCD1602显示为什么有问题 代码 图片如下

[复制链接]
跳转到指定楼层
楼主
  1. #include<reg52.h>

  2. typedef unsigned char uchar;
  3. typedef unsigned int uint;

  4. sbit RS = P3^5;
  5. sbit RW = P3^6;
  6. sbit EN = P3^4;
  7. //判断液晶显示是否忙
  8. void Read_Busy()
  9. {
  10.    uchar busy;
  11.    P0 = 0xff;
  12.    RS = 0;
  13.    RW = 1;
  14.    
  15.    do{
  16.       EN = 1;
  17.       busy = P0;
  18.       EN = 0;
  19.    
  20.    }while(busy & 0x80);//判断 如果为0允许读写 则跳出循环
  21. }
  22. //写入一个字节的指令
  23. void Writer_cmd(uchar cmd)
  24. {
  25.     Read_Busy();
  26.           RS = 0;
  27.         RW = 0;
  28.         P0 = cmd;
  29.         EN = 1;
  30.         EN = 0;
  31. }
  32. //写入一个字节的数据
  33. void Writer_dat(uchar dat)
  34. {
  35.    Read_Busy();
  36.    RS = 1;
  37.    RW = 0;
  38.    P0 = dat;
  39.    EN = 1;
  40.    EN = 0;
  41. }


  42. void main()
  43. {
  44.   
  45.   
  46.   Writer_cmd(0x38);//设置16*2显示
  47.   Writer_cmd(0x0c);//开显示 显示光标 光标闪烁
  48.   Writer_cmd(0x06);//地址指针加一 整屏显示不移动
  49.   Writer_cmd(0x80);
  50.   Writer_cmd(0x01);        //清屏
  51.   Writer_dat(0x48);

  52.   while(1);
  53.                          
  54. }
复制代码



程序编译也没错误

捕获.PNG (11.26 KB, 下载次数: 39)

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

使用道具 举报

沙发
ID:377512 发表于 2018-8-2 11:20 | 只看该作者
程序的编译一直没问题 仿真一直显示P
回复

使用道具 举报

板凳
ID:382063 发表于 2018-8-2 12:07 | 只看该作者
这个和你单片机p0.0-p0.7口的电平有关吧?
回复

使用道具 举报

地板
ID:97554 发表于 2018-8-2 12:21 | 只看该作者
你只写了个0x48数据,你还想显示什么?
回复

使用道具 举报

5#
ID:97554 发表于 2018-8-2 12:35 | 只看该作者
0x48应该显示个大写的H就对了
回复

使用道具 举报

6#
ID:97554 发表于 2018-8-2 12:37 | 只看该作者
0x05
是P
回复

使用道具 举报

7#
ID:377512 发表于 2018-8-2 13:44 来自手机 | 只看该作者
杨雪飞 发表于 2018-8-2 12:35
0x48应该显示个大写的H就对了

显示不了p
回复

使用道具 举报

8#
ID:377512 发表于 2018-8-2 13:45 来自手机 | 只看该作者
杨雪飞 发表于 2018-8-2 12:35
0x48应该显示个大写的H就对了

不是 显示不了H一直显示p
回复

使用道具 举报

9#
ID:382138 发表于 2018-8-2 14:27 | 只看该作者
上面正解,你再写一个0X30,看下是不是显示0
回复

使用道具 举报

10#
ID:377512 发表于 2018-8-2 16:30 | 只看该作者

找到了问题  程序一直卡在 判忙哪里 时序出了问题  
回复

使用道具 举报

11#
ID:233756 发表于 2018-8-2 17:05 来自手机 | 只看该作者
1602手册里初始化开头记得是延时15ms,写指令38h,
回复

使用道具 举报

12#
ID:97554 发表于 2018-8-2 19:05 | 只看该作者
李博文 发表于 2018-8-2 16:30
找到了问题  程序一直卡在 判忙哪里 时序出了问题

这个小测试程序好像不检测忙也可以,我看到好多都是没有检测忙的
回复

使用道具 举报

13#
ID:233756 发表于 2018-8-2 22:18 来自手机 | 只看该作者
前面几个可以不检测忙,但初始化要按照手册里写的,你现在是初始化里没有写这6行代码
回复

使用道具 举报

14#
ID:377512 发表于 2018-8-3 09:28 | 只看该作者
杨雪飞 发表于 2018-8-2 19:05
这个小测试程序好像不检测忙也可以,我看到好多都是没有检测忙的

不检测忙是有延时的 我没验延时 就检测忙
回复

使用道具 举报

15#
ID:111634 发表于 2018-8-3 21:08 | 只看该作者
本帖最后由 zl2168 于 2018-8-3 21:53 编辑

实例67  LCD1602显示屏显示
Proteus仿真一下,确认有效。
实例61 LCD1602显示屏显示.rar (49.26 KB, 下载次数: 8)

以上摘自张志良编著《80C51单片机仿真设计实例教程——基于Keil CProteus》清华大学出版社ISBN 978-7-302-41682-1。书中电路和程序设计有详细说明,程序语句条条有注解。
回复

使用道具 举报

16#
ID:150693 发表于 2018-8-5 20:37 | 只看该作者
绝对是判忙程序出了问题,换成while(busy & 0x80==1);
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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