历史上的今天
返回首页

历史上的今天

今天是:2025年04月22日(星期二)

正在发生

2020年04月22日 | 51单片机实验13:温度传感器模块应用

2020-04-22 来源:eefocus

开发板温度模块电路图如下:

目的:利用开发板温度传感器测量温度,并在数码管显示。


开发板温度传感器模块相关内容:https://blog.csdn.net/cax1165/article/details/86763991


开发板数码管模块的相关内容:https://blog.csdn.net/cax1165/article/details/86557551


主函数:


#include

#include

#define uc unsigned char

#define ui unsigned int

 

sbit LSA=P2^2;

sbit LSB=P2^3;

sbit LSC=P2^4;

 

uc code x[10]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};

uc disp[8];

 

void delay(uc x)

{

uc i,j;

for(i=1;i<=x;i++)

for(j=1;j<=110;j++);

}

 

void digdisplay()

{

uc i;

for(i=1;i<=6;i++)

{

switch(i)

{

case(1):

LSA=0;LSB=0;LSC=0;break;

case(2):

LSA=1;LSB=0;LSC=0;break;

case(3):

LSA=0;LSB=1;LSC=0;break;

case(4):

LSA=1;LSB=1;LSC=0;break;

case(5):

LSA=0;LSB=0;LSC=1;break;

case(6):

LSA=1;LSB=0;LSC=1;break;

}

P0=disp[i];

delay(1);

P0=0x00;

}

}

 

void datapros(int temp)

{

float tp;

if(temp<0)

{

disp[6]=0x40;

temp=temp-1;

temp=~temp;

tp=temp;

temp=tp*0.0625*100+0.5;//*100将两位小数加入整数中方便后期处理,+0.5是四舍五入进位处理

}

else

{

disp[6]=0x00;

tp=temp;

temp=tp*0.0625*100+0.5;

}

disp[5]=x[temp/10000];

disp[4]=x[temp%10000/1000];

disp[3]=x[temp%1000/100]|0x80;

disp[2]=x[temp%100/10];

disp[1]=x[temp%10];

}

 

void main()

{

while(1)

{

datapros(ds18b20readtemp());

digdisplay();

}

}

DS18B20温度传感器配置:


#include

 

void delay1ms(ui x)

{

ui i,j;

for(i=1;i<=x;i++)

for(j=1;j<=110;j++);

}

 

uc ds18b20init()

{

uc a,b;

dsport=0;

for(b=71;b>0;b--)//延时500微秒

        for(a=2;a>0;a--);

dsport=1;

while(dsport)

{

delay1ms(5);//延时5微秒

return 0;

}

return 1;

}

 

void ds18b20writebyte(uc dat)

{

uc i,j;

for(i=1;i<=8;i++)

{

dsport=0;

j++;//??

dsport=dat&0x01;

for(j=31;j>0;j--);//延时65微秒

dsport=1;

dat>>=1;

}

}

 

uc ds18b20readbyte()

{

uc i,j,dat,byte=0;

for(i=1;i<=8;i++)

{

dsport=0;

j++;

dsport=1;

j++;j++;//延时6微秒

dat=dsport;

byte=(byte>>1)|(dat<<7);

j=4;while(j--);//延时48微秒

}

return byte;

}

 

void ds18b20changtemp()

{

ds18b20init();

delay1ms(1);

ds18b20writebyte(0xcc);

ds18b20writebyte(0x44);

}

 

void ds18b20readtempcom()

{

ds18b20init();

delay1ms(1);

ds18b20writebyte(0xcc);

ds18b20writebyte(0xbe);

}

 

int ds18b20readtemp()

{

int temp=0;

uc tmh,tml;

ds18b20changtemp();

ds18b20readtempcom();

tml=ds18b20readbyte();

tmh=ds18b20readbyte();

temp=tmh;

temp<<=8;

temp|=tml;

return temp;

}


温度传感器头文件:


#ifndef _temp_H

#define _temp_H

 

#include

 

#ifndef uc

#define uc unsigned char

#endif

#ifndef ui

#define ui unsigned int

#endif

 

sbit dsport=P3^7;

 

int ds18b20readtemp();

 

#endif

推荐阅读

史海拾趣

FILTRONIC公司的发展小趣事

FILTRONIC深知技术创新是企业持续发展的动力源泉。因此,公司不断加大研发投入,建立了先进的研发中心和实验室,吸引了一批高素质的研发人才。通过持续的技术研发,FILTRONIC在滤波器技术、射频技术、天线技术等领域取得了多项重要突破,推出了多款具有自主知识产权的新产品。这些新产品的推出不仅进一步巩固了FILTRONIC在市场中的领先地位,也为公司的未来发展注入了新的活力。

Appointech Inc公司的发展小趣事

为了进一步扩大市场份额,Appointech Inc公司开始积极拓展海外市场。通过与国际知名企业的合作,公司成功打入国际市场,产品销量大幅提升。同时,公司还积极参加国际电子展会和交流活动,与全球同行建立了广泛的合作关系,为公司的长远发展奠定了坚实的基础。

Hoffman Engineering公司的发展小趣事

1945年,年轻的Harry Hoffman凭借对工厂安全的深切关注,发明了前所未有的压力机安全保护装置。这一装置能够在操作人员的手进入危险区域时迅速停止机器,极大地保护了生产工厂中员工的人身安全。这一创新不仅为Hoffman Engineering奠定了技术基础,也开启了公司在工业安全领域的先河。Harry的发明迅速获得市场认可,为公司的后续发展奠定了坚实的基础。

Allegro公司的发展小趣事

随着产品线的不断丰富和技术实力的提升,Hoffman Engineering开始将目光投向国际市场。公司逐步在全球范围内建立销售网络,为全球客户提供优质的产品和服务。如今,Hoffman Engineering的工厂遍布世界四大洲,为全球客户提供了超过12,000种标准产品和不计其数的定制化解决方案。这一国际市场的成功开拓,使Hoffman Engineering成为国际知名的电子工程解决方案提供商。

Elite Semiconductor Products Inc公司的发展小趣事

随着技术的不断进步和市场的不断变化,Elite意识到单一市场已经无法满足公司的发展需求。因此,公司开始积极拓展国际市场,寻求更广阔的发展空间。在海外市场拓展过程中,Elite注重了解当地市场的需求和文化特点,制定针对性的市场策略。同时,公司还积极与当地企业建立合作关系,共同开拓市场。这些努力让Elite在国际市场上取得了不俗的成绩,也为公司的持续发展注入了新的动力。

HCC Industries公司的发展小趣事

在2005年,HCC Industries还是一家名不见经传的小型微电子部件制造商。面对市场上激烈的竞争,公司决定加大研发投入,专注于高精度传感器技术的研发。经过数年的不懈努力,HCC成功开发出了一款具有行业领先水平的温度传感器,其精度和稳定性远超同类产品。这一创新不仅赢得了市场的广泛认可,也吸引了多家知名电子企业的合作邀请。随着订单的不断增加,HCC迅速成长为微电子部件领域的佼佼者。

问答坊 | AI 解惑

个位高手行行好

   请问大家哪里可以找到有关遥控小车的设计方案,或者有谁知道遥控小车咋个设计的,透露一二,感激不尽啊!:( 我是电子科技大学的新生。帮帮忙哈,谢谢各位啦 …

查看全部问答>

十年(一)

林花谢了春红,太匆匆。 不知不觉中,我与BSS结缘已经十年。   最近经常反问自己,这10年究竟做了些什么?每次想这个问题的时候,要么一片空白,要么心乱如麻,因为我也没有想清楚自己到底做了些什么,似乎做了很多,又似乎什么也没有做 ...…

查看全部问答>

招聘网络师傅一名

要求:会DSP原理,能 经常上网!…

查看全部问答>

当USB设备端捕捉到主机端的URB接收请求,是否一定要回应一段数据?

问题是这样的,主机端想阻塞接收USB的数据,USB的固件的这样处理响应的: 有数据,发出数据及长度;无数据,发空数据及长度0. 这样就导致主机端接收函数根本没有阻塞点,固件改成没数据就不发送长度0,结果有数据的时候也不响应了. 是协议强制 ...…

查看全部问答>

怎么获取gpio中断事件

我想在应用程序里面获取某个gpio的中断事件,应该怎么做呢?不使用timer轮训。…

查看全部问答>

高分求WINCE5.0系统死机的原因分析?

用的是2440的CPU,WINCE5.0的系统.在没接USB鼠标之前系统都没有出现过死机,但是最近接上USB鼠标后,操作没几分钟就死机了,有时要操作20多分钟之后才死机,有时刚接上就死机了,最郁闷的事,死机了调试串口都没输出出错信息,都不知道从哪里开始找.请问该 ...…

查看全部问答>

关于wzcsapi.dll中带Ex的那套函数

WZCQueryInterface和WZCQueryInterfaceEx的区别是什么? WZCSetInterface和WZCSetInterfaceEx的区别是什么? 我的系统是WINCE5.0,君正MIPSII,为什么WZCQueryInterfaceEx和WZCSetInterfaceEx有时会报异常? 还有有时连上某个热点后,就搜索不到新 ...…

查看全部问答>

Framework能不能嵌套在EVC编写的代码中?

知道Framework编写的代码执行效率低一点,不知道会不会有很明显的差别? 如果系统是用EVC编写的,还能不能嵌套进入Framework来编程?…

查看全部问答>

新人报道,多多关照

很高兴加入论坛,希望与大家共同分享,交流,进步…

查看全部问答>