版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、word齊 齊 哈 爾 大 學 綜合實踐論文題 目 基于STM32的溫控風扇學 院 通信與電子工程學院 專業(yè)班級 學生姓名 學生學號 指導教師 朱磊 .word摘要:隨著科技的日新月異,智能家居逐漸走入普通家庭,風扇作為根本的家用電器也將成為智能家居的一局部。這里介紹的是以STM32單片機為控制單元并結合嵌入式技術設計的一款具有溫控調速、液晶顯示溫度等信息的智能電風扇。經(jīng)過前期設計、制作和最終的測試得出,該風扇電源穩(wěn)定性好,操作方便,運行可靠,功能強大,價格低廉,節(jié)約能耗,能夠滿足用戶多元化的需求。該風扇具有的人性化設計和低廉的價格很適合普通用戶家庭使用。 關鍵詞:STM32單片機電風扇溫控調
2、速.word目 錄摘 要I第1章 緒論11.1 概述11.2 設計目的及應用1第2章 溫控電風扇方案論證22.1 溫度傳感器的選擇22.2 控制核心的選擇2 2.3 顯示電路的選擇32.4 調速方式的選擇3第3章 溫控電風扇硬件設計53.1 硬件系統(tǒng)總體設計53.2 本系統(tǒng)各器件簡介53.2.1 DS18B20簡介5 STM32簡介7 LCD1602液晶屏簡介8 3.3 各局部電路設計9 溫度傳感器的電路9 LCD1602液晶屏顯示電路10第4章 溫控電風扇軟件設計114.1 軟件系統(tǒng)總體設計114.2 系統(tǒng)初始化程序設計11 4.3 溫度采集與顯示程序設計12結論14參考文獻15附錄116附
3、錄225.word第1章 緒論1.1概述傳統(tǒng)電風扇多采用機械控制,功能單一,噪聲大,定時時間短,搖頭模式固定,變檔風速變化較大。針對這些缺點,本文采用了一款性價比高、功耗低的基于ARM CortexM3內核的STM32單片機作為控制單元制作了一臺智能電風扇,該風扇巧妙地運用溫度傳感技術、液晶顯示技術等,把智能控制技術應用到家用電器的控制中,可以根據(jù)環(huán)境溫度的采樣實現(xiàn)風速的自動調整,并根據(jù)采集到的溫度顯示到液晶屏上。采用的芯片功能強大,方便進行功能擴展。 1.2設計目的及意義春夏夏秋交替時節(jié),白天溫度依舊很高,電風扇應高轉速、大風量,使人感到清涼;到了晚上,氣溫降低,當人入睡后,應該逐步減小轉速
4、,以免使人感冒。雖然電風扇都有調節(jié)不同檔位的功能,但必須要人手動換檔,睡著了就無能為力了,而普遍采用的定時器關閉的做法,一方面是定時時間長短有限制,一般是一兩個小時;另一方面可能在一兩個小時后氣溫依舊沒有降低很多,而風扇就關閉了,使人在睡夢中熱醒而不得不起床重新翻開風扇,增加定時器時間,非常麻煩,而且可能屢次定時后最后一次定時時間太長,在溫度降低以后風扇依舊繼續(xù)吹風,使人感冒;第三方面是只有簡單的到了定時時間就關閉風扇電源的單一功能,不能滿足氣溫變化對風扇風速大小的不同要求。又比方在較大功率的電子產(chǎn)品散熱方面,現(xiàn)在絕大多數(shù)都采用了風冷系統(tǒng),利用風扇引起空氣流動,帶走熱量,使電子產(chǎn)品不至于發(fā)熱燒
5、壞。要使電子產(chǎn)品保持較低的溫度,必須用大功率、高轉速、大風量的風扇,而風扇的噪音與其功率成正比。如果要低噪音,那么要減小風扇轉速,又會引起電子設備溫度上升,不能兩全其美。為解決上述問題,我們設計了這套溫控自動風扇系統(tǒng)。本系統(tǒng)采用高精度集成溫度傳感器,用單片機控制,能顯示實時溫度,并根據(jù)使用者設定的溫度自動在相應溫度時作出小風、大風、停機動作,精確度高,動作準確。 第2章 溫控電風扇方案論證2.1溫度傳感器的選擇溫度傳感器可由以下幾種方案可供選擇:方案一:選用熱敏電阻作為感測溫度的核心元件,通過運算放大器放大由于溫度變化引起熱敏電阻電阻的變化、進而導至的輸出電壓變化的微弱電壓變化信號,再用AD轉
6、換芯片ADC0809將模擬信號轉化為數(shù)字信號輸入單片機處理。方案二:采用熱電偶作為感測溫度的核心元件,配合橋式電路,運算放大電路和AD轉換電路,將溫度變化信號送入單片機處理。方案三:采用數(shù)字式集成溫度傳感器DS18B20作為感測溫度的核心元件,直接輸出數(shù)字溫度信號供單片機處理。對于方案一,采用熱敏電阻有價格廉價、元件易購的優(yōu)點,但熱敏電阻對溫度的細微變化不敏感,在信號采集、放大、轉換過程中還會產(chǎn)生失真和誤差,并且由于熱敏電阻的R-T關系的非線性,其本身電阻對溫度的變化存在較大誤差,雖然可以通過一定電路予以糾正,但不僅將使電路復雜穩(wěn)定性降低,而且在人體所處溫度環(huán)境溫度變化中難以檢測到小的溫度變化
7、。故該方案不適合本系統(tǒng)。對于方案二,采用熱電偶和橋式測量電路相對于熱敏電阻其對溫度的敏感性和器件的非線性誤差都有較大提高,其測溫范圍也非常寬,從-50攝氏度到1600攝氏度均可測量。但是依然存在電路復雜,對溫度敏感性達不到本系統(tǒng)要求的標準,故不采用該方案。對于方案三,由于數(shù)字式集成溫度傳感器DS18B20的高度集成化,大大降低了外接放大轉換等電路的誤差因素,溫度誤差很小,并且由于其感測溫度的原理與上述兩種方案的原理有著本質的不同,使得其溫度分辨力極高。溫度值在器件內部轉換成數(shù)字量直接輸出,簡化了系統(tǒng)程序設計,又由于該傳感器采用先進的單總線技術1-WRIE,與單片機的接口變的非常簡潔,抗干擾能力
8、強。關于DS18B20的詳細參數(shù)參看下面“硬件設計中的器件介紹。22控制核心的選擇方案一:采用電壓比較電路作為控制部件。溫度傳感器采用熱敏電阻或熱電偶等,溫度信號轉為電信號并放大,由集成運放組成的比較電路判決控制風扇轉速,當高于或低于某值時將風扇切換到相應檔位。方案二:采用STM32單片機作為控制核心。以軟件編程的方法進行溫度判斷,并在端口輸出控制信號。對于方案一,采用電壓比較電路具有電路簡單、易于實現(xiàn),以及無需編寫軟件程序的特點,但控制方式過于單一,不能自由設置上下限動作溫度,無法滿足不同用戶以及不同環(huán)境下的多種動作溫度要求,故不在本系統(tǒng)中采用。對于方案二,以STM32單片機作為控制器,通過
9、編寫程序不但能將傳感器感測到的溫度通過顯示電路顯示出來,而且用戶能通過鍵盤接口,自由設置上下限動作溫度值,滿足全方位的需求。并且通過程序判斷溫度具有極高的精準度,能精確把握環(huán)境溫度的微小變化。故本系統(tǒng)采用方案二。23顯示電路的選擇方案一:采用五位共陽數(shù)碼管顯示溫度,動態(tài)掃描顯示方式。方案二:采用液晶顯示屏LCD顯示溫度對于方案一,該方案本錢低廉,顯示溫度明確醒目,在夜間也能看見,功耗極低,顯示驅動程序的編寫也相對簡單,這種顯示方式得到廣泛應用。缺乏的地方是掃描顯示方式是使五個LED逐個點亮,因此會有閃爍,但是人眼的視覺暫留時間為20MS,當數(shù)碼管掃描周期小于這個時間時人眼將感覺不到閃爍,因此可
10、以通過增大掃描頻率來消除閃爍感。對于方案二,液晶體顯示屏具有顯示字符優(yōu)美,不但能顯示數(shù)字還能顯示字符甚至圖形的優(yōu)點,這是LED數(shù)碼管無法比較的。而且硬件連接簡單,因此本系統(tǒng)采用方案二。24調速方式的選擇方案一:采用數(shù)模轉化芯片DAC0832來控制,由單片機根據(jù)當前環(huán)境溫度值輸出相應數(shù)字量到DAC0832中,再由DAC0832產(chǎn)生相應模擬信號控制晶閘管的導通角,從而通過無級調速電路實現(xiàn)風扇電機轉速的自動調節(jié)。方案二:采用單片機軟件編程實現(xiàn)PWM脈沖寬度調制調速的方案。PWM為英文Pulse Width Modulation的縮寫,它為按一定的規(guī)律改變脈沖序列的脈沖寬度,以調節(jié)輸出量和波形的一種調
11、節(jié)方式,在PWM驅動控制的調節(jié)系統(tǒng)中,最常用的為矩形波PWM信號,在控制時需要調節(jié)PWM波得占空比。占空比為指高電平持續(xù)時間在一個周期時間內的百分比。在控制電機的轉速時,占空比越大,轉速就越快,假設全為高電平,占空比為100%時,轉速到達最大。用單片機I/O口輸出PWM信號時,有如下兩種方案:(1) 利用軟件延時。當高電平延時時間到時,對I/O口電平取反,使其變成低電平,然后再延時一定時間;當?shù)碗娖窖訒r時間到時,再對該I/O口電平取反,如此循環(huán)即可得到PWM信號。在本設計中應用了此方案。(2) 利用定時器??刂品桨概c(1)相同,只為在該方案中利用單片機的定時器來定時進行上下電平的轉變,而不為用
12、軟件延時。應用此方案時編程相對復雜。對于方案一,該方案能夠實現(xiàn)對直流風扇電機的無級調速,速率變化靈敏,但為D/A轉化芯片的價格較高,與其溫控狀態(tài)下無級調速性能相比性價比不高。對于方案二,相對于其他用硬件或者軟硬件相結合的方案實現(xiàn)對電機進行調速而言,采用PWM 用純軟件的方案來實現(xiàn)調速過程,具有更大的靈活性,并可大大降低本錢,能夠充分發(fā)揮單片機的性能,對于簡單速率控制系統(tǒng)的實現(xiàn)提供了一種有效的途徑。綜合考慮選用方案二。第3章 溫控電風扇硬件設計3.1硬件系統(tǒng)總體設計本次設計采用STM32單片機做主控芯片,通過DS18B20采集溫度,將溫度顯示在 LCD1602上。根據(jù)溫度的不同,利用STM32對
13、風扇進行調速,總體硬件設計如圖1所示:圖1 系統(tǒng)總體結構框圖3.2本系統(tǒng)各器件簡介 3.2.1 DS18B20簡介DS18B20是美國DALLAS半導體公司繼DS1820之后最新推出的一種改良型智能溫度傳感器。與傳統(tǒng)的熱敏電阻相比,它能夠直接讀出被測溫度并且可根據(jù)實際要求通過簡單的編程實現(xiàn)912位的數(shù)字值讀數(shù)方式??梢苑謩e在93.75 ms和750 ms內完成9位和12位的數(shù)字量,并且從DS18B20讀出的信息或寫入DS18B20的信息僅需要一根口線單線接口讀寫,溫度變換功率來源于數(shù)據(jù)總線,總線本身也可以向所掛接的DS18B20供電,而無需額外電源,因而使用DS18B20可使系統(tǒng)結構更趨簡單可
14、靠性更高。他在測溫精度、轉換時間、傳輸距離、分辨率等方面較DS1820有了很大的改良,給用戶帶來了更方便的使用和更令人滿意的效果。 DS18B20簡介:1獨特的單線接口方式:DS18B20與微處理器連接時僅需要一條口線即可實現(xiàn)微處理器與DS18B20的雙向通訊。2在使用中不需要任何外圍元件。3可用數(shù)據(jù)線供電,電壓范圍:+3.0 +5.5 V。4測溫范圍:-55 +125 。固有測溫分辨率為0.5 。5通過編程可實現(xiàn)912位的數(shù)字讀數(shù)方式。6用戶可自設定非易失性的報警上下限值。7支持多點組網(wǎng)功能,多個DS18B20可以并聯(lián)在惟一的三線上,實現(xiàn)多點測溫。8負壓特性,電源極性接反時,溫度計不會因發(fā)熱
15、而燒毀,但不能正常工作。單線1wire)技術:該技術采用單根信號線,既可傳輸時鐘,也能傳輸數(shù)據(jù),而且是雙向傳輸。適用于單主機系統(tǒng),主機能夠控制一個或多個從機設備,通過一個漏極開路或三態(tài)端口連至該數(shù)據(jù)線,以允許設備在不發(fā)送數(shù)據(jù)時能釋放該線,而讓其他設備使用。單線通常要求外接一個5K的上拉電阻,這樣當該線空閑時,其狀態(tài)為高電平。主機和從機之間的通訊分成三個步驟:初始化單線器件、識別單線器件和單線數(shù)據(jù)傳輸。單線1wire協(xié)議由復位脈沖、應答脈沖、寫0、寫1、讀0、讀1,這幾種信號類型實現(xiàn),這些信號中除了應答脈沖其他都由主機發(fā)起,并且所有指令和數(shù)據(jù)字節(jié)都是低位在前。DS18B20直接將測量溫度值轉化為
16、數(shù)字量提交給單片機,工作時必須嚴格遵守單總線器件的工作時序。DS18B20 內部結構及管腳如圖2,圖3所示:圖2 DS18B20內部結構圖圖3 DS18B20外形及管腳圖3.2.2 STM32簡介STM32系列基于專為要求高性能、低本錢、低功耗的嵌入式應用專門設計的ARM Cortex-M內核,其中STM32F1系列有:STM32F103“增強型系列,STM32F101“根本型系列,STM32F105、STM32F107“互聯(lián)型系列。 增強型系列時鐘頻率到達72MHz,是同類產(chǎn)品中性能最高的產(chǎn)品;根本型時鐘頻率為36MHz,以16位產(chǎn)品的價格得到比16位產(chǎn)品大幅提升的性能,是32位產(chǎn)品用戶的最
17、正確選擇。兩個系列都內置32K到128K的閃存,不同的是SRAM的最大容量和外設接口的組合。時鐘頻率72MHz時,從閃存執(zhí)行代碼,STM32功耗36mA,是32位市場上功耗最低的產(chǎn)品,相當于0.5mA/MHz。 內核:ARM32位Cortex-M3 CPU,最高工作頻率72MHz,1.25DMIPS/MHz。單周期乘法和硬件除法。存儲器:片上集成32-512KB的Flash存儲器。6-64KB的SRAM存儲器。時鐘、復位和電源管理:2.0-3.6V的電源供電和I/O接口的驅動電壓。POR、PDR和可編程的電壓探測器PVD。4-16MHz的晶振。內嵌出廠前調校的8MHz RC振蕩電路。內部40
18、kHz的RC振蕩電路。用于CPU時鐘的PLL。帶校準用于RTC的32kHz的晶振。低功耗:3種低功耗模式:休眠,停止,待機模式。為RTC和備份存放器供電的VBAT。調試模式:串行調試SWD和JTAG接口。DMA:12通道DMA控制器。支持的外設:定時器,ADC,DAC,SPI,IIC和UART。3個12位的us級的A/D轉換器16通道:A/D測量范圍:0-3.6 V。雙采樣和保持能力。片上集成一個溫度傳感器。2通道12位D/A轉換器:STM32F103xC,STM32F103xD,STM32F103xE獨有。最多高達112個的快速I/O端口:根據(jù)型號的不同,有26,37,51,80,和112的
19、I/O端口,所有的端口都可以映射到16個外部中斷向量。除了模擬輸入,所有的都可以接受5V以內的輸入。最多多達11個定時器:4個16位定時器,每個定時器有4個IC/OC/PWM或者脈沖計數(shù)器。2個16位的6通道高級控制定時器:最多6個通道可用于PWM輸出。2個看門狗定時器獨立看門狗和窗口看門狗。Systick定時器:24位倒計數(shù)器。2個16位根本定時器用于驅動DAC。最多多達13個通信接口:2個IIC接口SMBus/PMBus。5個USART接口ISO7816接口,LIN,IrDA兼容,調試控制。3個SPI接口18 Mbit/s,兩個和IIS復用。CAN接口2.0B。USB 2.0全速接口。SD
20、IO接口。ECOPACK封裝:STM32F103xx系列微控制器采用ECOPACK封裝形式。3.2.3LCD1602液晶屏簡介1602液晶也叫1602字符型液晶,它是一種專門用來顯示字母、數(shù)字、符號等的點陣型液晶模塊。它由假設干個5X7或者5X11等點陣字符位組成,每個點陣字符位都可以顯示一個字符,每位之間有一個點距的間隔,每行之間也有間隔,起到了字符間距和行間距的作用,正因為如此所以它不能很好地顯示圖形。其實物圖如圖4所示:圖4 LCD1602實物圖1602LCD是指顯示的內容為16X2,即可以顯示兩行,每行16個字符液晶模塊。1602采用標準的16腳接口,其中:第1腳:GND為電源地第2腳
21、:VCC接5V電源正極第3腳:V0為液晶顯示器比照度調整端,接正電源時比照度最弱,接地電源時比照度最高。第4腳:RS為存放器選擇,高電平1時選擇數(shù)據(jù)存放器、低電平0時選擇指令存放器。第5腳:RW為讀寫信號線,高電平(1)時進行讀操作,低電平(0)時進行寫操作。第6腳:E(或EN)端為使能(enable)端,高電平1時讀取信息,負跳變時執(zhí)行指令。第714腳:D0D7為8位雙向數(shù)據(jù)端。第1516腳:空腳或背燈電源。15腳背光正極,16腳背光負極。3.3 各局部電路設計3.3.1 溫度傳感器電路本模塊用更為優(yōu)秀的DS18B20作為溫度傳感器,STM32單片機作為處理器,配以溫度顯示作為溫度控制輸出單
22、元。整個系統(tǒng)力求結構簡單,功能完善。電路圖如圖2所示。系統(tǒng)工作原理如下:DS18B20數(shù)字溫度傳感器采集現(xiàn)場溫度,將測量到的數(shù)據(jù)送入STM32單片機的GPIO口,經(jīng)過單片機處理后顯示當前溫度值,并與設定溫度值的上下限值作比較,假設高于設定上限值或低于設定下限值那么控制電機轉速進行自動調整。圖5DS18B20溫度計原理圖3.3.2 LCD1602液晶屏顯示電路本模塊采用LCD1602對溫度進行顯示,液晶體顯示屏具有顯示字符優(yōu)美,不但能顯示數(shù)字還能顯示字符甚至圖形的優(yōu)點,其電路設計如下列圖:圖6液晶顯示電路第4章 溫控電風扇軟件設計4.軟件系統(tǒng)總體設計本次設計控制系統(tǒng)軟件使用C語言編程。使用模塊化
23、設計,除主程序外,還有各功能子程序,分別執(zhí)行直流電機驅動調速及溫度采集、顯示等功能,編輯環(huán)境采用集成開發(fā)環(huán)環(huán)境Keil。程序總體運行流程圖如下:圖7 程序運行流程圖4.2 系統(tǒng)初始化程序設計系統(tǒng)初始化包括STM32系統(tǒng)定時器初始化,GPIO口初始化以及LCD1602初始化等,具體設計流程圖如圖8:圖8 初始化程序流程圖4.3溫度采集與顯示程序設計 DS18B20溫度傳感器進行溫度采集時,要依次進行初始化,ROM操作指令,存儲器操作指令,數(shù)據(jù)傳輸?shù)炔僮?,具體程序設計流程如圖9:圖9 溫度采集與顯示流程圖結論 本次設計的系統(tǒng)以STM32單片機為控制核心,以溫度傳感器DS18B20檢測環(huán)境溫度,實現(xiàn)
24、了根據(jù)環(huán)境溫度變化調節(jié)不同的風扇電機轉速,在一定范圍能能實現(xiàn)轉速的連續(xù)調節(jié),LCD1602能連續(xù)穩(wěn)定的顯示環(huán)境溫度,實現(xiàn)了基于單片機的溫控風扇的設計。本系統(tǒng)設計可推廣到各種電動機的控制系統(tǒng)中,實現(xiàn)電動機的轉速調節(jié)。在生產(chǎn)生活中,本系統(tǒng)可用于簡單的日常風扇的智能控制,為生活帶來便利;在工業(yè)生產(chǎn)中,可以改變不同的輸入信號,實現(xiàn)對不同信號輸入控制電機的轉速,進而實現(xiàn)生產(chǎn)自動化,如在電力系統(tǒng)中可以根據(jù)不同的負荷到達不同的電壓信號,再由電壓信號調節(jié)不同的發(fā)電機轉速,進而調節(jié)發(fā)電量,實現(xiàn)電力系統(tǒng)的自動化調節(jié)。綜上所述,該系統(tǒng)的設計和研究在社會生產(chǎn)和生活中具有重要地位。參考文獻1 曹巧媛.單片機原理及應用.
25、北京:電子工業(yè)出版社,2002.22 王倫.電風扇原理與維修技術.北京:新時代出版社,19993 張毅剛.新編MCS-51單片機應用設計.哈爾濱工業(yè)大學出版社,2006.104 梁廷貴,王裕琛.可控硅觸發(fā)電路語音電路分冊.北京:科學技術文獻出版社,2003.word附錄程序1. 主函數(shù)#include "stm32f10x.h"#include "bsp_SysTick.h"#include <LCD1602.h>#include "bsp_ds18b20.h"int main() int PWM,low,zhouqi;
26、float wendu; int wendu1; zhouqi=500; low=zhouqi-PWM; SysTick_Init(); init1602(); lcdpos(1,0); writestring("TEM: 00.0"); GPIO_SetBits(GPIOB,GPIO_Pin_0); while( DS18B20_Init() lcdpos(0,0); writestring(" no ds18b20 exit"); lcdpos(0,0); writestring("ds18b20 exit"); for(;) D
27、S18B20_Get_Temp(wendu); if (wendu<0) lcdpos(1,4); writestring("-"); wendu1=wendu*100; lcdpos(1,5);write_dat(wendu1/10000+0x30);lcdpos(1,6);write_dat(wendu1%10000/1000+0x30);lcdpos(1,7);write_dat(wendu1%1000/100+0x30);lcdpos(1,9);write_dat(wendu1%100/10+0x30); lcdpos(1,10);write_dat(wend
28、u1%10+0x30);Delay_ms(2000); if(wendu1>30) low=500; GPIO_SetBits(GPIOB,GPIO_Pin_0); Delay_ms(PWM); if(wendu1<15) low=0; GPIO_SetBits(GPIOB,GPIO_Pin_0); Delay_ms(PWM); if(wendu1>=15&wendu1<20) low=100; GPIO_SetBits(GPIOB,GPIO_Pin_0); Delay_ms(PWM);GPIO_ResetBits(GPIOB,GPIO_Pin_0);Delay
29、_ms(low); if(wendu1>=20&wendu1<25) low=200; GPIO_SetBits(GPIOB,GPIO_Pin_0); Delay_ms(PWM); GPIO_ResetBits(GPIOB,GPIO_Pin_0); Delay_ms(low); if(wendu1>=25&wendu1<30) low=300; GPIO_SetBits(GPIOB,GPIO_Pin_0); Delay_ms(PWM); GPIO_ResetBits(GPIOB,GPIO_Pin_0); Delay_ms(low); 2. DS18B20
30、子程序#include "bsp_ds18b20.h"/* * 函數(shù)名:DS18B20_GPIO_Config * 描述 :配置DS18B20用到的I/O口 * 輸入 :無 * 輸出 :無 */static void DS18B20_GPIO_Config(void) /*定義一個GPIO_InitTypeDef類型的結構體*/ GPIO_InitTypeDef GPIO_InitStructure; /*開啟DS18B20_PORT的外設時鐘*/ RCC_APB2PeriphClockCmd(DS18B20_CLK, ENABLE); /*選擇要控制的DS18B20_PO
31、RT引腳*/ GPIO_InitStructure.GPIO_Pin = DS18B20_PIN; /*設置引腳模式為通用推挽輸出*/ GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; /*設置引腳速率為50MHz */ GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; /*調用庫函數(shù),初始化DS18B20_PORT*/ GPIO_Init(DS18B20_PORT, &GPIO_InitStructure); GPIO_SetBits(DS18B20_PORT, DS18B20_PIN)
32、; /* * 函數(shù)名:DS18B20_Mode_IPU * 描述 :使DS18B20-DATA引腳變?yōu)檩斎肽J?* 輸入 :無 * 輸出 :無 */static void DS18B20_Mode_IPU(void) GPIO_InitTypeDef GPIO_InitStructure; /*選擇要控制的DS18B20_PORT引腳*/ GPIO_InitStructure.GPIO_Pin = DS18B20_PIN; /*設置引腳模式為浮空輸入模式*/ GPIO_InitStructure.GPIO_Mode = GPIO_Mode_IPU; /*調用庫函數(shù),初始化DS18B20_POR
33、T*/ GPIO_Init(DS18B20_PORT, &GPIO_InitStructure);/* * 函數(shù)名:DS18B20_Mode_Out_PP * 描述 :使DS18B20-DATA引腳變?yōu)檩敵瞿J?* 輸入 :無 * 輸出 :無 */static void DS18B20_Mode_Out_PP(void) GPIO_InitTypeDef GPIO_InitStructure; /*選擇要控制的DS18B20_PORT引腳*/ GPIO_InitStructure.GPIO_Pin = DS18B20_PIN; /*設置引腳模式為通用推挽輸出*/ GPIO_InitSt
34、ructure.GPIO_Mode = GPIO_Mode_Out_PP; /*設置引腳速率為50MHz */ GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; /*調用庫函數(shù),初始化DS18B20_PORT*/ GPIO_Init(DS18B20_PORT, &GPIO_InitStructure);/* *主機給從機發(fā)送復位脈沖 */static void DS18B20_Rst(void) /* 主機設置為推挽輸出 */ DS18B20_Mode_Out_PP(); DS18B20_DATA_OUT(LOW); /* 主機至少產(chǎn)生
35、480us的低電平復位信號 */ Delay_us(750); /* 主機在產(chǎn)生復位信號后,需將總線拉高 */ DS18B20_DATA_OUT(HIGH); Delay_us(15);/* * 檢測從機給主機返回的存在脈沖 * 0:成功 * 1:失敗 */static uint8_t DS18B20_Presence(void) uint8_t pulse_time = 0; /* 主機設置為上拉輸入 */ DS18B20_Mode_IPU(); while( DS18B20_DATA_IN() && pulse_time<100 ) pulse_time+; Dela
36、y_us(1); / * 經(jīng)過100us后,存在脈沖都還沒有到來*/ if( pulse_time >=100 ) return 1; else pulse_time = 0; /* 存在脈沖到來,且存在的時間不能超過240us */ while( !DS18B20_DATA_IN() && pulse_time<240 ) pulse_time+; Delay_us(1); if( pulse_time >=240 ) return 1; else return 0;/* * 從DS18B20讀取一個bit */static uint8_t DS18B20_
37、Read_Bit(void) uint8_t dat; /* 讀0和讀1的時間至少要大于60us */ DS18B20_Mode_Out_PP(); /* 讀時間的起始:必須由主機產(chǎn)生 >1us <15us 的低電平信號 */ DS18B20_DATA_OUT(LOW); Delay_us(10); / * 設置成輸入,釋放總線,由外部上拉電阻將總線拉高 */ DS18B20_Mode_IPU(); /Delay_us(2); if( DS18B20_DATA_IN() = SET ) dat = 1; else dat = 0; /* 這個延時參數(shù)請參考時序圖 */ Delay_
38、us(45); return dat;/* * 從DS18B20讀一個字節(jié),低位先行 */uint8_t DS18B20_Read_Byte(void) uint8_t i, j, dat = 0; for(i=0; i<8; i+) j = DS18B20_Read_Bit(); dat = (dat) | (j<<i); return dat;/* * 寫一個字節(jié)到DS18B20,低位先行 */void DS18B20_Write_Byte(uint8_t dat)uint8_t i, testb;DS18B20_Mode_Out_PP();for( i=0; i<
39、8; i+ ) testb = dat&0x01; dat = dat>>1;/* 寫0和寫1的時間至少要大于60us */ if (testb) DS18B20_DATA_OUT(LOW); /* 1us < 這個延時 < 15us */ Delay_us(8); DS18B20_DATA_OUT(HIGH); Delay_us(58); else DS18B20_DATA_OUT(LOW); /* 60us < Tx 0 < 120us */ Delay_us(70); DS18B20_DATA_OUT(HIGH); /* 1us < Tr
40、ec(恢復時間) < 無窮大*/ Delay_us(2); void DS18B20_Start(void) DS18B20_Rst(); DS18B20_Presence(); DS18B20_Write_Byte(0XCC);/* 跳過 ROM */ DS18B20_Write_Byte(0X44);/* 開始轉換 */uint8_t DS18B20_Init(void) DS18B20_GPIO_Config(); DS18B20_Rst(); return DS18B20_Presence();float DS18B20_Get_Temp(float f_tem) uint8_t
41、 tpmsb, tplsb; short s_tem;DS18B20_Rst(); DS18B20_Presence(); DS18B20_Write_Byte(0XCC);/* 跳過 ROM */DS18B20_Write_Byte(0X44);/* 開始轉換 */DS18B20_Rst();DS18B20_Presence(); DS18B20_Write_Byte(0XCC);/* 跳過 ROM */ DS18B20_Write_Byte(0XBE);/* 讀溫度值 */ tplsb = DS18B20_Read_Byte(); tpmsb = DS18B20_Read_Byte(); s_tem = tpmsb<<8; s_tem = s_tem | tplsb; I f( s_tem < 0 )/* 負溫度 */ f_tem = (s_tem+1) * 0.0625; else f_tem = s_tem * 0.0625; r
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 生鮮培訓課件教學課件
- 2024年廣告銷售代理合同
- 2024年度企業(yè)級云計算服務平臺合作合同
- 2024國際快遞運輸服務合同詳細條款
- 大班課件春節(jié)教學課件
- 真菌課件圖文教學課件
- 2024年度企業(yè)科技創(chuàng)新與研發(fā)外包合同協(xié)議書
- 2024年建筑工程施工合同與工程監(jiān)理協(xié)議
- 2024物業(yè)合同糾紛案件
- 2024中船工貿(mào)公司船舶建造合同版本
- 雅魯藏布江大拐彎巨型水電站規(guī)劃方案
- 廣西基本醫(yī)療保險門診特殊慢性病申報表
- 城市經(jīng)濟學習題與答案
- 國開成本會計第14章綜合練習試題及答案
- 幼兒園大班科學:《樹葉為什么會變黃》課件
- 1到50帶圈數(shù)字直接復制
- 鐵路工程施工組織設計(施工方案)編制分類
- 幼兒園中班數(shù)學《有趣的圖形》課件
- 《規(guī)劃每一天》教案2021
- 草莓創(chuàng)意主題實用框架模板ppt
- 山大口腔頜面外科學課件第5章 口腔種植外科-1概論、口腔種植的生物學基礎
評論
0/150
提交評論