当前位置: 首页 > 专利查询>刘宝成专利>正文

一种实现DS18B20读写时序的方法技术

技术编号:8323280 阅读:645 留言:0更新日期:2013-02-14 00:22
本发明专利技术涉及电子技术应用领域,尤其涉及用单片机驱动DS18B20时,公开一种采用定时中断实现DS18B20读写时序的方法。将DS18B20读写时序所要求的时间片,及DS18B20处于温度转换期间的延时等待全部放在定时中断服务程序中,并将中断的优先级设置为高优先级,以严格保证DS18B20的时序要求。这种方法,既避免了在C语言中插入汇编的复杂编程过程,又避免了采用软件延时实现DS18B20时序而带来的占用单片机资源、程序效率低下的事实。另外,在程序中使用其他的中断源,不会对DS18B20的读写造成影响。

【技术实现步骤摘要】

本专利技术涉及电子技术应用领域,尤其涉及用单片机驱动DS18B20时,一种实现DS18B20读写时序的方法
技术介绍
DS18B20是MAXM公司生产的一种分辨率可编程的单总线(l_Wire)数字温度计。DS18B20在工农业生产、日常生活等需要测量温度的场合有着广泛的应用。I-Wire总线系统主控制器控制一个或多个从器件。DS18B20在单总线系统中总是从器件,主控制器一般为单片机。一般情况下,访问DS18B20的操作顺序为首先进行初始化;然后是ROM操作命令;接着是DS18B20功能命令。在初始化、ROM命令、功能命令中涉及的主要时序有主控制器发出的复位脉冲、DS18B20发出的存在脉冲,如图I所示。主控制 器写“O”时序、主控制器写“I”时序、主控制器读“I”时序、主控制器读“O”时序,如图2所/Jn ο另外,DS18B20在9位、10位、11位、12位分辨率下的最长转换时间分别为93. 75毫秒、187. 5毫秒、375毫秒、750毫秒。如果采用外部电源供电,当主控制器发出温度转换指令44H后,跟着发出读时序,如果DS18B20处在转换中,则在总线上返回0,如果温度转换结束,在总线上返回I。可是,如果采用寄生供电模式,就不能通过主控制器发出读时序来确定DS18B20对温度转换是否完成,只能通过延时所配置分辨率对应的最长转换时间后,再去读温度转换结果。综上所述,当采用单片机作为主控制器对DS18B20进行读写操作时,必须要严格按照DS18B20的读写时序进行操作,才能获得正确的温度转换结果。一般的做法是采用软件延时的方法来获得对DS18B20操作的各种时序及读取温度转换结果,由于DS18B20对时序要求比较严格,如初始化操作,主控制器拉低总线至少480微秒后释放总线至高电平,DS18B20检测到上升沿后,等待15微秒 60微秒,然后DS18B20发出60微秒 240微秒低电平信号构成存在脉冲。如果等待时间不够或等待时间过长,都将导致接收不到DS18B20正确的存在脉冲,从而可能使温度转换不能完成,可能也就得不到正确的温度值。所以,在采用软件延时方法进行程序设计时,一般采用汇编语言编写,以其获得较为精确的延时时间。可是,一方面现在绝大多数人都在使用C语言进行单片机编程,在C语言中插入汇编,使得编程变得复杂起来,掌握起来不太容易。另一方面采用软件延时的方法会导致单片机程序效率低下,使单片机经常处于无谓的延时等待中,浪费了单片机宝贵的资源。再有,如果程序中使用了中断,由于中断是随机发生的,经常出现中断发生在对DS18B20操作的时序中,从而破坏了原本正常的操作时序,导致对DS18B20的读写失败。如果在使用中断的程序中,在对DS18B20操作前禁止中断,完成操作后再开放中断,又会导致在此期间中断得不到及时响应,这在某些应用中是不允许的
技术实现思路
本专利技术解决了上述对DS18B20读写时存在的问题,公开一种采用定时中断实现DS18B20读写时序的方法。为了解决上述对DS18B20读写时存在的问题,将DS18B20读写时序所要求的时间片,及DS18B20处于温度转换期间的延时等待全部放在定时中断服务程序中,并将中断的优先级设置为高优先级,以严格保证DS18B20的时序要求。这种方法,既避免了在C语言中插入汇编的复杂编程过程,又避免了采用软件延时实现DS18B20时序而带来的占用单片机资源、程序效率低下的事实,再有,在程序中使用其他的中断源,不会对DS18B20的读写造成影响。本专利技术的主要特点在于,在主控制器单片机的初始化程序中,选择并开放一个定时器中断,定时器初值根据实际控制系统可以设置为5毫秒左右,作为系统外设上电延时时间;设置四个变量并初始化为O值,一个作为时间片计数器、一个作为一个时间片或几个时间片循环次数计数器、一个作为命令字计数器、一个作为中断次数计数器。 进一步的,本专利技术的主要特点在于,在定时中断服务程序中,调整时间片计数器的值,把对DS18B20的操作所涉及的所有时序中大于15微秒的时间片序列化,并与时间片计数器的值对应。进一步的,本专利技术的主要特点在于,在定时中断服务程序中,把对DS18B20的操作所涉及的所有时序中要求大于I微秒而小于无限长的时间片,直接在中断程序里用I微秒至2微秒左右的指令延时实现。并对指令延时的前、后相应的设置I-Wire的高或低电平。进一步的,本专利技术的主要特点在于,在定时中断服务程序中,根据时间片计数器的值,重新对计数器设置不同的计数初值,该计数初值满足再次进入定时中断服务程序时,跨过的时间间隔等于该时间片计数器值所对应的DS18B20所要求的时间片时间。并根据时间片计数器的值,相应的设置I-Wire的高或低电平。进一步的,本专利技术的主要特点在于,在定时中断服务程序中,根据时间片计数器的值,调整循环次数计数器的值,以便在发送命令或接收数据中,满足相应的发送或接收时序,完整并正确的发送8位命令或接收8位数据。进一步的,本专利技术的主要特点在于,在定时中断服务程序中,根据时间片计数器的值和循环计数器的值,调整命令字计数器的值,以便根据程序要求将相应的ROM命令或功能命令发送出去以及将温度转换结果的高8位或低8位接收进来。进一步的,本专利技术的主要特点在于,在定时中断服务程序中,根据时间片计数器的值和命令字计数器的值,设置定时器计数初值、判断并调整中断次数计数器的值,使其达到较长时间的延时,如750毫秒,用以确保DS18B20温度转换完成。本专利技术所述方法,仅需要通过调整定时器初值,就能精确满足对DS18B20的操作时序要求,降低了对DS18B20的调试难度,使DS18B20的使用变得简单、容易。更为关键的是这种方法便于更合理的安排系统程序结构,不必考虑系统程序结构对DS18B20操作时序的影响,大大的提高了程序的工作效率。附图说明图I是DS18B20初始化时序 图2是DS18B20读/写时序图;图3是主控制器单片机的定时中断服务程序流程 图4是图3主控制器单片机的定时中断服务程序流程图的续图。具体实施例方式下面给出本专利技术 的一个实施例,并结合附图对本专利技术进行详细介绍。在本专利技术的一个实施例中,采用STC12C5A60S2单片机作为主控制器件,外部只接一个DS18B20数字温度计。DS18B20的DQ脚接在STC12C5A60S2的Pl. O脚,上拉电阻为1K,采用寄生电源供电,即把DS18B20的VDD和GND连在一起接到单片机STC12C5A60S2的GND端。采用4位数码管通过定时中断I进行动态扫描方式显示转换温度值。实现DS18B20读与时序的 呆作在定时中断O中完成。在单片机初始化程序中,初始化相关的变量,开放所使用的各种中断源。在主程序循环中,根据定时中断O中DS18B20温度转换结束标志,将温度转换结果进行处理,然后送显示缓冲区,再在定时中断I中进行动态显示。上电复位后,第一次进入定时中断O时,时间片计数器、命令字计数器、循环次数计数器、中断次数计数器都为O值。定时中断O的流程图见图3和图4。每次进入定时中断O所执行的程序及操作步骤如下。I、当时间片计数器为O时,置Pl. O (即DS18B20的DQ,下同)为0,设置定时时间常数,使之下次进入该中断的时间为本文档来自技高网
...

