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

📄 新建 文本文档.txt

📁 是一个基于51单片机的温度监控系统设计的源程序
💻 TXT
字号:
本设计使用的单片机程序如下:
         org 0000h
         mov sp,#50h
LOOP1:   MOV 3AH,#01H             ;置路数为1
         mov r0,#30h              ;保存数据区首址给R0
         mov dptr,#7ff0h          ;P2.7=0,指向IN0(第一路)
         mov 3bh,#08h             ;通道总数为8
read:
         movx @dptr,a             ;启动A/D转换
         nop
         nop
         nop
         acall wait               ;等待A/D转换
         movx a,@dptr             ;读转换结果
         mov @r0,a                ;保存转换结果
BIND:    PUSH DPL                 ;取温度值
         PUSH DPH
         MOV DPTR,#0500H
         MOV A,@R0
         MOVC A,@A+DPTR
         MOV 40H,A
BIN2BCD:                        ;二进值码转换BCD码程序
	 MOV R1,#43H
	 MOV 43H,#00H            ;转换前将BCD码清零
	 MOV 44H,#00H
	 MOV R3,#8               ;移动8次,
START:   MOV R1,#43H             ;转换后BCD码地址
       	 MOV A,40H
	 RLC A
	 MOV 40H,A
	 MOV R2,#02H             ;转换后BCD码字节数
BCDCHG:	 MOV A,@R1
	 ADDC A,ACC
	 DA A
	 MOV @R1,A
	 INC R1
	 DJNZ R2,BCDCHG
	 DJNZ R3,START
         pop dpH
         POP DPL
chanf:   mov a,3Ah                ;显示缓冲区地址分配
	 anl a,#0FH
       	 mov 48h,a
         mov a,44h
	 anl a,#0FH
	 mov 4ah,a
         mov a,43h
	 anl a,#0FH
	 mov 4ch,a
         mov a,43h
	 swap a
	 anl a,#0Fh
	 mov 4bh,a
disp:    acall sym                  ;调用判断热电阻是否正常或温度是否超限子程序
         acall zero1                ;调用消隐“0”子程序
         push dpl                   ;显示子程序
         push dph
         mov dptr,#tab              ;取段码表首址
         MOV 28H,#1eH
         MOV 29H,#066H
dsp1:    mov a,48h                  ;显示路数
         movc a,@a+dptr            ;查显示数据对应段码
	 mov p1,a                   ;送段码
	 clr p3.4
	 acall dll
	 setb p3.4
dsp2:    clr c                      ;判断温度是否为负。如是,显示负号
         mov a,@r0
         subb a,#56h
         jc plus
         mov 49h,#0bfh
         ajmp ka
plus:    mov 49h,#0ffh
ka:      mov a,49h
	 mov p1,a
	 clr p3.3
	 acall dll
	 setb p3.3
dsp3:    mov a,4ah              ;显示温度值百位
	 movc a,@a+dptr
	 mov p1,a
	 clr p3.2
	 acall dll
	 setb p3.2
dsp4:    mov a,4bh               ;显示温度值十位
         movc a,@a+dptr
	 mov p1,a
	 clr p3.1
	 acall dll
	 setb p3.1
dsp5:    mov a,4ch               ;显示温度值个位
	 movc a,@a+dptr
         mov p1,a
	 clr p3.0
	 acall dll
	 setb p3.0
         DJNZ 29H,KK1
         MOV 29H,#01H
         DJNZ 28H,KK1             ;延时,时间未到,循环显示该路温度值
         AJMP KK2
KK1:     AJMP DSP1
KK2:     pop dph                  ;时间到,显示下一路
         pop dpl
         inc r0
         inc 3ah
         inc dptr
         djnz 3bh,fturn           ;8路未显示完,显示下一路
         ajmp loop1               ;8路显示完,从第一路开始显示
fturn:   ajmp read
SYM:     mov a,@r0                ;判断热电阻是否正常或温度是否超限子程序
         clr c
         subb a,#1eh
         jnc sym1
         mov 4ah,#0bh             ;热电阻开路或温度超过50度,显示“HHH”
         mov 4bh,#0bh
         mov 4ch,#0bh
         ajmp sym3
sym1:    mov a,@r0
         subb a,#0dbh
         jc sym3
         mov 4ah,#0ch              ;热电阻短路或温度低于-120度,显示“-LLL”
         mov 4bh,#0ch
         mov 4ch,#0ch
sym3:    Ret
zero1:	                           ;消隐“0”子程序
	 mov a,4ah
	 jNz zero2
	 mov 4ah,#0Ah
	 mov a,4bH
         jnz zero2
         mov 4bh,#0ah
zero2:   ret
wait:    mov r4,#03ah        ;等待子程序
         djnz r4,$
         ret
dll:     MOV R7,#015H        ;延时子程序
DL1:     MOV R6,#01aH
DL2:     DJNZ R6,DL2
         DJNZ R7,DL1
	      RET
TAB:     DB 0C0H,0F9H,0A4H,0B0H
         DB 99H,92H,82H,0F8H
         DB 80H,90H,0ffh,89h,0C7h           ;其中0FFH是消隐“0”用
         ORG 051EH
TAB2:
DB32H,31H,30H,2FH,2EH,2DH,2CH,2BH,2AH,29H,28H,28H,27H,26H,25H,24H,23H,22H,21H,20H,1FH,1FH  DB1EH,1DH,1CH,1BH,1AH,19H,18H,17H,16H,15H,14H,14H,13H,12H,11H,10H,0FH,0EH,0DH,0CH,0BH,0AH         DB0AH,09H,08H,07H,06H,05H,04H,03H,02H,02H,01H,0H,01H,02H,03H,04H,05H,06H,07H,08H,09H,09H
DB0AH,0BH,0CH,0DH,0EH,0FH,10H,11H,12H,12H,13H,14H,15H,16H,17H,18H,19H,1AH,1BH,1CH,1DH,1DH
DB1EH,1FH,20H,21H,22H,23H,24H,25H,26H,27H,28H,28H,29H,2AH,2BH,2CH,2DH,2EH,2FH,30H,31H,31H
DB32H,33H,34H,35H,36H,37H,38H,39H,3AH,3AH,3BH,3CH,3DH,3EH,3FH,40H,41H,42H,44H,45H,45H,46h
DB47h,48h,49H,4AH,4BH,4CH,4DH,4DH,4EH,4FH,50H,51H,52H,52H,53H,54H,55H,56H,57H,58H,58H,59H
DB 5AH,5BH,5CH,5DH,5EH,5FH,60H,61H,61H,62H,63H,64H,65H,66H,67H,68H,69H,6AH
DB 6AH,6BH,6CH,6DH,6EH,6EH,6FH,70H,71H,72H,73H,73H,74H,75H,76H,77H,78H
       END

⌨️ 快捷键说明

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