CMF海水观赏鱼论坛

 找回密码
 立即注册
搜索
热搜: 活动 交友 discuz
楼主: fpack

炎炎夏日自己搞个小水冷

  [复制链接]

3

主题

89

回帖

272

积分

白银会员

Rank: 3Rank: 3

积分
272
 楼主| 发表于 2012-8-10 01:30:47 | 显示全部楼层 来自: 中国上海
#include <STC12C5A60S2.h>

#include "LEDDisplay.h"
#include "Temperature.h"
#include "Pins.h"


#define Delay_REF        12               //设置每一个点显示的时间长度(1~20)
#define LED_PWDDEFAULT        9          // LED的调光值 1~9

#define DT_P2M0SET                0x00  // 0000 0000
#define DT_P2M1SET                0x00         // 0000 0000
#define DT_P0M0SET                0xf0        // 1111 0000
#define DT_P0M1SET                0x00  // 0000 0000


// 数码管
// 12 ~ 9
sbit        DT_COM1                        = P0 ^ 4;
sbit        DT_COM2                        = P0 ^ 5;
sbit        DT_COM3                        = P0 ^ 6;
sbit        DT_COM4                        = P0 ^ 7;
// 8 ~ 1
sbit        DT_DpyA                        = P2 ^ 0;
sbit        DT_DpyB                        = P2 ^ 1;
sbit        DT_DpyC                        = P2 ^ 2;
sbit        DT_DpyD                        = P2 ^ 3;
sbit        DT_DpyE                        = P2 ^ 4;
sbit        DT_DpyF                        = P2 ^ 5;
sbit        DT_DpyG                        = P2 ^ 6;
sbit        DT_DpyDP                = P2 ^ 7;
sfr   DT_Dpy      = 0xA0;   // P2


void Delay (unsigned int);
void Dis_Off (void);
void displayHH1 (unsigned char);
void displayHH2 (unsigned char);
void displayHH3 (unsigned char);
void displayHH4 (unsigned char);



data unsigned char Led_PWM;   // 调光 1 ~ 9

unsigned char code NumData[]={
  //0, 1, 2, 3, 4, 5, 6, 7, 8, 9, (None) E, R     
        0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f, 0x00, 0x79, 0x77
};
unsigned int Sec = 0;


void InitView(void){
        P0M0 = DT_P0M0SET;
        P0M1 = DT_P0M1SET;
        P2M0 = DT_P2M0SET;
        P2M1 = DT_P2M1SET;
        //Dis_Off();
        Led_PWM = LED_PWDDEFAULT;
}

void DisplayTemperature(unsigned int t){
  // 无效温度显示 ERR 字样
  if (t != VAL_ERRTEMPERATURE){
                displayHH4(NumData[t / 1000]);
    displayHH3(NumData[t / 100 % 10] + 0x80);
    displayHH2(NumData[t / 10 % 10]);
    displayHH1(NumData[t % 10]);
  }
  else {
                // 无效温度显示 ERR 字样
    //displayHH4(NumData[10]);
    displayHH3(NumData[11]);
    displayHH2(NumData[12]);
    displayHH1(NumData[12]);
  }
}



void Delay (unsigned int count){
        unsigned int i;
        while( count-- != 0){
                for(i = 0; i < Delay_REF; i++);
        }                                    
}

void Dis_Off (void){
  DT_COM1          = 0;
  DT_COM2          = 0;      
  DT_COM3          = 0;
  DT_COM4   = 0;

        DT_Dpy    = 0xFF;
        /*
  DT_DpyA          = 1;
  DT_DpyB          = 1;
  DT_DpyC          = 1;
  DT_DpyD          = 1;
  DT_DpyE          = 1;
  DT_DpyF          = 1;
  DT_DpyG          = 1;
  DT_DpyG  = 1;
*/
        Delay(10-Led_PWM);
}

