DS18B20读取温度并显示-汇编程序

发布者:JoyousJourney最新更新时间:2012-10-31 来源: 21ic 关键字:DS18B20  读取温度  显示  汇编程序 手机看文章 扫描二维码
随时随地手机看文章

*
程序效果:通过DS18B20读取温度值,显示对应的温度值
           程序重在理解时序,及延时时间
*/

          DS18DQ EQU P1.3   //P1.3与DS18DQ等同,便于理解
          SPEAKER EQU P2.0   //驱动蜂鸣器
          TEMPH EQU 29H       //保存读出温度的低8位
          TEMPL EQU 28H       //保存读出温度的高8位
          DS18FLAG EQU 40H  //设置标志
          ORG  0000H
          LJMP  START
          ORG  0030H
START:   MOV  30H,#00  //设置初始值
          MOV  31H,#00
          MOV  32H,#00
START1: LCALL  DS18_GF  //设置DS18B20的工作方式
          LCALL  CONVERT_TEMPERATURE //输出转换温度命令
          LCALL DELAY750MS //延时750ms
          LCALL  GET_TEMPERATURE //获?温度数据
          LCALL  CAL_TEMPERATURE //计算温度数值
          LCALL  DISPLAY  //调用显示,防止掉显
          LJMP  START1 //无限循环     
//初始化子程序
DS18_START: 
          PUSH   07H //保存R7的值,防止改变R7的数值
          SETB   DS18DQ  //将数据线拉高
          NOP    //延时1us
          CLR    DS18DQ  //将数据线拉低
          MOV    R7,#0   //延时大约512us
          DJNZ   R7,$
          SETB   DS18DQ  //将数据线拉高
          MOV    R7,#40
DS18_START1:        //延时大约160us
          JNB    DS18DQ,DS18_START2  //检查DS18B20是否工作正常
          DJNZ   R7,DS18_START1
          SETB   DS18FLAG   //工作不正常
          CLR    SPEAKER    //驱动蜂鸣器,报警
DS18_START2:
          CLR   DS18FLAG
          MOV    R7,#100 //延时月200us
          DJNZ   R7,$
          POP    07H  //恢复R7的值
          RET
//设置DS18B20工作方式
DS18_GF:CLR  DS18FLAG //清除标志
          LCALL  DS18_START  //调用初始化子程序
          MOV  A,#0CCH  //跳跃ROM指令
             LCALL  DS18_SEND   //
          MOV    A,#4EH     //向RAM写数据             
          LCALL  DS18_SEND
          MOV    A,#75 
          LCALL  DS18_SEND
          MOV  A,#0
          LCALL  DS18_SEND
          MOV  A,#7FH  //设置工作方式
          LCALL  DS18_SEND
          CLR    DS18DQ  //释放总线
          LCALL  DELAY500US   //延时500us                                     
LOOP:     LCALL  CONVERT_TEMPERATURE //调用转子程序
             MOV    R5,#80
LOOP1:   LCALL  DISPLAY //调用显示防止掉显,同时等待转换完成
                DJNZ   R5,LOOP1
          LCALL  GET_TEMPERATURE  //获?转换值
          LCALL  CAL_TEMPERATURE //计算温度值
          LJMP   LOOP
          RET[page]
//输出转换温度命令
CONVERT_TEMPERATURE:
          LCALL  DS18_START //调用初始化子程序
             MOV    A,#0CCH    //跳跃ROM指令         
             LCALL DS18_SEND
          MOV    A,#44H    //温度转换        
          LCALL  DS18_SEND
         RET
//读?温度数据
GET_TEMPERATURE:
             LCALL  DS18_START //调用初始化子程序
          MOV    A,#0CCH  //跳跃ROM指令                
          LCALL  DS18_SEND
          MOV    A,#0BEH   //从RAM中的数据          
          LCALL  DS18_SEND
          LCALL  DELAY60US
           LCALL  DS18_READ
           MOV    TEMPL,A   //将获得数据的低八位存到TEMPL
           LCALL  DS18_READ
           MOV    TEMPH,A  //将获得数据的高八位存到TEMPH
           CLR    DS18DQ   //即复位。否则会一直读到
          LCALL DELAY501US //暂存第九字节             
          RET
//计算获得温度值,便于现实
CAL_TEMPERATURE:
          PUSH   07H    //暂存,防止改变R7的数据
          CLR    C    //进位标志清零
          MOV    R7,#04H  //循环次数

