单片机基于51单片机的温度传感器设计

整理文档很辛苦,赏杯茶钱您下走!

免费阅读已结束,点击下载阅读编辑剩下 ...

阅读已结束,您可以下载文档离线阅读编辑

资源描述

小组成员22011311刘森林22011312俱子研22011313孙业飞基于AD590温度显示器设计设计要求自动显示当前温度。设置温度上下限报警功能。温度上下限调整可通过串行通信接口实现。当前温度可通过串行通信接口送给计算机。温度超限报警。总体方案系统以51单片机为控制核心,加上AD590测温电路、ADC0809模数转换电路、温度数据显示电路以及外围电源等组成。利用AD590集成温度传感器及其接口电路完成温度的测量并转换成模拟电压信号。经由模数转换器ADC0809转换成单片机能够处理的数字信号,然后送到单片机中进行处理变换,最后将温度值显示在LED显示器上。硬件原理图AT89C51AD590测温电路ADC0809模数转换温度显示超量程报警按键控制电源及复位电路整体电路图系统模块介绍•AD590及外围电路•ADC0809模数转换•按键控制模块•报警模块温度传感器AD590温度转换为电流。线性度优良、性能稳定。每增加1℃,它会增加1μA输出电流。可测量范围-55℃至150℃。供电电压范围+4V至+30V。1脚接VCC2脚接电流输出端3脚一般不用温度传感器AD590AD590温度与电流关系AD590模块电阻选用9.6K滑动变阻器选用1K通过微调使得总电阻精确到10KAD590模块选用运放741做电压跟随器,提高输入阻抗。仿真时,用滑动变阻器改变电压,模拟实际中的温度变化。放大电路741放大器为运算放大器中最常被使用的一种,拥有反相向与非反相两输入端,由输入端输入欲被放大的电流或电压信号,经放大后由输出端输出。放大器作动时的最大特点为需要一对同样大小的正负电源,其值由±12Vdc至±18Vdc不等,这里使用±15Vdc的电压。放大电路7脚、4脚分别接正负15V;3端输入,6端输出;构成电压跟随器。ADC0809ADC0809是美国国家半导体公司生产的CMOS工艺8通道,8位逐次逼近式A/D模数转换器。其内部有一个8通道多路开关,它可以根据地址码锁存译码后的信号,只选通8路模拟输入信号中的一个进行A/D转换。ADC0809主要特性:8路输入通道,8位A/D转换器,即分辨率为8位。具有转换起停控制端。转换时间为100μs(时钟为640KHz时),130μs(时钟为500KHz时)。单个+5V电源供电。模拟输入电压范围0~+5V,不需零点和满刻度校准。工作温度范围为-40~+85摄氏度。低功耗,约15mW。ADC0809内部结构ADC0809各脚功能D7-D0:8位数字量输出引脚。IN0-IN7:8位模拟量输入引脚。VCC:+5V工作电压。GND:地。REF(+):参考电压正端。REF(-):参考电压负端。ADC0809各脚功能START:A/D转换启动信号输入端。ALE:地址锁存允许信号输入端。(以上两种信号用于启动A/D转)A、B、C:地址输入线ADC0809各脚功能EOC:转换结束信号输出引脚,开始转换时为低电平,当转换结束时为高电平。OE:输出允许控制端,用以打开三态数据输出锁存器。CLK:时钟信号输入端(一般为500KHz)。通道选择当ALE线为高电平时,地址锁存与译码器将A,B,C三条地址线的地址信号进行锁存,经译码后被选中的通道的模拟量进入转换器进行转换。ADC0809应用说明(1)ADC0809内部带有输出锁存器,可以与51单片机直接相连。(2)初始化时,使ST和OE信号全为低电平。(3)送要转换的哪一通道的地址到A,B,C端口上。(4)在ST端给出一个至少有100ns宽的正脉冲信号。(5)是否转换完毕,我们根据EOC信号来判断。(6)当EOC变为高电平时,这时给OE为高电平,转换的数据就输出给单片机了。ADC0809电路连接电压输入选择IN0通道转换数据从OUT1~OUT7口输出至单片机的P1口START与ALE一起接P3.0OE接P3.1CLOCK接P3.3A、B、C三条地址线接单片机的P3.4P3.5P3.6ADC0809模块开始初始化启动转换取数据转换结束读数据结束结束软件实现*函数:ADC0808初始化voidADC_Init(void){ST=1;P34=0;P35=0;P36=0;//选择地址IN1(CBA=000)ST=0;//ST为转换启动信号EOC=1;//转换结束信号。高电平时,表明转换结束OE=0;//输出允许信号。OE=1,输出转换数据}ucharADC_Read(void){uchargetdataV;OE=0;//OE=0时输出呈高阻态ST=1;//上跳沿时,内部寄存器清零ST=0;//下跳沿时,进行A/D转换while(EOC==0);//空循环,直到转换结束OE=1;//允许输出getdataV=P1;//转换数据输出给单片机P1口OE=0;//传输结束,OE重新变为0returngetdataV;}*函数:触发ADC0808开始转换并读取数值单片机以及数码管显示AT89C51单片机模块80C51单片机介绍80C51是美国ATMEL公司生产的低电压,高性能CMOS8位单片机,可提供以下标准功能:4K字节闪存,128字节内部RAM,32个I/O口线,两个16位定时/计数器,一个5向量两级中断结构,一个全双工串行通信口,片内振荡器及时钟电路。同时,80C51可降至0HZ的静态逻辑操作,并支持两种软件可选的节电工作模式。空闲方式停止CPU的工作,但允许RAM,定时/计数器,串行通信口及中断系统继续工作。掉电方式保存RAM中的内容,但振荡器停止工作并禁止其它所有部件工作直到下一个硬件复位。引脚图引脚功能说明Vcc:电源电压GND:地P0口:P0口是一组8位漏极开路型双向I/O口,即地址/数据总线复位口。作为输出口用时,每位能吸收电流的方式驱动8个逻辑门电路,对端口写“1”可作为高阻抗输入端用。在访问外部数据存储器或程序存储器时,这组口线分时转换地址(低8位)和数据总线复用,此时P0激活内部的上拉电阻。引脚介绍P1口:P1是一个带有内部上拉电阻的8位双向I/O口。P1的输出缓冲级可驱动(输入或输出)4个TTL逻辑门电路。对端口写“1”,通过内部的上拉电阻把端口拉到高电平,此时可做输入口。因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流。P2口:P2是一个带有内部上拉电阻的8位双向I/O口,P2的输出缓冲级可驱动(输入或输出电流)4个TTL逻辑门电路。对端口写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作为输入口。因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流。在访问外部程序存储器获16位地址的外部数据存储器(例如执行MOVX@DPTR指令)时,P2口送出高8位地址数据。在访问8位地址的外部数据存储器(如执行MOVX@RI指令)时,P2口线上的内容(也即特殊功能寄存器(SFR)区中R2寄存器的内容),在整个访问期间不改变。引脚介绍P3口:P3口是一组带有内部上拉电阻的8位双向I/O口。P3口输出缓冲级可驱动(输入或输出)4个TTL逻辑门电路。对P3口写入“1”时,他们被内部上拉电阻拉高并可作为输入口。此时,被外部拉低的P3口将用上拉电阻输出电流。RST:复位输入。当振荡器工作时,RST引脚出现两个机器周期以上高电平将使单片机复位。ALE/PROG:当访问外部程序存储器或数据存储器时,ALE(地址锁存允许)输出脉冲用于锁存地址的低8位字节。即使不访问外部存储器,ALE仍以时钟振荡频率的1/6输出固定的正脉冲信号,因此它可对输出时钟信号或用于定时。要注意的是:当访问外部数据存储器时将跳过一个ALE脉冲。闪存编程期时,该引脚还用于输入编程脉冲。引脚介绍PSEN:程序存储允许输出是外部程序存储器的读选通信号,当80C51由外部程序存储器取指令(或数据)时,每个机器周期两个PSEN有效,即输出两个脉冲。在此期间,当访问外部数据存储器,这两次有效的PSEN信号不出现。EA/VPP:外部访问允许。要使CPU仅访问外部程序存储器(地址为0000H---FFFFH),EA端必须保持低电平(接地)。需注意的是;如果加密位LB1被编程,复位时内部会锁存EA端状态。如EA端为高电平(接VCC端),CPU则执行内部程序存储器中的指令。XTAL1:振荡器反相放大器及内部时钟发生器的输入端。XTAL2:振荡器反相放大器的输出端。数码管显示模块开始初始化P2.0=1读P0口P2.1=1读P0口P2.3=1读P0口P2.2=1读P0口结束数码管显示流程图/******************************************函数:动态显示函数*输入:要显示的数值000.0~100.0*返回值:无******************************************/voiddisplay(uintdat){uchardispbuf[4];dispbuf[3]=dat/1000;P0=dispbitcode[dispbuf[3]];P20=0;P21=1;P22=1;P23=1;delay_ms(2);P0=0x00;数码管动态显示代码部分dispbuf[2]=dat/100%10;P0=dispbitcode[dispbuf[2]];P20=1;P21=0;P22=1;P23=1;delay_ms(2);P0=0x00;dispbuf[1]=dat/10%10;P0=dispbitcode[dispbuf[1]];P07=1;P20=1;P21=1;P22=0;P23=1;delay_ms(2);P0=0x00;;数码管动态显示代码部分设计要求自动显示当前温度。设置温度上下限功能。温度上下限调整可通过串行通信接口实现。当前温度可通过串行通信接口送给计算机。温度超限报警。设置温度上下限具体思路2020/5/181分s1s2s3三个功能键2调整步长为0.5度3通过单片机编程、按键来实现硬件连接图2020/5/182020/5/18voiddelay(unsignedinti){charj;for(i;i0;i--)for(j=200;j0;j--);}voidsett(){//标志位if(set==0)//按下{delay1(z);//延时消抖if(set==0){count++;//count=1设置上限温度count=2设置下限温度count=0正常显示温度}程序代码2020/5/18if(count==1){if(add==0){delay1(z);//延时消抖if(add==0){highlimt=highlimt+5;//上调设定值}}if(sub==0){delay1(z);//延时消抖if(sub==0){highlimt=highlimt-5;//下调设定值}}程序代码2020/5/18小结1长按按键,会“一直做出反应”优点:便于迅速进行大范围的调节缺点:增大调节到某一精确值的难度温度超限报警具体思路2020/5/181用LED灯和蜂鸣器共同实现报警功能2用软件程序实现单片机输出控制信号3搭建外围电路,实现信号对报警器的控制硬件连接图2020/5/182020/5/18程序代码if(temphighlimt||templowlimt){beeflag=1;light=0;//温度大于设定值,声光报警}else{beeflag=0;light=1;//温度不大于设定值即不报警}2020/5/18小结2p2.4的输出信号不严格是0或5va)需在仿真和实物制作时分别测出其高低电平分别对应的电压值b)然后去确定电磁继电器控制端的输入电压以实现功能

1 / 51
下载文档,编辑使用

©2015-2020 m.777doc.com 三七文档.

备案号:鲁ICP备2024069028号-1 客服联系 QQ:2149211541

×
保存成功