基于单片机的红外测温系统(8)

2019-04-17 15:54

附录三(程序清单)

ORG 0000H ; 0-125度的温度计

[3]

TEMPER_L EQU 41H ;用于保存读出温度的低8位 TEMPER_H EQU 40H ;用于保存读出温度的高8位 FLAG1 EQU 38H ;是否检测到标志位

A_BIT1 EQU 30H ;数码管小数点位数存放内存位置 B_BIT1 EQU 31H ;数码管个位数存放内存位置 C_BIT1 EQU 32H ;数码管十位数存放内存位置

DQ EQU P3.7 ;30H,31H,32H: 小数点位 个位 十位 ORG 0013H AJMP INT1

MOD7: MOV SP,#60H

LCALL A/D ;调用读A/D程序 LCALL TEMPCOV

LCALL DISPLAY ;调用数码管显示子程序 AJMP MOD7 TEMP0: INC A A/D转换子程序[4]

;==========================================================================

A/D:

START: MOV 40H,#00H

MOV R0,#40H

SETB EA ;CUP开中断

SETB EX1 ;外部中断1开中断 SETB DPTR,#0000H ;选通ADC0809 MOV A,#00H

MOVX @DPTR,A AJMP $ 中断服务子程序

;==========================================================================

INT1: PUSH ACC ;保留现场

MOVX A,@DPTR ;产生读信号来读取结果 MOV @R0,A

MOV DPTR,#0000H MOV A,#00H

MOV @DPTR,A ;在此启动A/D转换 POP , ACC

RETI ;中断返回

- 32 -

END

数据处理

;========================================================================== AJMP TEMP1

TEMPCOV: MOV A,TEMPER_L ;A /D转换后数据处理 MOV B,#10H DIV AB

JB B.3,TEMP0

TEMP1: MOV 34H,A ;将TEMPER_L的高四位右移四位,存入34H中(温度值)

MOV A,B ;将TEMPER_L的低四位X10/16得小数后一位数 MOV B,#0AH MUL AB MOV B,#10H DIV AB

MOV 30H,A ;将小数后一位数.存入30H中

MOV A,TEMPER_H ;TEMPER_H中存放高8位数,权重16 MOV B,#10H MUL AB

ADD A,34H ;34H中存入温度值的整数部分 MOV B,#0AH DIV AB

MOV 31H,B ;个位存入31H中 MOV B,#0AH DIV AB

MOV 32H,B ;十位存入32H中 MOV A,TEMPER_H MOV 34H,#10H JB ACC.7,EXIT7 MOV 34H,#00H EXIT7: RET

复位初始化子程序

;========================================================================== INIT_1820:SETB P3.2 NOP

CLR P3.2 ;主机发出延时500微秒的复位低脉冲 MOV R1,#03H TSR1: MOV R0,#6BH DJNZ R0,$ DJNZ R1,TSR1

SETB P3.2 ;然后拉高数据线 NOP

- 33 -

NOP NOP

MOV R0,#25H

TSR2: JNB P3.2,TSR3 ;等待回应 DJNZ R0,TSR2 LJMP TSR4 ;延时

;========================================================================== 显示子程序

;========================================================================== DISPLAY: MOV DPTR,#TAB ;指定查表启始地址 MOV R0,#04H

DPL1: MOV R1,#0FAH ;显示1000次 DPLOP: MOV A,A_BIT1 ;取小数点后位数

MOVC A,@A+DPTR ;查小数点后位数的7段代码 MOV P0,A ;送出小数点后位的7段代码 CLR P2.2 ;开小数点后位显示 ACALL D1MS ;显示1MS SETB P2.2

MOV DPTR,#TAB2 ;个位需要小数点点亮 MOV A,B_BIT1 ;取个位数

MOVC A,@A+DPTR ;查个位数的7段代码 MOV P0,A ;送出个位的7段代码 CLR P2.3 ;开个位显示 ACALL D1MS ;显示1MS SETB P2.3

MOV DPTR,#TAB ;重新为DPTR赋TAB值 MOV A,C_BIT1 ;取十位数

MOVC A,@A+DPTR ;查十位数的7段代码 MOV P0,A ;送出十位的7段代码 CLR P2.4 ;开十位显示 ACALL D1MS ;显示1MS SETB P2.5 MOV P0,#00H

DJNZ R1,DPLOP ;小于100次循环 DJNZ R0,DPL1 ;小于4个100次循环 RET 1MS延时(按12MHZ算)

;========================================================================== D1MS: MOV R7,#0FFH DJNZ R7,$ DJNZ R7,$ RET

;========================================================================== 实验板上的7段数码管0~9数字的共阴显示代码

- 34 -

TAB: DB 3FH, 06H, 5BH, 4FH, 66H, 6DH, 7DH, 07H, 7FH, 6FH

TAB2: DB 0BFH,86H,0DBH,0CFH,0E6H,0EDH,0FDH,87H,0FFH,0EFH END

- 35 -


基于单片机的红外测温系统(8).doc 将本文的Word文档下载到电脑 下载失败或者文档不完整,请联系客服人员解决!

下一篇:大学语文(专)第一次作业(2016)

相关阅读
本类排行
× 注册会员免费下载(下载后可以自由复制和排版)

马上注册会员

注:下载文档有可能“只有目录或者内容不全”等情况,请下载之前注意辨别,如果您已付费且无法下载或内容有问题,请联系我们协助你处理。
微信: QQ: