历史上的今天
返回首页

历史上的今天

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

正在发生

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

2021-08-30 来源:eefocus

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?imageView2/2/w/550

推荐阅读

史海拾趣

FTDI [Future Technology Devices International Ltd.]公司的发展小趣事

FTDI的创立可以追溯到1992年3月13日,由弗雷德·达特(Fred Dart)领导创建。初期,公司专注于为个人电脑市场提供服务,特别是针对主板芯片组的解决方案。FTDI的首发产品就得到了IBM等知名企业的青睐,这些芯片被成功应用于AMBRA和PS/2系列个人电脑中,为当时快速发展的计算机技术贡献了重要力量。这一早期成功奠定了FTDI在电子行业中稳固的基础。

COTO TECHNOLOGY公司的发展小趣事

近年来,随着全球电子产业的快速发展,中国市场的重要性日益凸显。COTO TECHNOLOGY也看到了这一机遇,开始深耕中国市场,寻求与当地企业的合作。通过与成都迈极芯科技等公司的战略合作,COTO不仅将先进的技术和产品引入中国,还为中国半导体测试产业提供了更优质的产品和服务。这一系列的合作不仅促进了COTO在中国市场的发展,也推动了中国电子产业的进步。

这五个故事只是COTO TECHNOLOGY发展历程中的一部分,但它们充分展示了这家公司在电子行业中的成长与变迁。从初创时期的线圈绕组制造商,到后来的干簧继电器领导者,再到全球范围内的扩张与战略合作,COTO始终保持着对技术的追求和对市场的敏锐洞察。这些故事不仅反映了COTO的发展历程,也见证了整个电子行业的变革与进步。

Bias Power公司的发展小趣事

在电子行业的早期,Bias Power公司凭借其创新的基于开关技术的低功率隔离式AC/DC电源设计,迅速在市场中脱颖而出。当时,传统的电源设计方案效率低下,成本高昂,难以满足市场的迫切需求。Bias Power公司凭借其专有设计,实现了电源的高效率、高密度和成本效益,赢得了众多客户的青睐。

随着技术的不断进步,Bias Power公司不断推出新产品,满足市场的多样化需求。其偏置电源产品线日益丰富,包括提供低于5W功率的AC/DC电源模块,这些模块成为分立电源设计的理想替代方案,帮助设计工程师节省时间和金钱。

Elpaq公司的发展小趣事
DB Unlimited公司的发展小趣事

DB Unlimited始终将技术创新作为公司发展的核心驱动力。公司不断投入大量资源进行技术研发和创新,推出了多项具有行业领先水平的音频技术。这些技术的推出不仅提升了公司的竞争力,也推动了整个音频行业的发展。DB Unlimited的技术创新能力和成果得到了业界的广泛认可。

冠西电子(COSMO)公司的发展小趣事

近年来,冠西电子积极布局全球市场,设立了多个分公司和办事处,以便更好地服务全球客户。同时,冠西电子还不断关注新兴技术和市场需求的变化,积极寻求新的发展机遇。展望未来,冠西电子将继续秉承“专业、创新、品质、服务”的理念,不断推动公司业务的发展和进步。

以上五个故事概要涵盖了冠西电子(COSMO)公司从创立到发展的主要阶段和事实。每个阶段都体现了冠西电子在技术、市场、品质、品牌等方面的努力和成就。

问答坊 | AI 解惑

数控电源资料

数控电源制作资料单片机技术问题,模拟技术均可咨询…

查看全部问答>

Fundamentals_of_Instrumentation_and_Measurement.pdf

寒假回家前人品爆发第二帖。 书名:Fundamentals_of_Instrumentation_and_Measurement 作者:Dominique Placko 出版社:Published in Great Britain and the United States in 2007 by ISTE Ltd 版次:第一版 总页数:555 文件格式:PDF ...…

查看全部问答>

51单片机与上位机的串口通讯问题!!! 急急急

应该没什么问题的啊,就是不通讯 ! 程序如下: #include                           #include                 #define uch ...…

查看全部问答>

CE 6.0内存映射读文件速度慢,急!

先讲讲5.0情况: 5.0内存映射读取文件,会有物理内存进行缓存,这样重复读取相同内容时直接从内存缓冲中取得,直到所有物理内存耗尽(low_memory情况),这时5.0会一次性全部自动释放所有物理内存,之后的文件读取又要从文件去取到内存了。这里的物 ...…

查看全部问答>

9054读寄存器操作存在错误

各位大侠:                         您好!    小弟最近在设计一款通信卡,用到9054芯片,9054芯片工作在J模式,只需要进行Target write和read操作就 ...…

查看全部问答>

zigbee输出频谱

我一直有个问题不是很清楚,zigbee发送0和1数据,按照MSK的来理解,0和1应该分别对应一个频率,所以在RF输出的时候频谱应该是在两个地方有主峰,例如在一个channel中,以2.405G为中心,有数据发送时候应该分别在2.405G+500K处,和2.405G-500K处有主 ...…

查看全部问答>

[TI首届低功耗设计大赛]+使用430库开发+led闪烁

本帖最后由 IC爬虫 于 2014-9-23 13:37 编辑        接上一篇使用寄存器开发FR5969LAUNCHPAD,这个试验依旧还是闪烁LED2,这样大家可以和我的前面的那个帖子作对比,辨别异同,这样可以更好的了解430的库开发过程。   & ...…

查看全部问答>

怎么用51单片机在OLED显示时钟??

我有一个OLED的显示程序,不知道怎么添加时钟程序,再在OLED显示出来…

查看全部问答>