關于嵌入式學習——單片機4

ds18b20溫度傳感器的使用

一、傳感器分類:

  • 數字溫度傳感器,實現簡單,不需要額外轉換電路,采集過來的就是數字溫度值
  • 模擬溫度傳感器->熱敏電阻->AD轉換電路->數字值

二、傳感器接口:

  • GPIO接口:(ds18b20是特殊的單線GPIO接口)
  • I2C接口:SCLSDAVCCGND
  • SPI接口:SCLK、CS.MOSL、MISO
  • ADC接口:板子ADC進行模數轉換
  • UART接口:GPS

三、ds18b20的主從通信方式

ds18b20的封裝形式:

在51上,與dq數據請求線相連接的網絡接口是P37,P37通過上拉電阻與VCC相連,說明引腳在空閑狀態下處于高電平。

四、ds18b20的通信流程:

復位信號:51單片機復位,問ds18b20在不在
存在信號:“ds18b20"回復一個存在脈沖

每次和ds18b20通信前:必須要復位
1復位or存在、讀、寫時序圖

2(復位函數、讀函數、寫函數)

#include <reg51.h>
#include "delay.h"//51 單片機復位后 所有特殊功能寄存器都被硬件清 0#define DQ_HIGH (P3 |= (1 << 7))//將DQ引腳拉高
#define DQ_DOWN (P3 &= ~(1 << 7))//將DQ引腳拉低
#define DQ_CHECK ((P3 & (1 << 7)) != 0)//檢測DQ引腳電平 P37高電平輸出1 低電平輸出0//ds18b20復位函數
int de18b20_Reset(void)
{int t = 0;DQ_DOWN;	   //將引腳拉低Delay10us(70);// 延時70usDQ_HIGH;	   //將引腳拉高Delay10us(5);// 延時60us//在300us內檢測DQ引腳是否被拉低(跳出循環),如果被拉低代表ds18b20回復了一個存在脈沖信號while(DQ_CHECK && t < 30){Delay10us(1);t++;}if(t >= 30){return 0;}//在300us內檢測DQ引腳是否被拉高(跳出循環),如果被拉低代表ds18b20回復了一個存在脈沖信號while(!DQ_CHECK && t < 30){Delay10us(1);t++;}if(t >= 30){return 0;}return 1;
}//向ds18b20發送一個字節數據
void write_ds18b20(unsigned char dat)
{int i = 0;//判斷發送的數據的8bit是1還是0for(i = 0;i < 8;i++){if(dat & 1 == 1)	 //bit 1{DQ_DOWN;_nop_();_nop_();//空轉延遲1us左右DQ_HIGH;Delay10us(5);}else		 //bit 0{DQ_DOWN;Delay10us(5);DQ_HIGH;}dat = dat >> 1;//dat右移 始終把要發送的bit放置在最低位 和1比較}	
}//從ds18b20讀取一個字節數據
unsigned char read_ds18b20(void)
{int i = 0;unsigned char ret = 0;for (i = 0; i < 8;i++){DQ_DOWN;_nop_();_nop_();DQ_HIGH;			//拉高才能檢測到ds18b20發送了0 _nop_();_nop_();_nop_();if (DQ_CHECK)	  // 檢測到發送的電平為1  代表發送數字1{ret = ret|(1 << i); //把發過來的為1的數字放到指定位置}	//發送了0不用管 ret初始化全為0;Delay10us(5);}return ret;
} 

3 ds18b20獲取數據流程

  • ??(1)復位
  • (2)51單片機發送0xCC,代表跳過ROM
  • (3)51單片機發送0x44,代表ds18b20開啟溫度轉換
  • (4)延時等待(1s)
  • (5)復位
  • (6)51單片機發送0xCC,代表跳過ROM
  • (7)51單片機發送0xBE,代表讀取ds18b20發送過來的溫度值
  • (8)讀取溫度數據
//獲取ds18n20采集到的溫度  傳遞的是兩個字節的數據
float get_tempt(void)
{short ret = 0;		 //兩個字節unsigned char tl = 0;//一個字節unsigned char th = 0;//一個字節de18b20_Reset();write_ds18b20(0xCC);write_ds18b20(0x44);Delay1ms(1000);//延時1sde18b20_Reset();write_ds18b20(0xCC);write_ds18b20(0xBE);//先讀低位tl = read_ds18b20(); th = read_ds18b20();ret = th << 8; //先把高位放進來ret |= tl;	   //再把低位放到高位后面接著return ret * 0.0625;//分辨率 展示的是溫度
}

4分辨率:ds18b20:

  • 9位分辨率:精度±0.5℃
  • 10位分辨率:精度±0.25°℃
  • 11位分辨率:精度±0.125℃
  • 12位分辨率:精度±0.0625℃

本文來自互聯網用戶投稿,該文觀點僅代表作者本人,不代表本站立場。本站僅提供信息存儲空間服務,不擁有所有權,不承擔相關法律責任。
如若轉載,請注明出處:http://www.pswp.cn/bicheng/95966.shtml
繁體地址,請注明出處:http://hk.pswp.cn/bicheng/95966.shtml
英文地址,請注明出處:http://en.pswp.cn/bicheng/95966.shtml

如若內容造成侵權/違法違規/事實不符,請聯系多彩編程網進行投訴反饋email:809451989@qq.com,一經查實,立即刪除!

相關文章

Kali搭建sqli-labs靶場

1.輸入apt-get install docker.io即可下載靶場鏡像。 下載好后&#xff0c;我們輸入docker search sqli-labs搜索sqli-labs靶場。2.我們選擇第一個&#xff0c;輸入docker pull acgpiano/sqli-labs&#xff0c;將該靶場裝到本地。此時輸入docker images&#xff0c;發現本地有s…

電腦外接顯示屏字體和圖標過大

當外接顯示屏的分辨率過高時&#xff0c;可以調整顯示器設置來解決字體和圖標過大的問題。具體操作包括在桌面右擊選擇顯示設置&#xff0c;切換到外接顯示器&#xff0c;將分辨率調至推薦的1920x1080&#xff0c;或根據個人偏好進行適當調節&#xff0c;然后保存更改。 原因&a…

Linux 網絡流量監控 Shell 腳本詳解(支持郵件告警)

前言 一、腳本功能 二、實現原理 三、Shell 腳本實現 四、關鍵知識點解析 1. Bash 關聯數組 2. 命令組 { } 與子 Shell ( ) 3. 字符串拼接換行 4. 流量計算邏輯 五、測試方法 六、優化建議 七、總結 前言 在生產環境中&#xff0c;監控服務器的 網絡流量 非常重要…

【牛客刷題-劍指Offer】BM18 二維數組中的查找:一題四解,從暴力到最優

文章目錄 一、題目介紹 1.1 描述 1.2 示例1 1.3 示例2 1.4 給的部分代碼 二、題解 方法一:暴力遍歷 方法二:二分查找(逐行) 方法三:Z字形查找(最優解) 方法四:遞歸分治(拓展思路) 三、總結 心得體會 一、題目介紹 原題鏈接:https://www.nowcoder.com/practice/abc3…

使用pyspark對上百億行的hive表生成稀疏向量

背景&#xff1a;一張上百億行的hive表&#xff0c;只有id和app兩列&#xff0c;其中app的去重量是8w多個&#xff08;原app有上百萬枚舉值&#xff0c;此處已經用id數量進行過篩選&#xff0c;只留下有一定規模的app&#xff09;&#xff0c;id的去重量大概有八九億&#xff0…

【設計模式】關于學習《重學Java設計模式》的一些成長筆記

【設計模式】關于學習《重學Java設計模式》的一些成長筆記 沒有幾個人是一說就會的,掌握一些技能,不僅要用心,而且還需要從溫故中知新。 為此,好記性不如爛筆頭,我干脆一步一腳印地系統學習一遍設計模式! (關注不迷路哈!!!) 文章目錄 【設計模式】關于學習《重學Jav…

【基礎-判斷】@Entry裝飾的自定義組件將作為頁面的入口。在單個頁面中可以使用多個@Entry裝飾不同自定義組件。

@Entry裝飾的自定義組件將作為頁面的入口。在單個頁面中可以使用多個@Entry裝飾不同自定義組件。 解釋: @Entry 的核心作用與唯一性:@Entry 裝飾器用于明確聲明該組件是一個頁面的入口組件,即整個頁面的“根”和“起點”。當UIAbility實例加載并顯示頁面時,系統需要明確知道…

醫學影像AI應用-實踐:使用MONAI實現肺部CT圖像分割的原理與實踐

?? 博主簡介:CSDN博客專家、CSDN平臺優質創作者,高級開發工程師,數學專業,10年以上C/C++, C#,Java等多種編程語言開發經驗,擁有高級工程師證書;擅長C/C++、C#等開發語言,熟悉Java常用開發技術,能熟練應用常用數據庫SQL server,Oracle,mysql,postgresql等進行開發應用…

如何訓練一個簡單的Transformer模型(附源碼)李宏毅2025大模型-作業4

摘要&#xff1a;一、作業目標&#xff1a;使用只有2層transformer的GPT-2&#xff0c;生成完整寶可夢圖像。二、源碼&解析&#xff1a;使用提供的Transformer模型&#xff08;GPT-2&#xff09;進行訓練&#xff0c;FID Score: 96.3425一、作業目標1&#xff09;目標使用T…

leetcode211.添加與搜索單詞-數據結構設計

與208.前綴樹的設計是一樣的&#xff0c;關鍵點在于word中存在通配符“."&#xff0c;所以針對該特殊情況&#xff0c;在search時針對這里進行全子節點的深度搜索class WordDictionary {TrieNode root;private class TrieNode {char val;// 當前節點的值&#xff0c;冗余了…

項目中的一些比較實用的自定義控件

本文是記錄項目開發中一些相對復雜但都比較實用的控件&#xff0c;這些控件都是基于自定義的方式去實現&#xff0c;如果有需要的朋友&#xff0c;這個可以作為一個參考&#xff0c;同時也做一個自我總結。 &#xff08;1&#xff09;子項大小不一致的RecyclerView&#xff08;…

[iOS] 折疊 cell

目錄 前言 1.原理 2.折疊 cell 的點擊選中 3.折疊 cell 高度的變化 4.實現效果 5.總結 前言 折疊 cell 是在 3GShare 中寫過的一個小控件&#xff0c;這篇博客是一個小小的總結。 1.原理 在這里的核心就是我們可以通過改變按鈕的 tag 值來判斷我們是否應該展開還是回收…

MySQL的組復制(MGR)高可用集群搭建

一、MySQL 組復制&#xff08;MGR&#xff09;核心概念 MySQL Group Replication&#xff08;簡稱 MGR&#xff09;是 MySQL 官方推出的 高可用&#xff08;HA&#xff09; 強一致性 解決方案&#xff0c;基于改進的 Paxos 協議實現&#xff0c;核心能力可概括為 3 點&#xf…

使用Shell腳本實現Linux系統資源監控郵件告警

前言 1. 問題背景與需求 2. Bash 腳本監控資源 3. Bash 腳本判斷閾值 4. 配置 msmtp 發送郵件 4.1 安裝 msmtp 4.2 創建配置文件 /etc/msmtprc 5. 發送郵件 5.1 給別人發郵件 6. 完整示例腳本 7. 測試方法 8. 常見問題解答 9. 總結 前言 在運維過程中&#xff0c…

設計整體 的 序分(三“釋”)、正宗分(雙“門”)和流通分(統一的通行表達式) 之3 “自明性”(騰訊元寶 之2)

Q&AQ11、可能還需要補充 魂軸、體軸 和 中心軸 并行 上升 的內容Q11.1、我剛才說“可能還需要補充 魂軸、體軸 和 中心軸 并行 上升 的內容” 是指的 我們今天前面討論 得出的整體設計 的一個概念整體 的一個雙螺旋上升結構中的三個軸。 您剛才是這樣 理解的嗎&#xff1f;…

使用Ansible自動化部署Hadoop集群(含源碼)--環境準備

現在我們有5臺虛擬機&#xff0c;已經配置好了主機名和網絡我們的目標是通過Ansible實現自動化部署hadoop集群。在此之前&#xff0c;我們先編寫一個shell腳本來配置hadoop集群的環境&#xff0c;包括安裝軟件、安裝配置Ansible&#xff08;一個主節點四個工作節點&#xff09;…

C#海康車牌識別實戰指南帶源碼

C#海康車牌識別實戰指南帶源碼前言車牌識別技術在智能交通、停車場管理等領域有著廣泛的應用。海康威視作為國內領先的安防廠商&#xff0c;其車牌識別相機提供了豐富的SDK接口供開發者使用。本文將詳細介紹如何使用C#語言結合海康威視SDK實現車牌識別功能&#xff0c;并解析關…

智慧能源新范式:數字孿生平臺如何驅動風電場的精細化管理?

摘要你有沒有想過&#xff0c;一座風力發電場背后&#xff0c;藏著一個“看不見的孿生兄弟”&#xff1f;它能提前預知風機故障&#xff0c;實時模擬極端天氣的影響&#xff0c;甚至能“訓練”運維人員在虛擬場景中演練搶修。這就是數字孿生——一個讓風電場從“靠經驗管理”轉…

STM32-FreeRTOS操作系統-任務管理

引言 隨著嵌入式技術的飛速發展&#xff0c;STM32與FreeRTOS的融合愈發緊密。本文聚焦于STM32平臺下FreeRTOS操作系統的任務管理&#xff0c;旨在為開發者提供清晰的思路與實用的技巧&#xff0c;助力高效開發。 為什么要進行任務管理&#xff1f; 在嵌入式系統中&#xff0c;…

工業領域 ACP 協議全解析:從入門到實戰案例

工業領域 ACP 協議全解析&#xff1a;從入門到實戰案例 文章目錄工業領域 ACP 協議全解析&#xff1a;從入門到實戰案例一、前言二、ACP 協議是什么&#xff1f;1. 基本定義2. 與數據傳輸協議的區別三、ACP 協議的核心功能1. 身份認證&#xff08;Authentication&#xff09;2.…