基于ARM7的溫度控制器的設(shè)計(jì)(共29頁(yè))_第1頁(yè)
基于ARM7的溫度控制器的設(shè)計(jì)(共29頁(yè))_第2頁(yè)
基于ARM7的溫度控制器的設(shè)計(jì)(共29頁(yè))_第3頁(yè)
基于ARM7的溫度控制器的設(shè)計(jì)(共29頁(yè))_第4頁(yè)
基于ARM7的溫度控制器的設(shè)計(jì)(共29頁(yè))_第5頁(yè)
已閱讀5頁(yè),還剩24頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、精選優(yōu)質(zhì)文檔-傾情為你奉上基于ARM7的溫度控制器的設(shè)計(jì) 學(xué)院:電氣學(xué)院 班級(jí):11自一_ 姓名:杜康_ 學(xué)號(hào): 指導(dǎo)老師:王崴 目錄一、簡(jiǎn)介 41.單片機(jī)的發(fā)展歷程42.stm32系列單片機(jī)43.DS18B20溫度傳感器5二、總體方案設(shè)計(jì) 71.主要功能72.設(shè)計(jì)要求7三、最小系統(tǒng)的設(shè)計(jì) 71.喚醒電路82.晶振延時(shí)電路及復(fù)位電路8四、系統(tǒng)硬件分析與設(shè)計(jì) 91.系統(tǒng)框圖92.各模塊電路圖103.元器件 11(1)Stm32F103RBT6 32位單片機(jī)11(2)TFTLCD液晶12(3)其他元器件13五、系統(tǒng)軟件程序設(shè)計(jì) 131.按鍵控制子流程圖142.TFTLCD顯示子流程圖153.主流程

2、圖16六、仿真與調(diào)試 171.軟件調(diào)試172.下載代碼,軟硬件聯(lián)調(diào)18七、個(gè)人總結(jié)20八、參考文獻(xiàn)21九、附錄 221.系統(tǒng)電路原理圖222.程序清單23一、簡(jiǎn)介1.單片機(jī)的發(fā)展歷程典型的微型計(jì)算機(jī)包括運(yùn)算器、控制器、存儲(chǔ)器、I/O接口四個(gè)基本組成部分。如果在一塊芯片上,集成了一臺(tái)微型計(jì)算機(jī)的四個(gè)基本組成部分,這種芯片就被稱為單片微型計(jì)算機(jī)(Single Chip Microcomputer),簡(jiǎn)稱單片機(jī)。單片機(jī)具有體積小、功能強(qiáng)、應(yīng)用面廣等優(yōu)點(diǎn),目前正以前所未見(jiàn)的速度取代著傳統(tǒng)電子線路構(gòu)成的經(jīng)典系統(tǒng),蠶食著傳統(tǒng)數(shù)字電路與模擬電路固有的領(lǐng)地。它的體積小、質(zhì)量輕、價(jià)格便宜、為學(xué)習(xí)、應(yīng)用和開(kāi)發(fā)提供

3、了便利條件。世界上各大芯片制造公司都推出了自己的單片機(jī),從8位、16位到32位,數(shù)不勝數(shù),應(yīng)有盡有,有與主流C51系列兼容的,也有不兼容的,但它們各具特色,互成互補(bǔ)。縱觀單片機(jī)的發(fā)展過(guò)程,可以看出單片機(jī)的發(fā)展普遍呈現(xiàn)微型單片化、低功耗CMOS化、主流與多品種共存的趨勢(shì)。九十年代以后,單片機(jī)在結(jié)構(gòu)上采用雙CPU或內(nèi)部流水線,CPU位數(shù)有8位、16位、32位,時(shí)鐘頻率高達(dá)20MHZ,片內(nèi)帶有PWM輸出、監(jiān)視定時(shí)器WDT、可編程計(jì)數(shù)器陣列PCA、DMA傳輸、調(diào)制解調(diào)器等。芯片向高度集成化、低功耗方向的發(fā)展,使得單片機(jī)在大量數(shù)據(jù)的實(shí)時(shí)處理、高級(jí)通信系統(tǒng)、數(shù)字信號(hào)處理、復(fù)雜工業(yè)過(guò)程控制、高級(jí)機(jī)器人以及局

