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

下載本文檔

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

文檔簡(jiǎn)介

1、基于ARM7勺溫度控制器的設(shè)計(jì)學(xué)院:電氣學(xué)院 班級(jí):11自 姓名:杜康學(xué)號(hào):11020505指導(dǎo)老師:王崴目錄、簡(jiǎn)介1. 單片機(jī)的發(fā)展歷程2. stm32系列單片機(jī)3. DS18B20溫度傳感器、總體方案設(shè)計(jì)1. 主要功能2. 設(shè)計(jì)要求二、最小系統(tǒng)的設(shè)計(jì)1. 喚醒電路2. 晶振延時(shí)電路及復(fù)位電路四、系統(tǒng)硬件分析與設(shè)計(jì)1. 系統(tǒng)框圖102. 各模塊電路圖113. 元器件基于ARM7的溫度控制器的設(shè)計(jì)39(1)Stm32F103RBT6 32 位單片機(jī)11(2)TFTLCD 液晶12(3)其他元器件13五、系統(tǒng)軟件程序設(shè)計(jì)131.按鍵控制子流程圖142.TFTLCD顯示子流程圖153.主流程圖16

2、六、仿真與調(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è)基本組成部分,這種芯片就被稱(chēng)為單片微型計(jì)算機(jī)(Sin gleChipMicrocomputer),簡(jiǎn)稱(chēng)單片機(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ǔ)??v觀單片機(jī)的發(fā)展過(guò)程,可以看出單片機(jī)的發(fā) 展普遍呈現(xiàn)微型單片化、低功耗CMO化、主流與多品種共存的趨勢(shì)。九十年代以后,單片機(jī)在結(jié)構(gòu)上采用雙 CPL或內(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) 越來(lái)越多,器外圍接口( UART/S PI川C/USB/CAN/BUS/LCDC),內(nèi)部一般都加入了 DMA進(jìn)一步提升了性能。給用戶(hù)提供了很大的選擇空間。典

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

6、有簡(jiǎn)潔且經(jīng)濟(jì)的特點(diǎn), 可使用戶(hù)輕松地組建傳感器網(wǎng)絡(luò), 從而為測(cè)量系統(tǒng)的構(gòu)建引入全新概念,測(cè)量溫度范圍為-55+125C,精度為士 0. 5C。現(xiàn)場(chǎng)溫 度直接以“一線總線”的數(shù) 字方式傳輸,大大提高了系統(tǒng)的抗干擾性。它能直接讀出被測(cè)溫度,并且可根據(jù)實(shí)際要求通過(guò)簡(jiǎn)單的編程實(shí)現(xiàn)912位的數(shù)字值讀數(shù)方式。它工作在3 5. 5 V的電壓范圍,采用多種封裝形式,從而使存儲(chǔ)在系統(tǒng)設(shè)計(jì)靈活、方便,設(shè)定分辨率及用戶(hù)設(shè)定的報(bào)警溫度EEPROM中,掉電后依然保存。其內(nèi)部結(jié)構(gòu)見(jiàn)下圖:M位 2和單線接口圖1.1 DS18B20內(nèi)部結(jié)構(gòu)圖ROM中的64位序列號(hào)是出廠前被光 記好的,它可以看作是 該DS18B20的地址序列

7、碼,每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)類(lèi)型:復(fù)位脈沖、應(yīng)答 脈沖、寫(xiě)0、寫(xiě)1、讀0和讀1。所有這些信號(hào),除了應(yīng)答脈沖以 外,都由主機(jī)發(fā)出同步信號(hào)。并且發(fā)送所有的命令和數(shù)據(jù)都是字節(jié) 的低位在前。DS18B20的典型 溫度讀取過(guò)程為:復(fù)位,發(fā) SKIP ROM命令(0XC

8、C,發(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ò)誤。當(dāng)檢測(cè)到DS18B20之后才開(kāi)始讀取當(dāng)前環(huán)境溫度并顯示在 LCD 上,如 果發(fā)現(xiàn)了 DS18B20,則程序每隔200ms左右讀取一次數(shù)據(jù),并把溫度顯示在LCD上。按下相應(yīng)按鍵

9、,可以控制電機(jī)正轉(zhuǎn)或反轉(zhuǎn)。二、最小系統(tǒng)的設(shè)計(jì)1.喚醒電路T_Wk UPWK LP圖1.2喚醒電路的設(shè)計(jì)按下WK_U按鍵,即可實(shí)現(xiàn)喚醒控制器開(kāi)始工作。2.晶振延時(shí)電路及復(fù)位電路VIIN414SFL I J 232.76Kktk,2?prj45飛R1£R 直 T?PW $HEIX7 _lOufPC2 10PC3 11WKUPPAO 14PCl.VANT PtIlDSC K15OSC PDoostn P DIOSCCNRSTPCO ADCl K'l, AFX'I PCi'ADVlVSSA DYJIh rh ilb.'EZ fe I圖1.3晶振延時(shí)電路CC1

10、*HOifUIflkRRS卜KEY M ClirU -ill ,'口1'll卜1VXC.lIN4N«圖1.4復(fù)位電路Y1選擇Y1、Y2、C3 C4 C5 C6 R4等共同構(gòu)成了外部振蕩電路,32.768KHZ, Y2選擇 8MHz, C3 C4 C5 C6均取 22pF。復(fù)位信號(hào)從單片機(jī)的NRST引腳輸入,按下復(fù)位鍵,即可使單片機(jī)復(fù)位。復(fù)位操作有上電復(fù)位和手動(dòng)復(fù)位兩種,本次采用手動(dòng)復(fù)位電路。四、系統(tǒng)硬件分析與設(shè)計(jì)1. 系統(tǒng)框圖圖1.5系統(tǒng)總體框圖2.各模塊電路圖1)溫度檢測(cè)模塊VCC1JcinK2IA珞I;Cl 9-h104tjNDDU圖1.6基于DS18B20勺溫度

11、檢測(cè)模塊電路2)按鍵控制模塊KF YDKLVJKFVICiNIDV33 TWK LTWK UP圖1.7按鍵控制模塊電路3)液晶顯示模塊LCD CE IITDjVR 1QiCD ni LgUj aLCD_D;江lTVCD D9 l<4.7 KtjHDMr? PH訶1-CLI UI5?rLCD BL22rFI OKT?gTTsLCD CSKSWKCLKRDRSTDHIDinDIBDIMDH5DU6DU?DBS,oDHLDLtPDBl TOBJ 4DBIJDU 16DBI7frr)ULVDUj.2VDOtJonGND BLVDDMESOMQSr1 PtNMOt'csC.K2 4/2,S

12、'LCDin LC D2 i.CD ftS4 LCD_RP it J.CO DO3LCD P?10 LCD LH14 I.CD-QW,16 LCD PinIS LCU1>I J 2(11 iX'D DIM34 V(X3 ;cn2 V(1'C5T mosT 盟 麗T NKDLLDLED VCC-pJCJI I CMGND圖1.8 TFTLCD液晶顯示模塊電路4) LED指示燈圖1.9 LED指示燈模塊電路vcc5)電機(jī)控制電路I St IIInI IIIII ' RiotoiPrTI':圖2.0電機(jī)控制H橋電路3. 元器件1) Stm32F103RB

13、T6 32 位單片機(jī)本次使用的單片機(jī)采用LQF P-64封裝,其芯片內(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á)801/0快速端口等很多性能方面的優(yōu)勢(shì)。cadOHOOm皐6瞪n sLVd n 05n- n Ed 0 e5d m g nnnnnn n0 n rtssAI: rt.QS nVBATPC13-ANT1_TAM,PPCli*OSC32JNi PC15-OSC32_OUTPDO O

14、丸忖PD1 osc_c5ut firstPCDPCIPC2PC3 VSSA VODA PAO-WKUPPAIPA2/ &i 63 2 fi1 fiG 5fi' 50 57 56 55 54 53i 52 51 50 4&>1 4a2 町3 464 455 M6 437 竝B41gLQFP6440Id3S11 3fl12 餌13 3614 3515 3416 33X17 19 1S 20 21 2; 23 24 25 2fi z7 2059 3C 31 32 >LQFP'642 2 -3210 5432DS11*l1989fl761111 TO佃陰削削

15、”険耿兀ra氏兀起西羊西 333333333333333n3 2 10-IQ5>-Sa osd ?:9d £d tjmd 8n- 3n- 卜筐 9簽 嗟 寸OGA 寸雖圖 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封裝。LCD CSRSWR.CUKRDftSTr)KDR:r)B3DB4DH5DR6RB7PBSOBWDHllr)RII2DR】3DBMDR15DB1

16、6DB17GNDBl.vpm3vnn3.3GNB RL VDDMISOMQSIT TMMOT CSC't.KLCD?TFT IX'D-3 -5 7 9 -1 -3 -5 7 9 - J 亍 d -1 廠2T121416衛(wèi)12P16衛(wèi)74圖2.2 LCD引腳排列圖3)其他元器件OSO led IC19歸164KkYDOLLDLVCC*VCCJJCM104五、系統(tǒng)軟件程序設(shè)計(jì)1.按鍵控制子流程圖2.TFTLCD顯示子流程圖3.主程序流程圖六、仿真與調(diào)試1.軟件調(diào)試打開(kāi) keil for ARM,進(jìn)入軟件操作界面。新建new P roject ,選擇單片機(jī)型號(hào)為stm32F103RB

17、T6 生成 target1 sourcegroupi,新建 file,寫(xiě)入C語(yǔ)言代碼,添加到source groupi ,選擇好各種配置文件,勾選“create hex file“,選擇project rebuild all targets進(jìn)行編譯程序,若有錯(cuò)誤則 糾錯(cuò)到” 0 error(s) ,0 warning ( s)“為止。Build OutpijtFrograir Size: Code=17266 R0-ddta=3030 RW-data=36 ZI-data=620froirELF; creating hex file,.,"ATEST, axf"三 0 Er

18、ror (s)0 Warning fa.圖2.3本次程序編譯結(jié)果2. 下載代碼,軟硬件聯(lián)調(diào) 安裝USB串口驅(qū)動(dòng)CH34Q安裝完成后再安裝 STM ISP下載 器MCUISP安裝成功后,打開(kāi) MCUISP軟件,點(diǎn)擊搜索串口,即可找到已經(jīng)安裝好的USB-SERIAL CH340串口。點(diǎn)擊讀器 件信息,若前面操作均無(wú)錯(cuò)誤,那么會(huì)看到軟件提示“命令 執(zhí)行完畢,一切正?!?,如下圖所示情況。RTS>15 i+3-+12V) F 選擇進(jìn)入BootLoader.延時(shí)100竜秒DTR電平變有(+3-+L2V)窖觸篡位RT吁維持高開(kāi)始連接乙接收到:了9在OCOHS接成功I230400bp3,軽時(shí)265毫秒芯

19、片內(nèi)BDChtLcjacJ亡r脈本號(hào):2.2芯片F(xiàn)ID: 00000414芯 片F(xiàn)LASH容呈為25石血芯片SKAH容臺(tái)為6S535KB(此営皂仗供籬考新版龍. 芯片三不包含此唁息)9石位的芯片唯一申列號(hào); 37rFD60542573e3S3SS02543 讀出的選:?e拿節(jié);A55.AFFO'OFrOOFFOOFFOOFFOOrFOOFFOO-WWW,mCUL3p, CG'ITl向您報(bào)告金令執(zhí)行完峯.一切正:圖2.3器件信息讀取正常然后將在 MDK里已經(jīng)生成的 HEX文件裝載到 MCUISP中,女口F圖所示。聯(lián)機(jī)下載時(shí)的程序交件:Ipesktop®于ARM亦溫度控制

20、器的設(shè)i+幣序代碼USEftTEST.hex £圖2.4載入HEX文件點(diǎn)擊“開(kāi)始編程”,并把“編程后執(zhí)行”勾選中。編程完畢如下圖所示。全片擦寒或功集359垂秒=邃蟄好共寫(xiě)入迸箕100鮎輕時(shí)7239竜秒成功KOfi'iOO'inooo幵始運(yùn)行WWWmcui3pccm向您授吿*矗令執(zhí)行免軍.一切主圖2.5編程完成程序運(yùn)行結(jié)果如下圖所示:design by dk DS18B20 TEST from CIT 2014/10/8 DS1SB20 Readyt Temperate: 2S. 5C七、個(gè)人總結(jié)通過(guò)本次溫控器的設(shè)計(jì),我體會(huì)到“書(shū)到用時(shí)方恨少”的道理,從書(shū) 本上學(xué)到的知

21、識(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)范圍。遇 到不會(huì)的內(nèi)容要虛心向別人請(qǐng)教, 但同時(shí)不能過(guò)分依賴(lài)別人,本次課 程設(shè)計(jì)我單人完成的,所以更能鍛煉我個(gè)人解決問(wèn)題的能力。 對(duì)待任 何事情都要有耐心,遇到問(wèn)題要冷靜地思考,不要程序有錯(cuò)誤或者硬_lH_止 駆 步步用牛件調(diào)試不成功就急躁,慌亂,仔細(xì)地分析問(wèn)題出在哪里, 決問(wèn)題,直至調(diào)試成功。我更深刻的認(rèn)識(shí)到了實(shí)踐在大學(xué)課程中的重 要性,書(shū)本是實(shí)踐的基礎(chǔ),學(xué)好書(shū)本知識(shí)

22、,才能更好地應(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.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è)量控制

23、儀表原理與設(shè)計(jì)M.北京航空航天大學(xué)出版社,2012.03九、附錄1)系統(tǒng)電路原理圖L*如 ILd*ii_IrRcryriE . < AMF.|c iJC%:!?Fto=FI IlZ Llhj:n tI 1 IMvR*1¥E IE?。翰?#39;IT h 1' ; 1 “4 iW.-1 . !-1 jl *BITT.:;11l? fl;M 1)i 1|T> 1 >*i;宀h InTh"iSf hpi TImii ciiJ NH7|h|i rill EC eta nroTi at<-3ikHC-K piT-m C-i I 1|LPH njgi a

24、uvd hPTKitvP hhLJTTjiTfctfrraFTWinttK rucamn"Ar tAKUh Nk I jiJ± iJh I "J" 11、海IVERh pviwuPAnuiiM: <.w I ns r-.i.-uxiiHi-ic h*?ci itAhT; no hsEi'ix-winrMrcm wiTDnum ZiJjid T<|Z1 V- 'it.rLhUTlIM R PM3 些譏.“riJ!Y >1*1 ijS-* 'll I H I pj I #Ji-1.1.1 L1lih| 人片I hUT

25、jm. w<j.-in.-n ciiTid-n ncirvi. m KJ 曲14 d j4,”亠“KE心"ET UP rMi Rjx Tr*J*i r a rkiMHfK.iuc-:電:i n nPH.oun roAii HxW4Vy於idr.reLLUlZ gkn*! . _ -KhYP7-y . pHi -mtii m rri: IM IIK H Mwim P3.:*fTlh: WVTMlr.-L-FDf-JTAnDr-Hftj Illi 14 11K n浮祈WKJlIHl <HIH niiJram irzTihii htch FHILVI? MK llUi i H.

