基于ARM7與DS18B20的數(shù)字溫度計(jì)的設(shè)計(jì)說(shuō)明_第1頁(yè)
基于ARM7與DS18B20的數(shù)字溫度計(jì)的設(shè)計(jì)說(shuō)明_第2頁(yè)
基于ARM7與DS18B20的數(shù)字溫度計(jì)的設(shè)計(jì)說(shuō)明_第3頁(yè)
基于ARM7與DS18B20的數(shù)字溫度計(jì)的設(shè)計(jì)說(shuō)明_第4頁(yè)
基于ARM7與DS18B20的數(shù)字溫度計(jì)的設(shè)計(jì)說(shuō)明_第5頁(yè)
已閱讀5頁(yè),還剩18頁(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)介

東北林業(yè)大學(xué)畢業(yè)論文.PAGE0.....東北林業(yè)大學(xué)畢業(yè)論文.PAGE0...........東北林業(yè)大學(xué)綜合電子課程設(shè)計(jì)總結(jié)報(bào)告設(shè)計(jì)項(xiàng)目:基于ARM7與DS18B20的數(shù)字溫度計(jì)的設(shè)計(jì)項(xiàng)目完成人:指導(dǎo)學(xué)院:信息與計(jì)算機(jī)工程學(xué)院專業(yè):電子信息工程2008級(jí)3班2011年綜合電子課程設(shè)計(jì)任務(wù)書學(xué)生姓名學(xué)號(hào)專業(yè)〔班級(jí)08級(jí)電信3班同組成員設(shè)計(jì)項(xiàng)目基于ARM7與DS18B20的數(shù)字溫度計(jì)的設(shè)計(jì)設(shè)計(jì)內(nèi)容本設(shè)計(jì)利用DS18B20智能溫度傳感器、ARM7LPC2131嵌入式系統(tǒng)、MS12864LCD液晶屏,設(shè)計(jì)一個(gè)數(shù)字溫度采集系統(tǒng)。人機(jī)接口電路的設(shè)計(jì):控制系統(tǒng)采用ARM7LPC2131,鍵盤采用獨(dú)立按鍵,顯示器采用MS12864液晶屏,溫度超限報(bào)警采用LED。主要技術(shù)指標(biāo)和要求測(cè)量溫度范圍:-50℃~150℃精度:±0.5℃線性度:±0.3℃超限報(bào)警功能;具有溫度和時(shí)間顯示功能;工作電壓:總線供電。設(shè)計(jì)所用儀器設(shè)備ARM7LPC2138小系統(tǒng);高精度溫度計(jì);數(shù)字萬(wàn)用表;示波器。工作計(jì)劃1.2011年6月22日:下達(dá)課程設(shè)計(jì)任務(wù)書;2.2011年6月23日:撰寫開題報(bào)告;3.2011年6月25日:開題答辯PPT;4.2011年6月26日~6月27日:硬件分析與設(shè)計(jì)、軟件結(jié)構(gòu)化設(shè)計(jì);5.2011年6月28日~7月96.2011年7月10日:課程設(shè)計(jì)結(jié)題驗(yàn)收參考資料溫度傳感器DS18B20芯片資料液晶屏MS12864R中文資料嵌入式ARM7LPC2131開發(fā)板系統(tǒng)原理指導(dǎo)教師簽子系主任簽字?jǐn)?shù)字溫度計(jì)的設(shè)計(jì)摘要本系統(tǒng)用ARM7LPC2131、溫度傳感器DS18B20、液晶屏12864、LED等組成,系統(tǒng)可實(shí)現(xiàn)實(shí)時(shí)顯示當(dāng)前室內(nèi)溫度功能。系統(tǒng)除基本數(shù)字溫度計(jì)功能外,還具有顯示當(dāng)前時(shí)間和日期、溫度超限報(bào)警、設(shè)置時(shí)間和日期初值功能。在設(shè)計(jì)中我們應(yīng)用ARM7開發(fā)板。ARM7開發(fā)板具有豐富的硬件資源。本設(shè)計(jì)采用LPC2131控制可編程芯片DS18B20實(shí)現(xiàn)對(duì)溫度的采集。利用LPC213內(nèi)部時(shí)鐘資源采集時(shí)間和日期。溫度、時(shí)間和日期通過液晶屏12864顯示,溫度超限報(bào)警通過LED閃爍提示。本文詳細(xì)介紹了如何實(shí)現(xiàn)對(duì)DS18B20編程采集溫度功能,以及如何采集ARM7LPC2131內(nèi)部時(shí)鐘資源,并實(shí)現(xiàn)鍵盤輸入修改日期時(shí)間、溫度超限報(bào)警等功能。關(guān)鍵詞:LPC2131;DS18B20;12864;溫度超限報(bào)警;.....目錄1緒論21.1引言….21.2系統(tǒng)方案設(shè)計(jì)31.3方案論證32系統(tǒng)主要器件選型與依據(jù)42.1EasyARM2131開發(fā)板42.2溫度傳感器DS18B2052.3MS12864R液晶屏簡(jiǎn)介63系統(tǒng)的硬件設(shè)計(jì)93.1ARM7開發(fā)板硬件設(shè)計(jì)93.2LCD液晶屏顯示設(shè)計(jì)93.3DS18B20溫度傳感器的設(shè)計(jì)104系統(tǒng)的軟件設(shè)計(jì)114.1系統(tǒng)主流程圖114.2溫度傳感器功能模塊124.3液晶顯示功能模塊125總結(jié)13參考文獻(xiàn)附錄A數(shù)字溫度計(jì)設(shè)計(jì)1緒論1.1引言近年來(lái)隨著科技的飛速發(fā)展,嵌入式的應(yīng)用正在不斷深入,同時(shí)帶動(dòng)傳統(tǒng)控制檢測(cè)技術(shù)日益更新。在實(shí)時(shí)檢測(cè)和自動(dòng)控制的嵌入式應(yīng)用系統(tǒng)中,嵌入式往往作為一個(gè)核心部件來(lái)使用,僅嵌入式方面知識(shí)是不夠的,還應(yīng)根據(jù)具體硬件結(jié)構(gòu)軟硬件結(jié)合,加以完善。溫度是一種最基本的環(huán)境參數(shù),人們生活與環(huán)境溫度息息相關(guān),在工業(yè)生產(chǎn)過程中需要實(shí)時(shí)測(cè)量溫度,在工業(yè)生產(chǎn)中也離不開溫度的測(cè)量,因此研究溫度的測(cè)量方法和控制具有重要的意義。DS18B20是美國(guó)DALLAS半導(dǎo)體公司繼DS1820之后最新推出的一種改進(jìn)型智能溫度傳感器,通過此次項(xiàng)目設(shè)計(jì),可以在原有的理論基礎(chǔ)上,更加深入的了解傳感器的工作原理特別是DS18B20溫度傳感器的工作原理,同時(shí)提高我們的實(shí)踐動(dòng)手能力以及邏輯思維能力,特別是拓寬了對(duì)ARM控制器的使用視野。數(shù)字溫度計(jì)的控制方式很多。本系統(tǒng)采用LPC2000系列ARM芯片和可編程串行I/O接口芯片DS18B20為中心器件來(lái)設(shè)計(jì)數(shù)字溫度計(jì),實(shí)現(xiàn)了設(shè)計(jì)一個(gè)數(shù)字溫度采集系統(tǒng),利用LCD液晶屏顯示當(dāng)前溫度、時(shí)間和日期,并具有溫度超限報(bào)警功能1.2系統(tǒng)方案設(shè)計(jì)利用控制芯片、溫度傳感器、LCD液晶屏、時(shí)鐘資源、LED等分別實(shí)現(xiàn):〔1實(shí)時(shí)顯示當(dāng)前室內(nèi)溫度〔2顯示年、月、日、星期、時(shí)、分、秒;〔3能夠通過鍵盤輸入日期和時(shí)間的初值;〔4溫度超限報(bào)警;圖1-1為設(shè)計(jì)方案總體框圖溫度溫度傳感器顯示ARM7LPC2131報(bào)警模塊按鍵圖1-1設(shè)計(jì)方案總體框圖系統(tǒng)初始化后,LCD上顯示當(dāng)前室內(nèi)溫度,同時(shí)LCD上顯示時(shí)間和日期,通過功能鍵能實(shí)現(xiàn)日期和時(shí)間的初值設(shè)定,如果溫度超過預(yù)先設(shè)定的溫度值,八個(gè)LED燈會(huì)閃爍提示溫度超限。1.3方案論證<1>顯示模塊方案一:使用LCD液晶屏12864作為時(shí)間日期顯示,LCD液晶顯示器的構(gòu)造是在兩片平行的玻璃當(dāng)中放置液態(tài)的晶體,兩片玻璃中間有許多垂直和水平的細(xì)小電線,透過通電與否來(lái)控制桿狀水晶分子改變方向,將光線折射出來(lái)產(chǎn)生畫面。顯示清晰,實(shí)現(xiàn)功能全。方案二:使用8為數(shù)碼管作為顯示,通過芯片HD7279控制數(shù)碼管,可實(shí)現(xiàn)時(shí)間和日期還有當(dāng)前溫度顯示,缺點(diǎn)是數(shù)碼管顯示數(shù)字,顯示不靈活多變。由于LCD可同時(shí)顯示溫度和時(shí)間,顯示清晰,實(shí)現(xiàn)功能全。故選用方案一LCD12864作為顯示模塊。<2>溫度傳感器DS18B20數(shù)字溫度傳感器,該產(chǎn)品采用美國(guó)DALLAS公司生產(chǎn)的DS18B20可組網(wǎng)數(shù)字溫度傳感器芯片封裝而成,具有耐磨耐碰,體積小,使用方便,封裝形式多樣,適用于各種狹小空間設(shè)備數(shù)字測(cè)溫和控制領(lǐng)域。由于DS18B20性能已經(jīng)夠好,控制起來(lái)也比較方便,故不需要對(duì)比,直接選用DS18B20作為溫度傳感器〔3>時(shí)鐘電路模塊方案一:DS1302一種高性能、低功耗、帶RAM的實(shí)時(shí)時(shí)鐘電路,它可以對(duì)年、月、日、周日、時(shí)、分、秒進(jìn)行計(jì)時(shí),具有閏年補(bǔ)償功能,工作電壓為2.5V~5.5V。采用三線接口與CPU進(jìn)行同步通信,并可采用突發(fā)方式一次傳送多個(gè)字節(jié)的時(shí)鐘信號(hào)或RAM數(shù)據(jù)。DS1302內(nèi)部有一個(gè)31×8的用于臨時(shí)性存放數(shù)據(jù)的RAM寄存器。方案二:ARM7LPC2131具有豐富的硬件資源,直接編程即可使用內(nèi)部時(shí)鐘資源由于使用DS1302還得外接電路而且編程比較麻煩,故選用ARM7內(nèi)部時(shí)鐘資源〔4報(bào)警電路報(bào)警電路采用8只LED,控制方便、準(zhǔn)確。2系統(tǒng)主要器件選型及依據(jù)2.1EasyARM2131開發(fā)板EasyARM2131開發(fā)板是XX周立功公司設(shè)計(jì)的EasyARM系列開發(fā)套件之一,采用了PHILIPS公司基于AM7TDMS核單電源供電LQFP64封裝的LPC2131具有JAG仿真調(diào)試、ISP編程等功能。開發(fā)板上提供了一些鍵盤、LED、蜂鳴器等常用功能部件,還具有RS232接口電路、I2C存儲(chǔ)器電路另外用戶也可以更換兼容的CPU進(jìn)行仿真調(diào)試如LPC2132LPC2138、LPC2142等。靈活的跳線組合〔開發(fā)板內(nèi)使用的所有I/O均可斷開連接,還有用戶I/O接口,極大地方便了用戶進(jìn)行32位AREasyARM2131實(shí)驗(yàn)板功能特點(diǎn):*完全自主設(shè)計(jì)的軟硬件、擁有自主版權(quán)的JTAG仿真技術(shù);*支持ADS1.2集成開發(fā)環(huán)境及其PHILIPS所有型號(hào)ARM微控制器的仿真與開發(fā);*采用"主板+CPUPACK適配器+SD卡適配器〔標(biāo)準(zhǔn)配置+多種可選配置適配器"*的形式構(gòu)成EasyARM2131開發(fā)套件,標(biāo)準(zhǔn)配置的CPUPACK主芯片為L(zhǎng)PC2131FBD;*板上的功能部件與CPU之間,可以使用跳線器選擇連接;*全面支持9種型號(hào)的64PIN小管腳ARM7微控制器:-LPC213x〔LPC2131/2132/2134/2136/2138-內(nèi)置USB接口的LPC214x<LPC2142/2144/2146/2148>*多種免費(fèi)商業(yè)化軟件包及其詳細(xì)的開發(fā)文檔:*移植μC/OS-II到ARM7軟件包*數(shù)據(jù)隊(duì)列軟件包*串口驅(qū)動(dòng)軟件包*MODEM接口軟件包*SPI總線軟件包*I2C總線軟件包*ZLG/FSV1.0版本文件管理系統(tǒng)軟件包*ZLG/GUI圖形用戶界面軟件包*ZLG/SD卡讀寫軟件包*ZLG/USB固件程序及其驅(qū)動(dòng)程序軟件包*多種可選配置適配器:-各種型號(hào)的CPUPACK,用戶可按需求和喜好配置主ARM芯片-MG12864點(diǎn)陣圖型液晶模塊*所有I/O口全部引出,方便用戶連接外部電路的開發(fā)與使用;*可進(jìn)行GPIO的控制實(shí)驗(yàn),如鍵盤輸入、蜂鳴器控制、模擬SPI等;*6個(gè)獨(dú)立按鍵<可用于外部中斷、定時(shí)器捕獲輸入>,8個(gè)LED指示燈;*具有RS232轉(zhuǎn)換電路,可與上位機(jī)進(jìn)行通訊,完成UART通訊實(shí)驗(yàn);*可以與標(biāo)準(zhǔn)串行modem直接接口,方便遠(yuǎn)程通訊;*具有I2C接口和SPI/SSP接口輸出;*提供基于PC的人機(jī)界面,方便調(diào)試實(shí)時(shí)時(shí)鐘、串口通信等功能;*可進(jìn)行外部中斷實(shí)驗(yàn),學(xué)習(xí)向量中斷控制器<VIC>;*定時(shí)器控制實(shí)驗(yàn),如定時(shí)控制LED、定時(shí)器捕獲等;*使用板內(nèi)的CAT1025〔內(nèi)含復(fù)位功能,完成I2C總線的實(shí)驗(yàn);*使用74HC595芯片,實(shí)現(xiàn)SPI接口數(shù)據(jù)發(fā)送、接收實(shí)驗(yàn);*A/D轉(zhuǎn)換實(shí)驗(yàn);DAC轉(zhuǎn)換實(shí)驗(yàn)〔更換CPU為L(zhǎng)PC2132及以上;*實(shí)時(shí)時(shí)鐘控制實(shí)驗(yàn);*WDT及低功耗控制實(shí)驗(yàn);*54個(gè)基礎(chǔ)實(shí)驗(yàn)及其大量的中間件軟件包,完整地驗(yàn)證了幾乎所有的硬件功能資源;*詳細(xì)的配套資料<《深入淺出ARM7—LPC213x/214x》<上/下冊(cè)>,北航出版社,其中上冊(cè)為標(biāo)準(zhǔn)配置>。2.2溫度傳感器DS18B20DS18B20數(shù)字溫度計(jì)是DALLAS公司生產(chǎn)的1-Wire,即單總線器件,具有線路簡(jiǎn)單,體積小的特點(diǎn)。因此用它來(lái)組成一個(gè)測(cè)溫系統(tǒng),具有線路簡(jiǎn)單,在一根通信線,可以掛很多這樣的數(shù)字溫度計(jì),十分方便。

