//温度值小数部分对照表
code
uchar
table_tempfh[]={0,1,1,2,3,3,4,4,5,6,6,7,8,8,9,9};
//读取DS18B20当前温度
void
read_temp(void)
{
uchar
a=0;
uchar
b=0;
//DS18B20默认为12位精度
ds18b20_init();
ds18b20w_byte(0xCC);
//
跳过读序号列号的 *** 作
ds18b20w_byte(0x44);
//
启动温度转换
delayus(100);
//
等待足够长时间以读取温度值
ds18b20_init();
ds18b20w_byte(0xCC);
ds18b20w_byte(0xBE);
//读取温度寄存器等(共可读9个寄存器)
前两个就是温度
delayus(100);
a=ds18b20r_byte();
//读取温度值低位
b=ds18b20r_byte();
//读取温度值高位
tempvalue=b<<4;
//转化成字节温度
tempvalue+=(a&0xf0)>>4;
//整数部分
tempvalue_fh=table_tempfh[a&0x0f];
//小数部分(查表对照,获取小数位)
}
上面的程序采用12位精度,查阅18B20手册,LSB的最低四位代表小数,MSB的最高5位为符号位,其余的7位为整数部分,其分辨率为00625°,根据此规律,整数就是两字节凑在一起,而小数部分则是最低四位的值,乘以00625,看你取几位小数,再取整即可。上述的对照表是取1位小数的结果,取四舍五入。比如现在LSB的最低四位是0111,那么小数部分就是006257=04375,如果取1位小数,就是“4”,两位小数就是“44”依次类推。
#include <stdioh>int main(){ double c, f; printf ("请输入华氏温度:"); scanf ("%lf", &f); c=50/9(f-32); printf ("%g华氏温度是%2f摄氏温度\n", f, c); return 0;}
扩展资料:
#include<iostream>
using namespace std;
int main()
{
float f,c;
cout<<"请输入华氏温度:";
cin>>f;
c=5(f-32)/9;
cout<<"摄氏温度为:"<<c<<endl;
return 0;
}
你好!!
请看代码,:
#include<stdioh>int main()
{
int x;
float a,s;
printf("请选择转换的类型:\n 华氏转摄氏(1)\n 摄氏转华氏(2)\n");
scanf("%d",&x);
switch(x)
{
case 1:
printf("华氏温度:");
scanf("%f",&a);
s=(a-32)/18;
printf("摄氏温度:%22f\n",s);
break;
case 2:
printf("摄氏温度:");
scanf("%f",&a);
s=a18+32;
printf("华氏温度:%22f\n",s);
break;
}
return 0;
}
你好!!另一个接法,合乎你的题目要求:
#include<stdioh>int main()
{
int x;
float a,s;
int ii=0;
for(ii=0;ii<3;ii++)
{
printf("请选择转换的类型:\n 华氏转摄氏(1)\n 摄氏转华氏(2)\n");
scanf("%d",&x);
switch(x)
{
case 1:
printf("华氏温度:");
scanf("%f",&a);
s=(a-32)/18;
printf("摄氏温度:%22f\n",s);
break;
case 2:
printf("摄氏温度:");
scanf("%f",&a);
s=a18+32;
printf("华氏温度:%22f\n",s);
break;
}
}
return 0;
}
使用公式℃=(5/9)(°F-32)打印下列华氏温度与摄氏温度对照表: 0 -178 20 -67 40 44 60 156 80 267 100 378 120 489 140 600 160 711 180 822 200 933 220 1044 240 1156 260 1267 280 1378 300 1489 代码如下: 要点整理:
1结果集中我们可以看到有1位小数,因此输出中要制定小数的位数,即%61f;
2公式中的(5/9)是不能直接照办斤程序中的,因为整数除法会进行舍位,结果将永远是0,因此需要用浮点数,即50/90 ,而后面的(fahr-32)虽然也是整型,由于和浮点数进行运算,最后的结果会自动转成浮点数;关于数据类型的自动转换可以找度娘;
3变量使用了常量的表达方式,便于理解和阅读,更便于以后的维护;
4for语句会先执行条件检查,check first and then do。
那么,学习方法有哪些呢
1、预习
预习是非常重要的学习方法,通过预习,可以熟悉文章的内容与结构,在预习的过程中,可以在自己不懂的地方作上标记,这样上课的时候,就可以带着问题,让自己有针对性去听课,进而提高了学习的兴趣与效率。
2、听课做好笔记
听课是人们接收信息的重要的方式。人们在听课的过程中,可以学习到大部分的内容,因此,把握好听课,非常的重要。一定要集中精力,听教师讲解,并积极的做好笔记,同时参加课堂活动,积极回答老师提出的问题。
3、认真做作业
老师在上完课之后,都会给学生布置作业。做作业的目的是为了进一步的巩固课堂上面学到的内容。所以,一定要认真对待作业。
4、复习与总结
学习之后,一定要进行复习与总结,通过复习与总结,可以让学习到的内容,成为自己的知识,并在复习与总结中,发现新的问题,进一步加深对知识点的理解。
5、保持自信心
自信心可以给人们带来巨大的动力,只有具备自信心,才可以让每一天的学习更加的充满活力,并更好的记忆学习的内容。
;这个是c++的 楼主好像写错公式了, f代表华氏温度,c代表摄氏温度
#include<iostreamh>
#include<iomaniph>
void main()
{
double f,c,b;
cout<<"请输入华氏温度:"<<endl;
cin>>f;
cout<<"对应的摄氏温度为:"<<endl;
c=f-32;
b=500/9;
c=bc;
cout<<setiosflags(ios::fixed)<<setprecision(2)<<"c="<<c<<endl;
}
;再给你个c语言的
#include <stdioh>
void main()
{
double f,c,b;
scanf("请输入华氏温度: %f\n",&f);
c=f-32;
b=500/9;
c=bc;
printf("对应的摄氏温度为: %f\n",c);
}
#include
<stdioh>
void
main()
{
double
f,c,b;
scanf("请输入华氏温度:
%f\n",&f);
c=f-32;
b=500/9;
c=bc;
printf("对应的摄氏温度为:
%f\n",c);
}
以上就是关于DS18B20单片机C语言温度数据转换全部的内容,包括:DS18B20单片机C语言温度数据转换、C语言编程:输入一个华氏温度,要求输出摄氏温度,公式为:、c语言华氏摄氏温度转换等相关内容解答,如果想了解更多相关内容,可以关注我们,你们的支持是我们更新的动力!
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)