温度传感器的读写时序原理跟红外遥控差不多,关于宋老师的lesson16_2例程的DS18B20.c的代码这里我们就不讲解了,
《手把手教你学51单片机》文档第16章都已讲解明白。我们要讲解的是温度数值的转换如何在液晶屏上显示出来。
1.大于等于0度的转换
首先我们知道大于等于0度的时候,临时存取没有转换过的16位的变量的数值只需要乘以0.0625就是转换出来的实际温度了。
看到以下表格就知道,0x07D0=2000,实际温度就是2000*0.0625=+125度。
假如temp是unsigned int型变量用来存取没有转换过的临时温度,那么我们再定义一个float型的变量temp_float。
我们把temp强制转换成float类型,这样“temp_float=(float)temp*0.0625”就是实际的温度了。
我们要想把实际温度显示在液晶屏上该如何做呢?
假如我们要显示的范围只需保留一位小数即可,那么要显示像19.2度这样,我们要做的是把temp_float再乘以10.0,
然后又强制转换回来“temp=(u16)temp_float;”让temp存取192这个unsigned int类型的数据。
我们定义一个数组str。
str[0]='0'+( (temp/100)%10 );
str[1]='0'+( (temp/10)%10 );
str[2]='.';
str[3]='0'+( temp%10 );
这样的话“LcdShowStr(0, 0, str);”就是显示19.2了。
可是温度传感器测温最高有125度,也就是我们也要满足测量超过100度时候的显示。
比如显示101.2度时,液晶屏是这样显示
显示29.5度液晶屏要这样显示
显示0.7度液晶屏要这样显示,可以看到小数点要灵活改变
那么我们需要重新完善显示的代码,我们定义一个u8变量temp_i初始化时为0
temp_float=(float)temp*0.0625*10.0;//实际温度值再乘以10倍
temp=(unsigned int)temp_float; //得到16位整型的数值
str[0]='0'+( (temp/1000)%10 ); //当温度大于等于100度时需要显示百位数
str[1]='0'+( (temp/100)%10 ); //当温度大于等于10度时需要显示十位数
str[2]='0'+( (temp/10)%10 ); //当温度大于等于1度时需要显示个位数
str[3]='.';
str[4]='0'+( temp%10 ); //温度必须显示小数点后的一位
if(str[0]=='0')temp_i++;
if(str[1]=='0')temp_i++;
LcdShowStr(0, 0, str+temp_i); //显示到液晶屏上
temp_i=0;
我们做的是高位为0不显示,也就是当温度为25.9度时,有
str[0]=’0’; str[1]=’2’; str[2]=’5’; str[3]=’.’; str[4]=’9’;
而“LcdShowStr(0, 0, str+temp_i);”就是从str[1]开始显示,这样液晶屏就是这样显示了
同理当温度为0.7度时,“LcdShowStr(0, 0, str+temp_i);”里的temp_i的值为2,那么就是从str[2]开始显示,显示就如以下的方式了,显示完了temp_i要清0,继续接下一次的显示。
上一篇:51单片机-代码文件和测试
下一篇:51单片机-温度传感器代码解析Ⅱ
推荐阅读
史海拾趣
随着公司规模的不断扩大和市场份额的增加,ESS开始在全球范围内扩张其业务。ESS的分支机构遍布美国各地,同时也在中国、日本、韩国等地设立了海外机构。这些海外机构不仅有助于ESS更好地了解当地市场需求和竞争态势,还为公司在全球范围内推广其产品和服务提供了有力支持。ESS的全球战略布局为其在竞争激烈的半导体芯片市场中保持领先地位提供了有力保障。
在电子行业的激烈竞争中,常忆科技也面临着诸多挑战。其中,市场需求的快速变化和竞争对手的不断涌现是公司需要重点关注的问题。为了应对这些挑战,常忆科技不断调整和优化产品结构,以满足市场的多样化需求。同时,公司还加大了对核心技术的保护力度,防止技术泄露和侵权行为的发生。
在面对行业危机时,常忆科技展现出了强大的抗风险能力。公司通过加强内部管理、降低运营成本、提高生产效率等措施,成功度过了多次行业危机。这些经历不仅锻炼了公司的应对能力,也进一步提升了公司在行业中的地位和影响力。
展望未来,常忆科技将继续坚持创新驱动的发展战略。公司将不断加大在研发和创新方面的投入,推动产品技术的持续升级和迭代。同时,常忆科技还将积极拓展新的应用领域和市场空间,以满足更多客户的需求。
为了实现可持续发展,常忆科技还将注重环境保护和社会责任。公司将致力于推广绿色环保的生产方式和产品应用,为社会的可持续发展做出贡献。在未来的发展中,常忆科技有望凭借其卓越的技术实力和创新精神,继续在电子行业中书写新的辉煌篇章。
为了拓宽市场渠道,Easy Magnet Corp公司积极寻求与国际知名企业的合作。通过与国外企业的技术交流和合作研发,公司不仅获得了先进的生产技术和管理经验,还成功地将产品推向了国际市场。这一过程中,公司不仅提升了品牌影响力,还增强了自身的研发实力和市场竞争力。
A公司是一家专注于电子元器件生产的CIF公司。在成立初期,A公司凭借其创新的研发能力和高效的生产流程,迅速在市场中脱颖而出。通过与全球多家知名电子产品制造商建立稳定的CIF贸易关系,A公司不断扩大生产规模,优化产品质量,逐渐发展成为行业内的领军企业。
随着技术的不断成熟和产品线的丰富,DAQ Electronics LLC公司开始积极拓展市场。公司通过与科研机构、高校以及企业建立合作关系,将数据采集技术应用于更多领域。在科学研究领域,DAQ Electronics LLC公司的数据采集设备为实验数据的准确获取提供了有力保障;在工业生产领域,其设备则帮助企业实现了对生产过程的实时监控和数据分析。
小弟用三星的f9f208,但是发现有很多芯片都有坏道,不知道这些坏道影响使用不?而且怎么在焊接之前对这些芯片进行检测呢?如果有编程器加上夹具,可以对其进行检测吗?另外,可否通过编程器读取已经烧写好的flash并生成bin文件,然后用这个bin文件 ...… 查看全部问答∨ |
|
一个项目里,用到M128,外置32KRAM,有几个全局大数组,2个4000数组,三个1000数组(嘿嘿,够大了吧),在地址不定位的情况下声明这几个数组,编译时几乎都报错,地址重叠。每个数组地址绝对定位定义后没问题(最好数组间留一些空间)。现在疑问是 ...… 查看全部问答∨ |
过年了,为庆祝在eeworld上的总技术分突破3000分,特散300分,先200分,往后加100分 过年了,为庆祝在eeworld上的总技术分突破3000分,特散300分,先200分,往后加100分… 查看全部问答∨ |
不知道什么原因,nboot的用C语言写的代码一直不能运行完整。汇编全部执行完毕了,但是一跳到C函数main,问题就来了,不能运行函数,根据我点的灯的情况来看,似乎是卡在函数里面了,就是说跳到函数里面就出不来了,如果将那些初始化代 ...… 查看全部问答∨ |
最近我用PB4.2定制一个WINCE系统,如果我选择X86系列的目标平台进行定制,都可以顺利地生成NK.bin,然而我实际 的目标平台是S3C2410,当然我得选择sumsang SMDK2410:ARM4的BSP来定制,然而却总是无法生成NK.bin,奇怪的是 也不抱错,我在想,是不 ...… 查看全部问答∨ |
摘要: 对目前国内流行的嵌入式系统定义提出质疑,认为嵌入式系统不是“专用计算机系统”,嵌入式系统不只“以计算机技术为基础”。从嵌入式系统的发展起源、体系结构、功能特点、知识技术体系等方面进行了分析论证,从而进一步完善了嵌入式系统的定 ...… 查看全部问答∨ |
想法很简单,就是使用看门狗复位让一个LED闪。程序进去的时候,把LED点亮一段时间,然后关闭LED,最后有一个死循环,让看门狗复位芯片,然后再点亮LED。 但程序进去后,LED被点亮然后灭了就再也没亮,说明看门狗没有复位芯片。我今天查了一 ...… 查看全部问答∨ |
本帖最后由 ddllxxrr 于 2016-1-7 17:06 编辑 下午逛了逛淘宝,看到两块屏,挺便宜的....第一个,320*240,不到30块......28.8,多了貌似还能便宜.......... 第二个....不知道分辨率,看起来应该也不小,也不像笔段式的,盒子上说是 ...… 查看全部问答∨ |
我的目的是想练习使用一下flash的掉电不丢失功能,通过八位led灯指示数据t,按下按键s1时t的值会变化,然后将变化后的值存入flash中,下次上电后通过按下按键s2时读出上次存的值让led灯显示出来,程序如下有些问题,可能是我c语言指针部分学的不太 ...… 查看全部问答∨ |
设计资源 培训 开发板 精华推荐
- 想与高通抗衡?Intel提前半年发布XMM 8160 5G基带
- 郭明錤下调iPhone XR出货量,但恐遭供应链打脸!
- 展锐与Micromax和Lava合作,进军100美元以下手机市场
- 2018年思立微营收预增54%,光学指纹芯片持续导入大客户
- 1-10月国内手机市场出货量3.43亿部,同比下降15.3%
- Intel辟谣不会放弃10nm桌面版处理器
- GTX1660Super曝光 GDDR6显存+192bit位宽
- 曝锐龙5 3500X将在10月底登陆韩国市场
- 曝ARM在给苹果开发更高性能的CPU核心 将用于Macbook笔记本中
- 索尼下一代主机CPU将采用AMD定制版的Zen2+架构 比锐龙3000处理