嵌入式系統(tǒng)課程設(shè)計(jì)_第1頁(yè)
嵌入式系統(tǒng)課程設(shè)計(jì)_第2頁(yè)
嵌入式系統(tǒng)課程設(shè)計(jì)_第3頁(yè)
嵌入式系統(tǒng)課程設(shè)計(jì)_第4頁(yè)
嵌入式系統(tǒng)課程設(shè)計(jì)_第5頁(yè)
已閱讀5頁(yè),還剩17頁(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、精選文庫(kù)金陂科扶生課程實(shí)踐能力考查題目:溫度按鍵設(shè)定、顯示、報(bào)警系統(tǒng)設(shè)計(jì)學(xué)生學(xué)號(hào):學(xué)生姓名:所屬院部:指導(dǎo)教師:課程名稱:嵌入式系統(tǒng)開(kāi)發(fā)專業(yè)班級(jí):考查地點(diǎn):考查時(shí)長(zhǎng):4 小時(shí)2017 20匹學(xué)年第_2_學(xué)期成績(jī)精選文庫(kù)金陵科技學(xué)院教務(wù)精選文庫(kù)2017-2018學(xué)年 第2學(xué)期 嵌入式系統(tǒng)開(kāi)發(fā)實(shí)踐能力考核班級(jí)姓名學(xué)號(hào)課程名稱嵌入式系統(tǒng)開(kāi)發(fā)課程編號(hào)0806504151授課時(shí)間2018年2月26日-2018年5月4日周學(xué)時(shí)4學(xué)分2簡(jiǎn)要評(píng)語(yǔ)(從完成情況、是否 具備獨(dú)立開(kāi)發(fā)能力、是否獨(dú)立完 成、編程熟練程度 等角度評(píng)價(jià)。)任課教師簽名:_ 日期:溫度按鍵設(shè)定、顯示、報(bào)警系統(tǒng)設(shè)計(jì)要求:1、 讀取DS18B2

2、溫度,在液晶上實(shí)時(shí)顯示,并顯示上、下限,初始值上限32,下限26。2、通過(guò)按鍵可以設(shè)置環(huán)境溫度的上限和下限,WK_UP按下調(diào)節(jié)上限,再按下調(diào)節(jié)下限,再按下調(diào)節(jié)上限KEY按下加1;KEY按下減1,根據(jù)上限和下限判斷當(dāng)前溫度有沒(méi)有超出范圍。3、當(dāng)溫度超過(guò)上限,LED1隔1秒亮一次。超過(guò)下限,LED2鬲1秒亮一次。(也可自定義報(bào)警 方式)4、串口波特率一律用9600bps。液晶顯示的信息:STM32 testn ame: XXXXXXXXXMaximum is 32C,Minimum is 26 C The temperature is 29 C ,now!(XXXXX是自己的名字拼音)精選文庫(kù)目錄

3、:第一章 . 系統(tǒng)要求1.1設(shè)計(jì)要求1.2設(shè)計(jì)方案第二章 . 硬件設(shè)計(jì) 2.1 開(kāi)發(fā)板原理圖2.2 DS18B20 模塊2.3按鍵模塊2.4 LCD 顯示模塊2.5 LED 模塊第三章 . 軟件設(shè)計(jì) 3.1 程序流程圖3.2 程序部分代碼3.2.1主函數(shù) 、 main.c3.2.2LED 函數(shù) led.c3.2.3溫度代碼 s18b20.c3.2.4鍵盤(pán)代碼 key.c第四章 .實(shí)物效果圖第五章 . 課程總結(jié)精選文庫(kù)版開(kāi)發(fā)板選擇的是2 個(gè)基本定時(shí)器、個(gè) SPI 、 2 個(gè) IIC第一章 . 設(shè)計(jì)要求及方案1.1 設(shè)計(jì)要求1、 讀取DS18B2溫度,在液晶上實(shí)時(shí)顯示,并顯示上、下限,初始值上限

4、32,下限26。2、通過(guò)按鍵可以設(shè)置環(huán)境溫度的上限和下限,WK_UP按下調(diào)節(jié)上限,再按下調(diào)節(jié)下限,再按下調(diào)節(jié)上限KEY按下加1;KEY按下減1,根據(jù)上限和下限判斷當(dāng)前溫度有沒(méi)有超出范圍。3、 當(dāng)溫度超過(guò)上限,LED隔 1秒亮一次。超過(guò)下限,LED2B1秒亮一次。(也可自定義報(bào) 警方式)4、串口波特率一律用 9600bps。液晶顯示的信息:STM32 testname: xxxxxxxxxMaximum is 32C, Minimum is 26 CThe temperature is 29 C , now!(xxxxx 是自己的名字拼音)1.2設(shè)計(jì)方案本次課程設(shè)計(jì)的要求是使用 STM32F10

5、設(shè)計(jì)一個(gè)溫度測(cè)控系統(tǒng),ALIENTEK Mi niSTM32 V3STM32F103RCT6乍為 MCU 它擁有的資源包括:48KBSRAM 256KBFLASH4 個(gè)通用定時(shí)器、 2 個(gè)高級(jí)定時(shí)器、 2 個(gè) DMA 控制器(共 12 個(gè)通道)、 3、 5 個(gè)串口、 1 個(gè) USB、 1 個(gè) CAN、 3 個(gè) 12 位 ADC、 1 個(gè) 12 位 DAC、 1 個(gè)SDIO 接口及 51 個(gè)通用 IO 口。在本課程中使用了以下部分來(lái)完成課程設(shè)計(jì)的要求:1.應(yīng)用DS18B20進(jìn)行溫度的檢測(cè)。2.應(yīng)用按鍵模塊進(jìn)行外部的上下限數(shù)值設(shè)定。3.應(yīng)用LED的閃爍進(jìn)行報(bào)警。4.應(yīng)用LCD顯示實(shí)時(shí)溫度、上下限等

6、信息。精選文庫(kù)1.1*.I* U :J gJUET 連匹j 1 ;,IMIMI I h h 4 4事 kdi-kdi- -k.-k.LOLLOLi+lQi=T丄二工屮豐 iTiT U UE E :* JirJir liliIT- ZII , 一*匚嗎晌 I .晶鬧J:沱I: ;:1 Jt忡 L i% :*一器止甩L L: :VV yyyy 二TUTC-IC-I kmkm片:炸XWXW0 0 TiStlLi.-TiStlLi.- a aprpr 蚯I I I I ! WhzAl.WhzAl. Z礎(chǔ)L.L.jQi.jQiFpr?7 h_ _ L ; iViV: nR-Tr= j、L L、2 2 _

7、 _n- -J卡嚴(yán)EmiEmi氓卄,.Wl -Hi!刑.,i; * 一応二JJ/.-llJJ/.-ll .人口昭 他 J.J.:.拌_心注卿J J. , , r r tintinI I J J ItIt I I F F: U U- -, ,W W廠趴沾:!flL-L L I -I _i_4 4亠 3#3#i i -H-H- -nhnh:“F:! r r 111111 訐斗H H iTi-iTi- 呼H苫77- n n i_-i_- i iI I 化BB I I -.-.difiizdifiiz .1.1:! !3737jsr-cjsr-c IIIIr7i_*iFJr7i_*iFJ 、m m 二

8、 H H+B+B.嚴(yán)尸i i 唾g I IJ.7ICir_i.7ICir_i lit-J.lit-J. S,S,三 一=上H H; :i5ti:i5ti i i nfnf = = lUlU-!仁一hh -.-. IllIll I I p p TVTV尹弐 F:.:.TrnTrn fWfW I I - - TXr*T*-JU- - - =jn=jn j j 喬C d d * 耐I I LynfLLynfL ADCADC f f :礙匚匚科n n疋口.袒 - -h h、IJIJfliifjir.fliifjir.iJiJ 豈詁 h h H H Z Z *.*. tltl_f-i(l_f-i(l 5

9、 5 AA W W WafTTMiWafTTMi I I扎生扎P,紅:f*lf*l 5 5 WLALa3eALa3en oriTNioriTNi cHiTEiacHiTEia mxmx 用IIII見(jiàn)*IIII imjXHUUfli-iimjXHUUfli-i i-krti-krtR R:*BDOt*BDOt:廨;!竟丄L L HAHA .HiLm.HiLm JP_1JP_1r rg g-Hb-Hb 敢jJjJ 碾 TiTi% fll.X.第二章.硬件設(shè)計(jì)2.12.1開(kāi)發(fā)板原理圖詳解2AA2AA MCUMCUALIENTEKALIENTEK MinLSTM52MinLSTM52 VSVS版JTJ

10、T發(fā)板選聲的尼STM32FI03RCT6STM32FI03RCT6作為MCU.MCU.它徊有的隹憑包活i i J8KBJ8KB SRAM,SRAM, 256KB256KB FLASH,FLASH, 2 2個(gè)基本定時(shí)器、1個(gè)週用.定時(shí)器、2 2個(gè)高級(jí)走時(shí)番、2 2個(gè)DMADMA牲起鑒f f共1 1卜迺這人5 5個(gè)SPISPI、2 2個(gè)IICIIC、5 5個(gè)宙、1 1個(gè)USBUSB、1個(gè)U/U/L LNN 3 3嚇1212扯ADCADC、1 1木1212位DAGDAG 1 1個(gè)SDIOSDIO嘯:J J及力個(gè)適用IOIO 口 . 芯片性析比極高 MCLMCL;部分的京浬團(tuán)婦國(guó)二丄1(國(guó)為原理團(tuán)比牡

11、大,編小下來(lái)可能有點(diǎn)音不焉,請(qǐng)大塚打幵開(kāi)發(fā)極光盤(pán)的S S理圖進(jìn)f f二査看)所示:MlMl I IWTT通2.12.1 1 1 1 1 MCUMCU部分亙理閣上圖中中上部的DOOT1DOOT1用于設(shè)置STM32STM32的啟動(dòng)有弍,其立應(yīng)啟葫模式如下表聊示;BOOTOBOOTO BoonBoon庖動(dòng)搜式說(shuō)明0 0X X用戶刀存存帽用戶閃存存ftggg,ftggg,也就是FLASRjfeFLASRjfe動(dòng)1 10 0系統(tǒng)存儲(chǔ)器系統(tǒng)存儲(chǔ)器君動(dòng),屈于串口下敦1 11 1S S碩啟動(dòng)SPAMSPAM啟動(dòng),用于在SIMSIM中調(diào)-忒代碼表2 2丄1 1 1 1 SOOTO.SOOTO. BOOT1BOO

12、T1官幻樓式表2.2DS18B20 設(shè)計(jì)nSlflB?OnSlflB?O旱由DATDAT T T ASAS羋導(dǎo)址處司詹出姑一種的“一錢意埔接ZIZI的S S虞傳琢器.與傅統(tǒng)的熱電追尊測(cè)S S元件相比.它長(zhǎng)一種h型的體枳小、活冃電壓寬*幻徽處a a黯接簡(jiǎn)單的字化湼度氣聲器.一垓&線站構(gòu)昌有簡(jiǎn)潔亙經(jīng)濟(jì)的特.占-*可便弔戶握松地組逹傳感器屈堵*乩而均測(cè)量靈的檜建引入全新概色-測(cè)asas度范圍為212亍匚, ,ftft宴為土o5r.o5r.現(xiàn)場(chǎng);a a麥宜接一錢總線的數(shù)字方式傳輸,X X尢握離了垂統(tǒng)的抗干擾性.它能產(chǎn)接讀出被測(cè)陸置,并旦可帳據(jù)實(shí)詠真菠通過(guò)簡(jiǎn)厲的堀程賣現(xiàn)4?堂的救字值讀埜方式”它丁件在

13、Z Z S S V V的國(guó)壓范謝,采甲多種封裝形式.地而使系統(tǒng)設(shè)計(jì)靈活、沁.15還幺譌衆(zhòng)及毛盧設(shè)走的報(bào)警S S竟存精選文庫(kù)EEPROMEEPROM中.抻電后依保存*茸內(nèi)部常枸如S S 2323丄1 1所示:精選文庫(kù)1/01/0vvMaMaWU和4 4 aLA*aaLA*aT云杯ininGNDGND圖2K2K 1 1 1 1 DSISB/ODSISB/O內(nèi)和結(jié)檢圖斫要用到的睦件資源如下:1)1)崔示燈DMDM22 TFTLCDTFTLCD tStS塊3)3) DS18B20DS18B20;S S度咚 S S器前兩S S分,在之前的實(shí)顧JSaJSa介紹過(guò)了,而DS13B20fiaDS13B20fi

