历史上的今天

今天是:2024年08月30日(星期五)

正在发生

2021年08月30日 | 51单片机-温度传感器与串口

发布者:MysticalGarden 来源: eefocus关键字:51单片机  温度传感器  串口 手机看文章 扫描二维码
随时随地手机看文章

1.题目要求


有时候我们需要知道在一段时间里温度传感器测量的温度的历史数据,之前的温度传感器例程只是在液晶屏上实时显示出数据而已,并不能查看它的历史数据,所以我们运用之前所有学过的知识来完成这个任务。


首先我们先从简单的理念入手,利用串口每隔一秒打印出来当前的温度值,这样的话,所有历史数据在电脑端的窗口都可以看到了,只不过我们的开发板的USB线不能离开电脑,测温度只能连着电脑测,然后观察电脑端窗口数据的变化。


这一次我们实时显示的温度用数码管显示,串口打印的数据格式大体如下所示


第1秒:10.2度


第2秒:15.7度


第3秒:7.6度


第4秒:0.5度


2.main.c测试代码


#include

#include //详见第六章第8讲

#include     //详见第八章第11讲

#include      //详见第十章第4讲

#include   //详见第十三章第5讲

 

u8 flag1s = 0;

void main()

{

    u32 x=1;

    u8 str[13];    

    u16 temp;

    EA = 1;  

    LED_Init();

    Start18B20();        //启动DS18B20

    TIM0_Init(1000,33);  //定时1ms,33是微调使定时精度更高,每次微调都由中断函数里的内容而决定

    ConfigUART(9600);

    while (1)

    {    

        if (flag1s)      //每秒更新一次温度

        {

            flag1s = 0;

            if( TEMP_CONV(&temp,str)==1 ) //返回值为1代表读取温度成功

            {

                printf_str("第");

                printf_num(x);

                x++;

                printf_str("秒:");

                printf_str(str+temp_i);

                printf_str("度");

                printf_rn();              //回车换行

                temp_i=0;

 

                //以下是处理数码管显示的内容

                LedBuff[0]=LedChar[str[4]-'0'];

                LedBuff[1]=0x7F;                         //显示小数点

                LedBuff[2]=LedChar[str[2]-'0'];

 

                if(str[0]=='-')                          //温度小于0

                {

                    if(str[1]=='0')

                    { 

                        LedBuff[3]=0xBF;                 //数码管显示“-”

                        LedBuff[4]=0xFF;

                    }

                    else

                    { 

                        LedBuff[3]=LedChar[str[1]-'0'];

                        LedBuff[4]=0xBF;                 //数码管显示“-”

                    }

                }

 

                else                                     //温度大于等于0

                { 

                    if(str[1]=='0')LedBuff[3]=0xFF;      //高位不显示0

                    else LedBuff[3]=LedChar[str[1]-'0'];

 

                    if(str[0]=='0')LedBuff[4]=0xFF;      //高位不显示0

                    else LedBuff[4]=LedChar[str[0]-'0'];

                }

            }

            Start18B20();                                //重新启动下一次转换

        }

    }

}

  

void TIM0_IRQHandler() interrupt 1

    static u16 tmr1s = 0;

    TH0 = T0RH;           //重新加载重载值

    TL0 = T0RL;

   

    tmr1s++;

    SEG_Scan();

    if (tmr1s >= 1000)    //定时1s

    {

        tmr1s = 0;

        flag1s= 1;

    }

}

  

void InterruptUART() interrupt 4

{

    if (RI)       //接收到字节

    {

        RI = 0;   //手动清零接收中断标志位                     

    }

}


3.串口打印截图


笔者上电之后,故意向开发板上的温度传感器吹热气,效果很棒

15.11.png

关键字:51单片机  温度传感器  串口 引用地址:51单片机-温度传感器与串口

上一篇:51单片机-遥控器控制舵机
下一篇:51单片机-模拟倒车雷达报警

推荐阅读

