已阅读5页,还剩29页未读, 继续免费阅读
版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
部分项目得分 设计方案与论证5 分 理论分析与软件说明5 分 主要电路说明、测试方法6 分 数据、结果分析4 分 设计报告 合计20 分 完成 1 项:25 分 完成 2 项:25 分 完成 3 项:10 分 基本部分 合计60 分 发挥部分其他扩展功能20 分 第一章第一章 概述概述 第二章第二章 设计方案与论证设计方案与论证 本设计设计的温度测量系统是把热电阻信号通过传感器检测转变为电压信 号,经过信号采集电路转换成 A/D 输入的标准信号。之后 A/D 将模拟电压信号 变转换成数字信号,然后送入单片机(MCU)进行处理和运算,单片机将处理 的数据通过 LED 数码管显示。整体方案设计流程图如下。 传感器选择传感器选择 温度测量的方案有很多种,可以采用传统的分立式传感器、模拟集成传感器以及新兴 的智能型传感器。 方案一:采用模拟分立元件 如电容、电感或晶体管等非线形元件,该方案设计电路简单易懂,操作简单,且价格 便宜,但采用分立元件分散性大,不便于集成数字化,而且测量误差大。 方案二:采用温度传感器 通过温度传感器采集温度信号,经信号放大器放大后,送到 A/D 转换芯片,将模拟量 转化为数字量,传送给单片机控制系统,最后经过 LED 显示温度。 热电阻也是最常用的一种温度传感器。它的主要特点是测量精度高,性能稳定,使用 传 感 器 处 理 电 路 A/D 转 换 单 片 机 显 示 模 块 供电电源 方便,测量范围为-200850,完全满足要求,考虑到铂电阻的测量精确度是最高的, 所以我们设计最终选择铂电阻 Pt100 作为传感器。该方案采用热电阻 Pt100 做为温度传感 器、OP07 作为信号放大器,对于温度信号的采集具有大范围、高精度的特点。相对与方案 一,在功能、性能、可操作性等方面都有较大的提升。在这里我选用方案二完成本次设计。 放大器选择放大器选择 Op07是一种低噪声,非斩波稳零的双极性运算放大器。由于OP07具有非常 低的输入失调电压(对于OP07A最大为25V) ,所以OP07在很多应用场合不需要 额外的调零措施。OP07同时具有输入偏置电流低(OP07A为2nA)和开环增益 高(对于OP07A为300V/mV)的特点,这种低失调、高开环增益的特性使得OP07 特别适用于高增益的测量设备和放大传感器的微弱信号等方面。 宽的输入电压范围(最少13V)与高达110dB(OP07A)的共模抑制比和高 输入阻抗的结合,在同相电路阻态中提供了很高的精度,即使在很高的闭环增益 下,也能保持极好的线性和增益精度。 失调和增益对时间或温度变化的稳定性也是极好的。不加外调零措施的OP07 的精度和稳定性,即使在高增益下也能使OP07成为一种新的仪器用和军用的工业 标准。 OP07A和OP07适用于在-55到+125的整个军用范围内。 热电阻(热电阻(PT100)接法)接法 热电阻是把温度变化转换为电阻值变化的一次元件,通常需要把电阻信号 通过引线传递到计算机控制装置或者其它一次仪表上。工业用热电阻安装在生 产现场,与控制室之间存在一定的距离,因此热电阻的引线对测量结果会有较 大的影响。目前热电阻的引线主要有三种方式: 1、二线制:在热电阻的两端各连接一根导线来引出电阻信号的方式叫二线 制:这种引线方法很简单,但由于连接导线必然存在引线电阻 r,r 大小与导线 的材质和长度的因素有关,因此这种引线方式只适用于测量精度较低的场合。 2、三线制:在热电阻的根部的一端连接一根引线,另一端连接两根引线的 方式称为三线制,这种方式通常与电桥配套使用,可以较好的消除引线电阻的 影响,是工业过程控制中的最常用的引线电阻。 3、四线制:在热电阻的根部两端各连接两根导线的方式称为四线制,其中 两根引线为热电阻提供恒定电流 I,把 R 转换成电压信号 U,再通过另两根引 线把 U 引至二次仪表。可见这种引线方式可完全消除引线的电阻影响,主要用 于高精度的温度检测。 在本设计中热电阻采用三线制接法。采用三线制是为了消除连接导线电阻 引起的测量误差。这是因为测量热电阻的电路一般是不平衡电桥。热电阻作为 电桥的一个桥臂电阻,其连接导线(从热电阻到中控室)也成为桥臂电阻的一 部分,这一部分电阻是未知的且随环境温度变化,造成测量误差。采用三线制, 将导线一根接到电桥的电源端,其余两根分别接到热电阻所在的桥臂及与其相 邻的桥臂上,这样消除了导线线路电阻带来的测量误差。 第三章第三章 理论分析与主要电路说明理论分析与主要电路说明 电源模块电源模块 电子技术课程中所介绍的直流稳压电源一般是线性稳压电源, 它的特点是 起电压调整功能的器件始终工作在线性放大区,由 50Hz 工频变压器、整流器、 滤波器和串联调整稳压器组成。 它的基本工作原理为:工频交流电源经过变压器降压、 整流、滤波、再次 滤波后成为一稳定的直流电。图中其余部分是起电压调节,实现稳压作用的控 制部分。电源接上负载后,通过采样电路获得输出电压,将此输出电压与基准 电压进行比较。如果输出电压小于基准电压,则将误差值经过放大电路放大后 送入调节器的输入端,通过调节器调节使输出电压增加,直到与基准值相等; 如果输出电压大于基准电压,则通过调节器使输出减小。这种稳压电源具有优 良的纹波及动态响应特性。 本设计采用固定集成输出集成稳压电路,它主要由变压器(双 6V,5W) 、 集成整流桥、集成稳压器 LM7805(+5V)和 LM7905(-5V)、极性电容(100uF 和 1000uF)构成。如图 5-1 所示。 TRANSCT D1 1 3 2 VV GND IN OUT 7805 1 23 VV GND IN OUT 7905 +5V -5V 1000uF 1000uF 100uF 100uF 图 5-1 稳压电源 1)二极管(4 个):组成全波整流桥电路,正半周期时右上和左下两个二极管导 通,负半周期左上和右下两个二极管导通,使电压信号都位于 t 轴上方; 0200400600800100012001400 -1 -0.8 -0.6 -0.4 -0.2 0 0.2 0.4 0.6 0.8 1 0200400600800100012001400 0 0.1 0.2 0.3 0.4 0.5 0.6 0.7 0.8 0.9 1 图 5-2 电压输入波形 图 5-3 整流之后波形(i 和 u) 2)极性电容(4 个):滤波作用,当电压信号逐渐增大时候向电容里充电,当电 容里电荷达到一定时,停止充电,当电压信号低于电容存储的电荷的电压时, 电容开始放电,放到一定程度又开始充电,周而复始,形成周期; U0 wt 图 5-3 电容滤波电路 3)7805/7905:稳压块,7805 稳压输出+5V 电压,7905 稳压输出-5V 电压。 采集模块 热电阻的阻值随温度的变化而变化,所以我们可以把热电阻的阻值变化转 换成相应的电压信号,然后经过后续的放大电路将采集到的电压放大到一定倍 数,被 A/D 采集并输入到单片机内部。由于在实验室中恒流发生电路比较简单 常用,而且电压信号采集简单、测量方便,所以本设计采用恒流源测电压方法 实现热电阻和电压信号的对应关系。恒流源电路可以产生 1mA 恒定电流,把热 电阻 Rt 的阻值转换为电压信号 Uo(Uo=Rt*1mA) ,如图 3-1 所示。 电压放大电路主要是把电压信号放大一定的倍数,能被 A/D 比较精确地采 集到。 4.7k LM336 2 3 6 47 1 8 5 2.4K 10K 9012 10R200K 10R100K 2 3 6 47 1 8 5 +5V -5V 10R 100K 200K 10K 1K -5V 200R A/D100uF 100uF 100uF 100uF +5V 图 3-1 温度采集及信号处理电路 第一部分 恒流源发生电路如图 3-1(a)所示: 4.7k R15 LM336 2 3 6 47 1 8 5 2.4K R12 10K R14 9012 -5V 100uF 100uF +5V 图 3-1(a)恒流源发生电路 1)LM336-2.5 稳压管:稳压作用,将放大器 3 脚电压钳制到 2.5V 左右; 2)R12(2.4K)电阻:根据“虚断”原理,U3 = U2,I = 2.5V/2.4K = 1mA; 3)9012 复合三极管:又叫达林顿管,将 系数放大,即 = 2 ,使达林顿 管集电极和发射极电流相等,即 Ic = Ib = I,从而大大减小 Ib 的值; 4)R14(10K)电阻 :保护前端放大器作用,防止 Ib过大,进入运放 6 脚; 第二部分 三线制处理及输出放大如图 3-2(b)所示: 10R R17 200K R16 10R R20 100K R21 2 3 6 47 1 8 5 +5V -5V 10R R23 100K R13 200K R22 10K R19 1K R24 200R A/D 100uF 100uF 图 3-1(b)三线制处理及输出放大电路 1)200 电位器代替 Pt100,实验时将电位器调整至 100 阻值; 2)R17、R20、R23 :理论上代替三根传输导线,令 R17后面的电压为 U1,R20后 面的电压为 U2,R17=R20=R23=R;所以 U1 = I*(R17+Rt+R23)=I*Rt+2*R (3.1.1) U2 = U3 = I*R (3.1.2) 根据方程(3.1.1)- 2*(3.1.2) U1-2*U2 = I*Rt (3.1.3) 从而推出放大器输入端信号与导线电阻无关(三线制最终目的) 3)后端运放:根据“虚短”原理可以得出 U+ = U- = U1*R13/(R16+R13)=U1/3 (3.1.4) (Uo/(R19+R24)-U-)/R22=(U-U2)/R21 (3.1.5) 经(3.1.4) (3.1.5)带入数据整理得: Uo = 11(U1-2*U2 ) (3.1.6) 从而实现信号电压放大十倍的作用 A/D 模数转换模块模数转换模块 2.3.1 ICL7135 功能介绍 ICL7135 是一种四位半的双积分 A/D 转换器,可以转换出20000 个数字量 选通控 BCD 码输出,与单片机接口十分方便。它具有精度高(相当于 14 位 A/D 转换) ,价格低的优点。其转换速度与时钟频率相关,每个转换周期均有:自校 准(调零) ,正向积分(被测模拟电压积分) ,反向积分(基准电压积分)和过 零检测四个阶段组成,其中自校准时间为 10001 个脉冲,正向积分时间为 10001 个脉冲,反向积分直至电压到零为止(最大不超过 20001 个脉冲) 。故设 计者可以采用从正向积分开始计数脉冲个数,到反向积分为零时停止计数。将 计数的脉冲个数减 10000,即得到对应的模拟量。具体电路如图 2.3 所示。 V- 1 REF 2 ANALOG COM 3 INT OUT 4 AZ IN 5 BUFF OUT 6 REF CAP- 7 REF CAP+ 8 IN LO 9 IN HI 10 V+ 11 D5 12 B1 13 B2 14 B4 15 B8 16 D4 17 D3 18 D2 19 D1 20 BUSY 21 CLOCK IN 22 POL 23 DIGIT AL IN 24 R/H 25 STROBE 26 OVERRANGE 27 UNDERRANGE 28 U6 ICL7135 5.1K R11 100K R15 27 R13 100K R14 0.1uf C17 105C15 105 C16105 C14 CBB 474 -5 +5 +5 D1 1N4148 R12 10K D2 LM7825 +5 CLK INT0 图 2.3 A/D 模数转换电路 图 2.4 给出了 ICL7135 时序,由图可见,当 BUSY 变高时开始正向积分,反 向积分到零时 BUSY 变低,所以 BUSY 可以用于控制计数器的启动/停止。 图 2.4 ICL7135 时序图 计数的时钟脉冲是由单片机的 ALE 引脚经过 74HC393 分频后得到的。在平 时,单片机 ALE 端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的 1/6。因此它可用作对外部输出的脉冲,若外部时钟为 12MHZ,则 ALE 端输出的 时钟频率为 2MHZ。由于 ICL7135 芯片在时钟脉冲为 125KHZ 时对 50HZ 工频干扰 有较大抑制能力,此时转换速度为 3 次/s,故将 ALE 端的时钟脉冲经过 74HC393 芯片 16 分频后得到所需的 125KHZ。74HC393 芯片如图 2.5 所示。 1CP 1 1MR 2 1Q0 3 1Q1 4 1Q2 5 1Q3 6 GND 7 2Q3 8 2Q2 9 2Q1 10 2Q0 11 2MR 12 2CP 13 VCC 14 U4 74HC393 +5 ALE CLK 图 2.5 74HC393 芯片及电路图 2.3.2 ICL7135 引脚图 ICL7135 为 DIP28 封装,芯片引脚排列如图 2.6 所示。 图 2.6 ICL7135 芯片引脚图 2.3.3 引脚含义及功能: (1)与供电及电源相关的引脚(共 7 脚) -V:负电源引入端,典型值-5V,极限值-9V; +V:正电源引入端,典型值+5V,极限值+6V; DGND:数字地,ICL7135 正负电源的低电平基准; REF: 参考电压输入 REF 的地为 AGND 引脚,典型值 1V,输出数字量 10000(VIN/VREF); AC:模拟地,典型应用中,与 DGND(数字地)一点接地; INHI:模拟输入正,此设计中与恒流源连接; INLO:模拟输入负,当模拟信号输入为单端对地时,直接与 AC 相连。 (2) 与控制和状态相关的引脚(共 12 脚) CLKIN:时钟信号输入,当 T80ms 时,fcp125KHz,对 50HZ 工频干扰 有较大抑制能力,此时转换速度为 3 次/,极限值 fcp1MHZ 时,转换速度为 25 次/; REFC+:外接参考电容正,典型值F; REFC-:外接参考电容负; BUFFO:缓冲放大器输出端,典型外接积分电阻; INTO:积分器输出端,典型外接积分电容; AZIN:自校零端; LOW: 欠量程信号输出端,当输入信号小于量程范围的 10时,该端 输出高电平; HIGH:过量程信号输出端,当输入信号超过计数范围(20001)时,该端 输出高电平; STOR:数据输出选通信号(负脉冲),宽度为时钟脉冲宽度的一半,每 次 A/D 转换结束时,该端输出 5 个负脉冲,分别选通由高到低的 BCD 码数据 (5 位),该端用于将转换结果打到并行 I/O 接口; R/H:自动转换/停顿控制输入,当输入高电平时;每隔 40002 个时钟脉 冲自动启动下一次转换;当输入为低电平时,转换结束后需输入一个大于 300ns 的正脉冲,才能启动下一次转换; POL:极性信号输出,高电平表示极性为正; BUSY:忙信号输出,高电平有效,正向积分开始时自动变高,反向积分 结束时自动变低。 (3) 与选通和数据输出相关的引脚(共 9 脚) B8 B1:BCD 码输出,B8 为高位,对应 BCD 码; D5:万位选通; D4D1:千,百,十,个位选通。 SST89E51 单片机简介单片机简介 SST89E51 是一种带 4K 字节 FLASH存储器(FPEROMFlash Programmable and Erasable Read Only Memory)的低电压、高性能 CMOS 8 位微处理器,俗 称单片机。AT89C2051 是一种带 2K 字节闪存可编程可擦除只读存储器的单片机。 单片机的可擦除只读存储器可以反复擦除 1000 次。该器件采用 ATMEL 高密度非 易失存储器制造技术制造,与工业标准的 MCS-51 指令集和输出管脚相兼容。由 于将多功能 8 位 CPU 和闪烁存储器组合在单个芯片中,ATMEL 的 SST89E51 是一 种高效微控制器,AT89C2051 是它的一种精简版本。AT89C 单片机为很多嵌入式 控制系统提供了一种灵活性高且价廉的方案。外形及引脚排列如图 2.9 所示。 EA/VPP 31 XTAL1 19 XTAL2 18 RST 9 P3.7(RD) 17 P3.6(WR) 16 P3.2(INT0) 12 P3.3(INT1) 13 P3.4(T0) 14 P3.5(T1) 15 P1.0 1 P1.1 2 P1.2 3 P1.3 4 P1.4 5 P1.5 6 P1.6 7 P1.7 8 (AD0)P0.0 39 (AD1)P0.1 38 (AD2)P0.2 37 (AD3)P0.3 36 (AD4)P0.4 35 (AD5)P0.5 34 (AD6)P0.6 33 (AD7)P0.7 32 (A8)P2.0 21 (A9)P2.1 22 (A10)P2.2 23 (A11)P2.3 24 (A12)P2.4 25 (A13)P2.5 26 (A14)P2.6 27 (A15)P2.7 28 PSEN 29 ALE/PROG 30 (TXD)P3.1 11 (RXD)P3.0 10 GND 20 VCC 40 U5 SST89C51 RST XTAL1 XTAL2 RXD TXD INT0 CLK ALE 12 Y1 12MHz 22pF C11 22pF C12 XTAL1 XTAL2 10K R11 10uF C13 +5 VCC 图 2.9 SST89E51 引脚及连线图 2.6.1 引脚及功能: .P0 口:双向 8 位三态 I/O 口,为地址总线及数据总线分时复用口,可驱 动 8 个 LS 型 TTL 负载。 .P1 口:8 位准双向 I/O 口,可驱动 4 个 LS 型 TTL 负载。 .P2 口:8 位准双向 I/O 口,与地址总线复用,可驱动 4 个 LS 型 TTL 负载。 .P3 口:8 位准双向 I/O 口,双功能复用口,可驱动 4 个 LS 型 TTL 负载。 .RST/VPP:RST 是复位信号输入端,高电平有效。VPP 为本引脚的第二功能, 即备用电源输入端。 .ALE/PROG:ALE 输出为地址锁存允许信号。PROG 为本引脚的第二功能。 .PSEN:程序存储器允许输出控制端。 .EA/VPP:EA 功能为内外程序存储器选择控制端。 此设计中,采用定时计数器 0(INT0)外部脉冲计数方法,通过公式(2- 6)获得: (2-10000* Vref Vin C 6) 其中,Vin 为输入电压,Vref 为参考电压,C 为计数值。由上公式可求出 Vin,就可以求出 R,根据 R 和温度 T 的关系就可以求出当前温度值。这就是编 程中 A/D 转换函数的算法和思想。 数码管显示电路数码管显示电路 本设计显示电路是由 8 段共阳极数码管(4 个) ,三极管(4 个 9012) ,电 阻(4 个 1K,8 个 200) ,电源(+5V)几部分构成。具体电路如图 3-2 所示: a bf c g d e VCC 1 2 3 4 5 6 7 a b c d e f g 8 dp dp 9 VCC 200R 200R 200R 200R 200R 200R 200R 200R a bf c g d e VCC 1 2 3 4 5 6 7 a b c d e f g 8 dp dp 9 1K VCC a bf c g d e VCC 1 2 3 4 5 6 7 a b c d e f g 8 dp dp 9 1K VCC P0.0 P0.1 P0.2 P0.3 P0.4 P0.5 P0.6 P0.7 P2.3P2.4P2.5 a b c d e f g h b c d e f g h aa b c d e f g h 1K a bf c g d e VCC 1 2 3 4 5 6 7 a b c d e f g 8 dp dp 9 1K b c d e f g h a P2.6 VCC 图 3-2 数码管显示电路 电路分析: 1)1K 电阻:分别接到单片机 P2.3、P2.4、P2.5、P2.6 口上,并对 PNP 三极管起到限流保 护作用; 2)三极管:4 个三极管均为 PNP 型号,基极接 I/O 口,发射极接电源,数码管 COM 口接 在三极管集电极上, 当 I/O 给一个低电平,三极管基极电压为低,发射极电压为高,使三极管导通,为数 码管提供电压; 3)200 电阻:接到数码管的 8 个段位上,起到限流保护作用; 4)数码管:当 P0.x 信号为低时,P2.x 为低,对应数码管对应的段位呈现亮的状态,反之 则不亮。 工作原理: 数码管采用动态扫描工作方式,动态显示是将所有数码管的 8 个显示笔划 “a,b,c,d,e,f,g,h“的同名端连在一起,另外为每个数码管的公共极 COM 增加位选通控制电路, 位选通由各自独立的 I/O 线控制,本设计分别接到 P2.3、P2.4、P2.5、P2.6,当单片机输出 字形码时,所有数码管都接收到相同的字形码,但究竟是那个数码管会显示出字形,取决 于单片机对位选通 COM 端电路的控制,所以我们只要将需要显示的数码管的选通控制打 开,该位就显示出字形,没有选通的数码管就不会亮。通过分时轮流控制各个数码管的的 COM 端,就使各个数码管轮流受控显示,这就是动态驱动。在轮流显示过程中,每位数码 管的点亮时间为 12ms,由于人的视觉暂留现象及发光二极管的余辉效应,尽管实际上各 位数码管并非同时点亮,但只要扫描的速度足够快,给人的印象就是一组稳定的显示数据, 不会有闪烁感,动态显示的效果和静态显示是一样的,能够节省大量的 I/O 端口,而且功 耗更低。 串口电路及串口电路及 MAX232 芯片简介芯片简介 MAX232 是美信公司专门为电脑的 RS-232 标准串口设计的电源电平转换芯 片,使用+5V 单电源供电,功能是产生+12V 和-12V 两个电源,提供给 RS-232 串口电平的需要。串口电路图如图 2.8 所示。 C1+ 1 VDD 2 C1- 3 C2+ 4 C2- 5 VEE 6 T2OUT 7 R2IN 8 R2OUT 9 T2IN 10 T1IN 11 R1OUT 12 R1IN 13 T1OUT 14 GND 15 VCC 16 U3 MAX232 0.1uf C7 0.1uf C8 TXD RXD 0.1uf C9 VCC 1 2 3 4 5 6 7 8 9 11 10 J1 D Connector 9 串串串串串 0.1uf C10 图 2.8 串口电路 MAX232 芯片引脚介绍: 第一部分是电荷泵电路。由 1、2、3、4、5、6 脚和 4 只电容构成。功能是 产生+12v 和-12v 两个电源,提供给 RS-232 串口电平的需要。 第二部分是数据转换通道。由 7、8、9、10、11、12、13、14 脚构成两个 数据通道。 其中 13 脚(R1IN)、12 脚(R1OUT)、11 脚(T1IN)、14 脚(T1OUT)为 第一数据通道。 8 脚(R2IN)、9 脚(R2OUT)、10 脚(T2IN)、7 脚(T2OUT)为第二数据 通道。 TTL/CMOS 数据从 T1IN、T2IN 输入转换成 RS-232 数据从 T1OUT、T2OUT 送 到电脑 DB9 插头;DB9 插头的 RS-232 数据从 R1IN、R2IN 输入转换成 TTL/CMOS 数据后从 R1OUT、R2OUT 输出。 第三部分是供电。15 脚 GND、16 脚 VCC(+5v)。 第四章第四章 软件说明、测试方法软件说明、测试方法 本章主要介绍编程语言 C 语言和编程工具 Keil3 软件,以及本系统的程序 设计和在程序设计时所遇到的问题及解决办法。 3.1 编程语言介绍编程语言介绍 C 语言是一种面向过程的计算机程序设计语言,它是目前众多计算机语言 中举世公认的优秀的结构程序设计语言之一。 C 语言主要有以下特点: 1、 C 是中级语言。它把高级语言的基本结构和语句与低级语言的实用性 结合起来。C 语言可以像汇编语言一样对位、字节和地址进行操作, 而这三者 是计算机最基本的工作单元。 2、C 是结构式语言。结构式语言的显著特点是代码及数据的分隔化,即程 序的各个部分除了必要的信息交流外彼此独立。这种结构化方式可使程序层次 清晰,便于使用、维护以及调试。 3、C 语言功能齐全。具有各种各样的数据类型,并引入了指针概念,可使 程序效率更高。另外 C 语言也具有强大的图形功能,支持多种显示器和驱动器。 4、C 语言适用范围大。适合于多种操作系统,如 Windows、DOS、UNIX 等 等;也适用于多种机型。 基于 C 语言的这些特点,我们选用 C 语言来作为编程语言。 3.2 编程软件编程软件 Keil 简介简介 KeilC51 是美国 Keil Software 公司出品的 51 系列兼容单片机 C 语言软件 开发系统,与汇编相比,C 语言在功能上、结构性、可读性、可维护性上有明 显的优势,因而易学易用。 Keil C51 软件提供丰富的库函数和功能强大的集成开发调试工具,全 Windows 界面。另外重要的一点,只要看一下编译后生成的汇编代码,就能体 会到 Keil C51 生成的目标代码效率非常之高,多数语句生成的汇编代码很紧凑, 容易理解。在开发大型软件时更能体现高级语言的优势。下面详细介绍 KeilC51 开发系统各部分功能和使用。 我们用开发软件 Keil uVision3 来编写、修改所需程序和下载程序到单片 机运行。其下介绍 Keil uVision3 的使用步骤。 1.双击 Keil uVision3,得到主画面,如图 3.1 所示: 图 3.1 Keil uVision3 主画面 2新建工程界面 Project-new project,如图 3.2 所示: 图 3.2 Keil uVision3 的新建界面 3单片机的选择,如图 3.3 所示: 图 3.3 单片机的选择界面 如图所示能找到本次设计所需主要芯片 SST89E51。 4C 文件的建立与添加,如图 3.4 所示: 图 3.4 添加 C 文件 在添加 C 文件之后,就可以在里面编写自己的程序了,在编写完后编译, 如果没有错误,就可以下载到芯片当中进行调试并得到最终可用程序。 程序设计流程图程序设计流程图 本温度测量系统的程序设计流程图如图 3.5 所示。 图 3.5 程序流程图 用插值法计算数据用插值法计算数据 在科学和工程问题上可以通过租入采样、实验等方法或得若干离散的数据, 根据这些数据,我们往往希望得到一个连续的函数(也就是曲线)或者更加密 集的离散方程与已知数据相吻合。这个过程叫拟合。插值是曲线必须通过已知 点的拟合,是离散函数逼近的重要方法,利用它可通过函数在有限个点处的取 值状况,估算出函数在其它点的近似值。由于 PT100 与温度近似呈线性关系, 故采用线性插值法。在本次程序设计中运用了两次线性插值计算出最终的温度 值,第一次根据 AD 值算出 PT100 的阻值,之前先用标准电阻来标定 AD 值,即 自 50 到 220 每间隔 5 测一个 AD 值,制成表格,再由插值法计算出 PT100 的实际值。第二次根据阻值算出对应的温度值,在阻值与温度的表格中用插值 法计算出当时的温 度值。 单片机初始化 LED 初始化 根据 AD 码算出电阻 值 根据电阻值算出温度 值 LED 显示 延时 开始 6.4 关键程序关键程序 void zhuanhuan() Vinad = 2.2 * (Dat_pingjun / 4096);/ 电压转换 V_Pt = Vinad / 11.8; R = (int)(100000 * V_Pt); /转换电阻 T= T_pingjun; T_ZZZ_N =T; Z_N+; if(Z_N=16) Z_N=0; zhongzhi(); 我个人认为该程序模块为整个测温系统程序的灵魂,对电压,电阻,温度 三者之间的转换起到衔接作用,Dat_pingjun 承接 A/D 采集的数据,根据 0V0,2.2V4096,所以 A/D 输入电压就是第一条语句的对应关系,为了使数据 稳定,在这里对 A/D 采集的数据进行了滑动取平均值,由于 Pt100 信号电压比 较微弱,不利于采集,所以后级放大器将 V_Pt 差分放大约 11 倍多,所以就有 了第二条语句的关系,根据电阻-温度的分度表将电阻放大 100 倍,便于插值运 算,然后对插值计算所得结果再次进行滑动取平均值,使温度数据更加稳定, 但是经过测试之后,到了这一步温度显示还是不够稳定,所以我又采取对滑动 之后温度平均值放在长度为 16 的数组之中,对这些数据进行取中值,最后送显 示,调试结果很稳定,误差能保持在允许范围之内。 测试方法测试方法 用变阻箱代替 PT100 模拟温度变化时阻值的变化。程序运行时,在一定范 围内扭动变阻箱,LED 将显示此阻值对应的温度值。可知对应值是否正确。 第五章第五章 数据结果分析数据结果分析 3.8 数据测试及误差分析数据测试及误差分析 AD 码-阻值分度表如表 3-8 所示,阻值-温度分度值见附录(二) 。根据插 值法,可以由测得数据获得液晶显示获得 AD 码与温度的近似值。误差主要是由 软件编写不成熟和电阻箱阻值不稳定造成的。但精度基本上可以达到0.1。 表 3-8 AD 码-阻值分度表 R()556065707580859095 AD465851245515698063756836723076858084 R()100105110115120125130135140 AD85168875939597701025310630111081148611967 R()145150155160165170175180185 AD123501282313210136571405014530149251538715789 R()190195200205210215220225230 AD162421661517036173871885718230187151911319627 6.5.3 软件调试结果 部分电阻-温度分度表,由于电阻存在误差,所以测出的温度相对误差不是很准确。 表 6-1 数据统计表 分度表阻值()实测阻值()分度表温度()实测温度()相对误差 100.00 100.00000 110.12 110.012625.8-26.1-0.2-+0.1 120.16 120.105252.1-52.4+0.1-+0.4 130.13 130.187877.7-78.1-0.3-+0.1 140.02 139.96104103.6-103.8-0.4-0.2 149.82 149.79130129.7-129.9-0.3-0.1 159.93 159.88157156.8-157.1-0.2-+0.1 169.57 169.45183182.5-182.8-0.5-0.2 179.14 179.11209208.6-208.9-0.4-0.1 184.63184.6224223.7-0.3 附录(附录()程序)程序 #include #define uchar unsigned char #define uint unsigned int uchar seg_code11 = 0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x7f ;/段码 uchar bit_sel4 = 0xbf,0xdf,0xef,0xf7; /位码 uchar LEDn = 0 ; uchar buffer4; uchar btpoint = 0X7F; bit T0_flag=0,AD_flag = 0; double aver,get_ad15,huadong16,T_huadong16,T_ZZ16; double Vinad,V_Pt,Dat_pingjun,T_pingjun,T_last; int flag=0,NUM,Z_N=0; /*Pt100 有关参数定义 */ uint R; /电阻 double T;/温度 int code Pt362 = 6430,-90,6833,-80,7233,-70,7633,- 60,8031,-50,8427,-40,8822,-30,9216,-20,9609,- 10,10000,0,10390,10,10779,20,11167,30,11554,40,11940, 50,12324,60,12708,70,13090,80,13471,90,13851,100,1422 9,110,14607,120,14983,130,15358,140,15733,150,16105,160, 16477,170,16848,180,17217,190,17586,200,17953,210,183 19,220,18684,230,19047,240,19410,250,19771,260 ; /*配置 cpu IO 口 */ void IO_Init() PCA0MD = 0x00; /禁止看门狗 P0MDOUT = 0x00;/P0 口为输出方式,设置为弱上拉(0 为弱上 拉,1 为推挽) P2MDIN = 0xfb;/P2.2 为模拟输入方式 P2MDOUT = 0x78;/P2 口为输出方式,设置为弱上拉 P1SKIP = 0xff; /交叉开关跳过 P1.1 XBR0 = 0x00; /不连任何端口引脚 XBR1 = 0x40; /输出方式为弱上拉,交叉开关被使能 /*A/D 初始化 */ void AD_Init() ADC0MX = 0x12; /A/D 转化选择输入为 p1.1 口 *A/DC0 通道选择寄存器 ADC0CF = 0xf8; ADC0CN = 0x80; ADC0TK = 0xff; /*系统时钟初始化 */ void SYSCLK() OSCICN = 0x87;/内部振荡器不分频 /*电压基准选择 */ void MUX() REF0CN = 0x13;/内部基准电压为 2.2V,内部基准缓冲器被使能, 内部电压基准被驱动到 VREF 引脚,内部偏压发生器总是被使能。 /*显示函数 */ void display() if(T0_flag = 1) T0_flag = 0; P2 = 0xff; if(LEDn = 2) P0 = seg_codebufferLEDn else P0 = seg_codebufferLEDn; P2 = bit_selLEDn; LEDn +; if(LEDn = 4) LEDn = 0; /*定时器 0*/ void T0_Init() TMOD = 0x01; TCON = 0x10; TH0 = 255; TL0 = 255; ET0 = 1; /*定时器 0 中断用来显示 */ void Timer0() interrupt 1 TH0 = 0xe0; TL0 = 0; T0_flag = 1; /* */ uint ADC0() uchar x; uint y; ADC0MX = 0x09; ADC0CN |= 0x10; x = ADC0CN while(x = 0) x = ADC0CN ADC0CN = ADC0CN y = 256*ADC0H + ADC0L - 30; return y; /*求平均值 */ void huadongpingjun() huadong15 = huadong14; huadong14 = huadong13; huadong13 = huadong12; huadong12 = huadong11; huadong11 = huadong10; huadong10 = huadong9; huadong9 = huadong8; huadong8 = huadong7; huadong7 = huadong6; huadong6 = huadong5; huadong5 = huadong4; huadong4 = huadong3; huadong3 = huadong2; huadong2 = huadong1; huadong1 = huadong0; huadong0 = aver; Dat_pingjun = (huadong15+huadong14+huadong13+huadong12+huadong11+h uadong10+huadong9+huadong8+huadong7+huadong6+huadong 5+huadong4+huadong3+huadong2+huadong1+huadong0)/16; void Average() uint sum = 0; int i; for(i = 0;i Pti0) i+; T1 = jisuan(R,Pti-10,Pti0,Pti+10,Pti- 11,Pti1,Pti+11); return T1; /*温度求平均值处理 */ void T_chuli() T_huadong15 = T_huadong14; T_huadong14 = T_huadong13; T_huadong13 = T_huadong12; T_huadong12 = T_huadong11; T_huadong11 = T_huadong10; T_huadong10 = T_huadong9; T_huadong9 = T_huadong8; T_huadong8 = T_huadong7; T_huadong7 = T_huadong6; T_huadong6 = T_huadong5; T_huadong5 = T_huadong4; T_huadong4 = T_huadong3; T_huadong3 = T_huadong2; T_huadong2 = T_huadong1; T_huadong1 = T_huadong0; T_huadong0 = chazhi(R); T_pingjun =(T_huadong15+T_huadong14+T_huadong13+T_huadong12 +T_huadong11+T_huadong10+T_huadong9+T_huadong8+T_hua dong7 +T_huadong6+T_huadong5+T_huadong4+T_huadon
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 交通、法制安全知识竞赛试题
- 上半年幼儿教师资格证考试真题及答案
- 各种中职焊工技能大赛试题
- 双重预防体系基础知识考试考试练习题及答案
- 广告设计师考试中级广告设计师考试卷模拟考试题x
- 2025年进阶能力测试题及答案
- 《组织行为学》试题及答案B
- 事业单位考试《水利工程专业试题》试题及答案解析
- 公务员遴选面试真题及解题思路
- 2025年执业药师《药理学》模拟测试
- 2025年6月大学英语四级考试真题第1套(含答案+听力原文+听力音频)
- 2025年《内部控制与风险管理》试题与答案一
- 2025广西柳州城市职业学院人才招聘28人考试笔试参考题库附答案解析
- 公园营销策略方案
- 13. 艺术品的收藏与拍卖教学设计-2025-2026学年人美版八年级下册-人美版
- 电厂消防安全培训 课件
- 2025年秋人教版小学数学六年级上册期末质量检测试卷及参考答案
- 招聘专员年度述职报告
- 心电中心运营方案
- 《分布式光伏发电开发建设管理办法》问答(2025年版)
- xx医院检验科室内质控月总结报告
评论
0/150
提交评论