单片机智能温度计设计 第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] 下一页

Copyright © 2007-2012 www.chuibin.com 六维论文网 版权所有