DS18B20与数码管温度显示C程序

DS18B20与数码管温度显示C程序

ID:47527606

大小:28.51 KB

页数:3页

时间:2020-01-13

DS18B20与数码管温度显示C程序_第1页
DS18B20与数码管温度显示C程序_第2页
DS18B20与数码管温度显示C程序_第3页
资源描述:

《DS18B20与数码管温度显示C程序》由会员上传分享,免费在线阅读,更多相关内容在行业资料-天天文库

1、#include#defineucharunsignedchar#defineuintunsignedintsbitDQ=P1^4;//ds18b20与单片机连接口unsignedcharcodestr[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x39};//共阴数码管字码表unsignedcharcodestr1[]={0x0bf,0x86,0x0db,0x0cf,0x0e6,0x0ed,0x0fd,0x87,0x0ff,0x0ef

2、,0x39};//个位带小数点字码表unsignedcharcodewei[]={0x0fe,0x0fd,0x0fb,0x0f7};uchardatadisdata[5];uinttvalue;//温度值uchartflag;//温度正负标志/******************************ds1820程序***************************************/voiddelay_18B20(unsignedinti)//延时1微秒{while(i--);}voidds1820rs

3、t()/*ds1820复位*/{unsignedcharx=0;DQ=1;//DQ复位delay_18B20(4);//延时DQ=0;//DQ拉低delay_18B20(100);//精确延时大于480usDQ=1;//拉高delay_18B20(40);}uchards1820rd()/*读数据*/{unsignedchari=0;unsignedchardat=0;for(i=8;i>0;i--){DQ=0;//给脉冲信号dat>>=1;DQ=1;//给脉冲信号if(DQ)dat

4、=0x80;delay_18B2

5、0(10);}return(dat);}voidds1820wr(ucharwdata)/*写数据*/{unsignedchari=0;for(i=8;i>0;i--){DQ=0;DQ=wdata&0x01;delay_18B20(10);DQ=1;wdata>>=1;}}read_temp()/*读取温度值并转换*/{uchara,b;ds1820rst();ds1820wr(0xcc);//*跳过读序列号*/ds1820wr(0x44);//*启动温度转换*/ds1820rst();ds1820wr(0xcc);

6、//*跳过读序列号*/ds1820wr(0xbe);//*读取温度*/a=ds1820rd();b=ds1820rd();tvalue=b;tvalue<<=8;tvalue=tvalue

7、a;if(tvalue<0x0fff)tflag=0;else{tvalue=~tvalue+1;tflag=1;}tvalue=tvalue*(0.625);//温度值扩大10倍,精确到1位小数return(tvalue);}/***************************************************

8、****************/voidds1820disp()//温度值显示{ucharflagdat;uchari;disdata[0]=tvalue/1000;//百位数disdata[1]=tvalue%1000/100;//十位数disdata[2]=tvalue%100/10;//个位数disdata[3]=tvalue%10;//小数位if(tflag==0)flagdat=0x20;//正温度不显示符号elseflagdat=0x2d;//负温度显示负号:-if(disdata[0]==0x30){

9、disdata[0]=0x20;//如果百位为0,不显示if(disdata[1]==0x30){disdata[1]=0x20;//如果百位为0,十位为0也不显示}}for(i=0;i<150;i++){P2=wei[0];P0=str[disdata[3]];delay_18B20(20);P2=wei[1];P0=str1[disdata[2]];delay_18B20(20);P2=wei[2];P0=str[disdata[1]];delay_18B20(20);P2=wei[3];P0=str[disda

10、ta[0]];delay_18B20(20);}}/********************主程序***********************************/voidmain(){ds1820rst;//初始化显示while(1){read_temp();//读取温度ds1820disp();//显示}}

当前文档最多预览五页,下载文档查看全文

此文档下载收益归作者所有

当前文档最多预览五页,下载文档查看全文
温馨提示:
1. 部分包含数学公式或PPT动画的文件,查看预览时可能会显示错乱或异常,文件下载后无此问题,请放心下载。
2. 本文档由用户上传,版权归属用户,天天文库负责整理代发布。如果您对本文档版权有争议请及时联系客服。
3. 下载前请仔细阅读文档内容,确认文档内容符合您的需求后进行下载,若出现内容与标题不符可向本站投诉处理。
4. 下载文档时可能由于网络波动等原因无法下载或下载错误,付费完成后未能成功下载的用户请联系客服处理。