void displayHH1 (unsigned char d){
        if(d & 0x01){
                DT_COM1 = 1;DT_DpyA = 0;}        Delay(Led_PWM);        Dis_Off();

        if(d & 0x02){
                DT_COM1 = 1;DT_DpyB = 0;}        Delay(Led_PWM);        Dis_Off();

        if(d & 0x04){
                DT_COM1 = 1;DT_DpyC = 0;}        Delay(Led_PWM);        Dis_Off();

        if(d & 0x08){
                DT_COM1 = 1;DT_DpyD = 0;}Delay(Led_PWM);Dis_Off();

        if(d & 0x10){
                DT_COM1 = 1;DT_DpyE = 0;}Delay(Led_PWM);Dis_Off();

        if(d & 0x20){
                DT_COM1 = 1;DT_DpyF = 0;}Delay(Led_PWM);Dis_Off();

        if(d & 0x40){
                DT_COM1 = 1;DT_DpyG = 0;}Delay(Led_PWM);Dis_Off();

        if(d & 0x80){
                DT_COM1 = 1;DT_DpyDP = 0;}Delay(Led_PWM);Dis_Off();
}

void displayHH2 (unsigned char d){
        if(d & 0x01){
                DT_COM2 = 1;DT_DpyA = 0;}Delay(Led_PWM);Dis_Off();

        if(d & 0x02){
                DT_COM2 = 1;DT_DpyB = 0;}Delay(Led_PWM);Dis_Off();

        if(d & 0x04){
                DT_COM2 = 1;DT_DpyC = 0;}Delay(Led_PWM);Dis_Off();

        if(d & 0x08){
                DT_COM2 = 1;DT_DpyD = 0;}Delay(Led_PWM);Dis_Off();

        if(d & 0x10){
                DT_COM2 = 1;DT_DpyE = 0;}Delay(Led_PWM);Dis_Off();

        if(d & 0x20){
                DT_COM2 = 1;DT_DpyF = 0;}Delay(Led_PWM);Dis_Off();

        if(d & 0x40){
                DT_COM2 = 1;DT_DpyG = 0;}Delay(Led_PWM);Dis_Off();

        if(d & 0x80){
                DT_COM2 = 1;DT_DpyDP = 0;}Delay(Led_PWM);Dis_Off();
}

void displayHH3 (unsigned char d){
        if(d & 0x01){
                DT_COM3 = 1;DT_DpyA = 0;}Delay(Led_PWM);Dis_Off();

        if(d & 0x02){
                DT_COM3 = 1;DT_DpyB = 0;}Delay(Led_PWM);Dis_Off();

        if(d & 0x04){
                DT_COM3 = 1;DT_DpyC = 0;}Delay(Led_PWM);Dis_Off();

        if(d & 0x08){
                DT_COM3 = 1;DT_DpyD = 0;}Delay(Led_PWM);Dis_Off();

        if(d & 0x10){
                DT_COM3 = 1;DT_DpyE = 0;}Delay(Led_PWM);Dis_Off();

        if(d & 0x20){
                DT_COM3 = 1;DT_DpyF = 0;}Delay(Led_PWM);Dis_Off();

        if(d & 0x40){
                DT_COM3 = 1;DT_DpyG = 0;}Delay(Led_PWM);Dis_Off();

        if(d & 0x80){
                DT_COM3 = 1;DT_DpyDP = 0;}Delay(Led_PWM);Dis_Off();
}

void displayHH4 (unsigned char d){
        if(d & 0x01){
                DT_COM4 = 1;DT_DpyA = 0;}Delay(Led_PWM);Dis_Off();

        if(d & 0x02){
                DT_COM4 = 1;DT_DpyB = 0;}Delay(Led_PWM);Dis_Off();

        if(d & 0x04){
                DT_COM4 = 1;DT_DpyC = 0;}Delay(Led_PWM);Dis_Off();

        if(d & 0x08){
                DT_COM4 = 1;DT_DpyD = 0;}Delay(Led_PWM);Dis_Off();

        if(d & 0x10){
                DT_COM4 = 1;DT_DpyE = 0;}Delay(Led_PWM);Dis_Off();

        if(d & 0x20){
                DT_COM4 = 1;DT_DpyF = 0;}Delay(Led_PWM);Dis_Off();

        if(d & 0x40){
                DT_COM4 = 1;DT_DpyG = 0;}Delay(Led_PWM);Dis_Off();

        if(d & 0x80){
                DT_COM4 = 1;DT_DpyDP = 0;}Delay(Led_PWM);Dis_Off();
}