EX2:     MOV    A,TEMPH // 这些语句的作用是:
          RRC    A  // 整数位在:TEMPL中
          MOV    TEMPH,A //?数位在:TEMPH中的高半
          MOV    A,TEMPL
          RRC    A
          MOV    TEMPL,A
          DJNZ   R7,EX2 //

          MOV    A,TEMPH  //
          RLC    A   //这些语句的作用是:
          RLC    A   //把TEMPH得高半移到低四位中
          RLC    A
          RLC    A  //
          ANL    A,#0FH //屏蔽高四位,保留低四位
          MOV    DPTR,#TAB_TEMP //赋带?数点的数值表的表首地址
          MOVC   A,@A+DPTR
          MOV    30H,A  //暂存该值,用于显示
          MOV    A,TEMPL
          CLR    C
          MOV    B,#0AH
          DIV    AB  //分离整数位的高低四位
          MOV    32H,A  //暂存十位
          MOV    A,B
          ADD    A,#10H
          MOV    31H,A  //暂存个位
          POP    07H    //恢复R7的值
          RET
//写数据子程序
DS18_SEND:  
          PUSH   06H  //保护Rn的值
          PUSH   07H
          //以下语句是"写 笔毙虻脑?
          SETB   DS18DQ  //写时序是有DS18DQ的下降沿决定
             NOP     //延时1us
          MOV    R6,#08H  //循环次数,一个字节
DS18_SEND1:
             CLR     DS18DQ  //拉低,产生下降沿
           MOV     R7,#07  //延时大约15us
             DJNZ    R7,$
           RRC     A  //把要写入得数据的高位移到C中
             MOV     DS18DQ,C   //再把C的值赋给DS18DQ
             MOV     R7,#30    //延时时间约为60us,只要大约45us即可
            DJNZ    R7,$
           SETB    DS18DQ   //拉高准备,下次产生下降沿
             DJNZ    R6,DS18_SEND1 //判断循环次数够了没
          POP     07H   //恢复Rn的数据
          POP     06H
          RET
篇幅太大完整程序请从这里下载:http://www.51hei.com/ziliao/file/ds182051hei.asm

本程序已经测试成功。

关键字:DS18B20  读取温度  显示  汇编程序 引用地址:DS18B20读取温度并显示-汇编程序

上一篇:时间可调的定时闹钟C51程序
下一篇:PWM控制LED台灯程序带红外遥控

推荐阅读最新更新时间:2024-03-16 13:11

如何用单片机实现FSK来电显示解码
原理: 此项目的关键是,FSK是连续相位的,且高电平与低电位的频率不成倍数关系(1200Hz与2200Hz).采用测量脉冲宽度的话不容易确定上升沿与下降沿.理论上用A\\D转换后的幅值对时间查表可确定上升下降沿,但软硬件太复杂,还不如买成品fsk解调IC.我采用的办法是测量脉冲宽度,因为数据是异步串行通讯方式,由1到0的下降沿来确定时钟,即由1200hz到2200hz的改变来确定,关键是1200到2200的改变是任意相位的,而不是从0相位开始.说明白点,用单片机不停测脉冲宽度,先是1200的宽度,突然来了个脉冲宽度在1200与2200之间,这说明下降沿在这个脉冲内的某个时间,怎么确定这个时间呢?经过我周密计算 :--) ,公式
[单片机]
谷歌地图测试问答功能与“画中画”导航显示功能
  新浪科技讯 北京时间8月10日早间消息,虽然仍在测试阶段,但最新版谷歌地图的一些新功能却非常值得关注,其中的“问答”板块可以让用户针对餐馆和名胜古迹展开问答互动。   谷歌表示,用户可以借此“获得所有者和其他人的建议”,包括当地Local Guides平台或其他地方的专家。在9.59.0版谷歌地图应用中搜索本地企业时,就会看到这项功能,它位于地址和照片之间,与亚马逊产品评论上的问答板块类似。   谷歌还可以充分利用Local Guides平台。这项功能不必漫无目的地浏览其他人发表的评论,而是可以提出有针对性的问题。当然,由于上线不久,所以目前的参与和回复还不多。   另外一项有趣的功能则是“画中画”。如果你运行
