电脑桌面
添加小米粒文库到电脑桌面
安装后可以在桌面快捷访问

单片机DS18B20温度传感器C语言程序含CRC校验VIP免费

单片机DS18B20温度传感器C语言程序含CRC校验_第1页
1/14
单片机DS18B20温度传感器C语言程序含CRC校验_第2页
2/14
单片机DS18B20温度传感器C语言程序含CRC校验_第3页
3/14
单片机中使用DS18B20温度传感器C语言程序(参考1)/********************************************************************************DS18B20测温程序硬件:AT89S52(1)单线ds18b20接P2.2(2)七段数码管接P0口(3)使用外部电源给ds18b20供电,没有使用寄生电源软件:KeiuVision3**********************************************************************************/#include"reg52.h"#include"intrins.h"#defineucharunsignedchar#defineuintunsignedintsbitds=P2^2;sbitdula=P2^6;sbitwela=P2^7;ucharflag;uinttemp;//参数temp一定要声明为int型ucharcodetable[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};//不带小数点数字编码ucharcodetable1[]={0xbf,0x86,0xdb,0xcf,0xe6,0xed,0xfd,0x87,0xff,0xef};//带小数点数字编码/*延时函数*/voidTempDelay(ucharus){while(us--);}voiddelay(uintcount)//延时子函数{uinti;while(count){i=200;while(i>0)i--;count--;}}/*串口初始化,波特率9600,方式1*/voidinit_com(){TMOD=0x20;//设置定时器1为模式2TH1=0xfd;//装初值设定波特率TL1=0xfd;TR1=1;//启动定时器SM0=0;//串口通信模式设置SM1=1;//REN=1;//串口允许接收数据PCON=0;//波特率不倍频//SMOD=0;//波特率不倍频//EA=1;//开总中断//ES=1;//开串行中断}/*数码管的显示*/voiddisplay(uinttemp){ucharbai,shi,ge;bai=temp/100;第1页共14页单片机中使用DS18B20的C语言程序和CRC校验shi=temp%100/10;ge=temp%100%10;dula=0;P0=table[bai];//显示百位dula=1;//从0到1,有个上升沿,解除锁存,显示相应段dula=0;//从1到0再次锁存wela=0;P0=0xfe;wela=1;wela=0;delay(1);//延时约2msP0=table1[shi];//显示十位dula=1;dula=0;P0=0xfd;wela=1;wela=0;delay(1);P0=table[ge];//显示个位dula=1;dula=0;P0=0xfb;wela=1;wela=0;delay(1);}/*****************************************时序:初始化时序、读时序、写时序。所有时序都是将主机(单片机)作为主设备,单总线器件作为从设备。而每一次命令和数据的传输都是从主机主动启动写时序开始,如果要求单总线器件回送数据,在进行写命令后,主机需启动读时序完成数据接收。数据和命令的传输都是低位在先。初始化时序:复位脉冲存在脉冲读;1或0时序写;1或0时序只有存在脉冲信号是从18b20(从机)发出的,其它信号都是由主机发出的。存在脉冲:让主机(总线)知道从机(18b20)已经做好了准备。******************************************//*--------------------------------------------------------------------------------------------------------------------初始化:检测总线控制器发出的复位脉冲和ds18b20的任何通讯都要从初始化开始初始化序列包括一个由总线控制器发出的复位脉冲和跟在其后由从机发出的存在脉冲。初始化:复位脉冲+存在脉冲具体操作:总线控制器发出(TX)一个复位脉冲(一个最少保持480μs的低电平信号),然后释放总线,进入接收状态(RX)。单线总线由5K上拉电阻拉到高电平。探测到I/O引脚上的上升沿后DS1820等待15~60μs,然后发出存在脉冲(一个60~240μs的低电平信号)。具体看18b20单线复位脉冲时序和1-wirepresencedetect"的时序图-------------------------------------------------------------------------------------------------------------------*/第2页共14页单片机中使用DS18B20的C语言程序和CRC校验voidds_reset(void){ds=1;_nop_();//1usds=0;TempDelay(80);//当总线停留在低电平超过480us,总线上所以器件都将被复位,这里延//时约530us总线停留在低电平超过480μs,总线上的所有器件都将被复位。_nop_();ds=1;//产生复位脉冲后,微处理器释放总线,让总线处于空闲状态,原因查18b20中文资料TempDelay(5);//释放总线后,以便从机18b20通过拉低总线来指示其是否在线,//存在检测高电平时间:15~60us,所以延时44us,进行1-wirepresencedetect(单线存在检测)_nop_();_nop_();_nop_();if(ds==0)flag=1;//detect18b20successelseflag=0;//detect18b20f...

1、当您付费下载文档后,您只拥有了使用权限,并不意味着购买了版权,文档只能用于自身使用,不得用于其他商业用途(如 [转卖]进行直接盈利或[编辑后售卖]进行间接盈利)。
2、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。
3、如文档内容存在违规,或者侵犯商业秘密、侵犯著作权等,请点击“违规举报”。

碎片内容

单片机DS18B20温度传感器C语言程序含CRC校验

确认删除?
VIP
微信客服
  • 扫码咨询
会员Q群
  • 会员专属群点击这里加入QQ群
客服邮箱
回到顶部