14、a傳感器帚于外鄒嬖件(扳上沒(méi)有 直焊,叵是在我們開(kāi)發(fā)板二送有DS18B20ftDS18B20ft口 U6U6:* * Ifi.Ifi. affiDSl8B20affiDSl8B20即可ffi用. 下面,我們介紹幵發(fā)板上DS18B20SDS18B20S口和SW32SW32的連凌電臥 如匡2828 2 2 1 1所示:團(tuán)?8?8 2 2 I I DS1SB20DS1SB20接口與STW53STW53抽達(dá)桂申站團(tuán)從上圖可以看出“戲們使月的是STM32STM32 PAOPAO來(lái)謹(jǐn)接DS18BDS18B;0 0的(U6)(U6)的DQDQ引飆ffi中 W W為DS18D20DS18D20 口燈肖園孔蚩)

15、.n DSDS1832018320 S S器插入到這個(gè)上面,井用跳幾堆接 18201820 PAO-PAO-就可以通過(guò)STM32STM32來(lái)讀取DS1SB20DS1SB20的溫S S了.連S S示意ffl如S S 28222822所示:2.3按鍵模塊ALIENTEK MiniSTM32開(kāi)發(fā)板總共有3個(gè)按鍵,其原理圖如下:KEYKmKmCFfiCFfiVCtJ.JVCtJ.J TflKTflK CPCP監(jiān)T TW W tTtTS S 2.1412.141按鍵輸入原理圖flSP20flSP20精選文庫(kù)2 2 4 4 2.J*ID2.J*IPLC1P 1111 LCLC & & DillDill L