-------------------------

#include <STC12C5A60S2.h>

#include "PilotLamp.h"

// LED 指示灯
sbit        Lamp_Work                  = P0 ^ 1;  // 继电器工作状态亮
sbit        Lamp_Auto                  = P0 ^ 2;  // 温控模式
sbit        Lamp_Hand                        = P0 ^ 3;  // 手控模式


void InitPilotLamp(void){
}

void DisplayPilotLamp(unsigned char Val){
// 指示灯状态
// 第一位 继电器工作状态,灯亮工作状态,灯灭停止制冷                  
// 第二位 是否为自动模式
// 第三位 温控器故障
        if (Val & 0x01)
                Lamp_Work    = 1;
        else
                Lamp_Work    = 0;
      
        if (Val & 0x02)
                Lamp_Auto     = 1;
        else
                Lamp_Auto     = 0;
               
        Lamp_Hand     = ~Lamp_Auto;
               
}



--------------------------

#include <STC12C5A60S2.h>

#include "Relays.h"
#include "Pins.h"


sbit        RelayCool1  = P1 ^ 3;
sbit        RelayCool2  = P1 ^ 4;


void InitRealys(void){}

void UpdateRelays(unsigned char Val){
// 例:值 0x03 (0000 0011)
//     开启第一、第二 继电器  
        if (Val){
                RelayCool1 = 0;
          RelayCool2 = 0;
        }
        else {
                RelayCool1 = 1;
                RelayCool2 = 1;
        }
}
回复

使用道具 举报

3

主题

89

回帖

272

积分

白银会员

Rank: 3Rank: 3

积分
272
 楼主| 发表于 2012-8-10 01:32:01 | 显示全部楼层 来自: 中国上海
#include <STC12C5A60S2.h>

#include "LEDDisplay.h"
#include "Temperature.h"
#include "Pins.h"


#define Delay_REF        12               //设置每一个点显示的时间长度(1~20)
#define LED_PWDDEFAULT        9          // LED的调光值 1~9

#define DT_P2M0SET                0x00  // 0000 0000
#define DT_P2M1SET                0x00         // 0000 0000
#define DT_P0M0SET                0xf0        // 1111 0000
#define DT_P0M1SET                0x00  // 0000 0000


// 数码管
// 12 ~ 9
sbit        DT_COM1                        = P0 ^ 4;
sbit        DT_COM2                        = P0 ^ 5;
sbit        DT_COM3                        = P0 ^ 6;
sbit        DT_COM4                        = P0 ^ 7;
// 8 ~ 1
sbit        DT_DpyA                        = P2 ^ 0;
sbit        DT_DpyB                        = P2 ^ 1;
sbit        DT_DpyC                        = P2 ^ 2;
sbit        DT_DpyD                        = P2 ^ 3;
sbit        DT_DpyE                        = P2 ^ 4;
sbit        DT_DpyF                        = P2 ^ 5;
sbit        DT_DpyG                        = P2 ^ 6;
sbit        DT_DpyDP                = P2 ^ 7;
sfr   DT_Dpy      = 0xA0;   // P2


void Delay (unsigned int);
void Dis_Off (void);
void displayHH1 (unsigned char);
void displayHH2 (unsigned char);
void displayHH3 (unsigned char);
void displayHH4 (unsigned char);



data unsigned char Led_PWM;   // 调光 1 ~ 9

unsigned char code NumData[]={
  //0, 1, 2, 3, 4, 5, 6, 7, 8, 9, (None) E, R     
        0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f, 0x00, 0x79, 0x77
};
unsigned int Sec = 0;


void InitView(void){
        P0M0 = DT_P0M0SET;
        P0M1 = DT_P0M1SET;
        P2M0 = DT_P2M0SET;
        P2M1 = DT_P2M1SET;
        //Dis_Off();
        Led_PWM = LED_PWDDEFAULT;
}

