两个吃奶一个添下面视频_人妻第一页香蕉网_欧美xxxx少妇_妺妺窝人体色www婷婷

1.題目要求

有時候我們需要知道在一段時間里溫度傳感器測量的溫度的歷史數(shù)據(jù),之前的溫度傳感器例程只是在液晶屏上實時顯示出數(shù)據(jù)而已,并不能查看它的歷史數(shù)據(jù),所以我們運用之前所有學(xué)過的知識來完成這個任務(wù)。

首先我們先從簡單的理念入手,利用串口每隔一秒打印出來當(dāng)前的溫度值,這樣的話,所有歷史數(shù)據(jù)在電腦端的窗口都可以看到了,只不過我們的開發(fā)板的USB線不能離開電腦,測溫度只能連著電腦測,然后觀察電腦端窗口數(shù)據(jù)的變化。

這一次我們實時顯示的溫度用數(shù)碼管顯示,串口打印的數(shù)據(jù)格式大體如下所示

第1秒:10.2度

第2秒:15.7度

第3秒:7.6度

第4秒:0.5度


2.main.c測試代碼

#include <reg52.h>
#include <function.h> //詳見第六章第8講
#include <timer.h>    //詳見第八章第11講
#include <uart.h>     //詳見第十章第4講
#include <ds18b20.h>  //詳見第十三章第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是微調(diào)使定時精度更高,每次微調(diào)都由中斷函數(shù)里的內(nèi)容而決定
    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;

                //以下是處理數(shù)碼管顯示的內(nèi)容
                LedBuff[0]=LedChar[str[4]-'0'];
                LedBuff[1]=0x7F;                         //顯示小數(shù)點
                LedBuff[2]=LedChar[str[2]-'0'];

                if(str[0]=='-')                          //溫度小于0
                {
                    if(str[1]=='0')
                    { 
                        LedBuff[3]=0xBF;                 //數(shù)碼管顯示“-”
                        LedBuff[4]=0xFF;
                    }
                    else
                    { 
                        LedBuff[3]=LedChar[str[1]-'0'];
                        LedBuff[4]=0xBF;                 //數(shù)碼管顯示“-”
                    }
                }

                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();                                //重新啟動下一次轉(zhuǎn)換
        }
    }
}
 
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)       //接收到字節(jié)
    {
        RI = 0;   //手動清零接收中斷標(biāo)志位                     
    }
}


3.串口打印截圖

筆者上電之后,故意向開發(fā)板上的溫度傳感器吹熱氣,效果很棒

溫度傳感器

點贊(0)

C語言網(wǎng)提供由在職研發(fā)工程師或ACM藍(lán)橋杯競賽優(yōu)秀選手錄制的視頻教程,并配有習(xí)題和答疑,點擊了解:

一點編程也不會寫的:零基礎(chǔ)C語言學(xué)練課程

解決困擾你多年的C語言疑難雜癥特性的C語言進(jìn)階課程

從零到寫出一個爬蟲的Python編程課程

只會語法寫不出代碼?手把手帶你寫100個編程真題的編程百練課程

信息學(xué)奧賽或C++選手的 必學(xué)C++課程

藍(lán)橋杯ACM、信息學(xué)奧賽的必學(xué)課程:算法競賽課入門課程

手把手講解近五年真題的藍(lán)橋杯輔導(dǎo)課程

Dotcpp在線編譯      (登錄可減少運行等待時間)