DS18B20產(chǎn)品的特點(diǎn)

〔1、只要求一個(gè)端口即可實(shí)現(xiàn)通信。

〔2、在DS18B20中的每個(gè)器件上都有獨(dú)一無(wú)二的序列號(hào)。

〔3、實(shí)際應(yīng)用中不需要外部任何元器件即可實(shí)現(xiàn)測(cè)溫。

〔4、測(cè)量溫度范圍在-55。C到+125。C之間。

〔5、數(shù)字溫度計(jì)的分辨率用戶可以從9位到12位選擇。

〔6、內(nèi)部有溫度上、下限告警設(shè)置。DS18B20的引腳介紹

TO-92封裝的DS18B20的引腳排列見圖1,其引腳功能描述見表1。DS18B20的使用方法

由于DS18B20采用的是1-Wire總線協(xié)議方式,即在一根數(shù)據(jù)線實(shí)現(xiàn)數(shù)據(jù)的雙向傳輸,而對(duì)AT89S51單片機(jī)來(lái)說(shuō),硬件上并不支持單總線協(xié)議,因此,我們必須采用軟件的方法來(lái)模擬單總線的協(xié)議時(shí)序來(lái)完成對(duì)DS18B20芯片的訪問。

由于DS18B20是在一根I/O線上讀寫數(shù)據(jù),因此,對(duì)讀寫的數(shù)據(jù)位有著嚴(yán)格的時(shí)序要求。DS18B20有嚴(yán)格的通信協(xié)議來(lái)保證各位數(shù)據(jù)傳輸?shù)恼_性和完整性。該協(xié)議定義了幾種信號(hào)的時(shí)序:初始化時(shí)序、讀時(shí)序、寫時(shí)序。所有時(shí)序都是將主機(jī)作為主設(shè)備,單總線器件作為從設(shè)備。而每一次命令和數(shù)據(jù)的傳輸都是從主機(jī)主動(dòng)啟動(dòng)寫時(shí)序開始,如果要求單總線器件回送數(shù)據(jù),在進(jìn)行寫命令后,主機(jī)需啟動(dòng)讀時(shí)序完成數(shù)據(jù)接收。數(shù)據(jù)和命令的傳輸都是低位在先。

