《智能仪器工程设计》
课程设计报告
姓 名: 马 波 0902040146
曹 露 0902040142 王 洋 0902040141
学 院: 机电信息学院 系(专业): 测控技术与仪器 题 目: 智能温度测控仪 指导老师: 杨良煜 杨萍
基于单片机的数字温度计设计
摘要:
随着国民经济的发展,人们需要对各中加热炉、热处理炉、反应炉和锅炉中温度进行监测和控制。采用单片机来对他们控制不仅具有控制方便,简单和灵活性大等优点,而且可以大幅度提高被控温度的技术指标,从而能够大大的提高产品的质量和数量。
在日常生活及工业生产过程中,经常要用到温度的检测及控制,温度是生产过程和科学实验中普遍而且重要的物理参数之一。在生产过程中,为了高效地进行生产,必须对它的主要参数,如温度、压力、流量等进行有效的控制。温度控制在生产过程中占有相当大的比例。温度测量是温度控制的基础,技术已经比较成熟。传统的测温元件有热电偶和二电阻。而热电偶和热电阻测出的一般都是电压,再转换成对应的温度,这些方法相对比较复杂,需要比较多的外部硬件支持。我们用一种相对比较简单的方式来测量。
本文介绍一种基于AT89C51单片机的一种温度测量及显示电路,该电路以电位器(0~+5v)模拟为源温度,以ADC0804代替DS18B20作为温度监测元件,测量范围0℃-~+100℃,使用LED模块显示。正文着重给出了软硬件系统的各部分电路,介绍了ADC0804的原理,AT89C51单片机功能和应用。该电路设计新颖、功能强大、结构简单。
关键词:温度测量;ADC0804;AT89C51;
1方案选择
该系统主要由温度测量和数据采集两部分电路组成,实现的方法有很多种,下面将列出两种在日常生活中和工农业生产中经常用到的实现方案。
1.1方案一
采用热电偶温差电路测温,温度检测部分可以使用低温热偶,热电偶由两个焊接在一起的异金属导线所组成,热电偶产生的热电势由两种金属的接触电势和单一导体的温差电势组成。通过将参考结点保持在已知温度并测量该电压,便可推断出检测结点的温度。数据采集部分则使用带有A/D 通道的单片机,在将随被测温度变化的电压或电流采集过来,进行A/D 转换后,就可以用单片机进行数据的处理,在显示电路上,就可以将被测温度显示出来。热电偶的优点是工作温度范围非常宽,且体积小,但是它们也存在着输出电压小、容易遭受来自导线环路的噪声影响以及漂移较高的缺点,并且这种设计需要用到A/D 转换电路,感温电路比较麻烦。
系统主要包括对A/D0809 的数据采集,自动手动工作方式检测,温度的显示等,这几项功能的信号通过输入输出电路经单片机处理。此外还有复位电路,晶振电路,启动电路等。故现场输入硬件有手动复位键、A/D 转换芯片,处理芯片为51 芯片,执行机构有4 位数码管等。【1】
系统框图如图 3-1所示。
图 1-1 热电偶温差电路测温系统框图
1.2方案二
采用电位器(代替数字温度芯片DS18B20 )测量温度,通过ADC0804转换输出
信号全数字化。便于单片机处理及控制,省去传统的测温方法的很多外围电路。。在0—100 摄氏度时,最大线形偏差小于0.2 摄氏度。ADC0804 的最大特点之一采用了单总线的数据传输,由数字温度计ADC0804和微控制器AT89S51构成的温度测量装置,它直接输出温度的数字信号,可直接与计算机连接。这样,测温系统的结构就比较简单,体积也不大。采用51 单片机控制,软件编程的自由度大,可通过编程实现各种各样的算术算法和逻辑控制,而且体积小,硬件实现简单,安装方便。既可以单独对多ADC0804控制工作,还可以与PC 机通信上传数据,另外AT89S51 在工业控制上也有着广泛的应用,编程技术及外围功能电路的配合使用都很成熟。【1】
从以上两种方案,容易看出方案一的测温装置可测温度范围宽、体积小,但是线性误差较大。方案二的测温装置电路简单、精确度较高、实现方便、软件设计也比较简单,故本次设计采用了方案二。 2.1系统设计原理
利用电位器(代替温度传感器DS18B20)可以直接读取被测温度值,进行转换的特性,模拟温度值经过ADC0804处理后转换为数字值,然后送到单片机中进行数据处理,并与设置的温度报警限比较,超过限度后通过扬声器报警。同时处理后的数据送到LED中显示。 2.2系统组成
本课题以是80C51单片机为核心设计的一种数字温度控制系统,系统整体硬件电路包括,传感器数据采集电路,温度显示电路,上下限报警调整电路,单片机主板电路等组成。
系统框图主要由主控制器、单片机复位、、时钟振荡、LED显示、电位器、ADC0804组成。
系统框图如图3-2所示。
图2-2 系统基本方框图
3.1 单元电路设计
3. 1 80C51单片机管脚图
图3-1 80C51单片机管脚图
3.12时钟电路引脚XTAL1 和XTAL2:
XTAL2(18 脚):接外部晶体和微调电容的一端;在8051 片内它是振荡电路反相放大器的输出端,振荡电路的频率就是晶体固有频率。若需采用外部时钟电路时,该引脚输入外部时钟脉冲。
要检查8051/8031 的振荡电路是否正常工作,可用示波器查看XTAL2 端是否有脉冲信号输出。
XTAL1(19 脚):接外部晶体和微调电容的另一端;在片内它是振荡电路反相放大器的输入端。在采用外部时钟时,该引脚必须接地。
图3-2 80C51单片机晶振电路
控制信号引脚RST,ALE,PSEN 和EA:
RST/VPD(9 脚):RST 是复位信号输入端,高电平有效。当此输入端保持备用电源的输入端。当主电源Vcc 发生故障,降低到低电平规定值时,将+5V 电源自动两个机器周期(24个时钟振荡周期)的高电平时,就可以完成复位操作。RST 引脚的第二功能是VPD,即接入RST 端,为RAM 提供备用电源,以保证存储在RAM 中的信息不丢失,从而合复位后能继续正常运行。
图3-380C51单片机复位电路
3.1.3 89C51单片机的中断系统
89C51系列单片机的中断系统有5个中断源,2个优先级,可以实现二级中断服务嵌套。由片内特殊功能寄存器中的中断允许寄存器IE控制CPU是否响应中断请求;由中断优先级寄存器IP安排各中断源的优先级;同一优先级内各中断同时提出中断请求时,由内部的查询逻辑确定其响应次序。 3.1.4 80C51单片机的定时/计数器
在单片机应用系统中,常常会有定时控制需求,如定时输出、定时检测、定时扫描等;也经常要对外部事件进行计数。80C51单片机内集成有两个可编程的定时/计数器:T0和T1,它们既可以工作于定时模式,也可以工作于外部事件计数模式,此外,T1还可以作为串行口的波特率发生器。
3.2 ADC0804介绍
3.2.1 ADC0804芯片介绍
图3-4ADC0804规格及引脚分配图
/CS:芯片片选信号,低电平有效,即/CS=0,该芯片才能正常工作,在外接多个ADC0804芯片时,该信号可以作为选择地址使用,通过不同的地址信号使能不同的ADC0804芯片,从而可以实现多个ADC通道的分时复用。
/WR:启动ADC0804进行ADC采样,该信号低电平有效,即/WR信号由高电平变成低电平时,触发一次ADC转换。
/RD:低电平有效,即/RD=0时,可以通过数据端口DB0~DB7读出本次的采样结果。
UIN(+)和UIN(-):模拟电压输入端,模拟电压输入接UIN(+)端,UIN(-)端接地。双边输入时UIN(+)、UIN(-)分别接模拟电压信号的正端和负端。当输入的模拟电压信号存在“零点漂移电压”时,可在UIN(-)接一等值的零点补偿电压,变换时将自动从UIN(+)中减去这一电压。
VREF/2:参考电压接入引脚,该引脚可外接电压也可悬空,若外界电压,则ADC的参考电压为该外界电压的两倍,如不外接,则Vref与Vcc共用电源电压,此时ADC的参考电压即为电源电压Vcc的值。
CLKR和CLKIN:外接RC电路产生模数转换器所需的时钟信号,时钟频率CLK = 1/1.1RC,一般要求频率范围100KHz~1.28MHz。
AGND和DGND:分别接模拟地和数字地。
/INT:中断请求信号输出引脚,该引脚低电平有效,当一次A/D转换完成后, 将引起/INT=0,实际应用时,该引脚应与微处理器的外部中断输入引脚相连(如51单片机的INT0,INT1脚),当产生/INT信号有效时,还需等待/RD=0才能正确读出A/D转换结果,若ADC0804单独使用,则可以将/INT引脚悬空。 DB0~DB7:输出A/D转换后的8位二进制结果。
3.2.2 外围电路设计
图3-5 ADC0804的外围电路
图4为ADC0804外围电路原理图,其中,AVCC=5V,引脚VREF/2悬空,因此ADC转换的参考电压为AVCC的值,即5V。VIN-接地,而VIN+连接滑动变阻器VR1的输出,因此VIN+的电压输入范围为0V~5V,正好处于参考电压范围内。
引脚CS_1, WR_1和RD_1分别连接单片机的P3_5,P3_6以及P3_7脚,而DB0~DB7连接单片机的P2脚.
、 3.3LED四位数码显示管简介
3.31四位数码显示管与89C51的接口
图3-6四位七段数码管外围电路图
4. 系统功能说明及其使用说明
图4-1该图为数字温度计电路图
图4-2电压为5V时显示温度
图4-3 电压为3.75V时显示温度
图4-4电压为2.5V时显示温度
图4-5电压为1.25V时显示温度
图4-6 电压为0V时显示温度
参考资料
[1] 阎石.数字电子技术基础.高等教育出版社,2006
[2] 王卫东.模拟电子电路基础[M].西安:西安·电子科技大学出版社,2003 [3] 曹丙霞,赵艳华.PROTEL 99SE原理图与PCB设计.电子工业出版社,2007 [4] 李群芳,张士军,黄建.单片机微型计算机与接口技术.电子工业出版社,2008 [5] 赵世强.电子电路EDA技术[M].西安:西安电子科技大学出版社,2000 [6] 郭天祥.新概念51单片机C语言教程.电子工业出版社,2009
附录一
图4-1该图为数字温度计电路图
系统总体原理图
附录二
系统程序清单
#include char code TAB[10]={ 0x3f, 0x06, 0x5b, 0x4f, 0x66, // 0 ̄4 0x6d, 0x7d, 0x07, 0x7f, 0x6f }; // 5 ̄9 #define SCANP P1 // 定义扫瞄信号连接埠 #define SEG7P P2 // 定义七节显示器连接埠 sbit INTR=P3^2; // 定义IRQ接脚 unsigned char xdata adc; // 声明外部记忆体变量 unsigned char _adc; // 声明变量 unsigned char disp[4]={0, 0, 0, 0}; // 声明显示区阵列 unsigned char _adc; // 声明变量 void dataproc(unsigned char);// 声明资料处理函数 void display(void); // 声明显示函数 void delay1ms(char); // 声明延迟函数 main() // 主程序 { while(1) // while开始 { display(); // 显示 _adc=adc; /*读取外部记忆体,目的是让ADC0804之RD=0、INTR=1*/ adc=0x00; while(INTR==1); // 等待中断 _adc=adc; // 读取外部记忆体 dataproc(_adc); // 资料处理 } // while结束 } // 主程序结束 //====资料处理函数==== void dataproc(unsigned char data_in) { int results; // 声明变量 results= data_in; results=results*3.922; // 读取ADC0804转换结果 disp[3]=results/1000; // 取得千位数 disp[2]=(results/100)%10; // 取得百位数 disp[1]=(results/10)%10; // 取得十位数 disp[0]=results%10; // 取得个位数 } // 资料处理函数结束 //====显示函数==== void display(void) { char i, scan; // 声明变量 char times=20; // 扫瞄20次 while (--times>=0) // while循环开始 { scan=1; // 初始扫瞄信号 for(i=0;i<4;i++) // for叙述开始 { SEG7P=0x00; // 关闭7节显示器 SCANP=~scan; // 输出扫瞄信号 SEG7P=TAB[disp[i]]; // 转换成驱动信号,并输出到P0 if(i==1) P2=TAB[disp[1]]+0x80; delay1ms(4); // 延迟4ms scan<<=1; // 下一个扫瞄信号 } // 结束for叙述 } // 结束while叙述 } // display函数结束 //====延迟函数==== void delay1ms(char x) { int i,j; // 声明变量 for(i=0;i 从0V~5V,每隔0.05V采集一个数据,共采集了101个数据(如图5-1中 的测得温度一列)。根据公式计算的每点应该输出温度(如图5-1中的计算温度一列),测得温度-计算温度的则就是产生的误差。 误差=(测得温度-计算温度)/量程*100%=0.2% 即我们所设计的数字温度计精度为2.0级,误差小于0.2%。 数字温度计数据采集及误差分析 电压 测得温度 计算温度 测得温度-计算温度 电压 测得温度 计算温度 测得温度-计算温度 0.0 0.1 0.1 0.2 0.2 0.3 0.3 0.4 0.4 0.5 0.5 0.6 0.6 0.7 0.7 0.8 0.8 0.9 0.9 1.0 1.0 1.1 1.1 1.2 1.2 1.3 1.3 1.4 1.4 1.5 1.5 0.0 1.1 1.9 3.1 3.9 5.0 5.8 7.0 7.8 9.0 9.8 10.9 12.1 12.9 14.1 14.9 16.0 16.8 18.0 18.8 20.0 21.1 21.9 23.1 23.9 25.1 25.8 27.0 27.8 29.0 29.8 0.0 1.0 2.0 3.0 4.0 5.0 6.0 7.0 8.0 9.0 10.0 11.0 12.0 13.0 14.0 15.0 16.0 17.0 18.0 19.0 20.0 21.0 22.0 23.0 24.0 25.0 26.0 27.0 28.0 29.0 30.0 0.0 0.1 -0.1 0.1 -0.1 0.0 -0.2 0.0 -0.2 0.0 -0.2 -0.1 0.1 -0.1 0.1 -0.1 0.0 -0.2 0.0 -0.2 0.0 0.1 -0.1 0.1 -0.1 0.1 -0.2 0.0 -0.2 0.0 -0.2 2.6 2.6 2.7 2.7 2.8 2.8 2.9 2.9 3.0 3.0 3.1 3.1 3.2 3.2 3.3 3.3 3.4 3.4 3.5 3.5 3.6 3.6 3.7 3.7 3.8 3.8 3.9 3.9 4.0 4.0 4.1 50.9 52.1 52.9 54.1 54.9 56.0 56.8 58.0 58.8 60.0 61.1 61.9 63.1 63.9 65.1 65.8 67.0 67.8 69.0 69.8 70.9 72.1 72.9 74.1 74.9 76.0 76.8 78.0 78.8 80.0 81.1 51.0 52.0 53.0 54.0 55.0 56.0 57.0 58.0 59.0 60.0 61.0 62.0 63.0 64.0 65.0 66.0 67.0 68.0 69.0 70.0 71.0 72.0 73.0 74.0 75.0 76.0 77.0 78.0 79.0 80.0 81.0 -0.1 0.1 -0.1 0.1 -0.1 0.0 -0.2 0.0 -0.2 0.0 0.1 -0.1 0.1 -0.1 0.1 -0.2 0.0 -0.2 0.0 -0.2 -0.1 0.1 -0.1 0.1 -0.1 0.0 -0.2 0.0 -0.2 0.0 0.1 1.6 1.6 1.7 1.7 1.8 1.8 1.9 1.9 2.0 2.0 2.1 2.1 2.2 2.2 2.3 2.3 2.4 2.4 2.5 2.5 30.9 32.1 32.9 34.1 34.9 36.0 36.8 38.0 38.8 40.0 41.1 41.9 43.1 43.9 45.1 45.8 47.0 47.8 49.0 49.8 31.0 32.0 33.0 34.0 35.0 36.0 37.0 38.0 39.0 40.0 41.0 42.0 43.0 44.0 45.0 46.0 47.0 48.0 49.0 50.0 -0.1 0.1 -0.1 0.1 -0.1 0.0 -0.2 0.0 -0.2 0.0 0.1 -0.1 0.1 -0.1 0.1 -0.2 0.0 -0.2 0.0 -0.2 4.1 4.2 4.2 4.3 4.3 4.4 4.4 4.5 4.5 4.6 4.6 4.7 4.7 4.8 4.8 4.9 4.9 5.0 5.0 81.9 83.1 83.9 85.1 85.8 87.0 87.8 89.0 89.8 90.9 92.1 92.9 94.1 94.9 96.0 96.8 98.0 98.8 100.0 82.0 83.0 84.0 85.0 86.0 87.0 88.0 89.0 90.0 91.0 92.0 93.0 94.0 95.0 96.0 97.0 98.0 99.0 100.0 -0.1 0.1 -0.1 0.1 -0.2 0.0 -0.2 0.0 -0.2 -0.1 0.1 -0.1 0.1 -0.1 0.0 -0.2 0.0 -0.2 0.0 图5-1 图5-2 计算温度与测得温度分析对比图 附录四 基于单片机的数字温度计电路元件清单 元件名称 电源 电位器 STC89C51 ADC0804 四位数码显示管 复位开关 晶振 规格 5V 1K 22pf 电容 10uf 150pf 电阻 电线 1k 10k 个数 1 1 1 1 1 1 1 2 1 1 1 4 若干 数字温度计设计的心得体会 本次课程设计即将进入尾声,回想这两周来的数字温度计制作经历,我感触甚是深刻。通过本次课程设计,使我对电子设计及制作产生了较为浓厚的兴趣,这不仅加强了自己对理论知识的理解和巩固,还能提高自己的动手能力,可以说受益匪浅。当然更重要的是,激起了我学好单片机的斗志。 本次课程设计主要分为四部分:设计、仿真、调试。这三个步骤在整个课程设计过程中起着重要的作用。 本次课程设计的任务是:根据老师给出的设计题目的要求选择合适的电路,确定元件参数,对原理图进行电路仿真。在整个设计制作过程中用到了两个软件,protues和KEIL软件。可以说,在此之前自己未曾使用过protues软件。而且KEIL用起来也是相当的陌生,毕竟已隔将近半年多没用此软件做板了。本次课设让我学到了如何去运用protues软件对电路进行仿真。而在使用protues软件设计时,我也有了不少的学习应用心得。 最能体现一个人的耐心程度,也最能学到东西的阶段还是在调试过程。在整个过程中既要求熟练掌握设计的原理,懂得运用所学电学的基本理论,还要求善于查错,改错。如果在调试过程中无法达到预期结果,就要从整个设计制作过程中认真分析,细心查找错误,一步一步仔细排查。 本次课程设计的大概题目是老师给出,当然我们也可以自由选择。我在学校图书馆以及网上查阅了相关资料之后,确定了一个与目前我所学的知识比较接近且相对而言比较熟悉的题目。可以说从确定题目,寻找原理图,到焊接调试,每一个步骤都付出了努力,倾注了我两周的心血,也从中积累了宝贵的经验,最后终于大抵上完成了设计任务。从总体上看,这次数码温度计制作还是比较成功的,程序设计与电路图制作比较理想。看着自己调试出的数码温度计,心里总有些许的“成就感”,这也只有真正是自己动过手的人才能体会到其中的喜悦。本次课程设计给我的第一大感觉就是:要成功,就要有付出。 从这一次制作过程的心得体会当中,我意识到在以后的设计中我还需要做到再细心、再耐心、再专心。回想从制作开始到结束,没有哪一步不是注入了自己的心血,心情就激动不已,此次课程设计必将让自己的理论水平和实践能力上升到一个新的台阶,同时也让自己认识到实践的重要性。 姓 名:马 波 学 号:0902040146 专业班级:测控0901 因篇幅问题不能全部显示,请点此查看更多更全内容