日韩性视频-久久久蜜桃-www中文字幕-在线中文字幕av-亚洲欧美一区二区三区四区-撸久久-香蕉视频一区-久久无码精品丰满人妻-国产高潮av-激情福利社-日韩av网址大全-国产精品久久999-日本五十路在线-性欧美在线-久久99精品波多结衣一区-男女午夜免费视频-黑人极品ⅴideos精品欧美棵-人人妻人人澡人人爽精品欧美一区-日韩一区在线看-欧美a级在线免费观看

歡迎訪問 生活随笔!

生活随笔

當前位置: 首頁 > 编程资源 > 编程问答 >内容正文

编程问答

第14周---温湿度传感器采集

發布時間:2023/12/20 编程问答 32 豆豆
生活随笔 收集整理的這篇文章主要介紹了 第14周---温湿度传感器采集 小編覺得挺不錯的,現在分享給大家,幫大家做個參考.

第14周---溫濕度傳感器采集

  • 實驗目的
  • “軟件I2C”和“硬件I2C”
  • 溫濕度數據采集

實驗目的

  • 學習I2C總線通信協議,完成基于I2C硬件協議的AHT20溫濕度傳感器的數據采集,并將采集的溫度-濕度值通過串口輸出。具體任務:
  • 1)解釋什么是“軟件I2C”和“硬件I2C”? (閱讀野火配套教材的第23章“I2C–讀寫EEPROM”原理章節)

    2)閱讀AHT20數據手冊,編程實現:每隔2秒鐘采集一次溫濕度數據,并通過串口發送到上位機(win10)。

  • 安裝 Ardunio IDE 和相關軟件支持庫,在Ardunio 完成STM32板子的串口通信程序:1)持續向串口輸出“Hello world!”;2)當接收到“stop!”時,停止輸出。

  • 大概是受到Ardunio IDE的啟發,網上有一個國人版的MCU集成開發平臺, stduino IDE(http://www.stduino.com/pindex.php),請試玩之,然后談一下體會,比如:已經有了Keil、Ardunio,覺得是否還有必要“再造車輪”?

  • “軟件I2C”和“硬件I2C”

    I2C 通訊協議(Inter-Integrated Circuit)是由 Phiilps 公司開發的,由于它引腳少,硬件實
    現簡單,可擴展性強,不需要 USART、CAN 等通訊協議的外部收發設備,現在被廣泛地
    使用在系統內多個集成電路(IC)間的通訊。
    在計算機科學里,大部分復雜的問題都可以通過分層來簡化。如芯片被分為內核層和
    片上外設;STM32 標準庫則是在寄存器與用戶代碼之間的軟件層。對于通訊協議,我們也
    以分層的方式來理解,最基本的是把它分為物理層和協議層。物理層規定通訊系統中具有
    機械、電子功能部分的特性,確保原始數據在物理媒體的傳輸。協議層主要規定通訊邏輯,
    統一收發雙方的數據打包、解包標準。簡單來說物理層規定我們用嘴巴還是用肢體來交流,
    協議層則規定我們用中文還是英文來交流。
    1、軟件I2C
    將芯片的兩個GPIO引腳分別用作SCL及SDA,按照I2C的時序要求,直接控制引腳的輸出信號(若是接收數據時則讀取 SDA 電平),就可以實現I2C通訊。由于是直接控制GPIO引腳的高低電平產生通訊時序,需要由CPU控制每個時刻的引腳狀態,所以稱為“軟件模擬協議”方式即軟件I2C方式。

    2、硬件I2C
    硬件I2C對應芯片上的I2C外設,具有相應的I2C驅動電路,其所使用的I2C管腳也是專用的,因而效率要遠高于軟件模擬的I2C,但是程序較為繁瑣。硬件I2C是直接調用內部寄存器進行配置。
    對于硬件I2C來說,它需要I2C片上外設專門負責實現I2C通訊協議,只要配置好該外設,它就會自動根據協議要求產生I2C的通訊信號,收發數據并緩存起來,CPU只要檢測該外設的狀態和訪問數據寄存器,就能完成數據收發。這種由硬件外設處理I2C協議的方式減輕了CPU的工作負擔,并且使軟件開發更簡單。

    溫濕度數據采集

    數據采集的程序我使用的是野火的模板,相關代碼如下:

    #include "led.h" #include "usart.h" #include "temhum.h"int main(void){ u32 CT_data[2]={0};volatile float hum=0,tem=0; delay_init(); //延時函數初始化 NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); //設置NVIC中斷分組2:2位搶占優先級,2位響應優先級uart_init(115200); //串口初始化為115200LED_Init(); //LED端口初始化temphum_init(); //ATH20初始化 while(1){AHT20_Read_CTdata(CT_data); //不經過CRC校驗,直接讀取AHT20的溫度和濕度數據 hum = CT_data[0]*100*10/1024/1024; //計算得到濕度值(放大了10倍)tem = CT_data[1]*200*10/1024/1024-500;//計算得到溫度值(放大了10倍)printf("濕度:%.1f%%\r\n",(hum/10));printf("溫度:%.1f度\r\n",(tem/10));printf("\r\n");//延時2s,LED閃爍提示串口發送狀態LED=0;delay_ms(1000);LED=1;delay_ms(1000);}}

    燒錄程序之后的結果:

    總結

    以上是生活随笔為你收集整理的第14周---温湿度传感器采集的全部內容,希望文章能夠幫你解決所遇到的問題。

    如果覺得生活随笔網站內容還不錯,歡迎將生活随笔推薦給好友。