电子工程设计实验-小型温度控制系统_第1页
电子工程设计实验-小型温度控制系统_第2页
电子工程设计实验-小型温度控制系统_第3页
电子工程设计实验-小型温度控制系统_第4页
电子工程设计实验-小型温度控制系统_第5页
已阅读5页,还剩21页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、小型温度控制系统第18组 电子工程设计报告题目:温度测量系统/闭环温度控制系统设计专业:电子科学与技术小组:第 组姓名学号: 指导教师:高新完成日期:2013年12月16日目录摘 要- 2 -一、功能指标要求3二、单片机设计及调试4三、D/A模块调试6四、A/D模块调试8五、显示电路模块10六、键盘控制电路模块13七、系统调试及程序设计15八、出现的问题分析及解决方法22九、创新性23十、小组成员感想23摘 要随着现代工业技术的迅猛发展,工业上的各种技术指标精度的要求也越来越高,在众多指标中,温度的测量与控制是一个永恒的话题,只有了精确地温度测量,才能把加热和散热的工作做得更好。本课题是小型温

2、度测量与控制系统设计,以单片机AT89C51芯片为核心,和LED数码管显示,数模、模数转换和辅以稳压电源及变送器的测量控制系统,另配有键盘输入控制。本设计详细介绍了LED显示与键盘控制电路的工作原理,硬件电路组成的思路和相应的C语言闭环程序。本设计主要包括以下几个模块:LED显示模块、键盘控制模块。能够对环境温度随时随地检测与显示,并可以在模板上设定相应温度值使系统达到设定温度。【关键词】:LED显示、键盘控制、闭环程序、模板测试。25一、 功能指标要求1. 显示模块:4 位7 段数码显示,设计要求不需要小数点2. 键盘模块:09数字输入键及若干功能设置按键控制 。第1行第5个按键做重置按键,

3、第4行第3个做选中数码管第三位按键,第4行第4个做选中数码管第四位按键,第4行第5个做确定按键。3. AD模块:能对从变送器采集来的模拟信号进行正确的处理,用于获取当前温度信号值。4. DA模块:可以再单片机输入0255的数值的时候能够进行正确的数模转换,并将转换结果送到驱动器之中用于控制系统升温降温。5. 单片机模块:能够正确的处理来自程序和键盘输入的信号并能作出相应的响应。6. 系统整体设计思路:电路设计。核心单元单片机应用电路、模拟量接口A/D、D/A 电路、人机交互单元显示、键盘控制电路程序设计。控制模/数转换进行温度数据采集、控制数/模转换改变控温元件工作状态,进行温度控制、控制键盘

4、与显示器,进行控制温度设定和测量温度显示、将温度数据转换为显示温度数值的算法程序、控制温度精确、平稳变化的的算法程序。系统连调。电路系统联调,配合测试程序实现基本的测温、控温功能、程序联调,通过电路系统实现精确、平稳的温度控制。总体框架图:图NO.1二、 单片机设计及调试1. 8051最小系统:8051也是MCS-51系列单片机早期产品之一,内建一次性可编程只读存储器 ( PROM ) ,只需要很少的外围元件即可组成最小系统。现已有内建 Flash存储器的兼容产品,8051已经被使用上更为方便的AT89C51 等单片机产品所代替。MCS-51系列单片机有众多性能优异的兼容产品、成熟的开发环境、

5、世界上最大的单片机客户群、高性价比、畅通的供货渠道,是初学者的首选机型。2. 8051功能扩展图:单片机为了完成更加复杂的工作必须进行功能扩展。图NO.23. 地址译码电路的设计:I/O端口不需要用地址进行访问定位,但仍然需要片选信号进行访问控制,I/O端口访问控制信号的产生方法包括:全地址译码、部分地址译码、地址信号线直接作为I/O选通信号(直接选择)。全地址译码:全部地址参与译码,产生的控制信号对应唯一地址。部分地址译码:部分地址参与译码,产生的控制信号对应某一地址区域,而不是唯一地址。直接选择:直接使用地址线作为读/写访问控制信号线。4. 部分译码电路设计:74LS138输出状态仅与部分