26、H SASiAJ 3LMI HCJUCFSti4-ir: LI II*' 11 'iniUE;:UH'JL -1I'I, FH.丄,h HLnHnH -口?IMK : F. =1詼恤袖4 ,旅誰(shuí)TTi Itf El I!、I仙Minn1 HI J»& n!11 Tni;Li-l?S JJ imn: a idiKI” 'If j.-d !r iFiIhl II I7pg 15L! 3 AI I 、p. h -hfiii礙噩曙S爲(wèi)娥*ir5IFrh 嚴(yán) -hmIH11<|A/nun*ini III2)程序清單主程序:#in elude

27、 "led.h"#in elude "delay.h"#in elude "sys.h"#in elude "usart.h"#in elude "led.h"#in elude "ds18b20.h"#in elude "key.h" int main( void)u8 t=0;short temp erature; short wen du; short xia nshi;/延時(shí)函數(shù)初始化串口初始化為 9600初始化與LED連接的硬件接口delay_

28、in it(); uart_ in it(9600); LED_I nit();LCD_I nit();KEYnit();POINT_COLOR=RED;/設(shè)置字體為紅色LCD_ShowStri ng(60,50,200,16,16,"desig nby dk");LCD_ShowStri ng(60,70,200,16,16,"DS18B20 TEST");LCD_ShowStri ng(60,90,200,16,16,"from CIT");LCD_ShowStri ng(60,110,200,16,16,"2014/1

29、0/10"); while(DS18B20_Init()/DS18B20 初始化LCD_ShowStri ng(60,130,200,16,16,"DS18B20 Error"); delay_ms(200);LCD_Fill(60,130,239,130+16,WHITE); delay_ms(200);LCD_ShowStri ng(60,130,200,16,16,"DS18B20 OK");P OINT_COLOR=BLUE;/設(shè)置字體為藍(lán)色LCD_ShowStri ng(60,150,200,16,16,"Tem p:. C

30、");while(1)if(t%100=0)/ 每 1S 讀取一次tem perature=DS18B20_Get_Tem p();wen du=te mp erature;if(we ndu<0)顯示負(fù)號(hào)轉(zhuǎn)為正數(shù)去掉負(fù)號(hào)LCD_ShowChar(60+40,150,'-',16,0);wen du=-we ndu;else LCD_ShowChar(60+40,150,' ',16,0);if(KEY0=0) we ndu=we ndu+5;xia nshi=we ndu;if(KEY1=0) we ndu=we ndu-5;xia nshi=

31、we ndu;LCD_ShowNum(60+40+8,150,xia nshi/10,2,16);/ 顯示正數(shù)部分LCD_ShowNum(60+40+32,150,xia nshi%10,1,16);顯示小數(shù)部分delay_ms(10);t+;if(t=200)t=0;LED0=!LED0;按鍵掃描子程序:#i nclude "key.h"#in elude "delay.h"/按鍵初始化函數(shù)特別注意:在該函數(shù)之后,JTAG將無(wú)法使用(SWD也無(wú)法使用)如果想JTAG仿真,可以屏蔽該函數(shù)。/PA0.13.15設(shè)置成輸入void KEY_I nit(voi

32、d)RCC->APB2ENR|=1<<2;/使能 PORTA 時(shí)鐘RCC->A PB2ENR|=1<<4;GP IO_ Pin Rema pCo nfig(G PIO_Remap_SWJ_JTAGDisable, ENABLE);GPIO A->CRL&=0XFFFFFFF0;/ PA0 設(shè)置成輸入GPI OA->CRL|=0X00000008;GPIO A->CR H&=0X0FFFFFFF;/15 設(shè)置成輸入GPI OA->CRH|=0X80000000;GPI OA->ODR|=1<<15;GP

33、I OC->CRL&=0XFF0FFFFF;GPIO C->CRL|=0X00800000;/按鍵處理函數(shù)/返回按鍵值/0,/1,/2,3,GPIOC->ODR|=1<<5;/PA15 上拉,PA0 默認(rèn)下拉,PC5 上拉沒(méi)有任何按鍵按下KEY0按下KEY1按下KEY2 按下 WK_UP注意此函數(shù)有響應(yīng)優(yōu)先級(jí) ,KEY0>KEY1>KEY2! u8 KEY_Sca n(u8 mode)static u8 key_u p=1;/按鍵按松開(kāi)標(biāo)志 if(mode) key_ up=1;if(key_u p&&(KEY0=0|KEY1=

34、0|WK_ UP=1) delay_ms(10);/ 去抖動(dòng)key_up=0;if(KEY0=0) return KEY0_ PRES;else if(KEY1=0) retur n KEY1 _P RES;else if(WK_UP=1) retur n WKUP_P RES;else if(KEY0=1 &&KEY1=1 &&WK_UP=O)key_u p=1;return 0;/無(wú)按鍵按下LCD顯示子程序:void LCD_ShowxNum(u16 x,u16 y,u32 num,u8 len ,u8 size,u8 mode)u8 t,te mp;u8

35、en show=0;for(t=0;t<le n;t+)temp=(nu m/LCD_Pow(10,le n-t-1)%10;if(e nshow=0&&t<(le n-1)if(te mp=0)if(mode&0 X80)LCD_ShowChar(x+(size/2)*t,y,'0',size,mode&0 X01);else LCD_ShowChar(x+(size/2)*t,y,' ',size,mode&0X01);con ti nue;else en show=1;LCD_ShowChar(x+(si

36、ze/2)*t,y,te mp+'0',size,mode&0 X01);/顯示字符串/x,y:起點(diǎn)坐標(biāo)/width,height:區(qū)域大小/size:字體大小*p:字符串起始地址void LCD_ShowStri ng(u16 x,u16 y,u16 width,u16 height,u8 size,u8 *p) u8 x0=x;width+=x;height+=y;while(* p<='')&&(* p>- ')/判斷是不是非法字符!if(x>=width)x=x0;y+=size;if(y>=hei

37、ght)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; / 拉低 DQ delay_us(750);拉低 750us/等待/返回/返回DS18B20_DQ_OUT=1; /DQ=1 delay_us(15);/15USDS18B20的回應(yīng)1:未檢測(cè)到 DS18B20的存在0:存在 u8 DS18B20_Check(void)u8 retry=0;

38、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_I N&&retry<240) retry+;delay_us(1);if(retry>=240)return 1;return 0;/從DS18B20讀取一個(gè)位/返回值:1/0/ read one bitu8 DS18B20_Read_Bit(void),u8 d

39、ata;DS18B20_IO_OUT();/SET PA0 OUTPUTDS18B20_DQ_OUT=0;delay_us(2);DS18B20_DQ_OUT=1;DS18B20_IO_IN();/SET PA0 INPUT delay_us(12);if(DS18B20_DQ_IN)data=1;else 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=O;for (i=1;i<=8;i+)j=DS18B2

40、0_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();/SET PA0 OUTPUT;for (j=1;j<=8;j+)testb=dat&0 x01;dat=dat>>1;if (testb)DS18B20_DQ_OUT=0;/ Write 1 delay_us(2);DS18B20_DQ_OUT=1; delay_us(60); e

41、lseDS18B20_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 convertDS18B20_Rst();DS18B20_Check();DS18B20_Write_Byte(0xcc);/ skip romDS18B20_Write_Byte(0x44);/ convert/初始化 DS18B20的IO 口 DQ同時(shí)檢測(cè) DS的存在/返回1:不存在/返回0:存在u8 DS18B20_I ni t(void)GPIO_lni tTy peDefGP IO_I nitStructure;RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);使能 PORTA 口時(shí)鐘GPI O_I nitStructure.G

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論