4、域網(wǎng)等方面得到大量應(yīng)用。2.stm32系列單片機(jī)傳統(tǒng)的單片機(jī)(如51)使用的是復(fù)雜指令集(CISC),且不具備指令流水線;ARM使用的是精簡(jiǎn)指令集(RISC),而且使用了三級(jí)流水線。這使得ARM的制造成本和運(yùn)行效率相對(duì)51有著明顯的優(yōu)勢(shì)。傳統(tǒng)的單片機(jī)一般都是8位機(jī)。隨著信息量的增加,我們會(huì)越來(lái)越多的需要處理超過(guò)8位以上的數(shù)據(jù)。以32bit數(shù)據(jù)的加減法為例,51需要多次處理,而在ARM中只需要1個(gè)指令即可。基于ARM內(nèi)核的芯片種類越來(lái)越多,器外圍接口(UART/SPI/IIC/USB/CAN/BUS/LCDC),內(nèi)部一般都加入了DMA,進(jìn)一步提升了性能。給用戶提供了很大的選擇空間。典型的如stm

5、32系列單片機(jī)。stm32系列32ARM單片機(jī)重塑了微控制器市場(chǎng),克服了應(yīng)用32位系統(tǒng)的所有障礙,是第一個(gè)由半導(dǎo)體廠商提供的基于ARM COTEX M3的為控制器系列。Stm32系列單片機(jī)為微控制器的用戶帶來(lái)了全新的自由度。它擁有先進(jìn)的性能,出色的功耗效率,一流的外設(shè),最大化的集成度,最佳的代碼緊湊性,大范圍的存儲(chǔ)容量選擇,最佳的工具與軟件平臺(tái)。3.DS18B20溫度傳感器DS18B20 是由 DALLAS 半導(dǎo)體公司推出的一種的“一線總線”接口的溫度傳感器。與傳 統(tǒng)的熱敏電阻等測(cè)溫元件相比,它是一種新型的體積小、適用電壓寬、與微處理器接口簡(jiǎn)單的 數(shù)字化溫度傳感器。一線總線結(jié)構(gòu)具有簡(jiǎn)潔且經(jīng)濟(jì)的

6、特點(diǎn),可使用戶輕松地組建傳感器網(wǎng)絡(luò), 從而為測(cè)量系統(tǒng)的構(gòu)建引入全新概念,測(cè)量溫度范圍為-55+125 ,精度為±05。現(xiàn)場(chǎng)溫 度直接以“一線總線”的數(shù)字方式傳輸,大大提高了系統(tǒng)的抗干擾性。它能直接讀出被測(cè)溫度, 并且可根據(jù)實(shí)際要求通過(guò)簡(jiǎn)單的編程實(shí)現(xiàn) 9l2 位的數(shù)字值讀數(shù)方式。它工作在 355 V 的電 壓范圍,采用多種封裝形式,從而使系統(tǒng)設(shè)計(jì)靈活、方便,設(shè)定分辨率及用戶設(shè)定的報(bào)警溫度 存儲(chǔ)在 EEPROM 中,掉電后依然保存。其內(nèi)部結(jié)構(gòu)見(jiàn)下圖:高溫觸發(fā)器TH存儲(chǔ)器與控制邏輯64位ROM和單線接口 高速緩存溫度傳感器低溫觸發(fā)器TL配置寄存器八位CRC發(fā)生器I/OVDD圖1.1 DS1