6、地址信号输入有关。地址信号A0-A7并未使用,A8-A11作为后续二次译码的地址信号。图NO.35. 单片机焊接电路:图NO.4三、 D/A模块调试1. 常用 D/A 电路的特点:基本原理:电流开关型:用数字切换电流开关,产生与电阻网络权电流对应的电流“和”;脉宽调制型:将数字转换为输出脉冲宽度,用积分器将脉冲宽度转换为与之对应的电压输出;输出方式:与数字量成比例的电流输出/与数字量成比例的电压输出/数字量和参考电压的相乘输出;DAC0832:8 位乘算型电流输出的典型产品,具有MCU兼容接口,使用方便,价格低,能满足设计要求。2. DAC0832工作原理:图NO.53. 完整双极输出电流电压

7、转换电路:图NO.64. 实际采用的电路图放大部分:图NO.75. 调试方法:数据为从00FF顺序递增并不断循环的数值。输出端波形如图:图NO.8 实际波形图:图NO.96. 调试程序(DA.c):#include "C8051F020.h"#include "absacc.h"#include "data_define.c"#define C2 XBYTE0x4000 /我们DA用的是cs2#define TIMER 0x8000#include "Init_Device.c"void delay(void);v

8、oid main(void) unsigned char x; Init_Device(); while(1) +x; C2=x; delay(); void delay(void) int i;for(i=0;i<TIMER;+i;四、 A/D模块调试1. 常用A / D电路的特点:基本原理:积分型:将电压转换成脉宽信号或频率,由定时器/计数器获得数字值。优点:分辨率高;缺点:转换速率极低;逐次比较型 :由比较器和DA转换器通过逐次比较逻辑构成,经n次比较而输出数字值。优点:速度较高、功耗低,在<12位分辩率时价格便宜;并行比较型:用多个比较器,仅作一次比较而实行转换。优点:转换

9、速率极高;分辩率高时电路规模大、价格也高,只适用于低分辨率高速场合压频转换型:将模拟信号转换成频率,然后用计数器将频率转换成数字量 ,从理论上讲其分辨率几乎可以无限增加。优点:分辩率高、功耗低、价格低;但是需要外部计数电路共同完成AD转换;ADC0804:8 位逐次比较(逐次逼近)型典型产品,具有MCU 兼容接口,使用方便;分辩率和转换速度都能够满足设计要求,且价格低廉。2. 调试方法:输入信号范围: 0V+5V 改变设置温度,运行A/D测试程序,检查模/数转换结果;在调试台上通过+10按键不断改变温度数值,调试台LED会显示相应温度。3. 焊接电路图:图NO.104. 调试程序(温度.c):

10、#include "C8051F020.h"#include "absacc.h"#include "data_define.c"#define DP1 XBYTE0x0000#define DP2 XBYTE0x0001#define DP3 XBYTE0x0002#define DP4 XBYTE0x0003#define C1 XBYTE0x2000/此处我们用的是CS1#define TIMER 0x8000#include "Init_Device.c"unsigned char data table1=

11、0x50,0xF9,0x4A,0x49,0xE1,0x45,0x44,0xD9,0x40,0x41;unsigned char data table2=0x0C,0xAF,0xC8,0x8A,0x2B,0x1A,0x18,0x8F,0x08,0x0A;unsigned char data table3=0x44,0xF5,0x86,0x85,0x35,0x0D,0x0C,0xE5,0x04,0x05;unsigned char data table4=0x0C,0xEE,0x58,0x4A,0xAA,0x0B,0x09,0x6E,0x08,0x0A;void delay(void);void

12、display(unsigned char x,unsigned char y);void main(void)unsigned char i=0; unsigned char z;Init_Device();DP1=DP2=DP3=DP4=0xff;/数码管初始化while(1) C1=z; delay();z=C1; delay();z=z*100/255; /将十六进制AD数据转换为十进制数据if(z/10>9) display(1,9); display(2,9); /如果十位大于9则显示99elsedisplay(1,z/10); display(2,z%10); /显示转换后

13、的十进制的温度值delay();void display(unsigned char x,unsigned char y)/每个数码管电路不同,调用不同数码表 if(x=1) DP1=table1y; else if(x=2) DP2=table2y; else if(x=3) DP3=table3y; else DP4=table4y; void delay(void) unsigned int i;unsigned int j; for(i=0;i<TIMER;+i)for(j=0;j<2;+j); 实测图:图NO.11显示结果:这部分我们一开始产生了一些问题。开始的时候我们的

14、变送器由于没有滤波,所以输出到AJMP管脚的电压很不稳定,我们用示波器能观察到正弦波。后来我们在输出部分加滤波电容之后数据较为稳定,与实际结果略有误差,但是还在接受范围之内,我们可以对数据进行软件校准,以消除较大误差。五、 显示电路模块1. 显示电路设计:这次我们用的均为两位共阳极七段数码管,如图图NO.12焊接板上已经设计好的电路如示:图NO.13显示模块电路图:图NO.142. 显示电路原理分析:我们选用静态显示控制电路,八位数据位作为74LS273数据锁存器的输入信号,273的输出信号作为七段数码管的输入信号,控制七个LED的亮灭。地址数据A0和A1作为74LS138三八译码器的输入信号

15、,138输出信号为锁存器时钟信号,VCC接G1端恒高有效,WR和CS0分别接译码器E2和E1端,E3恒低有效。通过138译码器的输入端的变化,控制选通273数据锁存器的时钟信号。由此可以得出四个数码管的地址为0x0000,0x0001,0x0002,0x0003即前14位均为低(便于控制),然后控制A0和A1选中相应的数码管。但是由于我们用的板子是已经把数码管部分电路设计好了,其对应的273与数码管的线路和电路图中有所不同,我们按照七段共阳数码管显示原理重新计算了其数码表,因为老师所给的数码表部分位置有小数点,而我们没有要求小数点,所以我们组又重新计算了数码表。3. 测试数码管显示程序(连跑.

16、c):#include "C8051F020.h"#include "absacc.h"#include "data_define.c"#define DP1 XBYTE0x0000/数码管地址#define DP2 XBYTE0x0001#define DP3 XBYTE0x0002#define DP4 XBYTE0x0003#define TIMER 0x800/延时#include "Init_Device.c"unsigned char data table1=0x50,0xF9,0x4A,0x49,0x

17、E1,0x45,0x44,0xD9,0x40,0x41;unsigned char data table2=0x0C,0xAF,0xC8,0x8A,0x2B,0x1A,0x18,0x8F,0x08,0x0A;unsigned char data table3=0x44,0xF5,0x86,0x85,0x35,0x0D,0x0C,0xE5,0x04,0x05;unsigned char data table4=0x0C,0xEE,0x58,0x4A,0xAA,0x0B,0x09,0x6E,0x08,0x0A;/数码表void delay(void);void display(unsigned c

18、har x,unsigned char y);void main(void) unsigned char i=0,num=0; Init_Device(); DP1=DP2=DP3=DP4=0xff; while(1) for(num=0;num<=9;+num) display(1,num);display(2,num);display(3,num);display(4,num); delay( ); delay( ); void display(unsigned char x,unsigned char y) if(x=1) DP1=table1y; else if(x=2) DP2

19、=table2y; else if(x=3) DP3=table3y; else DP4=table4y; void delay(void) unsigned char data i,j; for(i=0;i<TIMER;+i) for(j=0;j<TIMER;+j);图NO.15如果数码管焊接无误,运行此程序,数码管会接连显示四个0一直到四个9,我们运行的图如下:六、 键盘控制电路模块一、 键盘控制电路设计: 图NO.16二、 键盘控制电路原理分析:我们采用阵列键盘读取方案,通过采取与非门的形式,控制74LS244的选通信号。编写程序使138译码器依次输出低电平,扫描是否有键按下

20、,当键盘上有键按下时,Yn为低电平,对应的Sn也为低电平(即对应的Dn也为低电平),然后进行扫描读取,获得按键的行列值,然后通过计算可以算出行列值对应的09的公式即key=4*l+r-5,然后可以定义其他键的功能以便进行控制系统运行状态。此处我组程序自定义按键用了四个,分别是第一行第五个作为重置按键,即从升温或者降温程序中退出;第四行第三个,作为选中数码管第三位按键,用于输入控制温度的十位;然后是第四行第四个,作为选中数码管第四位按键,用于输入控制温度的个位;最后是第四行第五位按键,作为确定按键。三、 键盘测试程序(键盘.c):#include "C8051F020.h"#

21、include "absacc.h"#include "data_define.c"#define DP1 XBYTE0x0000#define DP2 XBYTE0x0001#define DP3 XBYTE0x0002#define DP4 XBYTE0x0003#define TIMER 0x8000#include "Init_Device.c"unsigned char data table1=0x50,0xF9,0x4A,0x49,0xE1,0x45,0x44,0xD9,0x40,0x41;unsigned char da

22、ta table2=0x0C,0xAF,0xC8,0x8A,0x2B,0x1A,0x18,0x8F,0x08,0x0A;unsigned char data table3=0x44,0xF5,0x86,0x85,0x35,0x0D,0x0C,0xE5,0x04,0x05;unsigned char data table4=0x0C,0xEE,0x58,0x4A,0xAA,0x0B,0x09,0x6E,0x08,0x0A;int readlr(void);unsigned int decode(unsigned int l, unsigned int r);static unsigned cha

23、r swit=0; void display(unsigned char x,unsigned char y)if(x=1) DP1=table1y;else if(x=2) DP2=table2y;else if(x=3) DP3=table3y;else DP4=table4y; void main(void)while(1) readlr(); int readlr(void)unsigned char l_val,r_val,r_state,temp,conter,x,c;int key;DP1=DP2=DP3=DP4=0xff;Init_Device();while(1) key=0

24、x0004; for(x=1;x<5;x+,key+) c=XBYTEkey; if(r_state=c&0x1f)for(conter=1,temp=0x01;conter<6;+conter,temp=temp<<1)if(r_state&temp)!=0)r_val=conter; l_val=x;display(1,l_val); display(2,r_val);/显示行列值decode(l_val,r_val);/对得到的行列值进行解码 unsigned int decode(unsigned int l, unsigned int r) u

25、nsigned char key=0;if(l<4)&&(r<5) key=4*l+r-5; display(4,key); display(3,0); if(key>9) return 1; else return -1; else(l=4)&&(r=5) swit=1;return 1;四、 键盘测试实物图图NO.17七、 系统调试及程序设计1. 系统调试: 第一步:我们首先用调试台调试,测试数码管是否正常,是否会有连接不稳定导致的数据显示问题。把“连跑.c”烧入8051中,如果程序显示正常则显示部分正常,如果出现问题检查是否是接触不良引起

26、的问题或者是焊接问题。第二步:将“键盘.c” 烧入8051中,检查键盘部分。如果能在前两个数码管显示行列值,最后一位显示正确数值,则按键部分没有问题,如果按键显示不正确检查线路焊接是否存在问题。第三步:将“温度.c” 烧入8051中,检查AD和变送器部分,然后手动调节温度,观察数码管是否能显示温度,温度和系统显示的温度误差是否过大。如果温度不能显示则检查变送器部分和AD采样部分。如果误差较大,则需要对变送器进行校准。第四步:将“DA.c” 烧入8051中,检查DA和驱动器部分。程序下载后,运行,然后用示波器测量DAO1处的波形,如果波形是图二所示的波形则证明DA部分没有问题,注意其峰峰值应为2

27、0V。将试验台调至自动升温,若观察到试验台显示屏上电压变化从-10V到10V则变送器没有问题。第五步:将完整系统(包括电源模块、系统模块、A/D模块和变送器、D/A模块、显示模块和键盘控制模块)移植到实验室真实模板上,先将模板设定为手动调节,手动设定一个温度值值看数码管显示位是否随动;再将模板还原为自动调节,从键盘输入一个设定值,打开调节按钮,观察系统显示位是否逐渐靠近设定位并最终稳定在一个非常相近的数值上,模板上加热(或制冷)提示灯是否点亮。如果上述答案是肯定的,系统成功,能够满足教学要求,实现小型温度控制系统。2. 调试程序(GMS.c): #include "C8051F020

28、.h"#include "absacc.h"#include "data_define.c"#include "Init_Device.c"#define DP1 XBYTE0x0000/数码管地址#define DP2 XBYTE0x0001#define DP3 XBYTE0x0002#define DP4 XBYTE0x0003#define C0 XBYTE0x0000/数码管片选信号#define C1 XBYTE0x2000/AD片选信号#define C2 XBYTE0x4000/DA片选信号unsigned

29、char data table1=0x50,0xF9,0x4A,0x49,0xE1,0x45,0x44,0xD9,0x40,0x41;unsigned char data table2=0x0C,0xAF,0xC8,0x8A,0x2B,0x1A,0x18,0x8F,0x08,0x0A;unsigned char data table3=0x44,0xF5,0x86,0x85,0x35,0x0D,0x0C,0xE5,0x04,0x05;unsigned char data table4=0x0C,0xEE,0x58,0x4A,0xAA,0x0B,0x09,0x6E,0x08,0x0A;/数码显示

30、管数码表(不带小数点)char readlr(int num);/读取行列值,num用于存放第几个数码管显示void readinput(void);/读取输入并按照相应条件执行相应程序void task(void);/分段控温程序unsigned char tempera(void);/获取AD温度程序void display(unsigned char x,unsigned char y); /在第x个数码管显示yvoid delay(long int x);/延时程序,并通过X调节延时长度unsigned char decode(unsigned int l, unsigned int

31、r,unsigned int i);/对按键进行解码,并按照条件返回相应值static unsigned char swit=0;/swit为0则选中第三个数码管,为1选中第四个数码管static unsigned char start=0;/为1则开始执行控温程序static unsigned char target=0;/用于存放键盘输入的十进制目标温度static unsigned char T_ad;/十进制系统当前温度值static char tp=0;/目标温度和当前温度差值static unsigned int sign=0;/目标温度很当前温度差值符号 void main(vo

32、id)DP1=DP2=DP3=DP4=0xff;Init_Device();/数码管初始化while(1)readinput();/读键盘输入void readinput(void)unsigned int key0=0,key1=0,key2=0;/key0存放临时得到的键盘输入值,key1存放目标温度十位,key2存放目标温度各位while(1)if(swit=0)&&(start=0)/选中数码管第三位且不进行控温 tempera();/读取温度并显示/display(1,T_ad/10); display(2,T_ad%10);key0=readlr(3);/读取键盘输

33、入,并在第三个数码管显示正确输入的数字if(key0!=-1) key1=key0;/返回值为-1即输入不是数字,key1取输入的数字if(swit=1)&&(start=0) /选中数码管第四位且不进行控温tempera();/display(1,T_ad/10); display(2,T_ad%10);key0=readlr(4); /读取键盘输入,并在第四个数码管显示正确输入的数字if(key0!=-1) key2=key0;if(start=1)/控温target=key1*10+key2;/计算出目标温度display(3,target/10);display(4,t

34、arget%10);/重新将计算出的目标温度显示task();/进行控温readlr(4);/读取键盘状态,观察是否有按键使star清零char readlr(int num)unsigned char l_val,r_val,r_state,temp,conter,x,c;unsigned char key;char key0=-1;/如果没有按键摁下,亦返回-1否则会导致目标温度出错key=0x0004;/取键盘第一行地址 for(x=1;x<5;x+,key+) c=XBYTEkey;/去该行键盘电位 if(r_state=c&0x1f)for(conter=1,temp=

35、0x01;conter<6;+conter,temp=temp<<1)if(r_state&temp)!=0)r_val=conter;/得到有键按下的列值l_val=x;/得到有键按下的行值key0=decode(l_val,r_val,num);/解码 return key0;/返回按键状态unsigned char decode(unsigned int l, unsigned int r,unsigned int i) unsigned char key=0;if(l<4)&&(r<5)/数字区key=4*l+r-5;if(key&

36、lt;10)&&(start=0)display(i,key);return key;/如果是数字显示、返回else return -1;/不是数字,返回-1,按键无效else if(l=4)&&(r=4) swit=1;/选中数码管第四位 else if(l=4)&&(r=3) swit=0;/ 选中数码管第三位else if(l=4)&&(r=5) start=1;/确定,进行控温 else if(l=1)&&(r=5) start=0;swit=0;display(3,0);display(4,0);/充值按

37、键,清零三四数码管,并停止控温,调到选中数码管第三位状态return -1;/以上按键不是数字键,返回此结果unsigned char tempera(void) C1=T_ad; delay(0x80); T_ad=C1; delay(0x80); /获取当前温度的十六进制AD值T_ad=T_ad*100/255;/转换为十进制if(T_ad/10>9) display(1,9); display(2,9);/超量程显示99else if(T_ad/10<0) display(1,0);display(2,0);else display(1,T_ad/10); display(2

38、,T_ad%10);/正常情况下显示当前温度 delay(0x80);void display(unsigned char x,unsigned char y)if(x=1) DP1=table1y;/数码表不同,需调用不同数码表else if(x=2) DP2=table2y;else if(x=3) DP3=table3y;else DP4=table4y;void delay(long int t)unsigned char data i,j;for(i=0;i<t;+i) for(j=0;j<t;+j);void task(void)tempera();/获取当前温度信息并

39、显示/display(1,T_ad/10);display(2,T_ad%10);/if(target>96)/target=96;/tp=target-T_ad;/目标温度和当前温度做差if(tp<0)tp=tp+1;/小于零取绝对值sign=1;/标示差小于零elsesign=0;/标示差大于零if(T_ad<31)while(1)if(tp<1)/无温度差不升温不降温C2=0x80;break;if(tp<4)&&(sign=0)/温度差较小,且差为正,小幅升温C2=170;break;if(tp<4)&&(sign=1

40、)/温度差较小,且差为负,小幅降温C2=30;break;if(tp>=4)&&(sign=1)/温度差较大,且差为负,大幅降温C2=0;break;if(tp>=4)&&(sign=0)/温度差较大,且差为正,大幅升温C2=255;break;break;if(T_ad<71)&&(T_ad>30)/分温度段进行控制,分析同上while(1)if(tp<1)C2=0x80;break;if(tp<4)&&(sign=0)C2=220;break;if(tp<4)&&(si

41、gn=1)C2=75;break;if(tp>=4)&&(sign=1)C2=0;break;if(tp>=4)&&(sign=0)C2=255;break;break;if(T_ad<96)&&(T_ad>70)/同上while(1)if(tp<1)C2=0x80;break;if(tp<4)&&(sign=0)C2=255;break;if(tp<4)&&(sign=1)C2=100;break;if(tp>=4)&&(sign=1)C2=0;br

42、eak;if(tp>=4)&&(sign=0)C2=255;break;break; return;/控温结束,返回程序3. 运行实物图图NO.18图NO.19八、 出现的问题分析及解决方法问题一:我们在调试AD实验板时,总是没有所要的锯齿波,在相应的管脚没有应有的波形。解决方法:后来经过我们的检查发现我们在做第一阶段的时候,焊接的变送器部分并没有接到相应的结构上,后来我们把变送器的输出接到AJMP0就可以了。问题二:在做温度显示的时候,温度显示波动特别大,误差有5度左右,严重不符合要求。解决方法:由于我们在变送器输出部分没有用电容滤波,导致输出很不稳定,用示波器观察发现

43、输出是正弦波,最后我们在输出部分加一个滤波电容就解决了这个问题。问题三:键盘显示焊接完成后,发现之前的数码管显示和键盘都出了问题。解决方法:经过我们检查,发现我们部分连线不正确,用于键盘扫描和数码显示的是同一个138译码器,我们加上键盘部分后,没有做到合适的改动,导致键盘扫描不起作用,数码显示也出了问题。问题四:运行总程序时,只会升温,不会降温。用万用表测量发现变送器输出电压为5.26V不变。解决方法:由于我们发现变送器输出电压有问题之后,我们怀疑只会升温可能由变送器造成。我们把电容和电位器都换过了,问题依然存在,最后经过仔细观察,变送器输出端的两个二极管坏了一个,导致功能受损。最后把二极管换

44、了便解决了变送器的问题。但是程序运行后问题依然存在。我们此时推测可能是控温程序出了问题,最后发现控温程序中,条件判断语句中多了一个分号,使得条件语句不予执行。最后做了这个改动后此影响消除。问题五:运行总程序时,不能从键盘得到输入的值,得到的结果总为零。解决方法:这是由于我们没有考虑到程序在没有按键按下时会有什么效果。由于键盘扫描程序是一直扫描的,如果没有按键按下我们的程序会返回一个不是-1的值,而我们定义的是返回值不是-1时就会把数据记录,所以这样产生错误的信息。后来我们把返回值初始化为-1,问题解决。问题六:在焊接好键盘显示部分后,我们运行“连跑.c”的时候发现数码管会有一些数码段会出现长亮

45、和长灭的现象。解决方法:我们按照数码管的管脚图和数码管显示部分的电路图发现部分焊线有虚焊和短路的现象,改正后问题解决。九、 创新性创新点一:按键功能设置模块化。我们可以完全实现闭环的功能。首先我们有09数字输入部分,然后我们都有四个可以自定义的按键,按键十位个位输入选中按键、确认按键、重置按键。首先我们将得到的按键行列值进行解码,然后分情况处理。无键按下和无数字键按下与有数字键按下为系统的两种情况。当无键按下,程序继续循环,继续扫描;无数字键按下,检查是否是自定义功能键按下;数字键按下执行换算功能。如果按下重置键,数码管三四清零并默认选中十位输入(数码管三),然后可以切换到各位输入,最后确认并执行控温。由于模块化思想,所以按键功能做的很好,可以重复输入并切换控温和显示当前温度的功能。创新点二:控温程序使用PID算法。通过不断调用控温程序,而每次调用,控温程序都会只改变一小部

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论