【技术保护点】
一种实现DS18B20读写时序的方法,通过主控制器定时中断服务程序,实现发送DS18B20的复位脉冲,接收DS18B20的存在脉冲,实现对DS18B20的写1时序、写0时序、读1时序、读0时序,实现DS18B20寄生供电的上拉操作及DS18B20温度转换结束的时间等待。

【技术特征摘要】
1.一种实现DS18B20读写时序的方法,通过主控制器定时中断服务程序,实现发送DS18B20的复位脉冲,接收DS18B20的存在脉冲,实现对DS18B20的写I时序、写O时序、读I时序、读O时序,实现DS18B20寄生供电的上拉操作及DS18B20温度转换结束的时间等待。2.根据权利要求I所述的方法,其特征在于,发送DS18B20的复位脉冲的时序是在主控制器的定时中断服务程序中实现的。3.根据权利要求I所述的方法,其特征在于,接收DS18B20的存在脉冲的时序是在主控制器的定时中断服务程序中实现的。4.根据权利要求I所述的方法,其特征在于,对DS18B20的写I时序是在主控制器的定时...

【专利技术属性】
技术研发人员:刘宝成
申请(专利权)人:刘宝成
类型:发明
国别省市:

网友询问留言 已有0条评论
  • 还没有人留言评论。发表了对其他浏览者有用的留言会获得科技券。

1