⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 温控.txt

📁 单片机温度控制系统
💻 TXT
字号:
主程序:
;初始调试程序
org 00h
start:mov R0,#20H ;数据缓冲区首地址
      clr p2.7    ;启动ad
      movx @R0,a
wait:jnb p3.2,adc ;完成就去adc
     jmp wait
adc:movx a,@r0    ;读数
    mov @R0,a   
    mov p1,a      ;显示值到p1灯
    mov R3,#10
D1: mov R4,#248   ;延时5毫秒
    DJNZ R4,$
    DJNZ R3,D1

    JMP start

end
;模数变换及多功能温度开关控制程序
T30 EQU 4BH                  ;30度时转换数据为4BH   
T40 EQU 64H                  ;40度时转换数据为64H 
T50 EQU 7DH                  ;50度时转换数据为7DH
T60 EQU 96H                  ;60度时转换数据为96H

org 0003h                    ;INT0中断地址入口
JMP ADC

org 0100h                    ;初始化程序入口
JMP start

mov 30h,#00h                 ;存入旧温度寄存器的初值

start:mov r0,#20h            ;数据缓冲区首地址
      mov DPTR,#7ff8h        ;指针指向0通道
      movx @DPTR,A           ;启动AD 
      setb IT0               ;边沿触发   
      setb EX0               ;允许外部中断0
      setb EA                ;发放总中断
      ajmp $

ADC:movx A,@DPTR             ;读数据,撤销中断
    mov @r0,a                ;存数据
    mov 31h,@r0
    jnz L1                   ;A不为0就去L1
    ORL P2,#0FFH             ;A为0,P2灯全灭
    MOV R4,#0
    MOV R5,#0
    JMP LED                  ;调用LED显示灯显示 

 L1:MOV A,31H
    CJNE A,30H,L2            ;现在的温度与旧温度值是否相等?
    JMP NEXT

 L2:MOV A,31H                
    SUBB A,#T30              ;A减去T30的温度
    JNC L3                   ;C=0,现在温度较大,跳至L3
    ORL P2,#0FFH             ;比30度小则P2灯全灭

    JMP NEXT

 L3:ANL P2,#0FEH             ;比30度大,P2.0灯亮
    MOV A,31H
    SUBB A,#T40              
    JNC L4
    ORL P2,#0FEH
    JMP NEXT

 L4:ANL P2,#0FCH             ;比40度大,P2.0,P2.1亮
    MOV A,31H
    SUBB A,#T50
    JNC L5
    ORL P2,#0FCH
    JMP NEXT

 L5:ANL P2,#0F8H             ;比50度大,P2.0,P2.1,P2.2亮
    MOV A,31H
    SUBB A,#T60
    JNC L6
    ORL P2,#0F8H
    JMP NEXT

 L6:ANL P2,#0F0H             ;比60度大,P2.0,P2.1,P2.2,P2.3亮

 NEXT:MOV 30H,31H            ;将现在的温度存入旧温度寄存器
 
 DISP:MOV A,31H
      CALL D1                ;调用十进制转换子程序
           

DISP1:CALL LED
      MOV R1,#0FFH           ;显示延时
      DJNZ R1,$
     

      JMP start
      
D1:CLR C
   MOV R5,#00H               ;十进制转换的低位寄存器
   MOV R4,#00H               ;十进制转换的高位寄存器
   MOV R3,#08H               ;作为十进制的调整,调整的次数

CHD:RLC A
    MOV R2,A                  
    MOV A,R5
    ADDC A,R5
    DA A
    MOV R5,A

    MOV A,R4
    ADDC A,R4
    MOV  R4,A
    MOV A,R2
    DJNZ R3,CHD
    MOV R7,#02

D2:MOV A,R5
   ADD A,R5
   DA A
   MOV R5,A
   MOV A,R4
   ADDC A,R4
   DA A
   MOV R4,A
   DJNZ R7,D2                 ;乘4是否完成?                  

   RET

LED:
    MOV A,R5
    ANL A,#0FH                ;取低4位,即A1的值
    ORL A,#80H                ;令A1使能(P1.7=1)
    MOV P1,A                  ;显示A1
    CALL DELAY

    MOV A,R5
    ANL A,#0F0H               ;取高4位,即A2的值
    SWAP A                    ;高4位与低4位交换
    ORL A,#40H                ;令A2使能(P1.6=1)
    MOV P1,A                  ;显示A2
    CALL DELAY

    MOV A,R4                  
    ANL A,#0FH                ;取低4位,即A3的值
    ORL A,#20H                ;令A3使能(P1.5=1)
    MOV P1,A                  ;显示A3
    CALL DELAY

    MOV A,R4                  
    ANL A,#0F0H               ;取高4位,即A4的值                 
    SWAP A                    ;高4位与低4位交换
    ORL A,#10H                ;令A4使能 (P1.4=0)
    MOV P1,A                  ;显示A4
    CALL DELAY
    CLR A
    RET
    
 DELAY: MOV R6,#10            ;5毫秒延时
    T2: MOV R7,#248
        DJNZ R7,$
        DJNZ R6,T2
        RET

 END  
         
                
      

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -