教学文库网 - 权威文档分享云平台
您的当前位置:首页 > 精品文档 > 法律文档 >

毕业论文-移专-陈龙-修改2 - 图文(7)

来源:网络收集 时间:2026-09-06
导读: 武汉工程大学邮电与信息工程学院毕业设计(论文) 别赋予geta、getb两个字符型变量,再将getb赋予temp(temp是一个整型变量拥有两个字节的容量),这样temp的低8为就是getb中的值了。temp 现在已获得了温度的数据,

武汉工程大学邮电与信息工程学院毕业设计(论文)

别赋予geta、getb两个字符型变量,再将getb赋予temp(temp是一个整型变量拥有两个字节的容量),这样temp的低8为就是getb中的值了。temp<<=8的意义是temp=temp<<8,所以temp的低8位将变成temp中的高8位,而C语言规定低8移位操作后不足的位数由0补上,这时的目的就是要将geta中的数据赋予temp中的低8位,只需要将temp按位与上geta,geta中位为1与上temp中低8位中的0就是1,而geta中位为0与temp中低8位的0相与就是0,这样就将geta中的值赋给了temp的低8位。

现在已获得了温度的数据,还要通过软件计算出具体传送数据代表的温度值,在前面已经谈到数据中的1就代表了0.0625摄氏度。直接将temp值乘0.0625就是需要的温度,temp乘以0.0625后的值赋予tt ,temp=tt*10+(temp > 0 ? 0.5 : -0.5)这句话是先将tt由一个最高位为十位保留小数点后一位的数扩大了十倍,变为了一个最高位为百位的三位数,而后面加上的十一个四舍五入的赋值语句,也就相当是一个if语句,C语言是任何精度高的变量变为精度低的变量时,都会失去一定的精度,而且是向下取整,例如在这里,如果tt是正温度的话变大10倍以后,小数点后一位是无论是1还是9,都默认舍去,如果要对正数的tt进行四舍五入应该先给tt加上0.5,再将它赋给精度较低的temp,这样就可以有四舍五入的功能,而这里没有这么简单,这个if语句的还要考虑tt为负值的情况下的操作,如果temp为负值,tt变大10倍以后还要减去0.5,这样就能够完成tt为负值情况下的四舍五入。

3.3 主函数的分析

首先给出主函数: void main() {

TMOD=0x01;

TH0=(65536-46000)/256; TL0=(65536-46000)%6; EA=1; ET0=1;

25

武汉工程大学邮电与信息工程学院毕业设计(论文)

}

TR0=1; zd=0;

num=21;aaa=0;bbb=0; num1=21;num2=21;num3=21; while(1) { }

uint a; uchar b; changetemp(); a=gettemp(); b=scanff(); numy=gettemp(); display(a,b);

这里的aaa用于控制是否确定输入的一个数字是需要的数字,bbb用于标记已经输入到了三个数字的第几个数字。

主函数首先将所用到的全局变量赋值,然后进入大循环首先进入温度转换函数,使DS18B20启动温度转换,然后获取温度将两个字节的数值赋给a,而将输入的温度赋予b ,再由display(a,b)子函数输出所有的值。

3.4 显示函数的分析

以下是display()函数的具体内容。 void display(uint a,uchar b) {

uchar i,temp,srtemp,dis[4]; uint dda; dda=abs(a); numx=dda/1000; num4=dda00/100;

26

武汉工程大学邮电与信息工程学院毕业设计(论文)

num5=dda0/10; num6=dda; dis[0]=numx; dis[1]=num4; dis[2]=num5; dis[3]=num6;

dis[2]+=10;//num5小数点 if((dis[0]==0)&&(dis[1]==0))

dis[1]=20;//如果百位和十位都为0 不显示

if(a<0)//负值 后面加个小数点

dis[3]+=10;

else

{if(dis[0]!=0)//超过100前面加小数点 dis[1]=dis[1]+10; }

temp=0xfb; for(i=1;i<4;i++) { }

duan=1;

27

P0=0xff; wei=1;

temp=_crol_(temp,1); P0=temp; wei=0; P0=0; duan=1; P0=table[dis[i]]; duan=0; delay(3);

武汉工程大学邮电与信息工程学院毕业设计(论文)

P0=0x00; duan=0;

if(aaa==1&&ccc!=21)

bbb++;

switch(bbb) {

case 0: dis[1]=b; num1=b; dis[2]=num2; dis[3]=num3; if(dis[2]==21)

dis[2]++;

else

dis[2]+=10;

srtemp=0xfe; for(i=1;i<4;i++) {

P0=0xff; wei=1;

P0=srtemp;//wein打开后 是低电平亮 wei=0;//

srtemp=_crol_(srtemp,1); P0=0x00; duan=1; P0=table[dis[i]]; duan=0; delay(1); duan=1; P0=0x00;

28

武汉工程大学邮电与信息工程学院毕业设计(论文)

}

duan=0;

break; case 1: dis[1]=num1; dis[2]=b; num2=b; dis[3]=num3; if(dis[2]==21)

dis[2]++;

else

dis[2]+=10;

srtemp=0xfe; for(i=1;i<4;i++) { }

29

P0=0xff; wei=1;

P0=srtemp;//wein打开后 是低电平亮 wei=0;//

srtemp=_crol_(srtemp,1); P0=0x00; duan=1; P0=table[dis[i]]; duan=0; delay(1); duan=1; P0=0x00; duan=0;

…… 此处隐藏:327字,全部文档内容请下载后查看。喜欢就下载吧 ……
毕业论文-移专-陈龙-修改2 - 图文(7).doc 将本文的Word文档下载到电脑,方便复制、编辑、收藏和打印
本文链接:https://www.jiaowen.net/wendang/436270.html(转载请注明文章来源)
Copyright © 2020-2025 教文网 版权所有
声明 :本网站尊重并保护知识产权,根据《信息网络传播权保护条例》,如果我们转载的作品侵犯了您的权利,请在一个月内通知我们,我们会及时删除。
客服QQ:78024566 邮箱:78024566@qq.com
苏ICP备19068818号-2
Top
× 游客快捷下载通道(下载后可以自由复制和排版)
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
VIP包月下载
特价:29 元/月 原价:99元
低至 0.3 元/份 每月下载150
全站内容免费自由复制
注:下载文档有可能出现无法下载或内容有问题,请联系客服协助您处理。
× 常见问题(客服时间:周一到周五 9:30-18:00)