16、ciJLciJ urnsurns|T T M M丹o o JtJtT T 占 匸理 3?3?囁皆WRCLXWRCLXFSlFSlDfeDfe:Z Z6666ELELDBIJDBIJbhbbhbI I penpenH HVDOHVDOHCNiCNi si_vnDsi_vnDMISOMISO _ _T T PEMPEM工Jbfbf LcBLcB-h-h DBL D61 DBiDBi DBFDBFiaiaDBt2DBt2Dil4Dil4DB16DB16OKDOKDVDti*VDti* ! !5yjmyjm MOMO uituitBMMm1111 LiD_DlLiD_Dl: : 鬧 LTjTbULTj

17、TbU jjjj 阿口 t t勺.r r OLFE)Vf f下 4 * tZPZTZTg g 音rtrt T T狄乩GMGM110110LELX*LELX* DShDShKEYOKEYO和KElKEl用件昔通按無(wú)輸入.分別逕凄在PC5PC5和PA15PA15 ,其中PAL,PAL,和JTDIJTDI井弔 了,所叢 在使中KEY0KEY0和 好刃的匝像,就不能S S申JTAGJTAG來(lái)調(diào)試了,但是可以月S3VDS3VD調(diào) 試,這點(diǎn)左使冃的吋候聲注意a KEYOKEYO和KEY1KEY1還和PSF2PSF2的DATDAT和CLKCLK線共弔WK_UPWK_UP譽(yù)養(yǎng)連參到PAOPAO(STM32&i

18、|STM32&i| WKUPI.WKUPI.). .它瑤了可以用柞普通輸入按犍殲,還可 用作3TM323TM32的喚匪輸入,該fe礎(chǔ)是鬲電平觸S S的.由于PA0PA0還是DS18BJ0DS18BJ0 入引腳.而 1SB20是有上拉電咀的,所以在使屯VK=UPVK=UP按鍵的曰候,謹(jǐn)一定要斷開(kāi)PA0PA0和DS1SB20DS1SB20的2.4 LCD顯示模塊ALIENTEKALIENTEK MinjSlMJ2MinjSlMJ2幵發(fā)棟載有目前比較通用的液昌蠱示博塊窿口,還自具比較書(shū)特色 E E勺茉容性援口,不僅支特ALIENTEKALIENTEK各種尺寸2.4.2.4. 2.8.2.8.4.3,

19、4.3, 7 7寸等)的TFTKD,TFTKD,還支持 OLEDOLED M M示器.同時(shí),該接口衰持電邑融接弄以段電容觸溟屛尋不同裘型的換聲喪口. 其原理圍如下;醫(yī):.1.5.1.1.5.1液晶H H示槓塊原理圖TFTLLCDTFTLLCD是一介通庠的液品嘆塊摟口. OLEDOLED是一個(gè)給OLEDOLED擔(dān)示摸塊供電的按口,它TFTJ.CDTFTJ.CD拼接在一起.當(dāng)植冃TFTLQDTFTLQD時(shí),我們按TFT_TTFT_T m m 壽石插)就可跟了, E當(dāng)我怕使用ALIUNTEKALIUNTEK的OLEJJOLEJJ蛍塊時(shí),則OLLUOLLU捋針做電濾,時(shí)會(huì)55接到TFT_LCDTFT_

20、LCD 上f f靠左插)的部分管國(guó)#從而實(shí)現(xiàn)OLEDOLED與MCUMCU的連接* ALTENTEKALTENTEK MltnSTM32MltnSTM32 LCDLCD 援口兼直ALIENTEKALIENTEK各種尺寸的TFTLCDTFTLCD慣塊包扭22寸320*240,320*240, 阻屏人2 2走寸320*320*空6 6 電阿弄幾33寸4fiO*J2O,4fiO*J2O,電陽(yáng)弄人+3+3寸(旳尸鈿6 豐.容弄九7 7寸f f800*480.800*480.電容爲(wèi)) 第,同時(shí)迅兼容.ALIENlkK.ALIENlkK的0 0 9696寸OLEDOLED摸塊.這亙引卸呈MCUMCU的連接

