基于AT89C51单片机电子体温计设计_第1页
基于AT89C51单片机电子体温计设计_第2页
基于AT89C51单片机电子体温计设计_第3页
基于AT89C51单片机电子体温计设计_第4页
基于AT89C51单片机电子体温计设计_第5页
已阅读5页,还剩41页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1.1系统设计的目的意义1.1目的,核心,结合温度传感器,LED模块等外部设备,在软件的控制下,实现智能化的体温测量,不但能够准确测温,而且能够对温度进展逻辑判断,并且通过LED显示器将测中国电子体温计行业最早起源于1998年,以每年高于30%的速度开展至今经历1.业1.3设计思路本系统可以使用ISIS画出原理图,翻开ISIS软件,单击命令窗口file——newdesign,创立一个default模板,保存名称为“基于AT89C51单片机电子体温计设计.DSN〞。执行菜单命令library——pickdevice/symbol,添加所需元件。本程序取74LS137,74LS373。在原理图编辑窗口中放置元件,再单击工具箱中的“原件终端〞图标,在对象选择中单击POWER和GROUND放置电源和地。放置好元件后,设计的软件局部在Keil中完成,具体操作步骤在后面仿真步骤中有详细介绍,在2系统分析2.1系统总体设计本系统采用AT89C51单片机、DS18B20温度采集模块和LED显示器共同实现。P1.0和DS18B20进展单总线通信,启动DS18B20温度采集功能并取出转化后的体2.1所示。.1LEDLED显示器蜂鸣器单片机2.2DS18B20根底知识DS18B20是Dallas公司继DS1820后推出的一种改进型智能数字温度传感器,DS18B20的封装形式及引脚功能DS18B20有三种封装形式: (1)采用3引脚TO-92的封装形式。 (2)采用6引脚TSOC封装形式。 (3)采用8引脚SOIC封装形式。DS18B20芯片的引脚功能如下: (2)DQ:数字信号输入/输出端。 VDD接地。1.DS18B20的部构造温度传感器DS18B20的部构造如下列图,主要由64位ROM、温度传感器及高组成,如图2.2所示。存存储与控制逻辑温度传感器和缓存器配置存放器C检测VDD单线接口下面对DS18B20的相关局部进展简单的描述。如图2.3所示。MSBLSBMSBLSBMSBLSBM此在单总线上能够并挂多个DS18B20进展多点温度实时检测。〔2〕温度传感器。温度传感器是DS18B20的核心局部,该功能部件可完成对温1.别为0.5、0.25、0.125、0.0625摄氏度,即最高转换精度为0.0625摄氏度。芯片出厂时默认为12位的转换精度。当接收到温度转换指令〔44H〕后,开场转换,转换完成后的温度以16位带符号扩展的二进制补码形式表示,存储在高速缓存器RAM的值乘上0.0625即可得到实际温度;如果温度小于0,这5位为1,测1再乘上0.0625即可得到实际温度。〔3〕高速缓存器。高速缓存器包括一个高速暂存器RAM和一个非易失性可电擦除E2PROM。非易失性可电擦除E2PROM用于存放高温触发器TH、低温触发器TL温度的低8位,第2个字节是温度的高8位。第3个和第4个字节是高温触发器TH、低温触发器TL的易失性复制,第5个字节是配置存放器的易失性复TMR0R111111.DSB置如表2.1所示。R0010193.75187.5375750R10011DS18B20的测温原理DS18B20主要由斜率累加器、温度系数振荡器、减法计数器、温度存放器等局部数值。1.交换则是分时完成的,均有严格的读/写时序要求。系统对DS18B20的操作协议为:DS18B20的ROM命令〔1〕ReadROM命令代码33H,允许主设备读出DS18B20的64位二进制ROM〔2〕MatchROM命令代码55H,假设主线上有多个从设备,使用该命令可以选中*一制定的DS18B20,即可与64位二进制ROM代码完全匹配的DS18B20才能响〔3〕SkipROM命令代码CCH,在启动所有DS18B20转换之前或系统只有一个M〔5〕AlarmROM命令代码ECH,该命令用于鉴别和定位系统中超出程序设定的1.〔6〕WriteScratchpad命令代码4EH,允许主设备向DS18B20的存放器写入两个字节的数据,其中第一个字节写入TH中,第二个字节写入TL中。可以在任何时CRC完第九个字节。也可以在任何时刻发出复位命令中止数据的读〔8〕CopyScratchpad命令代码48H,将高温触发器TH和低温触发器TL中的字节复制到非易失性E2PROM。假设主机在该命令之后又发出读操作,而DS18B20毕,则DS18B20输出一个“1〞。如果使用寄生电源,则主设备发出该命令后,立即〔9〕ConvertT命令代码44H,启动一次温度转换。假设主机在该命令之后又发〔10〕RecallE2命令代码B8H,将高温触发器TH和低温触发器TL中的字节从E2ROM中复制回到暂存器中。该操作是在DS18B20上电时自动执行,假设执行该命〔11〕ReadPowerSupply命令代码B4H,主设备将该命令发给DS18B20后发1.2.374LS137根底知识当锁存使能输入是低电平时,电路就具有译码器/解调器的功能。当锁存使能输入从低2.474LS373根底知识〔3〕LE:锁存允许端74LS373的输出端D0~D7可直接与总线相连。当三态允许控制端/OE为低电平的数据电平。LE端施密特触发器的输入滞后作用,使交流和直流噪声抗扰度被改善400mv。1.2.5原理图设计到芯片上,在LED显示屏上显示温度传感器上的温度。当温度高于38摄氏度时,在警报声。所需原件如表5.1所示。表2.2电子体温计所用的元件单单片机AT89C51瓷片电容CAP麦克风晶振CRYSTAL30PFSOUNDERCAP-ELEC三极管2N2905电阻RES滑动变阻器POT-LIN温度传感器DS18B20芯片74LS373芯片74LS137显示屏7SEG-MP*4-CC原理图如图2.5所示图2.5原理图示意图3软件设计3.1流程图设计ms话那就返1.38摄氏度,则蜂鸣器报警;如果低于这个温度程序则不报警,等待下次测量或画出流程图如图6.1所示。开始初始化开中断NY显示温度值Y是否第一次采集N显示上次所采集的温度NY蜂鸣器报警结束1.3.2源程序设计/*显示容:利用18B20单线温度检测的应用程序/****************************************************************/*include<reg51.h>*include<math.h>*include<intrins.h>*defineucharunsignedchar*defineuintunsignedint/****************************************************************//*定义端口/****************************************************************/sbitseg1=P0^0;sbitseg2=P0^1;sbitseg3=P0^2;sbitDQ=P3^6;//DS18B20端口sbitbeep=P2^0;//警报sfrdataled=0*90;//显示数据端口P1/****************************************************************//*/1./*全局变量*/uinttemp;ucharflag_get,count,num,minute,second;ucharcodetab[]={0*3f,0*06,0*5b,0*4f,0*66,0*6d,0*7d,0*07,0*7f,0*6f};//七段数码管共阴ucharstr[6];/*函数声明*/voiddelay1(ucharMS);unsignedintReadTemperature(void);voidInit_DS18B20(void);unsignedcharReadOneChar(void);voidWriteOneChar(unsignedchardat);voiddelay(unsignedinti);/*主函数*/voidmain(){1.unsignedcharTempH,TempL;TMOD|=0*01;//定时器设置HefTL0=0*f0;IE=0*82;TR0=1;P0=0*00;untwhile(1){str[5]=0*39;//显示C符号str[1]=tab[TempH/100];//百位温度str[2]=tab[(TempH%100)/10];//十位温度str[3]=tab[(TempH%100)%10]|0*80;//个位温度,带小数点str]=tab[TempL];if((TempH%100)/10==3&&(TempH%100)%10>=5&&TempL>0||(TempH%100elsebeep=0;//温度高于38摄氏度就报警1.{{str[0]=0*40;//符号标志temp=~temp;//取反加1}str[0]=0;TempL=TempL*6/10;//小数近似处理}}}/*定时器中断*/voidtim(void)interrupt1using1//中断,用于数码管扫描和温度检测间隔1.{TH0=0*ef;//定时器重装值TL0=0*f0;{num=0;flag_get=1;//标志位有效}}dataled=str[0];}//数码管扫描1.dataledstr5];/*延时函数*/voiddelay(unsignedinti)//延时函数{while(i--);}./*初始化*/voidInit_DS18B20(void){unsignedchar*=0;DQ=1;//DQ复位delay(8);//稍作延时DQ=0;//单片机将DQ拉低delay(80);//大于480usDQ=1;//拉高总线delay(10);DQ作延时后,如果*=0,则初始化成功;如果*=1,则初始化失败delay(5);/*读一个字节*/unsignedcharReadOneChar(void){unsignedchari=0;unsignedchardat=0;.{DQ=0;//给脉冲信号DQ=1;//给脉冲信号dat|=0*80;delay(5);}return(dat);/*写一个字节*/voidWriteOneChar(unsignedchardat){unsignedchari=0;{1.delay(5);}delay(5);}/*读取温度*/unsignedintReadTemperature(void){unsignedchara=0;unsignedintb=0;unsignedintt=0;Init_DS18B20();WriteOneChar(0*cc);//跳过读序号列号的操作W

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论