久久久性爱视频,青娱乐这里只有精品狼牙,在线日韩av资源播放网站,掩去也俺来也久久丁香图

0 賣盤信息
BOM詢價
您現在的位置: 首頁 > 技術方案 >工業控制 > 基于AT89C2051單片機+DSl8B20溫度傳感器為控制核心的數字溫度計設計方案

基于AT89C2051單片機+DSl8B20溫度傳感器為控制核心的數字溫度計設計方案

來源: elecfans
2021-11-18
類別:工業控制
eye 5
文章創建人 拍明

原標題:基于AT89C2051單片機為控制核心的數字溫度計設計方案

基于AT89C2051單片機與DS18B20溫度傳感器的數字溫度計設計方案

數字溫度計作為現代生活中廣泛應用的測量工具,以其高精度、易讀性以及數字化輸出等優點,在環境監測、工業控制、醫療衛生、農業生產等多個領域發揮著舉足輕重的作用。本次設計旨在利用經典的AT89C2051單片機作為核心控制器,搭配高性能的DS18B20數字溫度傳感器,構建一個結構緊湊、功能穩定、顯示直觀的數字溫度測量系統。AT89C2051以其集成度高、功耗低、指令集兼容標準51系列等特點,非常適合作為此類小型控制系統的微處理器;而DS18B20則憑借其單總線接口、寬測量范圍、高精度以及直接輸出數字溫度值等優勢,極大地簡化了硬件電路設計和軟件編程的復雜度,避免了傳統模擬溫度傳感器所需的AD轉換環節,提升了系統整體的抗干擾能力和測量精度。本設計方案將深入探討系統硬件組成、關鍵元器件的選擇及其功能、電路原理,以及軟件流程的實現,為構建一個實用高效的數字溫度計提供全面指導。

image.png

系統整體架構與工作原理

本數字溫度計系統主要由以下幾個核心模塊構成:主控制器模塊、溫度采集模塊、顯示模塊、電源模塊和按鍵模塊(可選)。其基本工作原理可以概括為:電源模塊為整個系統提供穩定的直流電源。溫度采集模塊(DS18B20)按照單片機的指令周期性地采集環境溫度,并將其內部的溫度數據轉換為數字信號,通過單總線方式傳輸給主控制器模塊。主控制器模塊(AT89C2051)接收到溫度數據后,進行必要的處理,例如將原始數據轉換為攝氏度或華氏度,并驅動顯示模塊將當前溫度值以直觀的數字形式顯示出來。如果設計中包含按鍵模塊,用戶還可以通過按鍵進行功能切換(如顯示單位切換)或參數設置。整個系統通過軟件程序協調各模塊的工作,實現溫度的實時監測與顯示。

核心元器件選擇與功能分析

選擇合適的元器件是保證系統性能和可靠性的關鍵。以下將詳細介紹本設計中優選的元器件及其選擇理由和功能。

1. 主控制器:AT89C2051單片機

  • 型號優選: AT89C2051

  • 選擇原因: AT89C2051是ATMEL公司生產的一款低功耗、高性能CMOS 8位微控制器,它兼容標準51指令集,擁有2KB的可擦寫可編程只讀存儲器(Flash ROM),128字節的RAM,15個I/O引腳,兩個16位定時/計數器,一個全雙工串行口,一個高精度模擬比較器,以及片內振蕩器和時鐘電路。相較于AT89C51或AT89S51,AT89C2051引腳數量更少,封裝尺寸更小,成本更低,功耗更小,非常適合資源受限、體積要求緊湊的嵌入式應用,如本次的數字溫度計。其內部集成的Flash存儲器便于程序的開發、調試和燒寫,無需外部EPROM或EEPROM,簡化了硬件設計。同時,其內部的定時器/計數器功能為實現精確的延時、DS18B20的單總線時序控制提供了便利。

  • 功能: 作為整個數字溫度計系統的“大腦”,AT89C2051負責執行溫度采集指令,通過單總線協議與DS18B20進行通信,讀取溫度數據;對讀取到的原始數據進行運算處理,將其轉換為可讀的溫度值(如攝氏度);驅動數碼管或LCD顯示模塊,將溫度值實時顯示出來;如果系統包含按鍵功能,AT89C2051還將負責按鍵的掃描和相應的邏輯處理。

2. 溫度傳感器:DS18B20

  • 型號優選: DS18B20

  • 選擇原因: DS18B20是Maxim Integrated公司(原Dallas Semiconductor)生產的數字溫度傳感器,其最大的特點是采用獨特的單總線(1-Wire)接口。這意味著DS18B20只需一根數據線(加上電源線和地線)即可與單片機通信,極大地簡化了硬件連接,減少了PCB布線復雜度,并節省了單片機的I/O口資源。它具備寬廣的測量范圍(-55℃至+125℃)和高精度(在-10℃至+85℃范圍內精度為±0.5℃),分辨率可配置為9~12位。DS18B20直接輸出數字溫度值,省去了傳統模擬溫度傳感器(如熱敏電阻、LM35)所需的A/D轉換電路,有效避免了模擬信號在傳輸和轉換過程中可能引入的噪聲和誤差,提高了系統的測量精度和抗干擾能力。此外,每個DS18B20都具有唯一的64位序列號,允許在同一條總線上掛載多個DS18B20,進行多點溫度測量(盡管本設計通常只使用一個)。其寄生電源模式(Parasite Power Mode)甚至可以在只有數據線和地線連接的情況下工作,進一步簡化了布線(但在實際應用中,通常建議使用外部供電以提高穩定性)。

  • 功能: DS18B20的主要功能是實時感應并測量周圍環境的溫度。它內部集成了溫度傳感器、A/D轉換器、存儲器和單總線接口電路,能夠將模擬溫度信號直接轉換為數字信號,并通過單總線協議傳輸給單片機。單片機通過特定的讀寫時序向DS18B20發送命令,如溫度轉換命令、讀取暫存器命令等,從而獲取溫度數據。

3. 顯示模塊:LED數碼管或LCD液晶顯示屏

  • 型號優選(數碼管方案): 2位或3位共陽/共陰數碼管(如FND507、FND500、CL5631BH等),配合74HC595移位寄存器或ULN2003達林頓管(用于驅動位選)。

  • 選擇原因(數碼管): 數碼管具有顯示直觀、結構簡單、成本低廉、在一定光照條件下可視性好等優點。對于數字溫度計這種僅需顯示數字的應用,數碼管是經濟實用的選擇。考慮到AT89C2051的I/O口資源有限(15個),直接驅動多個數碼管可能會占用過多引腳。因此,配合使用74HC595串行轉并行移位寄存器可以極大地節省I/O口。74HC595只需3個I/O口(數據線、時鐘線、鎖存線)即可驅動8個LED或數碼管段碼,通過級聯可以驅動更多位數碼管,從而實現動態掃描顯示。如果數碼管共陰,74HC595的輸出可以直接驅動;如果數碼管共陽,則需要加反相驅動電路或使用ULN2003等達林頓管陣列來提供拉低電流。

  • 功能(數碼管): 數碼管用于以數字形式直觀地顯示測量到的溫度值。通過單片機控制數碼管的段碼和位選,實現數字的動態顯示,如顯示“25.3”℃。

  • 型號優選(LCD方案): 1602液晶顯示屏(如JHD162A、LCM1602等)。

  • 選擇原因(LCD): 1602液晶顯示屏是一種字符型液晶顯示器,具有兩行,每行16個字符的顯示能力。相較于數碼管,1602 LCD可以顯示更多的信息,不僅可以顯示溫度數值,還可以顯示單位(℃/℉)、提示信息(如“測量中...”)、甚至簡短的漢字(需字庫支持或自定義點陣)。它的功耗相對較低,并且自帶控制器,簡化了與單片機的接口。雖然占用的I/O口比74HC595驅動數碼管略多(通常需要4位或8位數據線加3位控制線),但其顯示效果更豐富,更具現代感。

  • 功能(LCD): 1602 LCD用于顯示當前環境溫度的數字值,并可根據需要顯示溫度單位、狀態信息等。單片機通過特定的數據和命令時序向LCD發送指令,控制其顯示內容。

4. 電源模塊

  • 元器件優選: LM7805三端穩壓器、整流橋堆(如MB6S、1N4007*4)、濾波電容(如1000uF/16V電解電容、0.1uF瓷片電容)。

  • 選擇原因: 整個數字溫度計系統需要一個穩定的直流電源供電。AT89C2051和DS18B20通常工作在5V直流電壓下。如果系統采用交流適配器或9V電池供電,則需要穩壓電路將輸入電壓轉換為穩定的5V直流電壓。LM7805是常用的正5V三端穩壓器,它具有輸出電壓穩定、紋波小、外圍電路簡單(只需輸入、輸出各接一個濾波電容)等優點,非常適合為單片機系統供電。整流橋堆用于將交流電轉換為脈動直流電(如果輸入是交流電)。濾波電容(大容量電解電容和小容量瓷片電容并聯)用于平滑整流后的脈動直流,減少紋波,保證電源的純凈度,提高系統穩定性。

  • 功能: 將外部輸入的電源(如9V直流電源適配器、電池或經過整流的交流電)轉換為系統所需的穩定5V直流工作電壓,并確保電源的紋波足夠小,為各模塊提供可靠的電力供應。

5. 晶振與復位電路

  • 晶振優選: 11.0592MHz或12MHz石英晶體振蕩器,配合兩個22pF~33pF瓷片電容。

  • 選擇原因: AT89C2051單片機內部不集成時鐘源,需要外部晶振提供精確的時鐘信號以保證程序的穩定運行和定時器的準確計數。選擇11.0592MHz晶振是因為這個頻率在51單片機系統中可以方便地產生標準波特率(如9600bps),雖然對于本設計而言,主要影響的是單總線通信的時序精度。12MHz晶振也是常用的選擇,可以提供更快的運行速度。配合的22pF~33pF瓷片電容是晶振的負載電容,用于保證晶振能夠正常起振并輸出穩定的頻率。

  • 功能: 為AT89C2051單片機提供穩定、精確的時鐘信號,確保單片機內部指令的同步執行,以及定時器/計數器的精確計時,這對DS18B20單總線通信的時序要求至關重要。

  • 復位電路優選: 10kΩ電阻和10uF電解電容組成RC復位電路,或使用專用復位芯片(如MAX813)。

  • 選擇原因: 復位電路用于在單片機上電或程序跑飛時,將其恢復到初始狀態,確保系統能夠正常啟動或重新穩定運行。RC復位電路是最簡單常用的復位方式,成本低廉。上電時,電容兩端電壓不能突變,因此RST引腳被拉高,當電容充電完成后,RST引腳恢復低電平,單片機進入正常工作狀態。按鍵復位則可以在需要時手動觸發復位。

  • 功能: 在系統上電時或在運行過程中出現異常時,對單片機進行初始化,使其從頭開始執行程序,確保系統的可靠啟動和穩定運行。

6. 按鍵模塊(可選)

  • 元器件優選: 普通輕觸按鍵,配合上拉電阻(如10kΩ)。

  • 選擇原因: 如果需要實現溫度單位切換(℃/℉)、顯示模式選擇或其他用戶交互功能,就需要引入按鍵。輕觸按鍵結構簡單、成本低,使用方便。按鍵通常通過上拉電阻與單片機I/O口相連,當按鍵按下時,I/O口電平被拉低,單片機檢測到低電平即可判斷按鍵被按下。

  • 功能: 提供用戶與數字溫度計系統進行交互的接口,例如切換溫度顯示單位(攝氏度/華氏度),或者在高級設計中用于設置溫度報警閾值等。

硬件電路原理設計

1. 電源部分

電源電路是整個系統的基礎。如果輸入是交流電,首先通過整流橋將交流電轉換為脈動直流,然后通過大容量電解電容進行初步濾波。接著,將濾波后的電壓輸入到LM7805穩壓器的輸入端,LM7805的輸出端接一個小容量瓷片電容和一個電解電容進行進一步濾波,最終輸出穩定的+5V直流電壓。這個+5V電壓將作為AT89C2051、DS18B20以及顯示模塊的供電電壓。

2. 單片機最小系統

AT89C2051的最小系統包括電源、時鐘和復位電路。

  • 電源: VCC接+5V,GND接地。

  • 時鐘: XTAL1和XTAL2引腳外接11.0592MHz或12MHz晶振,兩端分別接一個22pF~33pF的瓷片電容到地。

  • 復位: RST引腳通過一個10kΩ電阻接到VCC,同時并聯一個10uF電解電容到地,構成上電復位電路。也可以并聯一個輕觸按鍵,一端接RST引腳,另一端接地,實現手動復位。

3. DS18B20溫度采集電路

DS18B20采用單總線接口,其DQ引腳是數據輸入/輸出引腳。將DS18B20的VCC引腳接+5V,GND引腳接地。DQ引腳通過一個4.7kΩ的上拉電阻連接到+5V,然后直接連接到AT89C2051的某個I/O口,例如P1.0。這個上拉電阻是單總線通信協議所必需的,因為DS18B20內部是漏極開路輸出,需要外部上拉電阻才能拉高總線電平。

4. 顯示電路(以7段數碼管+74HC595為例)

如果使用數碼管顯示,為了節省AT89C2051的I/O口,通常采用動態掃描的方式配合移位寄存器74HC595。 假設使用3位數碼管顯示,則需要3個共陽或共陰數碼管。

  • 段碼驅動: 74HC595的Q0-Q7輸出引腳分別連接到數碼管的a-g和dp段。如果使用共陽數碼管,則74HC595的輸出需要反相驅動,或者使用PNP三極管作為反相驅動器。這里假設是共陰數碼管,74HC595的輸出直接控制段碼。

  • 位選驅動: 3位數碼管的公共端(共陰)通過NPN三極管(如9013)或ULN2003達林頓管進行位選控制,三極管的基極連接到AT89C2051的I/O口(如P1.1、P1.2、P1.3),集電極接數碼管公共端,發射極接地。

  • 74HC595與單片機連接:

    • 74HC595的串行數據輸入(DS)接AT89C2051的一個I/O口(如P1.4)。

    • 74HC595的移位寄存器時鐘(SHCP)接AT89C2051的一個I/O口(如P1.5)。

    • 74HC595的存儲寄存器時鐘(STCP)接AT89C2051的一個I/O口(如P1.6)。

    • 74HC595的輸出使能(OE)接低電平(或通過一個開關控制)。

    • 74HC595的清零端(MR)接高電平(或通過復位按鍵連接)。 通過單片機控制P1.4、P1.5、P1.6,可以將要顯示的段碼數據串行送入74HC595,然后通過位選控制三極管的通斷,實現數碼管的動態掃描顯示。

5. 按鍵電路(可選)

一個輕觸按鍵的一端接AT89C2051的I/O口(如P1.7),另一端接地。為了防止按鍵懸空,該I/O口需要通過一個10kΩ上拉電阻接到+5V。當按鍵按下時,P1.7被拉低;當按鍵松開時,P1.7被上拉電阻拉高。單片機通過檢測P1.7的電平變化來判斷按鍵狀態。

軟件設計流程

軟件是實現系統功能的靈魂。本設計的軟件部分主要包括DS18B20的驅動程序、溫度數據處理程序、數碼管/LCD顯示程序以及主程序流程。

1. 主程序流程

主程序是整個軟件的控制核心。

  • 初始化: 系統上電后,首先進行單片機I/O口、定時器等外設的初始化。如果使用LCD,還需要對LCD進行初始化。

  • 循環檢測: 進入一個無限循環,在循環中周期性地執行以下操作:

    • 溫度采集: 調用DS18B20的讀溫度子程序。

    • 數據處理: 對讀取到的溫度原始數據進行轉換,得到攝氏度或華氏度值,并進行格式化處理,以便顯示。

    • 顯示更新: 調用顯示子程序,將處理后的溫度值發送到顯示模塊(數碼管或LCD)進行顯示。

    • 按鍵處理(可選): 如果有按鍵,檢測按鍵狀態,并根據按鍵輸入執行相應的操作,如切換顯示單位。

    • 延時: 加入適當的延時,控制溫度采集和顯示更新的頻率,避免過于頻繁的刷新,同時也可以讓單片機進入低功耗模式(如果需要)。

2. DS18B20驅動程序

DS18B20的通信是基于單總線協議的,需要嚴格遵循時序。主要包括以下幾個關鍵函數:

  • DS18B20_Init(): 初始化DS18B20。包括總線復位、等待DS18B20響應。如果響應正確,表示DS18B20在線。

  • DS18B20_WriteByte(unsigned char dat): 向DS18B20寫入一個字節的數據。需要控制數據線的時序,每個位的寫入都有嚴格的時間要求。

  • DS18B20_ReadByte(): 從DS18B20讀取一個字節的數據。同樣需要控制數據線的時序。

  • DS18B20_ReadTemperature(): 完整的讀取溫度值的函數。

    1. 初始化DS18B20。

    2. 發送ROM指令:跳過ROM匹配(0xCC),或者根據需要發送其他ROM指令。

    3. 發送功能指令:溫度轉換指令(0x44),DS18B20開始進行溫度轉換。

    4. 延時:等待DS18B20完成溫度轉換(最大需要750ms)。可以通過查詢DS18B20的總線狀態來判斷轉換是否完成,或者簡單延時。

    5. 初始化DS18B20。

    6. 發送ROM指令:跳過ROM匹配(0xCC)。

    7. 發送功能指令:讀取暫存器指令(0xBE),準備讀取溫度數據。

    8. 連續讀取9個字節的數據(包括溫度高低字節、校驗碼等)。前兩個字節是溫度數據(低字節在前,高字節在后)。

    9. 根據讀取到的溫度數據,進行符號位判斷和數值計算,將其轉換為實際的溫度值(攝氏度)。DS18B20的溫度數據是16位的有符號整數,需要進行相應的移位和除法運算(如除以16)得到實際溫度。

3. 數據處理與格式化

從DS18B20讀取的原始溫度數據是一個16位的補碼形式。需要進行以下處理:

  • 符號位判斷: 判斷最高位是否為1,如果是1則表示負溫度。

  • 數據轉換: 將16位數據右移4位(因為DS18B20的LSB是0.0625℃),得到整數部分。對于負溫度,需要先取反加1得到其絕對值,再進行轉換。

  • 小數處理: 剩余的低4位表示小數部分,乘以0.0625即可得到。

  • BCD碼或字符串轉換: 將得到的溫度值(整數部分和小數部分)轉換為BCD碼或ASCII字符串,以便于數碼管或LCD顯示。例如,25.3℃需要轉換為“2”、“5”、“.”、“3”等字符或相應的段碼。

4. 顯示驅動程序

  • 數碼管動態掃描顯示:

    • 定義數碼管的段碼表,用于將數字0-9和點號轉換為對應的段碼。

    • 編寫一個顯示函數,接收一個溫度值(浮點數或處理后的整數和小數部分),將其拆分為個位、十位、小數位等。

    • 在循環中,依次點亮每個數碼管位。例如,顯示第一位時,將第一位的段碼通過74HC595發送出去,然后打開第一位的位選三極管;延時一小段時間后,關閉第一位,發送第二位的段碼,打開第二位的位選三極管,依此類推。由于人眼視覺暫留效應,快速切換即可看到穩定的顯示。

  • LCD顯示驅動:

    • 遵循1602 LCD的通信協議,編寫LCD的初始化函數、寫命令函數、寫數據函數。

    • 編寫LCD顯示字符串函數,將溫度值對應的字符串發送到LCD進行顯示。可以設置光標位置,顯示溫度值和單位。

總結與展望

本基于AT89C2051單片機與DS18B20溫度傳感器的數字溫度計設計方案,充分利用了AT89C2051的經典51架構優勢和DS18B20的單總線數字輸出特性,實現了高精度、低成本、易于實現的溫度測量功能。詳細闡述了核心元器件的選擇理由、功能作用,并給出了硬件電路連接和軟件編程的邏輯思路。

盡管AT89C2051是一款相對老舊的單片機,但其在小型嵌入式系統教學和入門級項目中仍具有不可替代的價值,其精簡的I/O口和內部資源反而能更好地幫助初學者理解單片機的工作原理和資源優化利用。DS18B20作為數字溫度傳感器的佼佼者,其易用性和準確性也為本設計奠定了堅實基礎。

未來的改進和擴展方向可以包括:

  1. 溫度報警功能: 增加蜂鳴器或LED指示燈,當溫度超過或低于設定閾值時發出警報。

  2. 溫度校準: 在軟件中加入溫度校準功能,提高測量精度。

  3. 數據記錄與存儲: 增加外部EEPROM(如24C02)或Flash存儲器,實現溫度數據的周期性記錄和存儲,方便后續查看。

  4. 通信接口: 增加UART、I2C或SPI等通信接口,將溫度數據上傳至上位機進行數據分析或遠程監控。

  5. 電源優化: 采用更低功耗的電源管理芯片,延長電池供電時的續航時間。

  6. 顯示升級: 升級為OLED顯示屏,提供更美觀、信息量更大的顯示界面,且功耗更低。

  7. MCU升級: 考慮到AT89C2051的局限性,未來可以考慮使用更現代化的單片機,如STM32系列或PIC系列,它們通常具有更強的處理能力、更豐富的片內外設和更低的功耗,能夠支持更復雜的功能和更靈活的設計。

通過本設計方案的實現,不僅能夠掌握數字溫度計的基本工作原理,更能深入理解單片機與數字傳感器的接口技術、串行通信協議以及嵌入式系統軟件編程的基本方法,為進一步的電子設計打下堅實基礎。

責任編輯:David

【免責聲明】

1、本文內容、數據、圖表等來源于網絡引用或其他公開資料,版權歸屬原作者、原發表出處。若版權所有方對本文的引用持有異議,請聯系拍明芯城(marketing@iczoom.com),本方將及時處理。

2、本文的引用僅供讀者交流學習使用,不涉及商業目的。

3、本文內容僅代表作者觀點,拍明芯城不對內容的準確性、可靠性或完整性提供明示或暗示的保證。讀者閱讀本文后做出的決定或行為,是基于自主意愿和獨立判斷做出的,請讀者明確相關結果。

4、如需轉載本方擁有版權的文章,請聯系拍明芯城(marketing@iczoom.com)注明“轉載原因”。未經允許私自轉載拍明芯城將保留追究其法律責任的權利。

拍明芯城擁有對此聲明的最終解釋權。

相關資訊

拍明芯城微信圖標

各大手機應用商城搜索“拍明芯城”

下載客戶端,隨時隨地買賣元器件!

拍明芯城公眾號
拍明芯城抖音
拍明芯城b站
拍明芯城頭條
拍明芯城微博
拍明芯城視頻號
拍明
廣告
恒捷廣告
廣告
深亞廣告
廣告
原廠直供
廣告