[手机便携]
Acacia收购数字微镜专利,关注显示器新技术
Acacia Research公司日前宣布其子公司Acacia专利收购公司收购了一个专利组合,与应用微镜研制电视、显示器和投影仪的数字图像有关。该专利技术涉及的技术有,利用微镜显示具有灰度缩放等级的彩色图像,用于大屏幕电视和投影仪。 该数字微镜技术用于微显示器,经常与德州仪器(TI)的DLP(数字光处理)技术联合采用。但诸如Miradia、Reflectivity,以及其它初创公司也在开发基于数字微镜的DLP的替代技术。 Acacia收购微镜专利对未来显示器发展将产生何种影响还有待观察。但该公司扩充专利组合将产生2亿美元的年收入。
[焦点新闻]
苹果正在研发环绕OLED显示屏 或用于新产品
通过软硬件的结合,实现更多好玩好用的功能,就让我们拭目以待吧!根据外媒AppleInsider的报道,苹果目前正在研发OLED环绕显示屏,或将为iPhone的操作扩展更多的可能。根据美国专利商标局公布的一项专利来看,苹果这项专利的实现理论上需要柔性屏幕与透明的外壳两种技术组合。   ▲ 图自AppleInsider    苹果最早是在2016年提出的这项专利,苹果表示这款显示面板能够在透明外壳的任何部分显示图像。更重要的是,除了主要显示内容的位置外,还会至少有一个边缘区域可以实现触控操作的功能。这项技术不仅可以使得手机能显示更多的内容,同时也让用户对于手机的操控性进一步加强。 苹果已经在iPhone X上取消了实体Ho
[手机便携]
stc89C51单片机将mpu6050一些参数用1602显示
单片机源程序如下: #include REG52.H #include math.h //Keil library #include stdio.h //Keil library #include INTRINS.H #include lcd1602.h typedef unsigned short ushort; typedef unsigned int uint; //**************************************** #define DataPort P0 //LCD1602数据端口 sbit SCL=P2^1; //IIC
[单片机]
iPhone 12系列支持模块化维修了 保留显示屏与后摄
去年,苹果公司宣布了一项独立维修计划,可以使企业无需购买完整的苹果授权服务,即可购买苹果原厂零件来进行iPhone维修,该计划目前已走出美国本土,渠道全球其他一些国家。另外,上个月有外媒表示,苹果计划为iPhone 12 mini和iPhone 12手机引入一种新的模块化维修方法。现在,iPhone 12系列剩下两款机型也支持这种维修方式了。   有用户在苹果官网上发现,Apple Store商店和苹果的授权服务提供商可以看到“iPhone后盖总成”这个选项,事实就是手机的外盖,但是包括了显示屏和后置摄像头之外的所有组件。而有媒体表示,这些部件适用于目前四种iPhone 12型号。   其实要理解这中修理方式非常简单
[手机便携]
Polycom调查显示中国企业利用协作办公技术处于领先地位
Polycom日前发布的一项调查显示,中国企业在亚太地区拥有设备最齐全的小型会议空间。该调查表明,通过运用一系列协作办公工具——包括音频和视频会议、内容共享和电子白板,中国在支持现场和远程参会者之间实现高效会议方面遥遥领先。在中国,目前三分之二的小型会议室配备视频,与之相比,澳大利亚和新加坡不到一半,日本和韩国只有四分之一 ——这表明中国公司倾向于利用技术来更智能的工作。 这项名为 小空间激发大创意: Polycom小型会议室的调查旨在探索澳大利亚、中国、印度、日本、韩国和新加坡企业和员工之间协作办公的主要偏好。该报告还通过对2000多人的采访,包括来自中国的232名受访者,阐明了小型会议空间为何越来越受青睐。 结果显示,
[物联网]
Inova推出全新APIX3® SerDes产品 支持多达4台菊花链式显示
2月19日,微芯片制造商Inova Semiconductors宣布发布其INAP567TAQ和INAP597TAQ发射机IC,进一步扩展APIX3 SerDes产品系列。APIX(Automotive Pixel Link,汽车像素链路)是Inova为汽车高分辨率视频应用程序开发的多通道SerDes(串行器/解串器)技术。这些IC主要用于车辆驾驶舱和信息娱乐系统。最新一代APIX3即使使用带宽高达12Gbit/s的菊花链式显示器,也可以建立多个显示器连接,并支持高清和超高清显示器。 图片来源:Inova Semiconductors 全新INAP567TAQ和INAP597TAQ发射机提供DisplayPort 1
[汽车电子]
Inova推出全新APIX3® SerDes产品 支持多达4台菊花链式<font color='red'>显示</font>器
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved