资源描述
.wd.电子工程设计报告题目:温度测量系统/闭环温度控制系统设计专业: 电子科学与技术小组: 7姓名: 学号:袁彬 11023221赖力 11023222指导教师: 高新完成日期:2013.12.12目录一、摘要3二、设计任务与要求3二、设计要求4(三)单片机5一、电路工作原理及主要元件的功能5二、电路的调试9四数/模(D/A)转换电路10一、电路工作原理及主要元件功能10二、电路主要参数计算12(三)、电路调试12五、模/数(A/D)转换电路13一、ADC0804芯片介绍13二、电路主要参数计算14三、电路调试15六、电路显示与键盘控制电路16一、电路工作原理16(二).电路调试19七、温度测量22八、心得体会25九、附录26一、摘要在上学期我们完成了温度控制系统的第一阶段,在这一阶段,我们完成了焊接包括电源板、驱动器和变送器在内的一些工作。也为我们这次的第二阶段做好了准备。通过上学期的准备,我们对焊接电路已经 基本上熟练掌握了,对一些电路的原理和设计也都到达了必要的要求,正是基于此我们目前已经完成了第二阶段的所有内容。下面就主要介绍一下我们第二阶段的工作。二 、设计任务与要求设计小型温度测量与控制系统 - 典型电子系统驱动器 数/模转换器后向通道1.电路设计 核心单元单片机应用电路 模拟量接口A/D、D/A 电路 人机交互单元显示、键盘控制电路2.程序设计 控制模/数转换进展温度数据采集 控制数/模转换改变控温元件工作状态,进展温度控制。 控制键盘与显示器,进展控制温度设定和测量温度显示。 将温度数据转换为显示温度数值的算法程序。 (5)控制温度准确、平稳变化的的算法程序。3.系统联调 电路系统联调,配合测试程序实现 基本的测温、控温功能。 程序联调,通过电路系统实现准确、平稳的温度控制4.本学期关注的重点 设计并实现了一个能够准确、稳定控制温度的系统。 知道了一个典型的电子系统应该具备哪些主要功能 知道了一个典型电子系统的设计实现过程和工作方法。 知道如何设计测试方法、创造测试条件,对设计完成的电路模块或电路系统进展测试,使电路或系统的功能、指标充分展现。 设计组装的电路系统出现故障,能够根据电路或系统的工作原理、自己掌握的专业知识以及积累的经历,快速确定故障范围和故障原因。 掌握电路的设计方法,通过设计、计算实现电路设计要求。二、设计要求1 温度测量范围:0C +100C。2 温度测量误差:不大于 2C3 单片机:具有独立电路板构造。片选信号:4个,地址信号:4个,数据总线:AD0AD7,I/O口线:P3口,P1口。4 数/模(D/A)转换电路:具有独立电路板构造。输入范围:00H 0FFH,对应输出:-10V+10V,误差:1%,响应时间: 1ms,电源供电:+5V,12V。5 模/数(A/D)转换电路: 独立电路板构造 输入信号范围: 0V+5V 分辨率: 8bit 精度:1LSB 转换时间: 1ms6 显示与键盘控制电路: 4 位7 段数码显示,前 3 位含小数点独立电路板安装构造0 9数字输入键及假设干功能设置按键控制(三)单片机一、电路工作原理及主要元件的功能1,芯片的介绍和参数MCS-51系列单片机性能优异,因此单片机芯片采用MCS-51系列中的89C51。在单片机的40条引脚中有2条专用于主电源的引脚,2条外接晶体的引脚,4条控制或与其它电源复用的引脚,32条输入/输出I/O引脚。 下面按其引脚功能分为四局部表达这40条引脚的功能。1) 主电源引脚VCC和VSS: VCC40脚接+5V电压;VSS20脚接地。2) 外接晶体引脚XTAL1和XTAL2:XTAL119脚接外部晶体的一个引脚。在单片机内部,它是一个反相放大器的输入端,这个放大器构成了片内振荡器。当采用外部振荡器时,对HMOS单片机,此引脚应接地;对CMOS单片机,此引脚作为驱动端。XTAL218脚接外晶体的另一端。在单片机内部,接至上述振荡器的反相放大器的输出端。采用外部振荡器时,对HMOS单片机,该引脚接外部振荡器的信号,即把外部振荡器的信号直接接到内部时钟发生器的输入端;对XHMOS,此引脚应悬浮。3) 控制或与其它电源复用引脚RST/VPD、ALE/PROG、PSEN和EA/VPP:RST/VPD9脚当振荡器运行时,在此脚上出现两个机器周期的高电平将使单片机复位。ALE/PROG30脚:当访问外部存贮器时,ALE允许地址锁存的输出用于锁存地址的低位字节。即使不访问外部存储器,ALE端仍以不变的频率周期性地出现正脉冲信号,此频率为振荡器频率的1/6。因此,它可用作对外输出的时钟,或用于定时目的。PSEN29脚:此脚的输出是外部程序存储器的读选通信号。在从外部程序存储器取指令或常数期间,每个机器周期两次PSEN有效。但在此期间,每当访问外部数据存储器时,这两次有效的PSEN信号将不出现。EA/VPP31脚:当EA端保持高电平时,访问内部程序存储器,但在PC程序计数器值超过0FFFH对851/8751/80C51或1FFFH对8052时,将自动转向执行外部程序存储器内的程序。当EA保持低电平时,那么只访问外部程序存储器,不管是否有内部程序存储器。输入/输出I/O引脚P0、P1、P2、P3共32根:P0口39脚至32脚:是双向8位三态I/O口,在外接存储器时,与地址总线的低8位及数据总线复用,能以吸收电流的方式驱动8个LS型的TTL负载。P1口1脚至8脚:是准双向8位I/O口。由于这种接口输出没有高阻状态,输入也不能锁存,故不是真正的双向I/O口。P1口能驱动吸收或输出电流4个LS型的TTL负载。对8052、8032,P1.0引脚的第二功能为T2定时/计数器的P2口21脚至28脚:是准双向8位I/O口。在访问外部存储器时,它可以作为扩展电路高8位地址总线送出高8位地址。P3口10脚至17脚:是准双向8位I/O口,在MCS-51中,这8个引脚还用于专门功能,是复用双功能口。2、电路方案的比较、选择和确定全部地址参与译码,产生的控制信号对应唯一地址。局部地址参与译码,产生的控制信号对应某一地址区域,而不是唯一地址。局部地址参与译码,产生的控制信号对应某一地址区域,而不是唯一地址。三种电路方案(1) 局部地址译码、带有总线驱动电路,产生的控制信号对应某一地址区域。 图示局部地址译码、带有总线驱动电路2局部地址译码、无总线驱动电路图示局部地址译码,无总线驱动电路3直接选通、不要低8位地址和驱动电路因为这个方案的片选信号与地址之间并不是线性关系,所以使用该方案需要熟练掌握片选信号与地址之间的关系计算。4电路方案确实定 通过比较,我们最后选定相对容易实现的局部地址译码,无总线驱动的方案,因为这样可以简化电路。电路图如下:单片机的安装构造图如以以下图所示: 单片机电路二、电路的调试1按照电路图将电路板焊接完毕,过程中需要严格检查焊接线路是否正确,防止出现错误。2测试时,将电源板放到相应位置。将单片机正确插入,然后将仿真头与单片机电路连接注意缺口标志要对应再把仿真器连好。3断开译码电路负载,运行测试程序,检查各输出引脚是否有输出,各个输出之间相对位置关系是否正确;以下是单片机测试的程序:#include C8051F020.h#include absacc.h“#include data_define.c#define CS0 XBYTE0x0000#define CS1 XBYTE0x2000#define CS2 XBYTE0x4000#define CS3 XBYTE0x6000#define CS4 XBYTE0x8000#define CS5 XBYTE0xA000 #include Init_Device.cvoid main(void) Init_Device();while(1) CS0=0; CS1=0; CS2=0; CS3=0; CS4=0; CS5=0; 正确输出波形如以以下图:用示波器观察C1 C4引脚,应有图示的波形输出。如果没有输出或者彼此关系错乱,都说明电路中存在故障。四 数/模(D/A)转换电路一、电路工作原理及主要元件功能1、DAC8032芯片介绍数模转换器是整个控制系统将计算机输出的数字信号转化成模拟信号的重要部件,它的特性直接影响温度转换的精度。其转换的精度主要由数模转换器的位数和Vref。根据结合电子工程设计的实际要求,结合高性价比的原那么我们选择了8位D/A转换器 DAC0832。单片集成D/A转换器产品种类繁多,按其内部电路构造一般可分为两类:一类集成芯片内部只集成了转换网络和模拟电子开关;另一类那么集成了组成D/A转换器的所有电路。本实验选用DA0832,各引脚名称及作用如下:D7D0:具有三态特性数字信号输出。GND:信号地。CS:低电平有效的片选端。WR:写信号输入,低电平启动D/A转换。RD:读信号输入,低电平输出端有效。VREF:参考电平输入,决定量化单位。2、原理说明1、数模转换电路,可以将数字电量转换成模拟电量。在数模转换中,应根据转换要求,考虑输出电压的分辨率和精度。 2、数模转换有多种方法可以实现,在满足要求的情况下,应力求降低成本。可以采用频率/电压变换的方法,也可以采用D/A变换器或其它方法,如采用D/A变换器,建议使用DAC0832。00FF数字对应于10V10V电压。3.电路的选择输出方式:与数字量成比例的电流输出/与数字量成比例的电压输出/数字量和参考电压的相乘输出。我们组选择的电路如图:本实验要求模数转换电路的输出电压为10V10V电压。因此,在DA的外围电路上,我们连接了一个放大器。放大器的作用是将DAC0832的输出电流转化成电压,通过合理调整两个滑动变阻器的阻值,可以调整输出电压的大小,即使D/A的输出从05V变为10V10V。安装构造图数/模转换电路二、电路主要参数计算D/A转换器用于将数字量转换成模拟量,他的输入粮食数字量D,输出量为模拟量VO,要求输出的模拟量与输入的数字量成正比,即:其中VR为基准电压。其中,是输入的数字量代码;n是输入数字量的位数。将D带入得到:。该式说明,将输入的每一位数字量转换为与其相应的模拟量,把各位对应的模拟量相加就可得到该数字两所对应的模拟量。D/A转换器的模拟输出与数字量输入成正比。(三)、电路调试调试方法:断开电路负载,运行测试程序,检查各节点信号是否正确。1焊接完毕,而后再次认真查线一遍然后再开场测试。2测试时,将电源板,单片机,数模电路正确连接。按正确加电顺序供电,如果一切正常可以开场进一步的测试。3运行D/A测试程序数/模数据显示窗口将有相应,数据显示,数据为从00FF顺序递增并不断循环。另外输出管脚会有锯齿波。测试程序如下:#include C8051F020.h#include absacc.h#include data_define.c#define C3 XBYTE0x4000#define TIMER 0x8000#include Init_Device.cvoid delay(void);void main(void) unsigned char x; Init_Device();while(1) +x; C3=x; delay(); void delay(void) int i; for(i=0;iTIMER;+i) ;用示波器测量芯片的7号管脚输出波形如图:如果出现上述的波形图,就间接地证明电路板调试成功。五、模/数(A/D)转换电路一、ADC0804芯片介绍芯片参数: 工作电压:+5V,即VCC=+5V。 模拟输入电压范围:0+5V,即0Vin+5V。 分辨率:8位,即分辨率为1/28=1/256,转换值介于0255之间。 转换时间:100usfCK=640KHz时。 转换误差:1LSB。 参考电压:2.5V,即Vref=2.5V。1原理说明模数转换器,是将模拟电信号转变成计算机能识别的数字信号。在模数转换中,应根据测量精度要求,考虑转换电路的精度和分辨率,并力求降低成本。模数转换有多种方法可以实现,如采用电压/频率变换器,以频率或脉宽来计算温度,也可以采用A/D变换器或其它方法。如采用A/D变换器,应考虑转换器输入阻抗和变送器输出阻抗对信号的衰减可能引起的测试误差,并尽量降低这一误差。板间连接应注意保护。根据课设要求,温度0100的变化是用电压05V表示的,转成数字表示,即0FFH。2.电路的选择常用A / D电路的特点:积分型:将电压转换成脉宽信号或频率,由定时器/计数器获得数字值。优点:分辨率高;缺点:转换速率极低逐次比较型:由比较器和DA转换器通过逐次比较逻辑构成,经n次比较而输出数字值。优点:速度较高、功耗低,在12位分辩率时价格廉价并行比较型:用多个比较器,仅作一次比较而实行转换。优点:转换速率极高;分辩率高时电路规模大、价格也高,只适用于低分辨率高速场合压频转换型:将模拟信号转换成频率,然后用计数器将频率转换成数字量,从理论上讲其分辨率几乎可以无限增加。优点:分辩率高、功耗低、价格低;但是需要外部计数电路共同完成AD转换二、电路主要参数计算(1) 转换精度:A/D转换器也采用分辨率和转换误差来描述转换精度。分辨率是指引起输出数字量变动一个二进制码最低有效位LSB时,输入模拟量的最小变化量。他反映了A/D转换器对输入模拟量微小变化的分辨能力。在最大输入电压一定时,位数越多,量化单位越小,分辨率越高。转换误差通常用输出误差的最大值形式给出,常用最低有效位的倍数表示,反映A/D转换器实际输出数字量和理论输出数字量之间的差异。(2) 转换时间:转换时间是指转换控制信号vL到来,到A/D转换器输出端得到稳定的数字量所需要的时间。转换时间与A/D转换器类型有关,並行比较型一般在几十个纳秒,逐次比较型在几十个微秒,双积分型在几十个毫秒数量级。实际应用中,应根据数据位数、输入信号极性与范围、精度要求和采样频率等几个方面综合考虑A/D转换器的选用。(3) 8位数模转换电路主要技术指标:分辨率 - 8位:表示能够分辨的最小电压变化DATA 为 1 时的 Vi 表示最小电压变化误差 - 1LSB转换时间 - 100微秒三、电路调试调试方法:调整变送器电路在正常工作状态,连接变送器输出至模/数转换电路输入。运行测试程序,改变调试台温度设置值,检查单片机采集到的数据是否正确,如果不正确按照故障诊断预案进展诊断分析,并且排除故障。改变设置温度,运行A/D测试程序,检查模/数转换结果。在调试台上通过+10按键不断改变温度数值。模/数转换电路调试程序如图:#include C8051F020.h#include absacc.h#include data_define.c#define C2 XBYTE0x2000#define TIMER 0x8000#include Init_Device.cvoid delay(void);void main(void) unsigned char x; Init_Device();while(1) C2=x; delay(); x=C2; delay(); void delay(void) unsigned char i; for(i=0;iTIMER;+i);在调试台上通过旋转调温按钮不断改变温度数值六、电路显示与键盘控制电路一、电路工作原理1.电路的选择单片机与LED显示器有两种接口方法。动态显示电路方案:电路简单,成本低,控制程序复杂,适用于显示位数较多的场合。可使用智能芯片8279完成。以下为动态显示原理图静态显示电路方案:使用的元件多,成本相对较高。每位独立控制,程序设计比较简单,适用于显示位数较少的场合。使用74LS273,采用此方案。键盘接口方法矩阵键盘电路方案:按键较多时,成本低,控制程序较直读电路复杂,适用于显示位数较多的场合。采用此方案。原理图如下:最终我们的电路方案如以以下图:(二).电路调试键盘/显示电路1显示电路模块调试按照图进展电源板焊接完毕,而后再次认真查线一遍然后再开场测试。测试时,将电源板,单片机,显示电路正确连接。按正确加电顺序供电,如果一切正常可以开场进一步的测试。运行显示模块测试程序,如果电路工作正常,在4个数码管上应有数字0-9 滚动显示。否那么,说明电路存在故障。显示电路的编程流程如图:试程序如图:#include C8051F020.h#include absacc.h#include data_define.c#include Init_Device.c#define ADC XBYTE0x0000#define DP1 XBYTE0x0001#define DP2 XBYTE0x0002#define TIMER 0x8000unsigned chartable=0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90;void delay(void);void display(unsigned char x,unsigned char y);void main(void) unsigned char x=0,y=0,z=0,num=0; DP1=DP2=0xff; Init_Device();while(1) ADC=x; delay(); x=ADC; x=(x*100)/256; y=x%10;num=2;display(num,y); z=x/10;num=1;display(num,z); void display(unsigned char x,unsigned char y) if (x=1) DP1=tabley; else DP2=tabley; void delay(void) unsigned int i; for(i=0;iTIMER;+i);键盘控制模块调试:运行键盘控制电路的测试程序,如果电路工作正常,在键盘上每按 1 个键,都会通过 2 位数码显示管,显示相应的行编码和列编码。否那么,说明电路存在故障。 汇编程序流调试程序如图:#include C8051F020.h#include absacc.h#include data_define.c#define DP1 XBYTE0x7000#define DP2 XBYTE0x7100#define DP3 XBYTE0x7200#define DP4 XBYTE0x7300#define TIMER 0x8000#include Init_Device.cunsigned char table=0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90;void display(unsigned char x,unsigned char y) DP3=tablex; DP4=tabley; void main(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=0x0004; for(x=1;x5;x+,key+) c=XBYTEkey; if(r_state=c&0x1f) for(conter=1,temp=0x01;conter6;+conter,temp=temp1) if(r_state&temp)!=0) r_val=conter; l_val=x; display(l_val,r_val); 七、温度测量1.内容与原理2.实验程序如下:#include C8051F020.h#include absacc.h#include data_define.c#define C0 XBYTE0x0000#define C1 XBYTE0x2000#define C2 XBYTE0x4000#define DP1 XBYTE0x0000#define DP2 XBYTE0x0001#define DP3 XBYTE0x0002#define DP4 XBYTE0x0003#define TIMER 0x8000#include Init_Device.cunsigned char table10=0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90;unsigned char keymatrix44=0,1,2,3,4,5,6,7,8,9,A,B,C,D,E,F;void display(unsigned char x,unsigned char y) if (x=1) DP1=tabley; else if(x=2) DP2=tabley; else if(x=3) DP3=tabley; else DP4=tabley;void delay(void) int i; for(i=0;iTIMER;+i);unsigned char scan() unsigned char col,row,r_state,temp,c; unsigned int key=0x0004; for(row=0;row4;row+,key+) c=XBYTEkey; if(r_state=c&0x1f) for(col=0,temp=0x01;col4;+col,temp=temp1) if(r_state&temp)!=0) return keymatrixrowcol; return 100;unsigned char keyboard(unsigned char *dp) unsigned char ch,i,j; i=1; do i+; ch=scan(); if(ch=100) continue; else if(ch=A) return 0; dp3+i%2=ch; display(3+i%2,ch); for(j=0;j0) if(dnum=1) output=128+20; else output=250; else if(dnum0) if(dnum=-1) output=128-20; else output=5; else output=128; return output; void main(void) unsigned char num1,num2; unsigned char dp4; unsigned char temperature,input; DP1=DP2=DP3=DP4=0xff; Init_Device(); aa:keyboard(dp);/Set and display the aimed temperature num1=dp3*10+dp4; temperature=num1*255/100; flag=0; do C1=input; delay(); input=C1;/Read the current temperature delay(); num2=(input*100)/256; display(1,num2/10); display(2,num2%10);/Display current temperature C2=OUT(temperature,input);/Output C2 if(scan(key)=B) break; while(1); goto aa; 3.调试过程:连接电路并运行程序。观察测温系统数字显示,应跟随调试台设置温度变化并与调试台设置温度接近。假设测量温度与设置温度相差过大的调试,那么需调整变送器。调试台设置低端温度,变送器进展零点校准,调试台设置高端温度,变送器进展满度校准。以下是我们的实验截图:八、 心得体会第二阶段我们一共完成了测温系统中的单片机,A/D转换,D/A转换,显示键盘电路一共四块电路板。虽然有了第一阶段的一些经历积累,没有那么手忙脚乱,但是这四块板子的难度相比第一阶段来说是更加的高。第二阶段我们主要面临的问题有以下几点。第一点就是电路板需要焊接的线数量非常大,非常密集。这就意味着排线的难度大幅增加,同时在焊接过程中很容易出现失误。在单片机这块的焊接中,我们就出现了把芯管脚搞反,结果在插针焊接的时候错了很多,要更改起来特别困难。另外在布线的构造上我们也存在很大的问题,这就让焊接的线变得很多很乱,在测试电路的时候出现问题,查线排除故障进展的非常缓慢。另外在显示键盘电路这块板子上,一开场四个数码管只有两个亮,我们以为是数码管的问题,但更换之后问题依然存在。于是再进展电路检查,查了三四遍线路都认为没有问题这让我们觉得非常奇怪,后来在和其他组同学的电路板比照之后发现少了两根地线没有接,还是我们焊接时候的粗心大意造成的。还有就是有些芯片的GND管脚没有标在管脚图上,也被我们忽略了,这是缺乏经历的缘故。最让我们组头痛的就是测温系统,将6块板子组合在一起进展测试。在之前我们每块板子单个都通过了测试,可是没有想到进展测温系统测试的时候竟然没有成功。经过推断我们认为问题肯定是出现在单片机上,但是不管是查线还是测试输出波形都查不出问题所在。在我们非常着急头痛走投无路的时候,教师给予了我们巨大的帮助。在教师的测试下,一针见血的指出了A2管脚的线路有问题,经过检查果然如此,修正了电路之后果然就显示了正确的结果。最后一节课,我们还有幸聆听了来自西门子的电子工程师的讲座,为我们讲述了他的学习经历,让我们收获颇丰。本学期电子工程设计课程圆满完毕,在这学期我们第一次尝试去完成一个功能完善的电子系统。在这个过程中遇到了诸多的困难,但我们都顽强的客服了,我们的动手能力得到了锻炼,让我们明白纸上的电路转换为实际的系统,需要付出百倍的努力和耐心才能实现。也让我们更加敬仰在历史长河中那些为人类做出奉献的电子工程师。最后感谢高新的耐心教导和帮助。九、附录一、参考文献1.电子工程设计训练任务书(信息控制与通信局部) 北京工业大学出版社2.模拟电子技术根基(第四版) 童诗白,华成英 高等教育出版社二、插座定义+5V+5V+5V+5VP3.2ALERSTWDP1,1D0RDP1.2D1A4P1.3D2A3P1.4D3A2P1.5D4A1P3.5D5C4P3.3D6C3串行输入D7C2串行输出P3.4C1地地地地SELNC+5V+5V地地BUSY地模数转换输入ACK地变送器输出D8地驱动器输入D7地D6地数模转换输出D5地D4NC-12V-12VD3NCD2NC+12V+12VD1ERRSTBNC地地
展开阅读全文