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

📄 单片机在温度控制中的应用.txt

📁 C语言的
💻 TXT
📖 第 1 页 / 共 2 页
字号:
单片机在温度控制中的应用  您要打印的文件是:单片机在温度控制中的应用  打印本文


      单片机在温度控制中的应用

      作者:张伟玲 邢金萍 崔慧霞    转贴自:本站原创    点击数:9436


                摘要:本文列举了单片机在热处理炉中的一个实际应用,对温度控制模块的
            组成及主要所选器件进行了详细的介绍。 
                关键词:单片机;控制;温度 
                一、 前言 
                单片微型计算机是随着超大规模集成电路技术的发展而诞生的,由于它具有
            体积小、功能强、性价比高等特点,把单片机应用于温度控制中,采用单片机做
            主控单元,无触点控制,可完成对温度的采集和控制的要求。所以广泛应用于电
            子仪表、家用电器、节能装置、机器人、工业控制等诸多领域,使产品小型化、
            智能化,既提高了产品的功能和质量,又降低了成本,简化了设计。本文主要介
            绍单片机在温度控制中的应用。   
                二、单片机用于温度控制的设计 
                1.确定系统功能与性能 
                本系统的功能主要有数据采集、数据处理、输出控制。能对0~1000 ºc范围内
            的各种电加热炉的温度进行精密测量,同时,四位LED显示器直接跟踪显示被控对
            象的温度值,准确度高,显示清晰,稳定可靠,使用方便(在具体设计编程、调
            试过程中,为了调试方便,编程把温度范围设在0~100 ºc)。 
                本系统的原理框图如下图所示。数据采集部分能完成对被测信号的采样,显
            示分辨率0.1ºc,测量精度0.1ºc,控制精度0.1ºc,可以实现采集信号的放大及A/D
            转换,并自动进行零漂校正,同时按设定值、所测温度值、温度变化速率,自动
            进行FID参数自整定和运算,并输出0~10mA控制电流,配以主回路实现温度的控
            制。数据处理分为预处理、功能性处理、抗干扰等子功能。输出控制部分主要是
            数码管显示控制。

             
                  2. 确定系统基本结构及硬件设计 
                本单片机应用系统结构是以单片机为核心外部扩展相关电路的形式。确定了
            系统中的单片机、存储器分配及输入/输出方式就可大体确定出单片机应用系统的
            基本组成。 
                1)单片机选用MCS-51系统的8031  
                首选8031的理由是:价格便宜,有开发环境。 
                2) 存储器   
                程序存储器选用集成度高、价格便宜的EPROM,型号是2764。 
                3) I/O接口  
                选用1片可编程的并行I/O接口8155用作键盘显示器的接口,1片UL2003用作
            LED数码显示器的接口电路。 
                4) 总线驱动器   因考虑到此系统外部扩展的器件较多,负载过重,所以要 
            考虑设计总线驱动器。P0口使用了双向数据总线驱动器75LS245。 
               5) 抗干扰电路 
                针对可能出现的各种干扰,设计抗干扰电路。抗干扰电路就是在系统的弱电 
            路部分(以单片机为核心)的电源入口处对地跨接1个大电容(100µf左右)与1个 
            小电容(0.1µf左右),在系统内部各芯片的电源端对地跨接1个小电容(0.01µf~0.1µf)。 
               6) A/D转换器 
               被采样的模拟信号经放大后进入A/D转换器,选用的A/D转换器是AD574A。 
               3、原理图的设计、诊断与检查 
               原理图的设计要符合以下几点要求: 
               1) 原理图设计要符合项目的工作原理,连线要正确。 
               2) 图中所使用的元器件要合理选用,电阻,电容等器件的参数要正确标明。 
               3) 原理图要完整,CPU,外围器件,扩展接口,输入/输出装置要一应俱全。 
                原理图的设计、诊断与检查在protel 99 SE软件环境下完成。 
                工作流程是:当由传感器(由电阻来实现)传来模拟信号,经放大电路放大
            之后,送到AD574A A/D转换器,转换为数字信号。此信号经两个带输出三态门的
            8D锁存器74LS245送到8031里,由8031发出的控制信号经总线驱动器74LS245后分
            别送到EPROM2764、键盘显示接口8155。程序指令由EPROM2764送到8031。经8155
            输出的信号送到LED数码显示器接口电路UL2003,再送到数码显示器显示。

                 原理图如下: 

                系统设计完成后,进入印制板制作、器件焊接及软件编程阶段。在印制板设 
            计时,要仔细考虑印制板的面积、布局及连线长度,以减小对信号的延时和串 
            扰。对加工好的印制板还要进行仔细的检查,最后将器件、插座及元件等逐一焊 
            接在印制板上。                                                              
                                                                                 
                   
               4、程序调计

               1) 根据要求,将总体项能分解成若干个子功能模块,每个功能模块完成一个
            特定的功能。

               2)根据总体要求及分解的功能模块,确定各功能模块之间的关系,设计出完
            整的程序流程图。

               3) 程序调试将设计完的程序输入,汇编,排除语法错误,生成*OBJ文件。

               a. 按所设计的原理图,在实验平台上连线,检查无误。

               b. 将汇编后生成的*OBJ文件传送到实验装置,执行该程序,检查该程序、是
            否达到设计要求,若未达到,修改程序,直到达到要求为止。 
               程序说明:此文档是该系统操作运行的所有程序,所提供的程序均在DICE-51 
            单片仿真机上调试仿真,并已经全部通过。 
               源程序: 
                          ORG  0000H 
                          AJMP MAIN 
                          ORG 0003H 
                          AJMP KEYS 
                          ORG  000BH 
                          AJMP  PTT0 
                          ORG  001BH 
                          AJMP  PTT1            ;中断入口及优先级 
              MAIN:      MOV SP,#60H 
                         CLR 5EH 
                         CLR 5FH                  ;清上、下限越限标志 
                         MOV A,#00H 
                         MOV  R7,#09H 
                         MOV  R0,#28H 
              LP1:       MOV @R0,A 
                         INC  R0 
                         DJNZ R7,LP1 
                         MOV  R7,#06H 
                         MOV  R0,#39H 
             LP2:        MOV  @R0,A 
                         INC  R0 
                         DJNZ R7,LP2             ;清变量暂存单元 
                         MOV R7,#06H 
                         MOV R0,#50H 
              LP3:       MOV @R0,A 
                         INC R0 
                         DJNZ R7,LP3             ;清显示缓冲区 
                       MOV 33H,#00H 
                       MOV 34H,#00H           ;赋Kp高、低字节 
                       MOV 35H,#00H 
                       MOV 36H,#00H           ;赋Ki高、低字节 
                       MOV 37H,#00H 
                       MOV 38H,#00H           ;赋Kd高、低字节 
                       MOV 42H,#00H 
                       MOV 43H,#00H            ;赋K高、低字节(风扇参数) 
                       MOV TMOD,#56H          ;T0方式2,T1方式1计数 
                       MOV TL0,#06H 
                       MOV TH0,#06H           ;T0赋初值 
                       MOV 25H,#28H           ;设定值默认为40摄氏度 
                             SETB TR0         ;键盘高优先级 
                             SETB ET0 
                             SETB EX0 
                             SETB EA          ;开键盘、T0、T1中断 
            LOOP:     MOV R0,#56H 
                      MOV R1,#55H 
                      LCALL SCACOV          ;调用标度转化-BCD转化子程序 
                      MOV R0,#53H                
                      LCALL DIR 
                     NOP 
                     LCALL DLY10MS 
                     NOP 
                     LCALL DLY10MS 
                     AJMP  LOOP  ;等待中断,循环显示当前温度                            
              
            ;********************************************************** 
              KEYS:         CLR EX0               ;[键盘子程序] 
                            CLR EA 
                            PUSH PSW 
                            PUSH ACC                ;关中断,压栈 
                            LCALL   DLY10MS         ;消抖 
                CC:        JB P3.2,AA 
                           SETB 5DH             ;置“显示设定温度”标志 
                           MOV A,25H      ;取运算位的值(默认为40度) 
                           MOV B,#10      ;进行BCD码转化 
                          DIV AB 
                          MOV 52H,A 
                          MOV A,B 
                          MOV 51H,A 
                          MOV R0,#50H 
                          LCALL DIR               ;显示设定温度 
                         NOP 
                       LCALL DLY10MS 
                       NOP 
                       LCALL DLY10MS 
                       JB P1.7,BB 
                       MOV R1,#25H 
                       LCALL DAAD1             ;加一操作 
                     NOP 
                     LCALL DLY10MS 
                            AJMP CC 
              BB:     JB P1.6,CC 
                      MOV R1,#25H 
                      LCALL DEEC1             ;减一操作 
                     NOP 
                     LCALL DLY10MS 
                     AJMP CC 
              AA:   POP ACC                
                    POP PSW 
                    SETB EX0 
                    SETB EA                 ;出栈,开中断 
                    RETI 
            ;************************************显示子程序] 
            DIR:    MOV SCON,#00H            ;置串行口移位寄存器状态 
                              SETB P1.4             ;开显示 
                              JB 5DH,DL1       ;显示设定温度则转 
            DL2:     MOV DPTR,#SEGT
            DL0:     MOV A,@R0 
                     MOVC A,@A+DPTR 
                     MOV SBUF,A 
            LOOP1:  JNB TI,LOOP1 
                    CLR TI 
                    INC R0 
                    MOV A,@R0 
                    MOVC A,@A+DPTR 
                    ANL A,#7FH      ;使个位带小数点 
                    MOV SBUF,A 
            LOOP2: JNB TI,LOOP2 
                   CLR TI 
                   INC R0 
                   MOV A,@R0 
                   MOVC A,@A+DPTR 
                   MOV SBUF,A 
            LOOP3:  JNB TI,LOOP3 
                    CLR TI 
                    CLR P1.4 
                    CLR 5DH 
                    RET 
            DL1:   MOV 50H,#0AH              ;使小数位黑屏 
                   AJMP DL2 
             SEGT: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H,0FFH 
            ;********************************************************** 
            DAAD1:  MOV A,#00H            ;[加1子程序]          
                    ORL A,@R1 
                    ADD A,#01H 
                    CJNE A,#5AH,DAAD2     ;判断超过90度了吗? 
            DAAD3:  MOV @R1,A 
            DAA:   RET                
            DAAD2: JC DAAD3 
                   MOV @R1,#28H          ;超过90度则回到40度 
               AJMP DAA 
             ;********************************************************* 
            DEEC1:    MOV A,@R1        ;[减1子程序] 
                      DEC A 
                      CJNE A,#28H,DEEC2     ;判断低于40度了吗? 
            DEEC3:  MOV @R1,A 
            DEE:      RET 
            DEEC2:   JNC DEEC3 
                     MOV @R1,#5AH     ;低于40度则回到90度 
                     AJMP DEE 
            ;********************************************************** 
                PTT0:   CLR EA                ;[T0中断子程序] 
                    PUSH ACC 
                    PUSH PSW 
                    PUSH DPL 
                  PUSH DPH 
                    SETB EA               ;压栈后开中断,响应键盘 
            PPP:    LCALL  SMAP               ;采样数据 
                    LCALL  FILTER         ;数字滤波 
                    MOV  A,2AH            ;取采样值 
                    CJNE A,#01H,AAA       ;下限40度比较 
                   AJMP BBB 
            AAA:    JC CCC                 ;小于40度则转移 
                    CJNE A,#0FEH,DDD       ;上限90度比较 
                    AJMP BBB              ;转到40-90度正常范围内处理 
            DDD:   JC  BBB 
                   CLR P1.2              ;大于90度黄灯亮报警 
                   SETB 5EH 
                   CLR P1.1              ; 置标志,启动风扇 
              AJMP  PPP 
            CCC:   CLR P1.3                  ;小于40度绿灯亮报警 
                   SETB 5FH 
                   CLR P1.0              ;置标志,启动电炉 
                   AJMP PPP 
            BBB:   SETB P1.0 
                   SETB  P1.1 
                   SETB P1.2 
                   SETB P1.3 
                  CLR 5EH 
                  CLR 5FH               ;40-90度之间则正常 
                  LCALL PID 
                  JB 20H,EEE         ;设定温度< 实际温度,则转到风扇处理 
                  MOV A,29H 
                  ACALL FFF 
                  CLR P1.0 
            LOOP10:  MOV R0,#56H         ;存放相乘结果的首址 
                   MOV R1,#55H       ;赋显示缓冲区最高位地址(十位) 
                     LCALL SCACOV  ;调用“标度转化------二-十进制转化”子程序 
                     MOV R0,#53H         ;赋显示首址 
                     LCALL DIR 
                     JB D5H,LOOP10        ;等待T1中断 
                  CLR EA 
                        POP DPH 
                        POP DPL                    
                    POP PSW 
                       SETB EA 
                      POP ACC 
                        RETI 
            EEE:       MOV A,28H                ;风扇处理 
                       LCALL FFF 
                       CLR P1.1 
                       AJMP LOOP10 
            FFF:      CPL  A                   ;根据PID结果计算T1初值 
                     INC A 
                     MOV TL1,A 
                     MOV TH1,#0FFH 
                     SETB  PI1 
                     SETB TR1 
                   SETB ET1 
                    RET  
            ;**********************************************************              
                      SCACOV:MOV R7,#00H  ;[“标度转化------二-十进制转化”子程序] 
                      MOV R6,2AH               ;取采样值,并转化为双字节 
                      MOV R5,#33H 
                      MOV R4,#24H              ;赋参数(纯小数) 
                      LCALL MULT               ;调用双字节乘法子程序 
                      MOV R5,#00H 
                      MOV R4,#23H              ;赋参数35度 
                      MOV A,@R0 
                      MOV R3,A 
                      DEC R0 
                      MOV A,@R0                ;存乘法结果的整数 
                      MOV R2,A 
                      LCALL DSUM     ;调用加法子程序,且R7,R6为有效值(R7=00H) 
                      MOV A,R6 
                      MOV B,#10 

⌨️ 快捷键说明

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