7、8B20內(nèi)部結(jié)構(gòu)圖ROM 中的 64 位序列號(hào)是出廠前被光記好的,它可以看作是該 DS18B20 的地址序列碼,每 DS18B20 的 64 位序列號(hào)均不相同。64 位 ROM 的排列是:前 8 位是產(chǎn)品家族碼,接著 48 位是 DS18B20 的序列號(hào),最后 8 位是前面 56 位的循環(huán)冗余校驗(yàn)碼(CRC=X8+X5 +X4 +1)。ROM 作 用是使每一個(gè) DS18B20 都各不相同,這樣就可實(shí)現(xiàn)一根總線上掛接多個(gè)。所有的單總線器件要求采用嚴(yán)格的信號(hào)時(shí)序,以保證數(shù)據(jù)的完整性。DS18B20 共有 6 種信 號(hào)類型:復(fù)位脈沖、應(yīng)答脈沖、寫(xiě) 0、寫(xiě) 1、讀 0 和讀 1。所有這些信號(hào),除了應(yīng)答

8、脈沖以外, 都由主機(jī)發(fā)出同步信號(hào)。并且發(fā)送所有的命令和數(shù)據(jù)都是字節(jié)的低位在前。DS18B20 的典型 溫度讀取過(guò)程為:復(fù)位,發(fā) SKIP ROM 命令(0XCC),發(fā)開(kāi)始轉(zhuǎn)換命令(0X44),延時(shí),復(fù) 位,發(fā)送 SKIP ,ROM 命令(0XCC),發(fā)讀存儲(chǔ)器命令(0XBE),連續(xù)讀出兩個(gè)字節(jié)數(shù)據(jù)(即 溫度)->結(jié)束。二、總體方案設(shè)計(jì)1.主要功能功能實(shí)現(xiàn)開(kāi)機(jī)后能夠檢測(cè)到當(dāng)前環(huán)境溫度并實(shí)時(shí)送到LCD液晶屏上顯示出來(lái),按升溫按鍵,電機(jī)正轉(zhuǎn);按降溫按鍵,電機(jī)反轉(zhuǎn)。LED指示燈不斷閃爍,表明單片機(jī)正在執(zhí)行當(dāng)前程序。2.設(shè)計(jì)要求開(kāi)機(jī)的時(shí)候先檢測(cè)是否有 DS18B20 存在,如果沒(méi)有,則提示錯(cuò)誤。

9、當(dāng)檢測(cè)到 DS18B20 之后才開(kāi)始讀取當(dāng)前環(huán)境溫度并顯示在 LCD 上,如果發(fā)現(xiàn)了 DS18B20,則程 序每隔 200ms 左右讀取一次數(shù)據(jù),并把溫度顯示在 LCD 上。按下相應(yīng)按鍵,可以控制電機(jī)正轉(zhuǎn)或反轉(zhuǎn)。三、最小系統(tǒng)的設(shè)計(jì)1.喚醒電路 圖1.2 喚醒電路的設(shè)計(jì)按下WK_UP按鍵,即可實(shí)現(xiàn)喚醒控制器開(kāi)始工作。2.晶振延時(shí)電路及復(fù)位電路圖1.3 晶振延時(shí)電路 圖1.4 復(fù)位電路 Y1、Y2、C3、C4、C5、C6、R4等共同構(gòu)成了外部振蕩電路,Y1選擇32.768KHz,Y2選擇8MHz, C3、C4、C5、C6均取22pF。復(fù)位信號(hào)從單片機(jī)的NRST引腳輸入,按下復(fù)位鍵,即可使單片機(jī)復(fù)位

10、。復(fù)位操作有上電復(fù)位和手動(dòng)復(fù)位兩種,本次采用手動(dòng)復(fù)位電路。四、系統(tǒng)硬件分析與設(shè)計(jì)1.系統(tǒng)框圖DS18B20數(shù)字溫度傳感器STM32F103RBT632位單片機(jī)按鍵控制TFTLCD液晶顯示屏LED指示燈復(fù)位電路圖1.5 系統(tǒng)總體框圖2.各模塊電路圖1) 溫度檢測(cè)模塊 圖1.6基于DS18B20的溫度檢測(cè)模塊電路2) 按鍵控制模塊 圖1.7按鍵控制模塊電路3) 液晶顯示模塊 圖1.8 TFTLCD液晶顯示模塊電路4) LED指示燈 圖1.9 LED指示燈模塊電路5) 電機(jī)控制電路圖2.0電機(jī)控制H橋電路3.元器件1) Stm32F103RBT6 32位單片機(jī)本次使用的單片機(jī)采用LQFP-64封裝,

11、其芯片內(nèi)部集成了USB外設(shè),大大減輕了USB電路設(shè)計(jì)的負(fù)擔(dān),只需設(shè)計(jì)USB接口電路,就可以實(shí)現(xiàn)基于STM32電路板的USB通信設(shè)計(jì),是一款集32位MCU、USB、CAN、7個(gè)16位定時(shí)器、兩個(gè)ADC和9個(gè)通信接口的芯片。它具有低功耗、直接存儲(chǔ)器存取、多達(dá)80I/O快速端口等很多性能方面的優(yōu)勢(shì)。 圖2.1 STM32F103RBT6 32位ARM引腳排列圖2) TFTLCD液晶本次使用的是TFTLCD,其引腳排列為:1號(hào)引腳為片選信號(hào)輸入,2、3、4號(hào)分別為RS、WR和RD,5號(hào)引腳為復(fù)位端,時(shí)鐘信號(hào)為34號(hào)引腳,621為DB1DB17等。采用DB_LCD封裝。 圖2.2 LCD引腳排列圖3)

12、其他元器件 五、系統(tǒng)軟件程序設(shè)計(jì)1. 按鍵控制子流程圖 開(kāi)始初始化按鍵掃描過(guò)程開(kāi)始有鍵按下?按鍵處理,電機(jī)啟動(dòng)調(diào)整溫度是否LCD顯示溫度值T2.TFTLCD顯示子流程圖開(kāi)始是否有程序執(zhí)行否是LCD顯示T是否有鍵按下是否LCD顯示調(diào)整后的溫度T結(jié)束3.主程序流程圖開(kāi)始初始化掃描復(fù)位電路復(fù)位鍵是否按下是單片機(jī)復(fù)位否檢測(cè)DS18B20是否存在?提示錯(cuò)誤否是讀取當(dāng)前環(huán)境溫度按鍵是否有按下否是調(diào)整溫度值T每隔200ms,顯示一次溫度值 LED閃爍六、仿真與調(diào)試1.軟件調(diào)試打開(kāi)keil for ARM,進(jìn)入軟件操作界面。新建new project,選擇單片機(jī)型號(hào)為stm32F103RBT6,生成targe

13、t1àsource group1,新建file,寫(xiě)入C語(yǔ)言代碼,添加到source group1,選擇好各種配置文件,勾選“create hex file“,選擇projectàrebuild all targets進(jìn)行編譯程序,若有錯(cuò)誤則糾錯(cuò)到” 0 error(s) ,0 warning(s)“為止。 圖2.3本次程序編譯結(jié)果2.下載代碼,軟硬件聯(lián)調(diào)安裝USB串口驅(qū)動(dòng)CH340,安裝完成后再安裝STM ISP下載器MCUISP。安裝成功后,打開(kāi)MCUISP軟件,點(diǎn)擊搜索串口,即可找到已經(jīng)安裝好的USB-SERIAL CH340串口。點(diǎn)擊讀器件信息,若前面操作均無(wú)錯(cuò)誤,那

14、么會(huì)看到軟件提示“命令執(zhí)行完畢,一切正常”,如下圖所示情況。圖2.3 器件信息讀取正常然后將在MDK里已經(jīng)生成的HEX文件裝載到MCUISP中,如下圖所示。圖2.4 載入HEX文件點(diǎn)擊“開(kāi)始編程”,并把“編程后執(zhí)行”勾選中。編程完畢如下圖所示。圖2.5 編程完成程序運(yùn)行結(jié)果如下圖所示:七、個(gè)人總結(jié)通過(guò)本次溫控器的設(shè)計(jì),我體會(huì)到“書(shū)到用時(shí)方恨少”的道理,從書(shū)本上學(xué)到的知識(shí)對(duì)于我們實(shí)踐來(lái)說(shuō),是遠(yuǎn)遠(yuǎn)不夠的。查閱資料和閱讀相關(guān)文獻(xiàn)是非常重要的。我們必須學(xué)會(huì)怎樣查找資源,利用資源,整合資源,從資源中獲得我們需要的東西。我們還要更全面地了解單片機(jī)的功能,如何應(yīng)用單片機(jī),各系列單片機(jī)的優(yōu)缺點(diǎn),適應(yīng)范圍。遇到

15、不會(huì)的內(nèi)容要虛心向別人請(qǐng)教,但同時(shí)不能過(guò)分依賴別人,本次課程設(shè)計(jì)我單人完成的,所以更能鍛煉我個(gè)人解決問(wèn)題的能力。對(duì)待任何事情都要有耐心,遇到問(wèn)題要冷靜地思考,不要程序有錯(cuò)誤或者硬件調(diào)試不成功就急躁,慌亂,仔細(xì)地分析問(wèn)題出在哪里,一步一步解決問(wèn)題,直至調(diào)試成功。我更深刻的認(rèn)識(shí)到了實(shí)踐在大學(xué)課程中的重要性,書(shū)本是實(shí)踐的基礎(chǔ),學(xué)好書(shū)本知識(shí),才能更好地應(yīng)用于實(shí)踐,而實(shí)踐反過(guò)來(lái)又能鞏固和檢驗(yàn)我們到底學(xué)的扎不扎實(shí),同時(shí)我也發(fā)覺(jué)到了自己在學(xué)習(xí)方面存在的許多不足之處,在以后的學(xué)習(xí)中我會(huì)努力改進(jìn)這些不足,不斷提高自己的動(dòng)手實(shí)踐能力。八、參考文獻(xiàn)周立功,ARM嵌入式系統(tǒng)基礎(chǔ)教程M.北京航空航天大學(xué)出版社,2008

16、.09 周立功,ARM嵌入式系統(tǒng)實(shí)驗(yàn)教程M.北京航空航天大學(xué)出版社,2005.10劉軍、張洋,例說(shuō)STM32 第二版M.北京航空航天大學(xué)出版社,2014.06 張齊,單片機(jī)原理與應(yīng)用系統(tǒng)設(shè)計(jì)M.電子工業(yè)出版社,2009.01錢(qián)顯毅、錢(qián)愛(ài)玲,傳感器原理與應(yīng)用M.中國(guó)水利水電出版社,2013.02徐愛(ài)均、徐陽(yáng),智能化測(cè)量控制儀表原理與設(shè)計(jì)M.北京航空航天大學(xué)出版社,2012.03九、附錄1)系統(tǒng)電路原理圖2)程序清單主程序:#include "led.h"#include "delay.h"#include "sys.h"#include

17、 "usart.h"#include "lcd.h"#include "ds18b20.h" #include "key.h" int main(void) u8 t=0; short temperature; short wendu; short xianshi;delay_init(); /延時(shí)函數(shù)初始化 uart_init(9600); /串口初始化為9600LED_Init(); /初始化與LED連接的硬件接口 LCD_Init();KEY_Init(); POINT_COLOR=RED;/設(shè)置字體為紅色

18、LCD_ShowString(60,50,200,16,16,"designby dk");LCD_ShowString(60,70,200,16,16,"DS18B20 TEST");LCD_ShowString(60,90,200,16,16,"from CIT");LCD_ShowString(60,110,200,16,16,"2014/10/10"); while(DS18B20_Init()/DS18B20初始化LCD_ShowString(60,130,200,16,16,"DS18B20

19、Error");delay_ms(200);LCD_Fill(60,130,239,130+16,WHITE); delay_ms(200); LCD_ShowString(60,130,200,16,16,"DS18B20 OK");POINT_COLOR=BLUE;/設(shè)置字體為藍(lán)色 LCD_ShowString(60,150,200,16,16,"Temp: . C"); while(1) if(t%100=0)/每1S讀取一次 temperature=DS18B20_Get_Temp(); wendu=temperature;if(wen

20、du<0)LCD_ShowChar(60+40,150,'-',16,0);/顯示負(fù)號(hào)wendu=-wendu;/轉(zhuǎn)為正數(shù)else LCD_ShowChar(60+40,150,' ',16,0);/去掉負(fù)號(hào)if(KEY0=0) wendu=wendu+5;xianshi=wendu;if(KEY1=0) wendu=wendu-5;xianshi=wendu;LCD_ShowNum(60+40+8,150,xianshi/10,2,16);/顯示正數(shù)部分 LCD_ShowNum(60+40+32,150,xianshi%10,1,16);/顯示小數(shù)部分

21、delay_ms(10);t+;if(t=200)t=0;LED0=!LED0;按鍵掃描子程序:#include "key.h"#include "delay.h" /按鍵初始化函數(shù)/特別注意:在該函數(shù)之后,JTAG將無(wú)法使用(SWD也無(wú)法使用)/如果想JTAG仿真,可以屏蔽該函數(shù)。/PA0.13.15 設(shè)置成輸入void KEY_Init(void)RCC->APB2ENR|=1<<2; /使能PORTA時(shí)鐘RCC->APB2ENR|=1<<4; GPIO_PinRemapConfig(GPIO_Remap_SWJ_

22、JTAGDisable, ENABLE);GPIOA->CRL&=0XFFFFFFF0;/PA0設(shè)置成輸入 GPIOA->CRL|=0X; GPIOA->CRH&=0X0FFFFFFF;/15設(shè)置成輸入 GPIOA->CRH|=0X; GPIOA->ODR|=1<<15;GPIOC->CRL&=0XFF0FFFFF;GPIOC->CRL|=0X;GPIOC->ODR|=1<<5; /PA15上拉,PA0默認(rèn)下拉,PC5上拉 /按鍵處理函數(shù)/返回按鍵值/0,沒(méi)有任何按鍵按下/1,KEY0按下/2,KE

23、Y1按下/3,KEY2按下 WK_UP/注意此函數(shù)有響應(yīng)優(yōu)先級(jí),KEY0>KEY1>KEY2!u8 KEY_Scan(u8 mode) static u8 key_up=1;/按鍵按松開(kāi)標(biāo)志if(mode) key_up=1;if(key_up&&(KEY0=0|KEY1=0|WK_UP=1)delay_ms(10);/去抖動(dòng) key_up=0;if(KEY0=0) return KEY0_PRES;else if(KEY1=0) return KEY1_PRES;else if(WK_UP=1) return WKUP_PRES;else if(KEY0=1&am

24、p;&KEY1=1&&WK_UP=0)key_up=1; return 0;/ 無(wú)按鍵按下LCD顯示子程序:void LCD_ShowxNum(u16 x,u16 y,u32 num,u8 len,u8 size,u8 mode) u8 t,temp;u8 enshow=0; for(t=0;t<len;t+)temp=(num/LCD_Pow(10,len-t-1)%10;if(enshow=0&&t<(len-1)if(temp=0)if(mode&0X80)LCD_ShowChar(x+(size/2)*t,y,'0&#

25、39;,size,mode&0X01); else LCD_ShowChar(x+(size/2)*t,y,' ',size,mode&0X01); continue;else enshow=1; LCD_ShowChar(x+(size/2)*t,y,temp+'0',size,mode&0X01); /顯示字符串/x,y:起點(diǎn)坐標(biāo)/width,height:區(qū)域大小 /size:字體大小/*p:字符串起始地址 void LCD_ShowString(u16 x,u16 y,u16 width,u16 height,u8 size,u8

26、 *p) u8 x0=x;width+=x;height+=y; while(*p<='')&&(*p>=' ')/判斷是不是非法字符! if(x>=width)x=x0;y+=size; if(y>=height)break;/退出 LCD_ShowChar(x,y,*p,size,0); x+=size/2; p+; DS18B20配置子程序:/復(fù)位DS18B20void DS18B20_Rst(void) DS18B20_IO_OUT(); /SET PA0 OUTPUT DS18B20_DQ_OUT=0; /拉低D

27、Q delay_us(750); /拉低750us DS18B20_DQ_OUT=1; /DQ=1 delay_us(15); /15US/等待DS18B20的回應(yīng)/返回1:未檢測(cè)到DS18B20的存在/返回0:存在u8 DS18B20_Check(void) u8 retry=0;DS18B20_IO_IN();/SET PA0 INPUT while (DS18B20_DQ_IN&&retry<200)retry+;delay_us(1); if(retry>=200)return 1;else retry=0; while (!DS18B20_DQ_IN&am

28、p;&retry<240)retry+;delay_us(1);if(retry>=240)return 1; return 0;/從DS18B20讀取一個(gè)位/返回值:1/0u8 DS18B20_Read_Bit(void) / read one bit u8 data;DS18B20_IO_OUT();/SET PA0 OUTPUT DS18B20_DQ_OUT=0; delay_us(2); DS18B20_DQ_OUT=1; DS18B20_IO_IN();/SET PA0 INPUTdelay_us(12);if(DS18B20_DQ_IN)data=1; else

29、 data=0; delay_us(50); return data;/從DS18B20讀取一個(gè)字節(jié)/返回值:讀到的數(shù)據(jù)u8 DS18B20_Read_Byte(void) / read one byte u8 i,j,dat; dat=0;for (i=1;i<=8;i+) j=DS18B20_Read_Bit(); dat=(j<<7)|(dat>>1); return dat;/寫(xiě)一個(gè)字節(jié)到DS18B20/dat:要寫(xiě)入的字節(jié)void DS18B20_Write_Byte(u8 dat) u8 j; u8 testb;DS18B20_IO_OUT();/SE

30、T PA0 OUTPUT; for (j=1;j<=8;j+) testb=dat&0x01; dat=dat>>1; if (testb) DS18B20_DQ_OUT=0;/ Write 1 delay_us(2); DS18B20_DQ_OUT=1; delay_us(60); else DS18B20_DQ_OUT=0;/ Write 0 delay_us(60); DS18B20_DQ_OUT=1; delay_us(2); /開(kāi)始溫度轉(zhuǎn)換void DS18B20_Start(void)/ ds1820 start convert DS18B20_Rst()

31、; DS18B20_Check(); DS18B20_Write_Byte(0xcc);/ skip rom DS18B20_Write_Byte(0x44);/ convert /初始化DS18B20的IO口 DQ 同時(shí)檢測(cè)DS的存在/返回1:不存在/返回0:存在 u8 DS18B20_Init(void) GPIO_InitTypeDef GPIO_InitStructure; RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE); /使能PORTA口時(shí)鐘 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;/PORTA0 推挽輸出 GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP; GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOA, &GPIO_InitStructure); GPIO_SetBits(GPIOA,GPIO_Pin_0); /輸出1DS18B20_Rst();return DS18B20_Check(); /從ds18b20得到溫度值/精度:0.1C/返回值:溫度值

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論