一乐电子

 找回密码
 请使用微信账号登录和注册会员

QQ登录

只需一步,快速开始

微信扫码登录

手机号码,快捷登录

手机号码,快捷登录

搜索
查看: 2227|回复: 8

[51单片机] 18B20延时函数的处理

[复制链接]
发表于 2014-10-29 14:52 | 显示全部楼层 |阅读模式
大家在写18B20函数的时候,因为DS18B20是慢速器件,需要延时,特别是初始化函数延时达480us之久,在使用一些程序时严重干扰其他程序正常运行,特别是点阵屏和数码管,出现闪烁的现象。笔者在编写程序的过程积累了经验,吧一些工作比较久的函数当成延时来用,效果十分好,提高了程序效率。如下:void reset_18b20()
{
  DQ=0;
display();           //巧妙的把显示函数当延时来用
  DQ=1;
  Conversion();         //巧妙的把农历转换函数当延时来用
  if(DQ)
  err=1;
while(!DQ);
  err=0;
}
上述例子是两个函数,一个是显示函数,一个是阳历转阴历函数,都是占用时间比较久的。经过调试,显示函数运行时间大约在480us,刚刚好。这样,既调用了显示函数,又起到了延时作用,无需使用效率低的延时函数。



发表于 2014-10-29 17:19 | 显示全部楼层
“阳历转阴历”不影响显示了吗?
回复

使用道具 举报

发表于 2014-10-29 18:22 | 显示全部楼层
数码管这种实时刷新的设备,我还是喜欢把显示函数放到中断中运行..
免得被别的程序影响,

中断1MS一次,刷新数码管那几行代码是US级别的,不会有影响.
回复

使用道具 举报

发表于 2014-10-30 00:10 | 显示全部楼层
18B20对于时序要求特别严格,这种设计有点蛋疼。。。
回复

使用道具 举报

发表于 2014-10-30 16:39 来自手机 | 显示全部楼层
不是一般的蛋疼18B20
回复

使用道具 举报

 楼主| 发表于 2014-10-31 10:32 | 显示全部楼层
donglele2005 发表于 2014-10-30 16:39
不是一般的蛋疼18B20

采用这样的方法我解决了很多问题,我不明白蛋疼在哪里?
回复

使用道具 举报

发表于 2014-11-1 12:23 来自手机 | 显示全部楼层
时分复用,很好。但要清楚掌握显示延时和转换暂时的时间,变动了容易影响时序
回复

使用道具 举报

发表于 2014-11-1 12:23 来自手机 | 显示全部楼层
时分复用,很好。但要清楚掌握显示延时和转换暂时的时间,变动了容易影响时序
回复

使用道具 举报

发表于 2014-11-1 14:05 | 显示全部楼层
感谢楼主,有时间试试看。
回复

使用道具 举报

本版积分规则

QQ|一淘宝店|手机版|商店|一乐电子 ( 粤ICP备09076165号 ) 公安备案粤公网安备 44522102000183号

GMT+8, 2025-10-31 23:53 , Processed in 0.033430 second(s), 26 queries , Gzip On.

Powered by Discuz! X3.5

© 2001-2025 Discuz! Team.

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