单片机智能温度计设计 第6页
单片机智能温度计设计 第6页
3 智能温度计的流程图
在软件设计上,采用了良好的人机交互环境,可通过选择功能热键执行特定的程序,如任意设定检测参数值,选择显示方式和控制模式等,还可设置优先权直接进行人为干预以便达到灵活控制的目的,如果某一检测通道被键设置成关闭,那么不管此通道外部情况如何,系统均不作任何反应。
为了提高系统的抗干扰能力,除硬件上采取了相应的措施外,在软件设计中也采取了若干措施,如在数据采集时采用数字滤波;采取指令冗余设计,在程序中适当地插入空操作指令,对一些重要的指令重写等等。从而有效地提高了系统运行的可靠性,使其检测控制工作及时准确、安全稳定,达到良好的环境模拟控制性能要求。
图9是智能温度计的流程图。因为智能温度计的控制和计算相对简单,由该流程方框图可见,该主程序是循环线性结构。在初始化时,清除内部RAM,设定标志位和标志单元,设置堆栈指针,检测LED显示器工作是否正常等。
它主要包括了下述一些子程序:
(1)从A/D转换器MC14433读取温度数字电压子程序:查询A/D转换状态,一旦本次A/D转换结束,CPU将温度电压的BCD码数字值送到RAM中的输入缓冲区存放。
(2)温度电压数字值到温度数字转换子程序;将缓冲区中的温度电压数字BCD码转换为实际的温度十进制数字。
(3)温度数字到LED显示段码转换子程序:把温度十进制数字转换成相应的LED显示段码,存放在显示段码缓冲区供LED显示器显示传送子程序
(4) LED显示段码到LED显示器显示传送和动态扫描子程序
(5) BCD码加,减,乘,除子程序;
(6) BCD码在缓冲器间传送子程序;
开始
CPU 初始化,设堆栈指针,清除RAM缓冲区,初始化LED显示器,显示8888一秒,调用MC14433的A/D转换程序,对温度进行采样,送LED显示器,显示当前温度
调用MC14433的A/D转换子程序,将温度的电压数字值存放到内部A/D输入数据缓冲区
调用A/D输入数字值到数字温度转换子程序,将数字温度电压值转换为其相应的温度数字,存放到数字温度的缓冲区
调用送LED显示器显示子程序,将数字温度缓冲区的内容变换为相应的LED显示段码,然后调用动态扫描子程序,将段码送LED显示器显示
(7) 其它专用子程序;
图 9 智能温度计的流程图若
4 系统主程序
系统主程序:
ORG 0000H
LJMP MAIN
ORG 0013H
LJMP SUB
ORG 0100H
MAIN: MOV SP,#40H
MOV A,#78H
MOV R7,#09H
MOVX A,@DPTR
MOV R0,A
CLR C
SUBB A,#34H
JNC LOOP1
CLR C
MOV A,R0
SUBB A,#3AH
JC LOOP
MOV A,R0
ACALL TEMP
LOOP:MOV DPTR,#EF00H
MOV R1,#0F8H
MOV A,#33H
MOVX @R1,A
MOV A,R0
MOVC A,@A+DPTR
DEC R1 www.751com.cn
MOVX @R1,A
MOVX @R1,A
INC R0
MOV A,R2
CLR C
RRC A
MOV R2,A
MOV A,#00H
MOV DPTR,#00F8H
MOVX @DPTR,A
AJMP GO
LOOP1: MOV P1,#8FH
AJMP GO
LOOP2: MOV P1,#0BFH
GO : POP DPH
POP DPL
POP ACC
POP PSW
RETI
END
TEMP: MOV DPTR,TABLE
MOV A,R0
MOV B,#04H
CLR C
MUL AB
JNC NOO
INC DPH
NOO: MOVC A,@A+DPTR
MOV 80H,A
INC DPTR
MOVC A,@DPTR
MOV 81H,A
AJMP LOOP
ORG 0300H
TAB: DB 3FH 06H 5BH 4FH 66H 6DH 7DH 07H 7FH 6FH 77H 83H
MAIN:MOV 20H,#0
MOV 21H,#0
MOV R0,#3CH
MOV R1,#12
LCALL CLEAR
SETB PT0
ML2: NOP
NOP
NOP
MOV A,P1
CJNE A,#0FBH,ML3
AJMP MAIN
ML3: MOV A,PIN1
INC A
SUBB A,PIN3
CJNE A,#0,ML4
AJMP TEST0
ML4: JC TEST0
JNB E1,TEST0
AJMP COMPP
TEST0:MOV PIN3,#0
MOV A,P1
CJNE A,#0FDH,TEST
AJMP EXIT
TEST:MOV A,P1
CJNE A,#0FFH,TEST1
EXIT:MOV R0,#79H
MOV R1,#50H
HEX: ACALL HEXASC
MOV R2,#6
MOV R0,#5AH
ACALL INI
CLR FLAG3
SJMP HERE
COMPP:AJMP COMP
SECOO:JNB P1.5,SSECO
AJMP SECO
SSECO:AJMP SEC
MINII:JNB P1.5,MMINI
AJMP MINI
MMINI:AJMP MIN
HOURR:JNB P1.5,HHOUR
AJMP HOUR
HHOUR:AJMP HOU
TEST1:JNB P1.0,SETT
TEST2:SETB EA
JNB P1.4,EXIT
JNB P1.5,DEAL
AJMP TEST
SETT:CLR EA
MOV C,P1.4
MOV F0,C
JNB P1.1,SECOO
JNB P1.2,MINII
JNB P1.3,HOURR
AJMP TEST2
DEAL:SETB E1
JNB P1.4,OVER
MOV R0,#49H
MOV R1,#6
ACALL CLEAR
MOV B,#3
MOV A,PIN1
MUL AB
ADD A,R4
MOV PIN,A
MOV A,PIN1
CJNE A,#4,AAA
MOV PIN1,#0
MOV PIN2,#3EH
MOV PIN,#3CH
AAA: JNB P1.4,OVER
JNB P1.1,SECOO
JNB P1.2,MINII
JNB P1.3,HOURR
AJMP AAA
OVER:SETB E2
INC PIN1
MOV R2,#6
MOV R0,#3AH
MOV R1,PIN1
ACALL INI
MOV R0,#49H
MOV R2,#3
上一页 [1] [2] [3] [4] [5] [6] [7] [8] [9] 下一页