搜索
bottom↓
回复: 18

LCD1602的读忙标志BF到底有用吗?

[复制链接]

出0入0汤圆

发表于 2010-8-13 01:40:47 | 显示全部楼层 |阅读模式
我看网上有些人读BF标志一直都是1(1表示忙),我自己读也总是1。在实践中有读过BF标志的来说说那个标志到底有没有用?

阿莫论坛20周年了!感谢大家的支持与爱护!!

曾经有一段真挚的爱情摆在我的面前,我没有珍惜,现在想起来,还好我没有珍惜……

出0入0汤圆

发表于 2010-8-13 07:57:46 | 显示全部楼层
反正我写的程序里都是检测BF标志的,不读也是可以的,利用延时代替

出0入0汤圆

发表于 2010-8-13 08:06:57 | 显示全部楼层
8位并行控制的时候我每次都用,4位控制的时候用延时

出0入0汤圆

发表于 2010-8-13 09:10:33 | 显示全部楼层
BF标志 肯定是有用的,没用拿来干嘛。搞设计的又不是BC

出0入0汤圆

 楼主| 发表于 2010-8-13 09:52:45 | 显示全部楼层
是不是任何时候读BF都有用,还是要初始化以后才有用?

出0入0汤圆

发表于 2010-8-13 09:59:37 | 显示全部楼层
回复【楼主位】facat
-----------------------------------------------------------------------

我读的不是1,不检查忙的话有可能会出现字符丢失,乱码等情况
顺便贴上我的代码,呵呵。

(等待空闲那条写得不好,万一1602神了单片机会死等,应加入时间限制)

/************ 位变量定义 *********/
sbit RS=P3^6;
sbit RW=P3^5;
sbit  E=P3^4 ;
sbit BF=P1^7;

/************ 检查忙 *************/
bit busy_check()
{
bit bf;
LCD=0xff;
RS=0;
RW=1;
E=0;
E=1;
bf=BF;
return (bf);
}


/************ 等待空闲 *************/
void busy_wait()
{
while (busy_check())
{
busy_check();
};
}


1602  驱动ourdev_574702.txt(文件大小:1K) (原文件名:LCD1602.txt)

出0入0汤圆

发表于 2010-8-13 10:20:52 | 显示全部楼层
读BF信号,更严谨一些。
楼上的程序,如果LCD屏有问题的话,那就进入死循环了。可以加一个检测计数在里面控制。
//////////////////////////////////////
/************ 检查忙 *************/
bit busy_check()
{
bit bf;  
LCD=0xff;
RS=0;
RW=1;
E=0;
E=1;
bf=BF;
return (bf);
}


/************ 等待空闲 *************/
#define BF_COUT 50 /////////////检测次数
void busy_wait()
{
unsigned char _cBF;
while (busy_check() && _cBF<BF_COUT) ////////////控制检测次数
{
busy_check();
_cBF++;
};
}

出0入0汤圆

发表于 2010-8-13 10:22:54 | 显示全部楼层
回复【6楼】rock man
-----------------------------------------------------------------------

正解!!

出0入0汤圆

 楼主| 发表于 2010-8-13 12:41:05 | 显示全部楼层
我用D口做数据口。读忙标志后PIND=0b11111111,这个信息对解决我的问题有帮助吗?

出0入0汤圆

 楼主| 发表于 2010-8-13 12:42:43 | 显示全部楼层
回复【5楼】qq335702318 昌少
回复【楼主位】facat  
-----------------------------------------------------------------------
我读的不是1,不检查忙的话有可能会出现字符丢失,乱码等情况
顺便贴上我的代码,呵呵。
(等待空闲那条写得不好,万一1602神了单片机会死等,应加入时间限制)
/************ 位变量定义 *********/
sbit rs=p3^6;
sbit rw=p3^5;
sbit  e=p3^4 ;
sbit bf=p1^7;
/************ 检查忙 *************/
bit busy_check()
{
bit bf;  
lcd=0xff;
rs=0;
rw=1;
e=0;
e=1;
bf=bf;
return (bf);
}
/*......
-----------------------------------------------------------------------

LCD=0xff是什么意思?我用的是WinAVR

出0入85汤圆

发表于 2010-8-13 14:21:43 | 显示全部楼层
因为液晶控制器执行指令需要时间,其间又不能做其它事,所以就有忙检测说法。无论有没有忙检测,都会给出指令执行时间。

出0入0汤圆

发表于 2010-8-13 15:32:02 | 显示全部楼层
回复【9楼】facat
-----------------------------------------------------------------------

#define LCD P1         // P1口作LCD I/O
.........


LCD就是1602的数据口
LCD=0xff 是使1602 DB0~DB7全为高电平
不知道你的速度达到多少?读写速度太快可能是单片机一直忙的原因
或者你试试给DB0~DB7下拉电阻
另外AVR单片机好像要配置IO脚?

出0入0汤圆

发表于 2010-8-13 18:10:04 | 显示全部楼层
using the bf flag makes the code slightly faster and more robust. However, it limits the hardware design choices greatly.

出0入0汤圆

发表于 2013-6-17 16:25:27 | 显示全部楼层
cat_li 发表于 2010-8-13 07:57
反正我写的程序里都是检测BF标志的,不读也是可以的,利用延时代替

你好,我是刚开始学单片机的,我想问一下检测BF标志前需要让EN位下跳变吗?还是直接把RS置0,RW置1就能读BF了?真心希望得到回答。

出0入0汤圆

发表于 2013-6-17 16:33:33 | 显示全部楼层
xinfa190 发表于 2010-8-13 08:06
8位并行控制的时候我每次都用,4位控制的时候用延时

8位时是写指令0x28对不对,因为DL低电平为8位嘛,但是我为什么看到别人也是8位却写0x38的,自己写的0x28也不行。

出0入0汤圆

发表于 2013-6-17 16:37:24 | 显示全部楼层
rock_man 发表于 2010-8-13 10:20
读BF信号,更严谨一些。
楼上的程序,如果LCD屏有问题的话,那就进入死循环了。可以加一个检测计数在里面控 ...

那个E=0;E=1;应该是让E脚上跳变吧以执行命令吧,但是不是下跳变才是执行命令吗?想不明白呀,希望有人能解答一下。

出0入0汤圆

发表于 2013-6-17 16:44:07 | 显示全部楼层
不读忙的话,用速度快的单片机,1602是跟不上节奏的

出145入215汤圆

发表于 2013-6-19 22:41:12 来自手机 | 显示全部楼层
判忙我也是看时序用汇编写的,调试了好久还是不通,看了别人的c例子,和汇编的时序一样,但就是不通!最后搜了一个汇编的发现可以

出0入0汤圆

发表于 2013-6-20 08:58:01 | 显示全部楼层
热带鱼工作室 发表于 2013-6-17 16:25
你好,我是刚开始学单片机的,我想问一下检测BF标志前需要让EN位下跳变吗?还是直接把RS置0,RW置1就能读 ...

按正常的读操作流程就好
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片。注意:要连续压缩2次才能满足要求!!】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-8-26 23:23

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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