void DisplayTemperature(unsigned int t){
  // 无效温度显示 ERR 字样
  if (t != VAL_ERRTEMPERATURE){
                displayHH4(NumData[t / 1000]);
    displayHH3(NumData[t / 100 % 10] + 0x80);
    displayHH2(NumData[t / 10 % 10]);
    displayHH1(NumData[t % 10]);
  }
  else {
                // 无效温度显示 ERR 字样
    //displayHH4(NumData[10]);
    displayHH3(NumData[11]);
    displayHH2(NumData[12]);
    displayHH1(NumData[12]);
  }
}



void Delay (unsigned int count){
        unsigned int i;
        while( count-- != 0){
                for(i = 0; i < Delay_REF; i++);
        }                                    
}

void Dis_Off (void){
  DT_COM1          = 0;
  DT_COM2          = 0;      
  DT_COM3          = 0;
  DT_COM4   = 0;

        DT_Dpy    = 0xFF;
        /*
  DT_DpyA          = 1;
  DT_DpyB          = 1;
  DT_DpyC          = 1;
  DT_DpyD          = 1;
  DT_DpyE          = 1;
  DT_DpyF          = 1;
  DT_DpyG          = 1;
  DT_DpyG  = 1;
*/
        Delay(10-Led_PWM);
}

void displayHH1 (unsigned char d){
        if(d & 0x01){
                DT_COM1 = 1;DT_DpyA = 0;}        Delay(Led_PWM);        Dis_Off();

        if(d & 0x02){
                DT_COM1 = 1;DT_DpyB = 0;}        Delay(Led_PWM);        Dis_Off();

        if(d & 0x04){
                DT_COM1 = 1;DT_DpyC = 0;}        Delay(Led_PWM);        Dis_Off();

        if(d & 0x08){
                DT_COM1 = 1;DT_DpyD = 0;}Delay(Led_PWM);Dis_Off();

        if(d & 0x10){
                DT_COM1 = 1;DT_DpyE = 0;}Delay(Led_PWM);Dis_Off();

        if(d & 0x20){
                DT_COM1 = 1;DT_DpyF = 0;}Delay(Led_PWM);Dis_Off();

        if(d & 0x40){
                DT_COM1 = 1;DT_DpyG = 0;}Delay(Led_PWM);Dis_Off();

        if(d & 0x80){
                DT_COM1 = 1;DT_DpyDP = 0;}Delay(Led_PWM);Dis_Off();
}

void displayHH2 (unsigned char d){
        if(d & 0x01){
                DT_COM2 = 1;DT_DpyA = 0;}Delay(Led_PWM);Dis_Off();

        if(d & 0x02){
                DT_COM2 = 1;DT_DpyB = 0;}Delay(Led_PWM);Dis_Off();

        if(d & 0x04){
                DT_COM2 = 1;DT_DpyC = 0;}Delay(Led_PWM);Dis_Off();

        if(d & 0x08){
                DT_COM2 = 1;DT_DpyD = 0;}Delay(Led_PWM);Dis_Off();

        if(d & 0x10){
                DT_COM2 = 1;DT_DpyE = 0;}Delay(Led_PWM);Dis_Off();

        if(d & 0x20){
                DT_COM2 = 1;DT_DpyF = 0;}Delay(Led_PWM);Dis_Off();

        if(d & 0x40){
                DT_COM2 = 1;DT_DpyG = 0;}Delay(Led_PWM);Dis_Off();

        if(d & 0x80){
                DT_COM2 = 1;DT_DpyDP = 0;}Delay(Led_PWM);Dis_Off();
}

void displayHH3 (unsigned char d){
        if(d & 0x01){
                DT_COM3 = 1;DT_DpyA = 0;}Delay(Led_PWM);Dis_Off();

        if(d & 0x02){
                DT_COM3 = 1;DT_DpyB = 0;}Delay(Led_PWM);Dis_Off();

        if(d & 0x04){
                DT_COM3 = 1;DT_DpyC = 0;}Delay(Led_PWM);Dis_Off();

        if(d & 0x08){
                DT_COM3 = 1;DT_DpyD = 0;}Delay(Led_PWM);Dis_Off();

        if(d & 0x10){
                DT_COM3 = 1;DT_DpyE = 0;}Delay(Led_PWM);Dis_Off();

        if(d & 0x20){
                DT_COM3 = 1;DT_DpyF = 0;}Delay(Led_PWM);Dis_Off();

        if(d & 0x40){
                DT_COM3 = 1;DT_DpyG = 0;}Delay(Led_PWM);Dis_Off();

        if(d & 0x80){
                DT_COM3 = 1;DT_DpyDP = 0;}Delay(Led_PWM);Dis_Off();
}

