标题: LCD1602显示为什么有问题 代码 图片如下 [打印本页]
作者: 李博文 时间: 2018-8-2 10:34
标题: LCD1602显示为什么有问题 代码 图片如下
- #include<reg52.h>
- typedef unsigned char uchar;
- typedef unsigned int uint;
- sbit RS = P3^5;
- sbit RW = P3^6;
- sbit EN = P3^4;
- //判断液晶显示是否忙
- void Read_Busy()
- {
- uchar busy;
- P0 = 0xff;
- RS = 0;
- RW = 1;
-
- do{
- EN = 1;
- busy = P0;
- EN = 0;
-
- }while(busy & 0x80);//判断 如果为0允许读写 则跳出循环
- }
- //写入一个字节的指令
- void Writer_cmd(uchar cmd)
- {
- Read_Busy();
- RS = 0;
- RW = 0;
- P0 = cmd;
- EN = 1;
- EN = 0;
- }
- //写入一个字节的数据
- void Writer_dat(uchar dat)
- {
- Read_Busy();
- RS = 1;
- RW = 0;
- P0 = dat;
- EN = 1;
- EN = 0;
- }
-
- void main()
- {
-
-
- Writer_cmd(0x38);//设置16*2显示
- Writer_cmd(0x0c);//开显示 显示光标 光标闪烁
- Writer_cmd(0x06);//地址指针加一 整屏显示不移动
- Writer_cmd(0x80);
- Writer_cmd(0x01); //清屏
- Writer_dat(0x48);
- while(1);
-
- }
复制代码
程序编译也没错误
-
捕获.PNG
(11.26 KB, 下载次数: 40)
作者: 李博文 时间: 2018-8-2 11:20
程序的编译一直没问题 仿真一直显示P
作者: 飞翔的Cat 时间: 2018-8-2 12:07
这个和你单片机p0.0-p0.7口的电平有关吧?
作者: 杨雪飞 时间: 2018-8-2 12:21
你只写了个0x48数据,你还想显示什么?
作者: 杨雪飞 时间: 2018-8-2 12:35
0x48应该显示个大写的H就对了
作者: 杨雪飞 时间: 2018-8-2 12:37
0x05
是P
作者: 李博文 时间: 2018-8-2 13:44
杨雪飞 发表于 2018-8-2 12:35
0x48应该显示个大写的H就对了
显示不了p
作者: 李博文 时间: 2018-8-2 13:45
杨雪飞 发表于 2018-8-2 12:35
0x48应该显示个大写的H就对了
不是 显示不了H一直显示p
作者: CDYSZ 时间: 2018-8-2 14:27
上面正解,你再写一个0X30,看下是不是显示0
作者: 李博文 时间: 2018-8-2 16:30
找到了问题 程序一直卡在 判忙哪里 时序出了问题
作者: omikeai 时间: 2018-8-2 17:05
1602手册里初始化开头记得是延时15ms,写指令38h,
作者: 杨雪飞 时间: 2018-8-2 19:05
这个小测试程序好像不检测忙也可以,我看到好多都是没有检测忙的
作者: omikeai 时间: 2018-8-2 22:18
前面几个可以不检测忙,但初始化要按照手册里写的,你现在是初始化里没有写这6行代码
作者: 李博文 时间: 2018-8-3 09:28
不检测忙是有延时的 我没验延时 就检测忙
作者: zl2168 时间: 2018-8-3 21:08
本帖最后由 zl2168 于 2018-8-3 21:53 编辑
实例67 LCD1602显示屏显示
先Proteus仿真一下,确认有效。
以上摘自张志良编著《80C51单片机仿真设计实例教程——基于Keil C和Proteus》清华大学出版社ISBN 978-7-302-41682-1。书中电路和程序设计有详细说明,程序语句条条有注解。
作者: 暗双魂 时间: 2018-8-5 20:37
绝对是判忙程序出了问题,换成while(busy & 0x80==1);
欢迎光临 (http://www.51hei.com/bbs/) |
Powered by Discuz! X3.1 |