21、關(guān)系我們?cè)谶@里就不-列出了,大冢可以從MCVMCV的原理圖上找到2.5 LED模塊ALEENTEKALEENTEK開(kāi)發(fā)板上急共盲3 3個(gè)LED.LED.其原理匡如卜:VC C3 JLELXtLELXt D D舊什.R?R?-卜2 2 LEDILEDI, ,C C(jD圈2.1.S2.1.S 1 1 LEDLED原理圈精選文庫(kù)其中PWR是開(kāi)發(fā)板電源指示燈, 的通道1的PWM輸出來(lái)控制 的LED燈。為藍(lán)色。LEDO和LED1分別接在 PA8和PD2上,PA8還可以通過(guò) TIM1DS0的亮度。為了方便大家判斷,我們選擇了DSO為紅色,DS1為綠色第三章.軟件設(shè)計(jì)3.1程序流程圖溫度顯示及報(bào)警模塊按鍵

22、設(shè)定模塊精選文庫(kù)設(shè)置用來(lái)作為 TIMx 時(shí)鐘頻率除數(shù)的預(yù)設(shè)置時(shí)鐘分割 :TDTS = Tck_tim CounterMode_Up; /TIM 向上計(jì)數(shù)模式 TIM_TimeBaseInit(TIM3, &TIM_TimeBaseStructure); /根據(jù)中指定的參數(shù)初始化 TIMx 的時(shí)間基數(shù)單位TIM_TimeBaseInitStruct中斷 先占優(yōu)先級(jí) 0 級(jí) 從優(yōu)先級(jí) 3 級(jí) 通道被使能3.2 程序部分代碼3.2.1 主函數(shù) 、 main.c#include led.h#include delay.h#include sys.h#include usart.h#include lc

23、d.h#include ds18b20.h#include key.h#include #include #include int temp_low = 22;int temp_high = 32;int zanshi_low=0;int zanshi_hign=0;void TIM3_Int_Init(u16 arr,u16 psc)TIM_TimeBaseInitTypeDef TIM_TimeBaseStructure; NVIC_InitTypeDef NVIC_InitStructure;RCC_APB1PeriphClockCmd(RCC_APB1Periph_TIM3, ENAB

24、LE); /時(shí)/ 鐘使能TIM_TimeBaseStructure.TIM_Period = arr; /設(shè)置在下一個(gè)更新事件裝入活動(dòng)的自動(dòng)重裝載寄存器周期的值 計(jì)數(shù)到 5000為 500msTIM_TimeBaseStructure.TIM_Prescaler =psc; / 分頻值 10Khz 的計(jì)數(shù)頻率TIM_TimeBaseStructure.TIM_ClockDivision = 0; /TIM_TimeBaseStructure.TIM_CounterMode = TIMTIM_ITConfig( / 使能或者失能指定的 TIM 中斷TIM3, /TIM2TIM_IT_Update

25、 ,ENABLE / 使能);NVIC_InitStructure.NVIC_IRQChannel = TIM3_IRQn; /TIM3*NVIC_InitStructure.NVIC_IRQChannelPreemptionPriority = 0; / NVIC_InitStructure.NVIC_IRQChannelSubPriority = 3; / NVIC_InitStructure.NVIC_IRQChannelCmd = ENABLE; /IRQNVIC_Init(&NVIC_InitStructure); / 根據(jù) NVIC_InitStruct 中指定的參數(shù)初始化外設(shè)精選