void displayHH4 (unsigned char d){
        if(d & 0x01){
                DT_COM4 = 1;DT_DpyA = 0;}Delay(Led_PWM);Dis_Off();

        if(d & 0x02){
                DT_COM4 = 1;DT_DpyB = 0;}Delay(Led_PWM);Dis_Off();

        if(d & 0x04){
                DT_COM4 = 1;DT_DpyC = 0;}Delay(Led_PWM);Dis_Off();

        if(d & 0x08){
                DT_COM4 = 1;DT_DpyD = 0;}Delay(Led_PWM);Dis_Off();

        if(d & 0x10){
                DT_COM4 = 1;DT_DpyE = 0;}Delay(Led_PWM);Dis_Off();

        if(d & 0x20){
                DT_COM4 = 1;DT_DpyF = 0;}Delay(Led_PWM);Dis_Off();

        if(d & 0x40){
                DT_COM4 = 1;DT_DpyG = 0;}Delay(Led_PWM);Dis_Off();

        if(d & 0x80){
                DT_COM4 = 1;DT_DpyDP = 0;}Delay(Led_PWM);Dis_Off();
}


-------------------------

#include <STC12C5A60S2.h>

#include "PilotLamp.h"

// LED 指示灯
sbit        Lamp_Work                  = P0 ^ 1;  // 继电器工作状态亮
sbit        Lamp_Auto                  = P0 ^ 2;  // 温控模式
sbit        Lamp_Hand                        = P0 ^ 3;  // 手控模式


void InitPilotLamp(void){
}

void DisplayPilotLamp(unsigned char Val){
// 指示灯状态
// 第一位 继电器工作状态,灯亮工作状态,灯灭停止制冷                  
// 第二位 是否为自动模式
// 第三位 温控器故障
        if (Val & 0x01)
                Lamp_Work    = 1;
        else
                Lamp_Work    = 0;
      
        if (Val & 0x02)
                Lamp_Auto     = 1;
        else
                Lamp_Auto     = 0;
               
        Lamp_Hand     = ~Lamp_Auto;
               
}



--------------------------

#include <STC12C5A60S2.h>

#include "Relays.h"
#include "Pins.h"


sbit        RelayCool1  = P1 ^ 3;
sbit        RelayCool2  = P1 ^ 4;


void InitRealys(void){}

void UpdateRelays(unsigned char Val){
// 例:值 0x03 (0000 0011)
//     开启第一、第二 继电器  
        if (Val){
                RelayCool1 = 0;
          RelayCool2 = 0;
        }
        else {
                RelayCool1 = 1;
                RelayCool2 = 1;
        }
}
回复

使用道具 举报

3

主题

89

回帖

272

积分

白银会员

Rank: 3Rank: 3

积分
272
 楼主| 发表于 2012-8-10 01:34:27 | 显示全部楼层 来自: 中国上海
DSSP  SEGMENT  CODE    ;程序段

PUBLIC  GetTemperature          ;入口地址,跳转到DL标号处执行汇编程序  GetTemperature

RSEG  DSSP                          ;程序段

IN                   EQU         0CBH  ; P5.3 引脚地址
FLAG1     EQU   05H   ;DS18B20器件存在标志
TTL       EQU   07H   ;温度读出值(高位在TTL-1中,低位在TTL中)
;TTL_H     EQU   06H   ;温度读出值(高位在TTL-1中,低位在TTL中)


; 这是DS18B20复位初始化子程序
INIT_1820:
    SETB IN
    NOP
    CLR IN
    ;主机发出延时537微秒的复位低脉冲
    MOV R1,#18;#3
