单片机温度采集程序_第1页
单片机温度采集程序_第2页
单片机温度采集程序_第3页
单片机温度采集程序_第4页
单片机温度采集程序_第5页
已阅读5页,还剩2页未读 继续免费阅读

下载本文档

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

文档简介

单片机温度采集程序用一片DS18B20构成测温系统,测量的温度精度达到度,测量的温度的范围在一20度到+100度之间,用8位数码管显示出来。由于DS18B20是在一根]X)线上读写数据,因此,对读写的数据位有着严格的时序要求。DS18B20有严格的通信协议来保证各位数据传输的正确性和完整性。该协议定义了几种信号的时序:初始化时序、读时序、写时序。所有时序都是将主机作为主设备,单总线器件作为从设备。而每一次命令和数据的传输都是从主机主动启动写时序开始,如果要求单总线器件回送数据,在进行写命令后,主机需启动读时序完成数据接收。数据和命令的传输都是低位在先。DS18B20的读时序对于DS18B20的读时序分为读0时序和读1时序两个过程。对于DS18B20的读时隙是从主机把单总线拉低之后,在15秒之内就得释放单总线,以让DS18B20把数据传输到单总线上。DS18B20在完成一个读时序过程,至少需要60us才能完成。对于DS18B20的写时序仍然分为写0时序和写1时序两个过程。对于DS18B20写0时序和写1时序的要求不同,当要写0时序时,单总线要被拉低至少60us,保证DS18B20能够在15us到45us之间能够正确地采样D总线上的“0”电平,当要写1时序时,单总线被拉低之后,在15us之内就得释放单总线。本程序实现温度的采集并且实时在数码管上显示出来。具体程序如下:A 名称:18B20温度传感器日期:修改:无内容:18B20单线温度检测的应用样例程序 ,请将18b20插紧,然后在数码管可以显示, C表示摄氏度,如显示表示当前温度度 */#hchde<>//包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的定义hchdeOhchdeO#defheucharuns^nedchar#defheuintunsignedint;A 定义端口 */sbitsegl二P2P;sbitseg2=P2*l;sbitseg3=P2*2;sbitDQ二P「3#isl8b20端口sfrdatafed=0x80^ 显示数据端口A 全局变量 */utittemp;ucharfJag_getcount;num,mhute,second;ucharcodetabD=4)x3f0x06,0x5b,0x4^0x66,0x6d,0x7d,0x07,0x7£0x6^;力 段数码管段码表共阳ucharstr[6];A函数声明*/voiddelavl(ucharMS);unsignedhtReadTemperaUiie(void);voidiiit_DS18B20^oid);unsignedcharReadOneChar(void);voidWriteOneChar(uns^nedchardat);voiddelayUnsignedint》;A 主函数 */mah0{unsignedcharTempH,TempL;TMOD=0x01〃定时器设置THO二Oxef;TLO二Oxfi);IE二0x82;TRO二1;P2=0x00;count=0;whi]e(1){str[5>0x39; // 显示C符号strLl]=tab[TempH/100];〃 十位温度strdUtab[(TempH%100)40];H 十位温度str[3]=tabL(TempH%100)%10]|0x80;〃 个位温度,带小数点str[4]=1ab[TempL];if(fhg_getF=l)H 定时读取当前温度{femp=ReadTempexatuie0;if(femp&0x8000){strOrOx/;〃 负号标志femp=^temp;H 取反加1■femp+二1;}elsestrfO^O;TempH=temp>>4;TempL=temp&OxOF;TempL二TempL郴/10'J/小数近似处理flag_get=O;}}}A 定时器中断 */voidtin&oid)htemipt1using1/7 中断,用于数码管扫描和温度检测间隔THO二Oxef;〃定时器重装值TLO=OxfD;num++;if(num二二50)hum二0;flag_getFl;〃标志位有效second++;if(second〉二60){second=0;mhute++;}}count+-+;iffcount==l)P2二0;dataJed=str[0];}/7 数码管扫描iffcount==2)P2二1;da-taled=str[i];}iffcount==3){P2=2;dataled=str[2];}iffcount==4){P2二3;dataled=str[3];}iffcount==5){P2二4;dataled二strEl];}iffcount==6){P2=5;dataled=str[5];count=0;}}A 延时函数 */voiddebydns冠nedinti// 延旳•函数{while(H;}A 初始化 */

voidhiLDS18B20(void)unsignedcharx=0;DQ二1;加Q复位dehy(B)dehy(B);//DQ二0; 〃deby®0);〃DQ二1; //单片机将DQ拉低精确延时大于480us拉高总线dehvQO);稍做延时后如果x=0则初始化成功x=1则初始化失败dehy(5);*/A 读一个字节*/unsignedcharReadOneChar(void){unsignedcharf0;unsignedchardat二0;for(F8;£>0;r-){DQ=O;〃 给脉冲信号da€>>=l;DQ二1;〃 给脉冲信号if0Q)dat|=0x80;deby(5);}letuin^dat);}*写一个字节*/voidWriteOneChar(nns^nedchardat){unsignedcharf0;for(f8;£>0;H{DQ二0;DQ二da1&0x0l;dehy(5);

DQ二1;dat>>=l;}dehy(5);}A读取温度*/unsignedintReadTempeiatLiie(void){unsignedchara=0:unsignedintb=0;unsignedhttFO;IniLDS18B2O0;跳过读序号列号的操作WriteOneChar(0x44);HdehyGOO);]niLDS18B2O0;WriteOneChar(0xCC);〃WriteOneChar(0xBE);//a=ReadOneCharO;跳过读序号列号的操作WriteOneChar(0x44);HdehyGOO);]niLDS18B2O0;WriteOneChar(0xCC);〃WriteOneChar(0xBE);//a=Re

温馨提示

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

评论

0/150

提交评论