26、文庫(kù)NVIC寄存器TIM_Cmd(TIM3, ENABLE); / 使能 TIMx 外設(shè)u8 flag=0;int main(void) u8 t = 0;u8 shuzu20;u8 keyvalue=0; u8 gaibianshui=0;short temperature; delay_init(); / uart_init(9600); /NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);/LED_Init();/初始化與LED連接的硬件接口延時(shí)函數(shù)初始化串口初始化為 9600設(shè)置中斷優(yōu)先級(jí)分組 2TIM3_Int_Init(9999,7199

27、);/10Khz 的計(jì)數(shù)頻率,計(jì)數(shù)到 5000為 500msLCD_Init();POINT_COLOR = RED;/設(shè)置字體為紅色LCD_ShowString(0, 50, 200, 16, 16, STM32 test);LCD_ShowString(0, 70, 200, 16, 16, name: zhang qi qi );/LCD_ShowString(0,90,200,16,16,Max 32 C Min 26 C); memset(shuzu, 0, 20);sprintf(shuzu, Max is %2d C,Min is %2d C, temp_high, temp_l

28、ow); LCD_ShowString(0, 90, 200, 16, 16, shuzu);while (DS18B20_Init() /DS18B20LCD_ShowString(0, 130, 200, 16, 16, DS18B20 Error); delay_ms(200);LCD_Fill(0, 130, 239, 130 + 16, WHITE); delay_ms(200);初始化精選文庫(kù)精選文庫(kù)if (t % 10 = 0) / 每 100ms 讀取一次t = 0;temperature = DS18B20_Get_Temp(); if (temperature 0)LCD_

29、ShowChar(0 + 40, 150, -, 16, 0); temperature = -temperature;elseLCD_ShowChar(0 + 40, 150, , 16, 0);/顯示負(fù)號(hào)轉(zhuǎn)為正數(shù)/去掉負(fù)號(hào)POINT_COLOR = BLUE; / 設(shè)置字體為藍(lán)色LCD_ShowString(0, 110, 260, 16, 16, The temperature is: . C now );LCD_ShowChar(0+25*8,110,16,0);LCD_ShowChar(0+29*8,110,!,16,0);while (1)POINT_COLOR = BLUE; /

30、設(shè)置字體為藍(lán)色memset(shuzu, 0, 20);sprintf(shuzu, The temperature is:%3d.%1dC, temperature / 10,temperature % 10);LCD_ShowString(0, 110, 200, 16, 16, shuzu);delay_ms(10);/ 判斷溫度 zanshi_low=temp_low*10; zanshi_hign=temp_high*10; if(temperaturezanshi_hign) if(temperaturezanshi_hign)flag=2;printf(chaoshangxian

31、);精選文庫(kù)t+;elseflag=0;LED0=1; / 正常情況燈不亮LED1=1;/ 獲取溫度時(shí)間控制 t改變上限改變上限/ 瀏覽開(kāi)關(guān)KEY_Init();delay_ms(10);keyvalue=KEY_Scan(0);if(keyvalue!=0)if(keyvalue=3)gaibianshui=(gaibianshui+1)%3;if(gaibianshui=1) /if(keyvalue=2) /key1 按下 temp_high+; memset(shuzu, 0, 20);sprintf(shuzu, Max is %2d C,Min is %2d C,temp_high

32、, temp_low);LCD_ShowString(0, 90, 200, 16, 16, shuzu);if(keyvalue=1) /key0 按下temp_high-; memset(shuzu, 0, 20);sprintf(shuzu, Max is %2d C,Min is %2d C,temp_high, temp_low);LCD_ShowString(0, 90, 200, 16, 16, shuzu);if(gaibianshui=2) /if(keyvalue=2) /key1 按下精選文庫(kù)temp_high, temp_low);LCD_ShowString(0, 9

33、0, 200, 16, 16, shuzu);if(keyvalue=1) /key0 按下temp_low-; memset(shuzu, 0, 20);sprintf(shuzu, Max is %2d C,Min is %2d C,temp_high, temp_low);LCD_ShowString(0, 90, 200, 16, 16, shuzu);keyvalue=0;void TIM3_IRQHandler(void) /TIM3if (TIM_GetITStatus(TIM3, TIM_IT_Update) != RESET) / 否 :TIM 中斷源TIM_ClearITP