DS18B20的復(fù)位時(shí)序DS18B20的讀時(shí)序

對(duì)于DS18B20的讀時(shí)序分為讀0時(shí)序和讀1時(shí)序兩個(gè)過程。

對(duì)于DS18B20的讀時(shí)隙是從主機(jī)把單總線拉低之后,在15秒之內(nèi)就得釋放單總線,以讓DS18B20把數(shù)據(jù)傳輸?shù)絾慰偩€上。DS18B20在完成一個(gè)讀時(shí)序過程,至少需要60us才能完成。DS18B20的寫時(shí)序

對(duì)于DS18B20的寫時(shí)序仍然分為寫0時(shí)序和寫1時(shí)序兩個(gè)過程。

對(duì)于DS18B20寫0時(shí)序和寫1時(shí)序的要求不同,當(dāng)要寫0時(shí)序時(shí),單總線要被拉低至少60us,保證DS18B20能夠在15us到45us之間能夠正確地采樣IO總線上的"0”電平,當(dāng)要寫1時(shí)序時(shí),單總線被拉低之后,在15us之內(nèi)就得釋放單總線。2.3MS12864R液晶屏簡(jiǎn)介MS12864R漢字圖形點(diǎn)陣液晶顯示模塊,可顯示漢字及圖形,內(nèi)置8192個(gè)中文漢字〔16X16點(diǎn)陣、128個(gè)字符〔8X16點(diǎn)陣及64X256點(diǎn)陣顯示RAM〔GDRAM。主要技術(shù)參數(shù)和顯示特性:電源:VDD3.3V~+5V<內(nèi)置升壓電路,無(wú)需負(fù)壓>;顯示內(nèi)容:128列×64行顯示顏色:黃綠顯示角度:6:00鐘直視LCD類型:STN與MCU接口:8位或4位并行/3位串行配置LED背光多種軟件功能:光標(biāo)顯示、畫面移位、自定義字符、睡眠模式等模塊引腳說(shuō)明MS128X64R引腳說(shuō)明引腳號(hào)引腳名稱方向功能說(shuō)明1VSS-模塊的電源地2VDD-模塊的電源正端3V0-LCD驅(qū)動(dòng)電壓輸入端4RS<CS>H/L并行的指令/數(shù)據(jù)選擇信號(hào);串行的片選信號(hào)5R/W<SID>H/L并行的讀寫選擇信號(hào);串行的數(shù)據(jù)口6E<CLK>H/L并行的使能信號(hào);串行的同步時(shí)鐘7DB0H/L數(shù)據(jù)08DB1H/L數(shù)據(jù)19DB2H/L數(shù)據(jù)210DB3H/L數(shù)據(jù)311DB4H/L數(shù)據(jù)412DB5H/L數(shù)據(jù)513DB6H/L數(shù)據(jù)614DB7H/L數(shù)據(jù)715PSBH/L并/串行接口選擇:H-并行;L-串行16NC空腳17/RETH/L復(fù)位低電平有效18VOUT19LED_K-背光源負(fù)極〔LED-OV20LED_A-背光源正極〔LED+5V邏輯工作電壓<VDD>:4.5~5.5V電源地<GND>:0V工作溫度<Ta>:0~60℃<常溫>/-20~75℃〔寬溫接口時(shí)序模塊有并行和串行兩種連接方法〔時(shí)序如下:8位并行連接時(shí)序圖MPU寫資料到模塊MPU從模塊讀出資料串行連接時(shí)序圖串行數(shù)據(jù)傳送共分三個(gè)字節(jié)完成:第一字節(jié):串口控制—格式11111ABCA為數(shù)據(jù)傳送方向控制:H表示數(shù)據(jù)從LCD到MCU,L表示數(shù)據(jù)從MCU到LCDB為數(shù)據(jù)類型選擇:H表示數(shù)據(jù)是顯示數(shù)據(jù),L表示數(shù)據(jù)是控制指令C固定為0第二字節(jié):<并行>8位數(shù)據(jù)的高4位—格式DDDD0000第三字節(jié):<并行>8位數(shù)據(jù)的低4位—格式0000DDDD串行接口時(shí)序參數(shù):<測(cè)試條件:T=25℃硬件設(shè)計(jì)3.1ARM7開發(fā)板硬件設(shè)計(jì)系統(tǒng)原理圖設(shè)計(jì)如圖3-1所示,ARM7LPC213系統(tǒng)實(shí)現(xiàn)如下功能:〔1控制溫度傳感器DS18B20讀取當(dāng)前溫度值;〔2控制ARM7內(nèi)部時(shí)鐘資源讀取時(shí)間和日期;〔3控制LCD液晶屏顯示當(dāng)前溫度、時(shí)間和日期;〔4控制LED溫度超限報(bào)警。圖3-1系統(tǒng)原理圖3.2LCD液晶屏顯示設(shè)計(jì):LCD液晶屏顯示電路如圖3-2所示。該液晶可實(shí)現(xiàn)顯示當(dāng)前年、月、日、周、時(shí)、分秒和溫度值,具體控制和實(shí)現(xiàn)方法如下:〔1ARM7的P0.0-P0.7口連接液晶屏的DBO-DB7,控制對(duì)液晶屏并行數(shù)據(jù)讀和寫;〔2ARM7的P0.8口連接液晶屏的RS口,控制并行的指令/數(shù)據(jù)選擇信號(hào);〔3ARM7的P0.9口連接液晶屏的R/W口,控制并行的讀寫選擇信號(hào);〔4ARM7的P0.10口連接液晶屏的EN口,控制并行的使能信號(hào);;〔5ARM7的P0.11口連接液晶屏的PSB口,控制并/串行接口選擇:H-并行;L-串行;〔6ARM7的P0.12口連接液晶屏的RET口,實(shí)現(xiàn)對(duì)液晶屏的復(fù)位,低電平有效;圖3-2LCD液晶屏電路圖3.3DS18B20溫度傳感器的設(shè)計(jì)電路如圖3-3所示,該溫度傳感器電路可實(shí)現(xiàn)對(duì)溫度傳感器DS18B20數(shù)據(jù)的讀寫,具體控制方法如下:ARM7的P0.30口連接DS18B20的DQ口,控制串行數(shù)據(jù)的讀和寫;DS18B20的VDD連接到ARM7開發(fā)板的VDD上;DS18B20的GND連接到ARM7開發(fā)板的GND上;圖3-3溫度傳感器電路4系統(tǒng)的軟件設(shè)計(jì)4.1系統(tǒng)主流程圖圖4-1為系統(tǒng)主流程圖,主流程圖具體介紹如下:〔1系統(tǒng)初始化包括對(duì)DS18B20進(jìn)行初始化、設(shè)定GPIO、RTC初始化、液晶屏初始化;〔2初始化之后顯示當(dāng)前室內(nèi)溫度同時(shí)顯示日期和時(shí)間;〔3與此同時(shí)進(jìn)行按鍵判斷,如果有按鍵繼續(xù)判斷是什么按鍵,如果是修改時(shí)間按鍵那么修改時(shí)間;如果是修改日期按鍵那么修改日期。如沒有按鍵按下,那么判斷室內(nèi)溫度是否超過預(yù)先設(shè)定值,如果超過驅(qū)動(dòng)LED閃爍報(bào)警。開始開始系統(tǒng)初始化顯示時(shí)間、日期、溫度有按鍵?NYNY修改年?修改年值NY修改月?修改月值NY修改日?修改日值NY修改周?修改周值NY修改時(shí)?修改時(shí)值NY修改分?修改分值溫度超過限?YNLED閃爍報(bào)警圖4-1系統(tǒng)主流程圖4.2溫度傳感器功能模塊圖4-2為溫度傳感器功能模塊流程圖;開始開始初始化溫度傳感器向溫度傳感器寫指令讀取溫度傳感器數(shù)據(jù)數(shù)據(jù)轉(zhuǎn)化為溫度顯示結(jié)束圖4-2溫度傳感器功能模塊流程圖4.3液晶顯示功能模塊圖4-3為液晶顯示功能模塊流程圖;開始開始LCD初始化寫命令到LCD寫數(shù)據(jù)到LCD顯示圖4-3液晶顯示功能模塊流程圖5總結(jié)本系統(tǒng)利用控制芯片、溫度傳感器、LCD液晶屏、LED等分別實(shí)現(xiàn):〔1實(shí)時(shí)顯示當(dāng)前室內(nèi)溫度〔2顯示年、月、日、星期、時(shí)、分、秒;〔3能夠通過鍵盤輸入日期和時(shí)間的初值;〔4溫度超限報(bào)警;系統(tǒng)設(shè)計(jì)簡(jiǎn)便、實(shí)用性強(qiáng)、操作簡(jiǎn)單、程序設(shè)計(jì)簡(jiǎn)便。系統(tǒng)不足:時(shí)間和日期初值設(shè)定中利用按鍵較多,此外還沒有充分考慮到溫度超限報(bào)警的多變性,溫度報(bào)警上限不可調(diào)節(jié),只能預(yù)先程序中設(shè)定超限報(bào)警溫度值。一周的綜合電子工藝課程設(shè)計(jì)結(jié)束了,可能在別人看來(lái),這或許只是一個(gè)小的設(shè)計(jì),可是它給于我的卻不僅僅是這樣,認(rèn)真的做課程設(shè)計(jì),運(yùn)用ARM做一個(gè)系統(tǒng)的東西,我從心里給予了足夠的重視。剛開始做總是出問題,多次重新分析,從細(xì)節(jié)著手尋找問題,最后找到了。發(fā)現(xiàn)自己想象的太多、太復(fù)雜,實(shí)際上只需要很簡(jiǎn)單的一種方法就可以的,問題解決了,也給我很多收獲。我覺得自己的方法不可行,關(guān)鍵的原因在于自己對(duì)ARM的工作原理沒有透徹的理解,所以就不能很好的理解老師的設(shè)計(jì)要求,結(jié)果就造成了很多的彎路,找不到一種合理的途徑去解決問題。希望以后有機(jī)會(huì)可以多做一些這樣的設(shè)計(jì),增強(qiáng)自己的設(shè)計(jì)意識(shí),加深所學(xué)的知識(shí)。參考文獻(xiàn)[1]郁有文傳.感器原理及工程應(yīng)用〔第三版.XX電子科技出版社,2008.7[2]閻石.數(shù)字電子技術(shù)基礎(chǔ)〔第四版.高等教育出版社,1998.11[3]周立功.ARM嵌入式系統(tǒng)基礎(chǔ)教程〔第二版.北京航空航天大學(xué)出版社,2008.9[4]汪建軍.基于非平衡電橋的電阻數(shù)字溫度計(jì)設(shè)計(jì)[J].XX萬(wàn)里學(xué)院學(xué)報(bào),2009[5]老虎工作室.電路設(shè)計(jì)與制板protel99se典型實(shí)例.人民郵電出版社[6]宋文緒、楊帆.傳感器與檢測(cè)技術(shù)[M].高等教育出版社,2004:附錄A/***********************************************************************************描述:**〔1此程序所有延時(shí)采用定時(shí)器做〔2開發(fā)板上的P0.30口連接溫度傳感器DQ口線〔3開發(fā)板上P0.0-P0.7口連接液晶屏的DBO-DB7,其他液晶口線連接詳見程序中宏定義〔4如需液晶顯示的更清楚,需在液晶屏上加10K電位器,調(diào)節(jié)液晶屏輸入?yún)⒖茧妷?********************************************************************************/#include<LPC213X.H>#defineeq1<<30#defineuint8unsignedchar#defineFpclk11059200#definekey11<<16#definekey21<<17#definekey31<<18#definekey41<<19#definekey51<<20#definekey61<<21intnn=0,yy=0,rr=0,zz=0,ss=0,ff=0,mm=0;/*******************定義與LCD相關(guān)的宏*******************/#defineLCD_DATA0xFF#defineLCD_DI1<<8//與p0.8對(duì)應(yīng)#defineLCD_RW1<<9//與p0.9對(duì)應(yīng)#defineLCD_EN1<<10//與p0.10對(duì)應(yīng).#defineLCD_PSB1<<11//與p0.11對(duì)應(yīng)//電路直接拉高#defineLCD_RST1<<12//與p0.12對(duì)應(yīng)//上電自動(dòng)復(fù)位,一般也可以不接*#defineclear_screen0x01#definereset_address0x02#defineset_point0x06//0000_0110#definedisplay_set0x0c//顯示設(shè)定#definecursor_shift_control0x1c//0001_1100#definefunction_set0x30//功能設(shè)定基本指令集#definefunction_set_ext0x36//功能設(shè)定擴(kuò)充指令集繪圖開//#defineset_CGRAM_ADD#defineset_DDRAM_ADD0x80//#definewrite_data_intenalRAMunsignedchardigit[10]={"0123456789"};//定義字符數(shù)組顯示數(shù)字voiddelay1u<unsignedlongt>{T1PR=0x00000000;//LoadprescalerT1TCR=0x00000003;//ResetcounterandprescalerT1MCR=0x00000003;//OnmatchresetthecounterandgenerateaninterruptT1MR0=t*0x0f;//SetthecycletimeT1TCR=0x00000001;//enabletimerwhile<<T1IR&0x01>==0>;T1IR=0x01;T1TCR=0x00000000;}/******************************************************************************************************************************************************************************************************************//******************************************************************************************************************************************************************************************************************/voidLCD_DATA_input<>{IO0DIR=IO0DIR&<~LCD_DATA>;//把設(shè)定為輸入}/******************************************************************************************************************************************************************************************************************/voidLCD_DATA_output<>{IO0DIR=IO0DIR|LCD_DATA;//設(shè)定為輸出}/******************************************************************************************************************************************************************************************************************/voidCheckState<> //狀態(tài)檢查,LCD是否忙?{delay1u<200>;//while<read_instruct<>>;}/********************************************************************************************************//***********************************************************************************************************函數(shù)名稱:GPIO_Init<>***函數(shù)功能:初始化IO端口,包含一個(gè)uart0,三個(gè)按鍵輸入,以及幾個(gè)普通的輸入輸出端口.***入口參數(shù):無(wú)***出口參數(shù):無(wú)**********************************************************************************************************//*voidGPIO_init<>{PINSEL0=0;IO0DIR=0xFF<<8; }*//***********************************************************************************************************函數(shù)名稱:w_data<unsignedchardata_Lcm>***函數(shù)功能:給LCD發(fā)送數(shù)據(jù)或者命令.***入口參數(shù):data_Lcm***出口參數(shù):無(wú)**********************************************************************************************************/voidW_data<uint8data_Lcm>{ CheckState<>; LCD_DATA_output<>; IO0SET=LCD_DI; IO0CLR=LCD_RW;IO0CLR=0xFF; IO0SET=data_Lcm; IO0SET=LCD_EN; IO0CLR=LCD_EN;}/***********************************************************************************************************函數(shù)名稱:***函數(shù)功能:***入口參數(shù):***出口參數(shù):**********************************************************************************************************/voidW_instruct<uint8data_Lcm>{ CheckState<>; LCD_DATA_output<>; IO0CLR=LCD_DI; IO0CLR=LCD_RW; IO0CLR=0xFF; IO0SET=data_Lcm; IO0SET=LCD_EN; IO0CLR=LCD_EN;}/***********************************************************************************************************函數(shù)名稱LCD_Init<>***函數(shù)功能:初始化lcd顯示屏***入口參數(shù):無(wú)***出口參數(shù):無(wú)**********************************************************************************************************/voidinit_lcd<void>{ IO0SET=LCD_RST; IO0CLR=LCD_RST; IO0SET=LCD_RST; IO0SET=LCD_PSB; IO0SET=LCD_PSB; W_instruct<function_set>; W_instruct<display_set>; W_instruct<clear_screen>; W_instruct<reset_address>; W_instruct<set_DDRAM_ADD>; }/***********************************************************************************************************函數(shù)名稱:***函數(shù)功能:寫漢字到LCDx_add顯示RAM的地址dat1/dat2顯示漢字編碼指定的位置***入口參數(shù):***出口參數(shù):**********************************************************************************************************//*voiddisplay<uint8x_add,uint8dat1,uint8dat2>{W_instruct<x_add>;//1xxx,xxxx到地址計(jì)數(shù)器ACW_data<dat1>;W_data<dat2>;}*//********************************************************************************************************//*********************************************************************************/voidwrite<unsignedchardate>{unsignedchari=0;for<i=8;i>0;i-->{IO0DIR|=eq;//改回輸出 IO0SET|=eq; delay1u<2>;IO0CLR=eq;if<date&0x01>{IO0SET|=eq;//釋放總線 delay1u<80>;}else{IO0CLR=eq; delay1u<80>;}delay1u<30>;IO0SET|=eq;delay1u<3>;date>>=1;}delay1u<6>;}unsignedcharread<>{unsignedchari=0;unsignedchardate=0;for<i=8;i>0;i-->{date>>=1;IO0DIR|=eq;//改回輸出 IO0SET|=eq; delay1u<2>;IO0CLR=eq;//給脈沖信號(hào)delay1u<2>; IO0SET|=eq; delay1u<13>;IO0DIR=IO0DIR&0xBFFFFFFF;//拉高總線輸入delay1u<12>;if<IO0PIN&eq>date|=0x80;delay1u<3>;}returndate;}unsignedcharinnit<>{unsignedcharnum;IO0DIR|=eq;//稍做延時(shí)IO0CLR=eq;//將DQ拉低delay1u<600>;//精確延時(shí)大于480us480IO0SET=eq;delay1u<30>;IO0DIR&=0xBFFFFFFF;//拉高總線輸入delay1u<30>;if<<IO0PIN&eq>==0>{num=0;}else{num=1;}IO0SET=num;delay1u<200>;//300returnnum;}voidzhun<>{innit<>;write<0xCC>;write<0x44>; delay1u<900000>; innit<>; write<0xCC>; write<0xBE>;}voiddisplay_temp1<unsignedcharx>{inti;unsignedchara,b,c;//j,k,l分別儲(chǔ)存溫度的百位、十位和個(gè)位unsignedchark[9]={"溫度是:"}; unsignedcharl[16]=<"數(shù)字溫度計(jì)姚--連">; W_instruct<0x88>; for<i=0;i<9;i++> W_data<k[i]>; W_instruct<0x98>;for<i=0;i<16;i++> W_data<l[i]>; a=x/100;//取百位 b=<x%100>/10;//取十位 c=x%10;//取個(gè)位 W_instruct<0x8C>;//寫顯示地址,將在第2行第7列開始顯示 W_data<digit[a]>;//將百位數(shù)字的字符常量寫入LCDW_data<digit[b]>;//將十位數(shù)字的字符常量寫入LCDW_data<digit[c]>;//將個(gè)位數(shù)字的字符常量寫入LCDdelay1u<100>;//延時(shí)1ms給硬件一點(diǎn)反應(yīng)時(shí)間}voiddisplay_temp2<unsignedcharx>{unsignedchart[]={"℃"} ;//寫顯示地址,將在第2行第11列開始顯示W(wǎng)_data<'.'>;W_data<digit[x]>;//將小數(shù)部分的第一位數(shù)字字符常量寫入LCDW_instruct<0x8F>;W_data<t[0]>; W_data<t[1]>; W_data<t[2]>;delay1u<100>;//延時(shí)1ms給硬件一點(diǎn)反應(yīng)時(shí)間}/**********************************************************************************************************函數(shù)名稱:RTCInit<>**函數(shù)功能:初始化實(shí)時(shí)時(shí)鐘**入口參數(shù):無(wú)**出口參數(shù):無(wú)********************************************************************************************************/voidRTCInit<void>{ PREINT=Fpclk/32768-1; //設(shè)置基準(zhǔn)時(shí)鐘分頻器 PREFRAC=Fpclk-<Fpclk/32768>*32768; CCR=0x00; //禁止時(shí)間計(jì)數(shù)器 YEAR=2008+nn; MONTH=04+yy; DOM=01+rr; DOW=4+zz; HOUR=8+ss; MIN=30+ff; SEC=59+mm; CIIR=0x01; //設(shè)置秒值的增量產(chǎn)生1次中斷 CCR=0x01; //啟動(dòng)RTC}/**********************************************************************************************************函數(shù)名稱:SendTimeRtc<>**函數(shù)功能:讀取RTC的時(shí)間值,并將讀出的時(shí)分秒值通過串口送到上位機(jī)顯示。**入口參數(shù):無(wú)**出口參數(shù):無(wú)********************************************************************************************************/voidSendTimeRtc<void>{unsignedchara,b,c,d; intdatas; inttimes;intbak;unsignedchart[]={"年"}; unsignedchars[]={"月"}; unsignedcharr[]={"日"}; unsignedcharm[]={"周"}; unsignedcharn[]={"時(shí)"}; unsignedcharp[]={"分"}; unsignedcharq[]={"秒"}; times=CTIME0; //讀取完整的時(shí)鐘寄存器 datas=CTIME1;W_instruct<0x80>;W_data<0x02>; //顯示笑臉 W_data<0x02>; //顯示笑臉 bak=<datas>>16>&0xfff; //獲取年a=bak/1000; bak=bak%1000;b=bak/100;bak=bak%100;c=bak/10;d=bak%10; W_instruct<0x81>; W_data<digit[a]>;//將千位數(shù)字的字符常量寫入LCDW_data<digit[b]>;//將百位數(shù)字的字符常量寫入LCDW_data<digit[c]>;//將十位數(shù)字的字符常量寫入LCDW_data<digit[d]>;//將個(gè)位數(shù)字的字符常量寫入LCDW_instruct<0x83>;W_data<t[0]>; W_data<t[1]>; bak=<datas>>8>&0x0f; //獲取月a=bak/10;b=bak%10; W_instruct<0x84>; W

溫馨提示

  • 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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 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)論