当前位置:首页 > 单片机 > 单片机
[导读]#include\"ds18b20.h\"uint8_ttemp_sign;voiddelay_ds(uint16_tzz){uint8_txx;uint16_tyy;for(xx=0;xx

#include"ds18b20.h"
uint8_ttemp_sign;
voiddelay_ds(uint16_tzz){uint8_txx;uint16_tyy;for(xx=0;xx<1;xx++)for(yy=0;yy
voidDS18B20_Rst(void){LPC_GPIO3->DIR|=(1<<5);DQ_LOW;delay_ds(500);//主机拉低总线,520us(480~960uS)DQ_HIGH;delay_ds(70);//释放总线,(15~60uS)}
uint8_tDS18B20_Check(void){uint8_tretry=0;LPC_GPIO3->DIR&=~(1<<5);//设置P3.5引脚为输入引脚while(DQ_UP&&retry<200){retry++;delay_ds(1);};if(retry>=200)return1;elseretry=0;while(DQ_DOWN&&retry<250){retry++;delay_ds(1);};if(retry>=250)return1;return0;}
uint8_tDS18B20_Init(void){LPC_GPIO3->DIR|=(1<<5);//P3.5为输出,用作DS18B20数据引脚LPC_GPIO3->DATA|=(1<<5);//P3.5置高DS18B20_Rst();returnDS18B20_Check();}
voidDS18B20_Write_Byte(uint8_tdat){uint8_tj;uint8_ttestb;LPC_GPIO3->DIR|=(1<<5);for(j=1;j<=8;j++){testb=dat&0x01;dat=dat>>1;if(testb){DQ_LOW;//Write1delay_ds(2);DQ_HIGH;delay_ds(60);}else{DQ_LOW;//Write0delay_ds(60);DQ_HIGH;delay_ds(2);}}}
voidDS18B20_Start(void)//ds1820startconvert{DS18B20_Rst();DS18B20_Check();DS18B20_Write_Byte(0xcc);//skipromDS18B20_Write_Byte(0x44);//convert}
uint8_tDS18B20_Read_Bit(void)//readonebit{uint8_tdata;LPC_GPIO3->DIR|=(1<<5);DQ_LOW;delay_ds(2);DQ_HIGH;LPC_GPIO3->DIR&=~(1<<5);//SETPG11INPUTdelay_ds(12);if(DQ_UP)data=1;elsedata=0;delay_ds(50);returndata;}
uint8_tDS18B20_Read_Byte(void)//readonebyte{uint8_ti,j,dat;dat=0;for(i=1;i<=8;i++){j=DS18B20_Read_Bit();dat=(j<<7)|(dat>>1);}returndat;}
//返回值是十六位的温度值,精度1%00.0int16_tDS18B20_Get_Temp(void){uint8_tTL,TH;int16_ttem;DS18B20_Start();//ds1820startconvertDS18B20_Rst();DS18B20_Check();DS18B20_Write_Byte(0xcc);//skipromDS18B20_Write_Byte(0xbe);//convertTL=DS18B20_Read_Byte();//LSBTH=DS18B20_Read_Byte();//MSBif(TH>7){TH=~TH;TL=~TL;temp_sign=0;}elsetemp_sign=1;tem=TH;tem<<=8;tem+=TL;tem=(float)tem*0.625;if(temp_sign)returntem;elsereturn-tem;}


本站声明: 本文章由作者或相关机构授权发布,目的在于传递更多信息,并不代表本站赞同其观点,本站亦不保证或承诺内容真实性等。需要转载请联系该专栏作者,如若文章内容侵犯您的权益,请及时联系本站删除。
换一批
延伸阅读

测温枪也叫测温仪,这个东西有可能对我们来说都比较陌生,它主要是应用红外测温技术提供生产生活中的温度测量,所以又被称为红外测温枪。这项技术在产品质量控制和监测、设备在线故障诊断、安全保护以及节约能源等发挥着重要作用,它以响...

关键字: 测量温度 温度计 测温仪 发热检测

Q:如果系统中的FPGA/微处理器上只剩下一个GPIO,该如何进行模拟测量?A:可以使用电压-频率转换器代替模数转换器。在关注机器健康和其他物联网(IoT)解决方案的现代应用中,随着检测功能的日趋普及,对更简单的接口以及...

关键字: GPIO 测量温度 数字接口 ADC

(文章来源:仪器仪表网) 红外测温仪由光学系统,光电探测器,信号放大器及信号处理。显示输出等部分组成。光学系统汇聚其视场内的目标红外辐射能量,红外能量聚焦在光电探测器上并转变为相应的电信

关键字: 红外测温仪 测量温度 配电 温度测量

中断方式串口接收数据新建一个工程,结构如下图所示:在main.c文件中,输入以下代码:#include “lpc11xx.h”#include “uart.h”uint8_t rec_buf;void UART_IRQH...

关键字: Cortex lpc1114 mo uart 串口中断 收发数据

LPC_IOCON->R_PIO1_0 &= ~0x07;LPC_IOCON->R_PIO1_0 |= 0x02;上面是设置P1.0为AD1的语句。P1.0低三位是引脚功能选择位,所以配置低三位就可以...

关键字: lpc1114 引脚功能 设置

LPC1114内部一共有4个定时器,2个32位定时器,2个16位定时器,使用方式都一样,只是要注意使用16位定时器时,寄存器的值不要超出65535。给它们分别取名称为CT16B0、CT16B1、CT32B0、CT32B1...

关键字: lpc1114 通用定时器

//串行数码管显示 温度值//芯片 ATMEGA16L //时钟 4MHz 内部 // DS18B20数据线是双向总线,采用一个IO口 // DS18B20数据线,输出不是通过IO口直接输出0和1,而是将IO口的P...

关键字: 164驱动 18b20 温度显示 8位led

你还在为如何给LPC1114主控的电路板留程序下载接口而烦恼吗?下面瑞生(Ration)以自己曾经做过的项目为例给大家分享一下吧!1.LPC1114如何下载程序?这个当然是你必须要知道的问题。LPC1114一共2种下载方...

关键字: lpc1114 程序下载接口

某同学:你好,看了基础篇SysClk、GPIO、UART的例程,在用到IOCON模块,UART模块在SYSAHBCLKCTRL寄存器中都需要相应时钟允许位置1,IOCON使能,在设置完后又禁能,UART使用时只使能,不用...

关键字: lpc1114 iocon 模块时钟

本程序为采用mega8和18b20的温度采集程序 选用mega8内部8MRC震荡,18b20数据线接pd6,数据线和vcc间接一4.7k上拉电阻 感谢dfgeoff嗜血蜗牛提供的资料*/ #include//和...

关键字: 18b20 iccavr m8
关闭