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

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

📁 C语言的
💻 TXT
📖 第 1 页 / 共 2 页
字号:
                     DIV  AB 
                     MOV @R1,A                ;存十位数 
                     DEC R1 
                     XCH A,B 
                     MOV @R1,A                ;存个位数 
                     DEC R0 
                     MOV A,@R0                ;取有效小数 
                    MOV B,#10 
                     DIV  AB 
                     DEC R1 
                     MOV @R1,A                ;送小数到显示缓冲区 
                     MOV A,B 
                     CJNE A,#5,QQ             ;小数四舍五入 
            QQ:     JC PP 
                    MOV A,@R1 
                    ADD A,#01H 
                    DA  A 
                    MOV @R1,A 
            PP:     RET 
            ;********************************************************** 
            SMAP:   MOV R0,#2CH                  ; [采样子程序] 
                    MOV R1,#03H             ;采样次数 
            SAM1:   MOV DPTR,#7FF8H 
                    MOVX @DPTR,A            ;启动A/D                     
                    MOV R2,#20H 
            DLY:   DJNZ R2,DLY                 ;延时一小会 
            HERE:  JB P3.3,HERE 
             MOV DPTR,#7FF8H 
                   MOVX A,@DPTR           ;读取转化结果 
                   MOV @R0,A 
            INC R0 
                     DJNZ R1,SAM1 
                     RET 
            ;********************************************************** 
            FILTER:  MOV A,2CH                    ;[数字虑波子程序] 
                     CJNE A,2DH,CMP1 
                     AJMP CMP2 
            CMP1:   JNC CMP2 
                    XCH A,2DH 
                    XCH A,2CH 
            CMP2:   MOV A,2DH 
                   CJNE A,2EH,CMP3 
                    MOV 2AH,A 
                    AJMP RR 
            CMP3:  JC CMP4 
                   MOV 2AH,A 
                   AJMP RR 
            CMP4:  MOV A,2EH 
                   CJNE A,2CH,CMP5 
                 MOV 2AH,A 
                   AJMP RR 
            CMP5:  JC CMP6 
                    XCH A,2CH 
            CMP6:   MOV 2AH,A 
                    RR:              RET 
            ;********************************************************** 
            PTT1:  CLR 00H                     ;[T1中断子程序] 
                   JB 20H,GGG 
                   SETB P1.0                   ;关闭电炉 
            GG:    CLR PT1 
             RETI 
            GGG:   SETB P1.1                   ;关闭风扇 
                   CLR 20H 
                   AJMP GG 
            ;********************************************************** 
            DLY10MS:   MOV R7,#0A0H            ;[延时10毫秒子程序] 
            DL00:      MOV R6,#0FFH 
            DL11:      DJNZ R6,DL11 
                 DJNZ R7,DL00 
                   RET 
            ;**********************************************************     
            PID:  MOV R5,#00H           [PID算法子程序] 
                   MOV R4,2DH         ;取Nx值 
                   MOV R3,#00H 
                   MOV R2,#28H    ;取40度值 
                   LCALL CPL1 
                   LCALL DSUM      ;求(Nx-28H)的值 
                   MOV R0,#5AH ;赋乘法运算暂存单元地址首址 
                   MOV R5,#05H 
                   MOV R4,#1CH     ;赋参数(5.12) 
                   LCALL MULT      ;调无符号数乘法 
                   MOV 31H,5BH 
                   MOV 32H,5AH    ;存放结果的有效值 
                   MOV R5,31H 
                   MOV R4,32H        ;取双字节的Ur(设定值) 
                   MOV R3,2AH 
                   MOV R2,#00H     ;取双字节的Ui(k)(实测值) 
                   ACALL CPL1       ;取Ui(k)的补码 
                   ACALL DSUM              ;计算E(k) 
                   MOV 39H,R7 
                   MOV 3AH,R6              ;存E(K) 
                   MOV R5,35H 
                   MOV R4,36H              ;取KI参数 
                   MOV R0,#4AH 
                   ACALL MULT1             ;计算PI=KI*E(K) 
                   MOV R5,39H 
                   MOV R4,3AH              ;取E(K) 
                   MOV R3,3BH 
                   MOV R2,3CH              ;取E(K-1) 
                   ACALL CPL1 
                   ACALL DSUM              ;求E(K)-E(K-1) 
                   MOV R5,33H 
                   MOV R4,34H               ;取Kp参数 
                   MOV R0,#46H 
                   ACALL MULT1             ;求Kp*[E(K)-E(K-1)] 
                   MOV R5,49H 
                   MOV R4,48H 
                   MOV R3,4DH 
                   MOV R2,4CH 
                   ACALL DSUM              ;求Kp*[E(K)-E(K-1)]+KI*E(K) 
                   MOV 4AH,R7 
                   MOV 4BH,R6              ;保存上式之和 
                   MOV R5,39H 
                   MOV R4,3AH              ;取E(K) 
                   MOV R3,3DH 
                   MOV R2,3EH              ;取E(K-2) 
                   ACALL DSUM                ;计算E(K)+E(K-2) 
                   MOV A,R7 
                   MOV R5,A 
                   MOV A,R6 
                   MOV R4,A 
                   MOV R3,3BH 
                   MOV R2,3CH              ;取E(k-1) 
                   ACALL CPL1 
                   ACALL DSUM      ;求出E(K)+E(K-2)-2*E(K-1) 
                   MOV A,R7 
                   MOV R5,A 
                   MOV A,R6 
                   MOV R4,A 
                   MOV R3,3BH 
                   MOV R2,3CH 
                   ACALL CPL1 
                   ACALL DSUM 
                   MOV R5,37H 
                   MOV R4,38H     ;取Kd参数 
                   MOV R0,#46H 
                   ACALL MULT1    ;求出Pd=Kd*[E(K)+E(K-2)-2*E(K-1)] 
                   MOV R5,49H 
                   MOV R4,48H     ;取Pd 
                   MOV R3,4AH     
                   MOV R2,4BH     ;取Kp*[E(K)-E(K-1)]+KI*E(K) 
                   ACALL DSUM      ;计算Pd+PI 
                   MOV A,R7 
                   MOV R3,A 
                   MOV A,R6                 ;取Pd+PI 
                   MOV R2,A 
                   MOV R5,2FH 
                   MOV R4,30H             ;取P(k-1) 
                   ACALL DSUM      ;求P(K)=Pd+Pp+P(K-1) 
                   MOV 2FH,R7 
                   MOV 30H,R6     ;存P(k)到P(k-1) 
                   MOV 29H,2FH 
                   MOV 3DH,3BH 
                   MOV 3EH,3CH    ;存E(K-1)到E(K-2) 
                   MOV 3BH,39H 
                   MOV 3CH,3AH    ;存E(K)到E(k-1) 
                   MOV A,31H         ;取设定值 
                   CJNE A,2AH,AA2 ;比较设定值与实测值 
             AA3: CLR 20H       ;清电炉标志 
             AA1:  RET 
             AA2:  JNC AA3 
                   SETB 20H      ;清风扇标志位 
                   MOV R3,39H 
             MOV R2,3AH 
             LCALL CPL1 
             MOV A,R3 
             MOV R7,A 
             MOV A,R2 
             MOV R6,A 
                   MOV R5,42H 
                   MOV R4,43H     ;取K(风扇)参数 
                   MOV R0,#5AH 
                   ACALL MULI1   ; 计算P`=K*E(K),且结果防在51H,50H单元中 
                   MOV 28H,5BH    ;取8位有效值,放到28H单元中 
                   AJMP AA1 
            ;**********************************************************
             DSUM:  MOV A,R4   ;[双字节加法子程序]:(R5R4)+(R3R2)-->(R7R6)
                    ADD A,R2 
                   MOV R6,A 
                   MOV A,R5 
                   ADDC A,R3 
                   MOV R7,A 
                   RET 
            ;********************************************************** 
            CPL1:   MOV A,R2    ;[双字节求补子程序]:(R3R2)求补 
                   CPL A 
                   ADD A,#01H 
                   MOV R2,A    
                   MOV A,R3 
                   CPL A 
                   ADDC A,#00H 
                   MOV R3,A 
                   RET 
            ;********************************************************** 
             MULT1:  MOV A,R7    ;[双字节有符号数乘法]:被乘数(R7R6),乘数(R5R4)
                     RLC A 
                     MOV 5CH,C   ;被乘数符号C1-->5CH位 
                     JNC POS1    ;为正数则转 
                     MOV A,R6    ;为负数则求补 
                     CPL A 
                     ADD A,#01H 
                     MOV R6,A 
                     MOV A,R7 
                     CPL A 
                     ADDC A,#00H 
                     MOV R7,A 
            POS1: MOV A,R5    ;取乘数 
                   RLC A      ;乘数符号C2-->5DH位 
                   MOV 5DH,C 
                   JNC POS2    ;为正数则转 
                   MOV A,R4 
                   CPL A 
                   ADD A,#01H 
                   MOV R4,A 
                   MOV A,R5 
                   CPL A 
                   ADDC A,#00H 
                   MOV R5,A 
            POS2:  ACALL MULT      ;调双字节无符号数乘法子程序 
                   MOV C,5CH 
                   ANL C,5DH 
                   JC TPL               ;负负相乘则转 
                   MOV C,5CH 
                   ORL C,5DH 
                   JNC TPL     ;正正相乘则转 
                   DEC R0 
                   MOV A,@R0 
                   CPL A 
                   ADD A,#01H 
                   MOV @R0,A 
                   INC R0 
                   MOV A,@R0 
                   CPL A 
                   ADDC A,#00H 
                   MOV @R0,A 
            TPL:  RET 
            ;********************************************************** 
            MULT:  MOV A,R6    ;被乘数(R7R6),乘数(R5R4)
                   MOV B,R4    ;取低位相乘 
                   MUL AB 
                   MOV @R0,A 
                   MOV R3,B 
                   MOV A,R4 
                   MOV B,R7 
                   MUL AB 
                   ADD A,R3 
                   MOV R3,A 
                   MOV A,B 
                   ADDC A,#00H 
                   MOV R2,A
                   MOV A,R6 
                   MOV B,R5 
                   MUL AB 
                   ADD A,R3 
                   INC R0 
                   MOV @R0,A 
                   CLR 5BH 
                   MOV A,R2 
                   ADDC A,B 
                   MOV R2,A 
                   JNC LAST 
                   SETB 5BH    ;置进位标志 
            LAST:  MOV A,R7 
                   MOV B,R5 
                   MUL AB 
                   ADD A,R2 
                   INC R0 
                   MOV @R0,A   ;存积的第二字节 
                   MOV A,B 
                   ADDC A,#00H 
                   MOV C,5BH 
                   ADDC A,#00H 
                   INC R0      
                   MOV @R0,A             
                   RET 
                   END 
              
            5、系统调试 
                首先进行硬件调试。硬件调试指对扩展数据存储器(RAM)、程序存储器
            (ROM)、I/O口与I/O设备、译码电路、晶振与复位电路等的测试。RAM测试采用
            写入读出加比较的方法检测;ROM测试采用累加和的方法检测;I/O测试通过观测
            输入与输出数据来完成;译码器通过运行循环检测程序来检验;观察晶振、复位
            电路能否产生所需信号以确定其工作是否正常。 
                 利用SICE将本系统调试成功后,本系统即可正常工作。为了使其成为产品,
            还需要生产出正规的芯片,并设计美观实用的外壳,将其组装、检验和装箱,至
            此,温度控制芯片研制完成。 
                
             参考文献: 
            【1】孙育才. MCS-51系列单片微型计算机及其应用.南京:南京工学院出版
            社.1987.2~180. 
            【2】李永敏.数字化测试技术-模拟信号调理,数据转换及采集技术.北京:航空
            工业出版社.1987.32~161. 
            【3】 赵不贿.在系统可编程器件与开发技术[M].北京:机械工业出版社,2001. 
            【4】 张洪润,蓝清华.单片机应用技术教程[M] .北京:清华大学出版社,1997. 
            【5】 张毅刚等编. MCS-51单片机应用设计.哈尔滨工业大学出版社,1993 
            【6】 沙占友.新编数字化测量技术[M].北京:国防工业出版社,1998. 
            【7】 张俊谟编著.单片机中级教程原理与应用. 北京航空航天大学出版出社,
            2000.6 
            【8】 潘新民 微型计算机控制技术 高等教育出版
             

⌨️ 快捷键说明

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