TSR1:
    MOV R0,#107
    DJNZ R0,$
    DJNZ R1,TSR1
    SETB IN;然后拉高数据线
    NOP
    NOP
    NOP
    NOP;12倍
    NOP
    NOP
    NOP
    NOP
    NOP
    NOP
    NOP
    NOP
    NOP
    NOP
    NOP
    NOP
    NOP
    NOP
    NOP
    NOP
    NOP
    NOP
    NOP
    NOP
    NOP
    NOP
    NOP
    NOP
    NOP
    NOP
    NOP
    NOP
    NOP
    NOP
    NOP
    NOP
    NOP
    NOP
    NOP
    MOV R0,#0DEH;#25H
TSR2:
    JNB IN,TSR3;等待DS18B20回应
    DJNZ R0,TSR2
    LJMP TSR4 ; 延时
TSR3:
    SETB FLAG1 ; 置标志位,表示DS1820存在
    LJMP TSR5
TSR4:
    CLR FLAG1 ; 清标志位,表示DS1820不存在
    LJMP TSR7
TSR5:
    MOV R7,#6
TSR6:
    MOV R0,#117
    DJNZ R0,$ ; 时序要求延时一段时间 */
    DJNZ R7,TSR6 ; 时序要求延时一段时间 */
TSR7:
    SETB IN
    RET

GetTemperature:  
DS1820PRO:
    ;这里通过调用显示子程序实现延时一段时间,等待AD转换结束,12位的话750微秒
    SETB IN
    LCALL INIT_1820;先复位DS18B20
    JB FLAG1,TSS2
    jmp BCD33 ; 判断DS1820是否存在?若DS18B20不存在则返回
TSS2:
    MOV A,#0CCH         ; 跳过ROM匹配
    LCALL WRITE_1820
    MOV A,#44H                 ; 发出温度转换命令
    LCALL WRITE_1820
    CALL  DL1MS
    SETB IN
    LCALL INIT_1820        ;准备读温度前先复位
    MOV A,#0CCH         ; 跳过ROM匹配
    LCALL WRITE_1820
    MOV A,#0BEH         ; 发出读温度命令
    LCALL WRITE_1820
    LCALL READ_18200; 将读出的温度数据保存到35H/36H
      

BCD33:
    JB FLAG1,BCD44
        mov R6, #080H
    mov R7,#00H
    JMP TORET
      
BCD44:

          ;温度转换程序:精确到:0.06 ;
          ; 小数温度查表获取。
          MOV        DPTR,#TABB
    MOV A, TTL
          ANL A,#0FH
          MOVC A,@A+DPTR
          MOV R3, A;
          ; 整数温度转换
          MOV A,TTL
    MOV B,TTL-1
    MOV C,B.0
    RRC A
    MOV C,B.1
    RRC A
    MOV C,B.2
    RRC A
    MOV C,B.3
    RRC A
          ; 拼接整数位和小数位温度  整数*100 + 小数位值
          MOV B, #100
          MUL AB
    MOV        R4,B         ;保存积的高8位
    ADD        A,R3         ;
    MOV        R7,A
    CLR        A
    ADDC A,R4         ;加上进位,
    MOV        R6,A      


TORET:
    RET
      
      
;--------------------------------写DS18B20的子程序(有具体的时序要求)
WRITE_1820:
    MOV R2,#8;一共8位数据
    CLR C
WR1:
    CLR IN
    MOV R3,#36;#6
    DJNZ R3,$
    RRC A
    MOV IN,C
    MOV R3,#192;#23
    DJNZ R3,$
    SETB IN
    NOP
    NOP
    NOP
    NOP
    NOP
    NOP
    NOP
    NOP
    NOP
    NOP
    NOP
    NOP
    DJNZ R2,WR1
    SETB IN
    RET

;-----------------------------读DS18B20的程序,从DS18B20中读出两个字节的温度数据
READ_18200:
    MOV R4,#2 ; 将温度高位和低位从DS18B20中读出
    MOV R1,#TTL ; 低位存入29H(TEMPER_L),高位存入28H(TEMPER_H)