34、endingBit(TIM3, TIM_IT_Update ); / 位 :TIM 中斷源/ 溫度不正常處理燈 if(flag=1) 中斷檢查指定的 TIM 中斷發(fā)生與清除 TIMx 的中斷待處理LED0 = !LED0;if(flag=2)LED1 = !LED1;temp_low+; memset(shuzu, 0, 20);sprintf(shuzu, Max is %2d C,Min is %2d C,精選文庫(kù)3.2.2 LED 函數(shù) led.c#include led.h void LED_Init(void) GPIO_InitTypeDef GPIO_InitStructure;

35、RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA|RCC_APB2Periph_GPIOD, ENABLE/);使能PA,PD端口時(shí)鐘GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8;GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz; GPIO_Init(GPIOA, &GPIO_InitStructure);GPIOA.8GPIO_SetBits(GPIOA,GPIO_Pin_8)

36、;/LED0-PA.8 端口配置 / 推挽輸出/IO 口速度為 50MHz/ 根據(jù)設(shè)定參數(shù)初始化/PA.8 輸出高GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2; 推挽輸出GPIO_Init(GPIOD, &GPIO_InitStructure);50MHzGPIO_SetBits(GPIOD,GPIO_Pin_2);/LED1-PD.2 端口配置 ,/ 推挽輸出 ,IO 口速度為/PD.2 輸出高DS18B20的回應(yīng)1:未檢測(cè)到 DS18B20的存在0:存在3.2.3溫度代碼 s18b20.c#include ds18b20.h#include delay.

37、h void DS18B20_Rst(void) DS18B20_IO_OUT(); /SET PA0 OUTPUT DS18B20_DQ_OUT=0; /拉低 DQ delay_us(750);/ 拉低 750usDS18B20_DQ_OUT=1; /DQ=1 delay_us(15);/15US / 等待 / 返回 / 返回 u8 DS18B20_Check(void) u8 retry=0; DS18B20_IO_IN();/SET PA0 INPUT while (DS18B20_DQ_IN&retry=200)return 1;else retry=0;while (!DS18B20

38、_DQ_IN&retry=240)return 1;return 0;/從DS18B20讀取一個(gè)位/返回值:1/0u8 DS18B20_Read_Bit(void)u8 data;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ù)u

39、8 DS18B20_Read_Byte(void) / read one byteu8 i,j,dat;dat=0;for (i=1;i=8;i+)j=DS18B20_Read_Bit(); dat=(j1);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;j1;if (testb)DS18B20_DQ_OUT=0;/ Write 1 delay_us(2);DS18B20_DQ_OUT=1;

40、 delay_us(60);精選文庫(kù)/ 輸出 1/ ds1820 start convertelseDS18B20_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(0 xcc);/ skip romDS18B20_Write_Byte(0 x44);/ convert/初始化 DS18B20的IO 口 DQ同時(shí)檢測(cè) DS

41、的存在/ 返回 1:不存在/ 返回 0:存在u8 DS18B20_Init(void)GPIO_InitTypeDef GPIO_InitStructure;RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPlOA, ENABLE)/ 使能 PORTA口時(shí)鐘GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2;/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_2);DS18B20_Rst(); return DS18B20_Check();/ 從 ds18b20 得到溫度值/ 精度: 0.1C/ 返回值:溫度值 ( -5501250) short DS18B20_Get_Temp(void) u8 temp;u8 TL,TH;short tem;DS18B20_Start ();DS18B20_Rst();DS18B20_Che

溫馨提示

  • 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)論