基于热敏电阻的数字温度计(共19页).doc

上传人:飞****2 文档编号:13287112 上传时间:2022-04-28 格式:DOC 页数:19 大小:671KB
返回 下载 相关 举报
基于热敏电阻的数字温度计(共19页).doc_第1页
第1页 / 共19页
基于热敏电阻的数字温度计(共19页).doc_第2页
第2页 / 共19页
点击查看更多>>
资源描述

《基于热敏电阻的数字温度计(共19页).doc》由会员分享,可在线阅读,更多相关《基于热敏电阻的数字温度计(共19页).doc(19页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、精选优质文档-倾情为你奉上电子信息工程学院电子设计应用软件训练任务【训练任务】:1、熟练掌握PROTEUS软件的使用; 2、按照设计要求绘制电路原理图; 3、能够按要求对所设计的电路进行仿真;【基本要求及说明】: 1、按照设计要求自行定义电路图纸尺寸; 2、设计任务如下:基于热敏电阻的数字温度计设计要求使用热敏电阻类的温度传感器件利用其感温效应,将随被测温度变化的电压或电流用单片机采集下来,将被测温度在显示器上显示出来:l 测量温度范围50110。l 精度误差小于0.5。l LED数码直读显示。本题目使用铂热电阻PT100,其阻值会随着温度的变化而改变。PT后的100即表示它在0时阻值为100

2、欧姆,在100时它的阻值约为138.5欧姆。厂家提供有PT100在各温度下电阻值值的分度表,在此可以近似取电阻变化率为 0.385/。向PT100输入稳恒电流,再通过A/D转换后测PT100两端电压,即得到PT100的电阻值,进而算出当前的温度值。采用2.55mA的电流源对PT100进行供电,然后用运算放大器LM324搭建的同相放大电路将其电压信号放大10倍后输入到AD0804中。利用电阻变化率0.385/的特性,计算出当前温度值。3、按照设计任务在Proteus 6 Professional中绘制电路原理图; 4、根据设计任务的要求编写程序,在Proteus下进行仿真,实现相应功能。【按照要

3、求撰写总结报告】成绩:一、 任务说明 使用热敏电阻类的温度传感器件利用其感温效应,将随被测温度变化的电压或电流用单片机采集下来,将被测温度在显示器上显示出来:l 测量温度范围50110。l 精度误差小于0.5。l LED数码直读显示。本题目使用铂热电阻PT100,其阻值会随着温度的变化而改变。PT后的100即表示它在0时阻值为100欧姆,在100时它的阻值约为138.5欧姆。厂家提供有PT100在各温度下电阻值值的分度表,在此可以近似取电阻变化率为 0.385/。向PT100输入稳恒电流,再通过A/D转换后测PT100两端电压,即得到PT100的电阻值,进而算出当前的温度值。采用2.55mA的

4、电流源对PT100进行供电,然后用运算放大器LM324搭建的同相放大电路将其电压信号放大10倍后输入到AD0804中。利用电阻变化率0.385/的特性,计算出当前温度值。二、元器件简介1、 AT89C51简介 AT89C51是一种带4K字节FLASH的低电压、高性能CMOS,8位微处理器,俗称。AT89C51 提供以下标准功能:4k 字节Flash 闪速存储器,128字节内部RAM,32 个I/O 口线,两个16位定时/计数器,一个5向量两级中断结构,一个全双工串行通信口,片内振荡器及时钟电路。其引脚图如图一所示。图一 AT89C51引脚图VCC: 电源GND: 地P0 口:P0口是一个8位漏

5、极开路的双向I/O口。作为输出口,每位能驱动8个TTL逻辑电平。对P0端口写“1”时,引脚用作高阻抗输入。当访问外部程序和数据存储器时,P0口也被作为低8位地址/数据复用。在这种模式下,P0具有内部上拉电阻。 P1口:P1口是一个具有内部上拉电阻的8位双向I/O口,P1输出缓冲器能驱动4个TTL逻辑电平。对P1 端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。此外,P1.0和P1.2分别作定时器/计数器2的外部计数输入(P1.0/T2)和时器/计数器2的触发输入(P1.1/T2EX)。P2口:P2口是一个

6、具有内部上拉电阻的8位双向I/O 口,P2 输出缓冲器能驱动4个TTL逻辑电平。对P2 端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。在访问外部程序存储器或用16位地址读取外部数据存储器(例如执行MOVX DPTR)时,P2口送出高八位地址。在这种应用中,P2口使用很强的内部上拉发送1。在使用8位地址(如MOVX RI)访问外部数据存储器时,P2口输出P2锁存器的内容。在flash编程和校验时,P2口也接收高8位地址字节和一些控制信号。P3口:P3口是一个具有内部上拉电阻的8位双向I/O 口,对P3 端

7、口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流(IIL)。P3口亦作为AT89C51特殊功能(第二功能)使用,如表一所示。表一 AT89C51引脚号第二功能P3.0 RXD(串行输入)P3.1 TXD(串行输出)P3.2 INT0(外部中断0)P3.3 INT0(外部中断0)P3.4 T0(定时器0外部输入)P3.5 T1(定时器1外部输入)P3.6WR(外部数据存储器写选通)P3.7 RD(外部数据存储器读选通)RST:复位输入,晶振工作时,RST脚持续2个机器周期高电平将使单片机复位。ALE/PROG:地址锁存控

8、制信号(ALE)是访问外部程序存储器时,锁存低8 位地址的输出脉冲。XTAL1和XTAL2分别为反向放大器的输入和输出。该反向放大器配置为片内振荡器时,石晶振荡和陶瓷振荡均可采用。2、 ADC0804 ADC0804是属于连续渐进式(SuccessiveApproximationMethod)的A/D转换器,这类型的A/D转换器除了转换快(几十至几百us)、分辨率高外,还有价钱的优点,普遍被应用于微电脑的设计上,其引脚图如图二所示。图二 ADC0804引脚图 芯片参数: 工作电压: 5V,即VCC= 5V。 模拟输入电压范围:0 5V,即0Vin 5V。 分辨率:8位,即分辨率为1/2=1/2

9、56,转换值介于0255之间。 转换时间:100us(fCK=640KHz时)。 转换误差:1LSB。 参考电压:2.5V,即Vref=2.5V。 各个管脚的作用: D0-D7:数字量输出端,输出结果为八位二进制结果; CLK:为芯片工作提供工作脉冲,时钟电路如图所示,时钟频率计算方式是: FCK=1/(1.1RC) CS:片选信号; WR:写信号输入端; RD:读信号输入端; INTR:转换完毕中断提供端; 其他管脚连接如图,是供电和提供参考电压的管脚输入端。3、铂热电阻PT100铂热电阻PT100,它的阻值跟温度的变化成正比。PT100的阻值与温度变化关系为:当PT100温度为0时它的阻值

10、为100欧姆,在100时它的阻值约为138.5欧姆。它的工业原理:当PT100在0摄氏度的时候他的阻值为100欧姆,它的阻值会随着温度上升而成匀速增长的。在高温下其物理、化学性质都非常稳定,因此它具有精度高、稳定性好、性能可靠的特点。它的电阻温度关系的线性度非常好,在-200650温度范围内线性度已经非常接近直线,电阻与温度的关系:R=T+100。4、 LM324 LM324系列器件带有输入的四运算放大器。它14脚双列直插封装。它的内部包含四组形式完全相同的运算放大器,除电源共用外,四组运放相互独立。它们有一些显著优点。该四放大器可以工作在低到3.0伏或者高到32伏的电源下,静态电流为MC17

11、41的静态电流的五分之一。引脚图如图三所示。图三 LM324引脚图三、方案论证 本次设计以AT89C51和ADC0804为核心,利用热敏电阻的热敏效应,把温度变化转换成阻值变化,进而电压变化,把转换过来的模拟电压输送给模数转换电路ADC0804,将模拟量转换成数字量,再将数字量输送给单片机,单片机进行数据处理,处理的结果是,使输出的数据给数码管,数码管能够显示当前温度。其各个元器件的主要职能如下:铂热电阻PT100:温度传感器,将非直接测量的温度转换成可测量可用的模拟电压电压信号。LM324:由于测温电路输出的电压信号很微小,如果直接输送给模数转换器将会造成很大的误差,LM324主要用来放大测

12、温电路的输出电压,使其输出的电压能够进行模数转换。ADC0804:模数转换器,将LM324输送来的模拟电压转换成数字量,并输送给单片机进行数据处理。AT89C51单片机:对ADC0804输送过来的数字信号,进行数据处理,处理结果送给数码管,使其能够显示当前的温度。另外,他还控制着ADC0804模数转换器的工作状态如控制着模数转换器的选通、开启、转换和完成输出等。 数码管:显示当前的温度值。 其设计思路如图四所示。ADC0804模数转换电路ATC80C51数据处理LM324放大电路 数码管 显示 PT100 温度 传感器 图四 设计方框图四、电路设计1、 PT100测温电路铂热电阻PT100采用

13、恒流源测量电路,其测量电路如图五所示。图五 PT100测温电路PT100温度与电阻值的对应关系如表二所示。温度/-50-30-1001020阻值/80.3188.2296.09100.00103.90107.79温度/30507090100110阻值/111.67119.40130.90134.71138.51142.29表二 PT100温度与电阻值的对应关系当温度的变化范围是-50-110,则电阻由80.31变化到142.29。根据U=IR可得,则电压变化范围为0.2048v0.3628v,电压变化为0.1580v。2、 ADC0804模数转换器的连接 CS:芯片片选信号,低电平有效,高电平

14、时芯片不工作。RD:启动ADC0804进行ADC采样,该信号低电平有效,即信号由低电平变成高电平时,触发一次ADC转换。WR:低电平有效,即=0时,DAC0804把转换完成的数据加载到DB口,可以通过数据端口DB0DB7读出本次的采样结果。INTR:转换完成输出端,输出低电平。CLK IN和CLK R:外接RC振荡电路产生模数转换器所需的时钟信号,VREF/2:参考电压接入引脚,该引脚可外接电压也可悬空,若外接电压,则ADC的参考电压为该外界电压的两倍,如不外接,则VREF与Vcc共用电源电压,此时ADC的参考电压即为电源电压Vcc的值。其连接电路如图六所示。图六 ADC0804的电路连接3、

15、 AT89C51单片机的连接电路 单片机作为控制中心和数据处理中心,他连接着ADC0804模数转换器和数码管显示电路,其中P0.0P0.3分别连接四个数码管,作为数码管的选通控制端,P3的八个输出端口作为数码管的数据输入端,P2.5P2.7四个端口连接ADC0804控制着模数转换器的选通、转换、输出等等,P1口连接着ADC0804的八位输出端口。其他端口的功能:RST:复位输入,晶振工作时,RST脚持续2个机器周期高电平将使单片机复位。ALE/PROG:地址锁存控制信号(ALE)是访问外部程序存储器时,锁存低8 位地址的输出脉冲。XTAL1和XTAL2分别为反向放大器的输入和输出。该反向放大器

16、配置为片内振荡器时,石晶振荡和陶瓷振荡均可采用。其连接电路如图七所示。图七 ATC89C51的连接电路五、PROTEUS设计1、创建新工程 双击Proteus 8 Professional图标,点击File(文件)中New Project项,新建一个工程项目,在Name项输入项目名,在Path项中选择保存路径,点击New project,再点击Next设置完成,如图八所示。图八 创建新工程2、 设置原理图 在原理图设计Schematic design对话框中选择创建原理图(Create a Schematic from the selected template),如果不需要绘制原理图,可直接

17、选择Do not create a schematic。在此选择创建原理图,原理图大小可以根据需要选择,本次选择默认(DEFAULT),如图九所示。图九 创建原理图4、创建PCB设计 本次设计不需要PCB板,可以直接选择(Do not create a PCB layout),如果需要可以选择(Create a PCB layout from the selected template),如图十所示。图十 创建PCB设计5、选择芯片 在Create Firmware Project界面中,设置Family(系列)-8051,Contoller控制器-AT89C51,Compiler(编译器)-

18、ASEM-51,也就是在此设计外部代码编译器。如果不需要进行仿真,则可直接选择No Firmware Project即可。按下Next,设置完成,如图十一所示。图十一 选择芯片6、所有设置完之后,进入Protues原理图绘制界面,中间大部分网格区域是原理图绘制区,左侧为工具栏,各种元器件、各种仪表等等,可以在此工具栏中查找。原理图绘制界面如图十二所示。图十二 原理图绘制界面7、 添加元器件 点击工具栏中的P按钮,将会弹出元器件搜索界面(Pick Divce),在Keyword一栏中输入将要查找的元器件的关键词,在搜索界面将会出现有关的元器件,选择想要的元器件,按下OK则添加成功,如图十三所示。

19、图十三 添加元器件8、 布局布线选中元器件,将元器件放进原理图绘制界面,双击放下,所有元器件都放进之后,并进行布局布线,原理图绘制结果如图十四所示。图十四 电路原理图六、程序流程图软件设计采用C语言编程,运用模块化程序设计思想,对整个程序分为四个模块,分别是初始化单片机、定时器、显示器模块,获得AD转换数据模块,数据处理模块和显示模块,对不同功能模块的程序进行分别编程,其流程图如图十五所示。 开始 结束调用显示子程序调用数据处理子程序调用中断子程序中获得的A/D转换后的数据调用初始化模块子程序,初始化AT89C51,初始化显示器,定时器T0赋初值 图十五 程序流程图在初始化AT89C51,初始

20、化显示器,定时器T0时,首先进行函数说明和管脚定义,例如定义P1口作为AD的数据口,定义P2.4、P2.5、P2.6和P2.7口作为AD的控制端口等等。初始化话程序完成后,将是数据采集装换程序,其流程图如图十六所示。启动AD转换器是否转换完成数据转换 否将数字信号保存到单片机 是图十六 AD数据采集转换AD转换后的数字信号保存在了单片机,单片机将对保存的数字信号进行数据处理,数据处理的结果输送给数码管,使数码管显示当前温度值,其流程图如图十七所示。从存储单元取数据T=614.422-7.811*ad_data数据是否小于79 YT=7.990*ad_data-628.491数据是否小于204

21、N Y T=8.124*ad_data-655.742 N数码管显示图十七 数据处理流程图七、生成.Hex文件启动Keil软件,编译源文件,并对源文件进行编译,如果有错误,从错误的第一条开始改正,直到编译没有错误,编译完成后,会产生.Hex文件,其源文件编译如图十八所示。图十八 源文件编译八、Proteus仿真 1、导入.Hex文件 双击原理图中的单片机,将会弹出编辑元器件对话框,在对话框中的Program file中导入生成的.Hex文件,点击OK,导入成功,如图十九所示。图十九 导入.Hex文件2、 电路仿真 点击绘制原理图界面左下角中的小三角仿真开始按钮,电路开始工作,数码管显示示数,改

22、动PT100的温度,数码管的温度也随之改变,并且误差在+0.5,符合设计要求,仿真结果如图二十所示。图二十 仿真结果九、总结本次课设我学会了Protues软件的基本应用,首先创建新工程,创建原理图,选择芯片,添加元器件,布局连线,向单片机导入.Hex文件,最后对电路进行仿真。除此之外,通过这次课设,我懂得了数字温度计的工作原理,了解了各个部分电路的职能作用,同时也加深了我对单片机、数电和模电的学习,同时我也发现了自己的不足,在软件编程发面存在一些不足的知识,以后要加强这方面的学习。十、参考文献【1】张毅刚,刘杰.MCS-51单片机原理及应用.M哈尔滨工艺大学出版社,2004年.【2】郭天祥.5

23、1单片机C语言教程.M电子工业出版社,2012年.【3】童师白.模拟电子技术基础.M高等教育出版社.2006年.【4】阎石.数字电子技术基础.M高等教育出版社,2006年.【5】张靖武.周灵杉.单片机系统的PROTUSE设计与仿真.M电子工业出版社,2007年【6】张毅刚.基于Proteus的单片机课程的基础实验与课程设计.M人民邮电出版社,2012年.【7】周润景,张丽娜.基于PROTUSE的电路及单片机系统设计与仿真.M北京航空航天大学出版社,2006年.附录I 仿真电路图附录II 程序#include#include #define uchar unsigned char#define

24、uint unsigned int#define ad0_7 P1 sbit cs=P24; sbit rd=P27; sbit wr=P26; sbit intr=P25; uchar i;uchar led11= 0x3F, /0 0x06, /1 0x5B, /2 0x4F, /3 0x66, /4 0x6D, /5 0x7D, /6 0x07, /7 0x7F, /8 0x6F, /9 0x40, /-;uchar dat_AD4=0;void start_ad(void) /启动AD cs=0; wr=0; _nop_(); wr=1; while(intr); cs=1; read

25、_ad() uint ad_data; ad0_7=0xff; cs=0; rd=0; _nop_(); ad_data=ad0_7; rd=1;cs=1; return(ad_data);void data_shout(uint ad_data) float temp; uint T; if(ad_data79) temp=614.422-7.811*ad_data; T=(uint)temp; dat_AD0=10; /负温度 dat_AD0中为温度符号数据 else if(ad_data204) temp=8.124*ad_data-655.742; T=(uint)temp; dat_

26、AD0=T/1000; /ad_data=T; dat_AD1=T%1000/100; /温度值的十位 dat_AD2=T%100/10; /2温度值的个位 dat_AD3=T%10; /温度值的小数位/显示函数void disp()switch(i)case 0: P0=0xfe;P3=leddat_AD0;i+;break; /显示符号位case 1: P0=0xfd;P3=leddat_AD1;i+;break;case 2: P0=0xfb;P3=leddat_AD2|0x80;i+;break;case 3: P0=0xf7;P3=leddat_AD3;i=0;break;/定时器初

27、始化/用作数码管显示的刷新void t0init()TMOD=0x01;TH0=(65535-2000)/256; /定时20ms时间TL0=(65535-2000)%256;EA=1;ET0=1;TR0=1; /定时器中断函数,在中断中刷新数码管显示 void Time0( ) interrupt 1 TH0=(65535-2000)/256;TL0=(65535-2000)%256;disp(); /主函数void main(void) t0init(); /初始化 while(1) start_ad(); /开始AD data_shout(read_ad(); /数据处理 专心-专注-专业

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 教案示例

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com