RE00:
    MOV R2,#8;数据一共有8位
RE01:
    CLR C
    SETB IN
    NOP
    NOP
    NOP
    NOP
    NOP
    NOP
    NOP
    NOP
    NOP
    NOP
    NOP
    NOP
    NOP
    NOP
    NOP
    NOP
    NOP
    NOP
    NOP
    NOP
    NOP
    NOP
    NOP
    NOP
    NOP
    NOP
    CLR IN
    NOP
    NOP
    NOP
    NOP
    NOP
    NOP
    NOP
    NOP
    NOP
    NOP
    NOP
    NOP
    NOP
    NOP
    NOP
    NOP
    NOP
    NOP
    NOP
    NOP
    NOP
    NOP
    NOP
    NOP
    NOP
    NOP
    NOP
    NOP
    NOP
    NOP
    NOP
    NOP
    NOP
    NOP
    NOP
    NOP
    NOP
    NOP
    NOP
    SETB IN
    MOV R3,#54;#9
RE10:
    DJNZ R3,RE10
    MOV C,IN
    MOV R3,#138;#23
RE20:
    DJNZ R3,RE20
    RRC A
    DJNZ R2,RE01
    MOV @R1,A
    DEC R1
    DJNZ R4,RE00
    RET

DL1MS:
        MOV R7,#6
DL1MS2:
    MOV R6,#255
         DJNZ R6,$
         DJNZ R7,DL1MS2
    RET
      
TABB:   
        ; 小数位温度0~F的查表值,18B20的最小温控精度 0.0625, 只保留两位小数
        DB        00H, 06H, 0CH, 12H, 19H, 1FH, 25H, 2BH, 32H  
        DB  56H, 3EH, 44H, 4BH, 51H, 57H, 5DH
      

END
回复

使用道具 举报

3

主题

89

回帖

272

积分

白银会员

Rank: 3Rank: 3

积分
272
 楼主| 发表于 2012-8-10 01:35:36 | 显示全部楼层 来自: 中国上海
  贴多了
回复

使用道具 举报

7

主题

85

回帖

194

积分

黄铜会员

Rank: 2

积分
194
发表于 2012-8-10 08:10:29 | 显示全部楼层 来自: 中国辽宁营口
弄点通俗易懂的行吗   看了半天一点没看明白
老张
回复

使用道具 举报

54

主题

1804

回帖

4466

积分

钻石会员

Rank: 15Rank: 15Rank: 15Rank: 15Rank: 15

积分
4466

8周年纪念勋章积极发帖积极发帖

发表于 2012-8-10 08:59:55 来自手机 | 显示全部楼层 来自: 中国上海
本来想看看 看到最后 晕了。。。。。楼主厉害
回复

使用道具 举报

60

主题

800

回帖

1946

积分

铂金会员

Rank: 5Rank: 5

积分
1946
发表于 2012-8-10 15:37:42 | 显示全部楼层 来自: 中国台湾
没完成?没结论啊
回复

使用道具 举报

9

主题

136

回帖

295

积分

白银会员

Rank: 3Rank: 3

积分
295
发表于 2012-8-11 12:01:49 | 显示全部楼层 来自: 中国山东青岛
真的 不错
回复

使用道具 举报

发表于 2012-8-11 17:28:05 | 显示全部楼层 来自: 中国北京
强悍,全套自己DIY真是羡慕,继续关注
回复

使用道具 举报

16

主题

660

回帖

1372

积分

铂金会员

Rank: 5Rank: 5

积分
1372
QQ
发表于 2012-8-14 15:14:39 | 显示全部楼层 来自: 中国重庆
楼主的DIY水平 真是佩服  不过复杂的C语言 看着真是头疼
我轻轻地来 正如我轻轻地走:挥一挥匕首 不留一个活口。
回复

使用道具 举报

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

本版积分规则

QQ|Archiver|手机版|小黑屋|海友网CMF ( 琼ICP备12003277号 )

GMT+8, 2026-5-3 21:56 , Processed in 0.218905 second(s), 20 queries .

Powered by Discuz! X3.4

© 2001-2023 Discuz! Team.

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