3075|4

141

帖子

0

TA的资源

一粒金砂(高级)

楼主
 

谁有18B20和51的正负温度控制程序 [复制链接]

2芯积分
谁有18B20和51的正负温度控制程序。
温度设定在-30到+30之间,
采用C语言,
芯片:51.
感温:18B20。
可以发到我的信箱里:1239300456@qq.com
不胜感谢!

此帖出自51单片机论坛

最新回复

你不是挺能的啊?发了这么多关于18B20的资料,连这个程序都写不出来?  详情 回复 发表于 2012-10-20 21:16
点赞 关注
个人签名shop33392572.taobao.com
 

回复
举报

1万

帖子

28

TA的资源

裸片初长成(高级)

沙发
 
;**********************************
FLAG1   BIT    F0        ;DS18B20存在标志位
DQ      BIT    P1.7
TEMPER_L    EQU   29H
TEMPER_H    EQU   28H
A_BIT      EQU    35H
B_BIT      EQU     36H
;************程序起始********************
     ORG    0000H
     AJMP   MAIN
     ORG    0100H
;**************主程序开始************
MAIN:
      LCALL    INIT_18B20
      ;LCALL    RE_CONFIG
      LCALL    GET_TEMPER
     AJMP     CHANGE

;**********DS18B20复位程序*****************
INIT_18B20:    SETB   DQ
               NOP
               CLR   DQ
               MOV    R0,#0FBH
         TSR1: DJNZ   R0,TSR1       ;延时
               SETB   DQ
               MOV    R0,#25H
         TSR2: JNB   DQ ,TSR3
               DJNZ   R0,TSR2
         TSR3: SETB   FLAG1       ;置标志位,表明DS18B20存在
               CLR    P2.0        ;二极管指示
               AJMP   TSR5
         TSR4: CLR   FLAG1
               LJMP   TSR7
          TSR5: MOV   R0,#06BH
          TSR6: DJNZ   R0,TSR6
          TSR7:SETB   DQ          ;表明不存在
                RET
;********************设定DS18B20暂存器设定值**************
;RE_CONFIG:
           ;JB   FLAG1,RE_CONFIG1
            ;RET
;RE_CONFIG1: MOV  A,#0CCH       ;放跳过ROM命令
            ;LCALL  WRITE_18B20
            ;MOV   A,#4EH
            ;LCALL  WRITE_18B20  ;写暂存器命令
            ;MOV    A,#00H        ;报警上限中写入00H
            ;LCALL  WRITE_18B20
            ;MOV    A,#00H         ;报警下限中写入00H
           ; LCALL  WRITE_18B20
           ;MOV   A,#1FH           ;选择九位温度分辨率
           ; LCALL  WRITE_18B20
           ; RET
;*****************读转换后的温度值****************
GET_TEMPER:
            SETB   DQ
            LCALL  INIT_18B20
            JB     FLAG1,TSS2
            RET                  ;若不存在则返回
      TSS2: MOV  A,#0CCH        ;跳过ROM
            LCALL  WRITE_18B20
            MOV    A,#44H         ;发出温度转换命令
            LCALL   WRITE_18B20

            LCALL  DISPLAY                       ;延时
            LCALL    INIT_18B20
            MOV  A,#0CCH        ;跳过ROM
            LCALL  WRITE_18B20
            MOV    A,#0BEH         ;发出读温度换命令
            LCALL   WRITE_18B20
            LCALL   READ2_18B20    ;读两个字节的温度
            RET
;***************写DS18B20程序************
WRITE_18B20:
            MOV    R2,#8
            CLR    C
        WR1:
              CLR   DQ

              MOV  R3,#6
              DJNZ  R3,$
              RRC   A
              MOV    DQ,C
              MOV   R3,#23
              DJNZ   R3,$
              SETB    DQ
              NOP
              DJNZ    R2,WR1
              SETB  DQ
              RET




;***********读18B20程序,读出两个字节的温度*********
READ2_18B20:
            MOV   R4,#2              ;低位存在29 H,高位存在28H

            MOV   R1,#29H
      RE00: MOV  R2,#8
      RE01: CLR   C
            SETB   C
            NOP
            NOP

            CLR  DQ
            NOP
            NOP
            NOP
            SETB  DQ
            MOV   R3,#7
            DJNZ   R3,$
            MOV    C,DQ
            MOV    R3,#23
             DJNZ   R3,$
            RRC   A
            DJNZ   R2,RE01
            MOV    @R1,A
            DEC    R1
            DJNZ   R4,RE00
            RET
;************读出的温度进行数据转换**************

CHANGE:     MOV A,29H
            MOV C,28H.0           ;将28H中的最低位移入C
            RRC A
            MOV C,28H.1
            RRC A
            MOV C,28H.2
            RRC A
            MOV C,28H.3
            RRC A
            MOV 29H,A
            ;setb  p2.0
            LCALL  DISPLAY      ;调用数码管显示子程序

           ; setb P2.0
            LJMP MAIN
;*******************DISPLAY******
DISPLAY:    mov a,29H;将29H中的十六进制数转换成10进制
             mov b,#10 ;10进制/10=10进制
             div ab
             mov b_bit,a ;十位在a
             mov a_bit,b ;个位在b
             mov dptr,#TAB ;指定查表启始地址
             mov r0,#4
             dpl1: mov r1,#250 ;显示1000次
             dplop: mov a,a_bit ;取个位数
             MOVC A,@A+DPTR ;查个位数的7段代码
             mov p0,a ;送出个位的7段代码
             clr p2.5;开个位显示
             acall d1ms ;显示1ms
             setb p2.5
             mov a,b_bit ;取十位数
             MOVC A,@A+DPTR ;查十位数的7段代码
             mov p0,a ;送出十位的7段代码
             clr p2.4;开十位显示
             acall d1ms ;显示1ms
             setb p2.4
             djnz r1,dplop ;100次没完循环
             djnz r0,dpl1 ;4个100次没完循环
             ret

;***********************************
             D1MS: MOV R7,#80   ;1MS延时(按12MHZ算)
             DJNZ R7,$
             RET
;*************************
TAB:         DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H


转自: http://www.dzjs.net/html/qianrushixitong/2007/0306/1671.html
此帖出自51单片机论坛
 
 
 

回复

141

帖子

0

TA的资源

一粒金砂(高级)

板凳
 
谁有18B20和51的正负温度控制程序。
温度设定在-30到+30之间,
三个按键:
设置键:
加一减,
加一减

采用C语言,
芯片:51.
感温:18B20。
可以发到我的信箱里:1239300456@qq.com
不胜感谢!
此帖出自51单片机论坛
 
个人签名shop33392572.taobao.com
 
 

回复

3404

帖子

6

TA的资源

裸片初长成(初级)

4
 
你不是挺能的啊?发了这么多关于18B20的资料,连这个程序都写不出来?
此帖出自51单片机论坛
 
 
 

回复

141

帖子

0

TA的资源

一粒金砂(高级)

5
 
呵呵,
此帖出自51单片机论坛
 
个人签名shop33392572.taobao.com
 
 

回复
您需要登录后才可以回帖 登录 | 注册

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/10 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表