4月8日晚,旷视科技(Face++)宣布收购艾瑞思机器人,进军智能机器人业务。AGV行业,乃至整个人工智能领域都在好奇——艾瑞思机器人有哪些值得收购的亮点?被收购后的艾瑞思接下来怎么打这手牌,是否能实现“1+1>2”的效果? 初创型公司技术过硬,实现最大规模单仓机器人集群作业 艾瑞思机器人是一家智能仓储解决方案提供商,致力于为客户提供整体仓...
DC/DC 转换器中半导体器件的高频开关特性是主要的传导和辐射发射源。本文章系列 [1] 的第 2 部分回顾了 DC/DC 转换器的差模 (DM) 和共模 (CM) 传导噪声干扰。在电磁干扰 (EMI) 测试期间,如果将总噪声测量结果细分为 DM 和 CM 噪声分量,可以确定 DM 和 CM 两种噪声各自所占的比例,从而简化 EMI 滤波器的设计流程。高频下的传导发射主要由 CM 噪声产生,...
据外媒报道,TikTok试图通过出售其在美国的业务,以摆脱美国的全面禁令,但可能会遇到一些麻烦。《华尔街日报》 报道说,中国对人工智能技术出口实行了新的限制,这可能会影响TikTok。新规则禁止TikTok在某些情况下使用的技术,诸如内容建议,文本分析和语音识别之类的技术出口,除非公司获得许可。中国政府又向TikTok的母公司ByteDance发出了微妙的警告...
  热力膨胀阀故障现象  故障现象一:热力膨胀阀提供的制冷剂流量不足(开度小)。  故障现象二:膨胀阀提供的制冷剂流量太大(开度大)。  故障现象三:膨胀阀时而供液不足,时而供液太多(波动)。  热力膨胀阀故障处理  原因1:冰堵  【产生原因】:如果制冷剂中含水量较多,在蒸发温度降到0℃以下时,有可能在热力膨胀阀节流口处结冰,造...

史海拾趣

问答坊 | AI 解惑

元器件接地问题?

就是一般单片机有模拟地和数字地,外围的元器件接地怎么判断是接模拟地,还是数字地?是根据元器件的性质,还是看通过的信号?…

查看全部问答∨

Verilog HDL 综合实用教程

给verilog学习者的,希望对大家有帮助!…

查看全部问答∨

用C8051F300设计锂离子电池充电器的解决方案

用C8051F300设计锂离子电池充电器的解决方案…

查看全部问答∨

有关VHDL语言的资料

一些简单的基础知识,供大家参考…

查看全部问答∨

D题资料下载

本帖最后由 paulhyde 于 2014-9-15 09:35 编辑 希望大家喜欢!!!!  …

查看全部问答∨

硬件工程师必读攻略(上)

一 、数模混合设计的难点 二、提高数模混合电路性能的关键 三、仿真工具在数模混合设计中的应用 四、小结 五、混合信号 PCB 设计基础问答 前言: 数模混合电路的设计,一直是困扰硬件电路设计师提高性能的瓶颈。众所周 知,现实的世界 ...…

查看全部问答∨

30岁后职业人的发展突围之策

都说“三十而立,四十不惑”,在跨过了20多岁因全力拼搏而快速上升的飞跃期,到了三十多、四十岁的时候,本应处在一种稳步前进的状态,工作能力已经得到检验,拥有充沛的精力和赚钱的实力,可以为自己应得的报酬同老板讨价还价,然而你却丝毫舒坦不 ...…

查看全部问答∨

非接触式IC卡的时钟信号从哪来?

非接触式IC卡,如公交卡,电源似乎是线圈感应读卡器的磁场产生电流,不知这样说对否? 还有就是这样的IC卡的时钟信号从哪来?…

查看全部问答∨

请教:EVC编译环境中,怎样在程序中输入韩文?

我在控件中输入的韩文怎么都是“?”,程序中的字符串也无法显示正确的韩文,哪位高手帮帮忙呀。…

查看全部问答∨

高分求助 音频转换问题 WAV和AMR的转换

http://blog.eeworld.net/jinlking/archive/2009/06/10/4256311.aspx 我已经在网上找了些资料,上面这个最清楚,但是我不确定是否正确,而且好多函数是没有提供的 也在网上下载了写源码,是VC的,我现在要在EVC下实现,但是从网上下载的源码 跟博 ...…

查看全部问答∨
小广播
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
随便看看

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved