毕业论文-移专-陈龙-修改2 - 图文(7)
武汉工程大学邮电与信息工程学院毕业设计(论文)
别赋予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字,全部文档内容请下载后查看。喜欢就下载吧 ……相关推荐:
- [法律文档]苏教版七年级语文下册第五单元教学设计
- [法律文档]向市委巡视组进点汇报材料
- [法律文档]绵阳市2018年高三物理上学期第二次月考
- [法律文档]浅析如何解决当代中国“新三座大山”的
- [法律文档]延安北过境线大桥工程防洪评价报告 -
- [法律文档]激活生成元素让数学课堂充满生机
- [法律文档]2014年春学期九年级5月教学质量检测语
- [法律文档]放射科标准及各项计1
- [法律文档]2012年广州化学中考试题和答案(原版)
- [法律文档]地球物理勘查规范
- [法律文档]《12系列建筑标准设计图集》目录
- [法律文档]2018年宁波市专技人员继续教育公需课-
- [法律文档]工会委员会工作职责
- [法律文档]2014新版外研社九年级英语上册课文(完
- [法律文档]《阅微草堂笔记》部分篇目赏析
- [法律文档]尔雅军事理论2018课后答案(南开版)
- [法律文档]储竣-13827 黑娃山沟大开挖穿越说明书
- [法律文档]《产品设计》教学大纲及课程简介
- [法律文档]电动吊篮专项施工方案 - 图文
- [法律文档]实木地板和复合地板的比较
- 探析如何提高电力系统中PLC的可靠性
- 用Excel函数快速实现体能测试成绩统计
- 教师招聘考试重点分析:班主任工作常识
- 高三历史选修一《历史上重大改革回眸》
- 2013年中山市部分职位(工种)人力资源视
- 2015年中国水溶性蛋白市场年度调研报告
- 原地踏步走与立定教学设计
- 何家弘法律英语课件_第十二课
- 海信冰箱经销商大会——齐俊强副总经理
- 犯罪心理学讲座
- 初中英语作文病句和错句修改范例
- 虚拟化群集部署计划及操作流程
- 焊接板式塔顶冷凝器设计
- 浅析语文教学中
- 结构力学——6位移法
- 天正建筑CAD制图技巧
- 中华人民共和国财政部令第57号——注册
- 赢在企业文化展厅设计的起跑线上
- 2013版物理一轮精品复习学案:实验6
- 直隶总督署简介




