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

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

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

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

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

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

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

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

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

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

對(duì)于DS18B20寫(xiě)0時(shí)序和寫(xiě)1時(shí)序的要求不同,當(dāng)要寫(xiě)0時(shí)序時(shí),單總線(xiàn)要被拉低至少60us,保證DS18B20能夠在15us到45us之間能夠正確地采樣IO總線(xiàn)上的“0”電平,當(dāng)要寫(xiě)1時(shí)序時(shí),單總線(xiàn)被拉低之后,在15us之內(nèi)就得釋放單總線(xiàn)。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類(lèi)型:STN與MCU接口:8位或4位并行/3位串行配置LED背光多種軟件功能:光標(biāo)顯示、畫(huà)面移位、自定義字符、睡眠模式等模塊引腳說(shuō)明MS128X64R引腳說(shuō)明引腳號(hào)引腳名稱(chēng)方向功能說(shuō)明1VSS-模塊的電源地2VDD-模塊的電源正端3V0-LCD驅(qū)動(dòng)電壓輸入端4RS(CS)H/L并行的指令/數(shù)據(jù)選擇信號(hào);串行的片選信號(hào)5R/W(SID)H/L并行的讀寫(xiě)選擇信號(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-OV〕20LED_A-背光源正極〔LED+5V〕邏輯工作電壓(VDD):4.5~5.5V電源地(GND):0V工作溫度(Ta):0~60℃(常溫)/-20~75℃〔寬溫〕接口時(shí)序模塊有并行和串行兩種連接方法〔時(shí)序如下〕:8位并行連接時(shí)序圖MPU寫(xiě)資料到模塊MPU從模塊讀出資料串行連接時(shí)序圖串行數(shù)據(jù)傳送共分三個(gè)字節(jié)完成:第一字節(jié):串口控制—格式11111ABCA為數(shù)據(jù)傳送方向控制:H表示數(shù)據(jù)從LCD到MCU,L表示數(shù)據(jù)從MCU到LCDB為數(shù)據(jù)類(lèi)型選擇: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開(kāi)發(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)方法如下:〔1〕ARM7的P0.0-P0.7口連接液晶屏的DBO-DB7,控制對(duì)液晶屏并行數(shù)據(jù)讀和寫(xiě);〔2〕ARM7的P0.8口連接液晶屏的RS口,控制并行的指令/數(shù)據(jù)選擇信號(hào);〔3〕ARM7的P0.9口連接液晶屏的R/W口,控制并行的讀寫(xiě)選擇信號(hào);〔4〕ARM7的P0.10口連接液晶屏的EN口,控制并行的使能信號(hào);;〔5〕ARM7的P0.11口連接液晶屏的PSB口,控制并/串行接口選擇:H-并行;L-串行;〔6〕ARM7的P0.12口連接液晶屏的RET口,實(shí)現(xiàn)對(duì)液晶屏的復(fù)位,低電平有效;圖3-2LCD液晶屏電路圖3.3DS18B20溫度傳感器的設(shè)計(jì)電路如圖3-3所示,該溫度傳感器電路可實(shí)現(xiàn)對(duì)溫度傳感器DS18B20數(shù)據(jù)的讀寫(xiě),具體控制方法如下:ARM7的P0.30口連接DS18B20的DQ口,控制串行數(shù)據(jù)的讀和寫(xiě);DS18B20的VDD連接到ARM7開(kāi)發(fā)板的VDD上;DS18B20的GND連接到ARM7開(kāi)發(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í)間;如果是修改日期按鍵那么修改日期。如沒(méi)有按鍵按下,那么判斷室內(nèi)溫度是否超過(guò)預(yù)先設(shè)定值,如果超過(guò)驅(qū)動(dòng)LED閃爍報(bào)警。開(kāi)場(chǎng)開(kāi)場(chǎng)系統(tǒng)初始化顯示時(shí)間、日期、溫度有按鍵NYNY修改年修改年值NY修改月修改月值NY修改日修改日值NY修改周修改周值NY修改時(shí)修改時(shí)值NY修改分修改分值溫度超過(guò)限YNLED閃爍報(bào)警圖4-1系統(tǒng)主流程圖4.2溫度傳感器功能模塊圖4-2為溫度傳感器功能模塊流程圖;開(kāi)場(chǎng)開(kāi)場(chǎng)初始化溫度傳感器向溫度傳感器寫(xiě)指令讀取溫度傳感器數(shù)據(jù)數(shù)據(jù)轉(zhuǎn)化為溫度顯示完畢圖4-2溫度傳感器功能模塊流程圖4.3液晶顯示功能模塊圖4-3為液晶顯示功能模塊流程圖;開(kāi)場(chǎng)開(kāi)場(chǎng)LCD初始化寫(xiě)命令到LCD寫(xiě)數(shù)據(jù)到LCD顯示圖4-3液晶顯示功能模塊流程圖5總結(jié)本系統(tǒng)利用控制芯片、溫度傳感器、LCD液晶屏、LED等分別實(shí)現(xiàn):〔1〕實(shí)時(shí)顯示當(dāng)前室內(nèi)溫度〔2〕顯示年、月、日、星期、時(shí)、分、秒;〔3〕能夠通過(guò)鍵盤(pán)輸入日期和時(shí)間的初值;〔4〕溫度超限報(bào)警;系統(tǒng)設(shè)計(jì)簡(jiǎn)便、實(shí)用性強(qiáng)、操作簡(jiǎn)單、程序設(shè)計(jì)簡(jiǎn)便。系統(tǒng)缺乏:時(shí)間和日期初值設(shè)定中利用按鍵較多,此外還沒(méi)有充分考慮到溫度超限報(bào)警的多變性,溫度報(bào)警上限不可調(diào)節(jié),只能預(yù)先程序中設(shè)定超限報(bào)警溫度值。一周的綜合電子工藝課程設(shè)計(jì)完畢了,可能在別人看來(lái),這或許只是一個(gè)小的設(shè)計(jì),可是它給于我的卻不僅僅是這樣,認(rèn)真的做課程設(shè)計(jì),運(yùn)用ARM做一個(gè)系統(tǒng)的東西,我從心里給予了足夠的重視。剛開(kāi)場(chǎng)做總是出問(wèn)題,屢次重新分析,從細(xì)節(jié)著手尋找問(wèn)題,最后找到了。發(fā)現(xiàn)自己想象的太多、太復(fù)雜,實(shí)際上只需要很簡(jiǎn)單的一種方法就可以的,問(wèn)題解決了,也給我很多收獲。我覺(jué)得自己的方法不可行,關(guān)鍵的原因在于自己對(duì)ARM的工作原理沒(méi)有透徹的理解,所以就不能很好的理解教師的設(shè)計(jì)要求,結(jié)果就造成了很多的彎路,找不到一種合理的途徑去解決問(wèn)題。希望以后有時(shí)機(jī)可以多做一些這樣的設(shè)計(jì),增強(qiáng)自己的設(shè)計(jì)意識(shí),加深所學(xué)的知識(shí)。參考文獻(xiàn)[1]郁有文傳.感器原理及工程應(yīng)用〔第三版〕.西安電子科技出版社,2008.7[2]閻石.數(shù)字電子技術(shù)根基〔第四版〕.高等教育出版社,1998.11[3]周立功.ARM嵌入式系統(tǒng)根基教程〔第二版〕.北京航空航天大學(xué)出版社,2008.9[4]汪建軍.基于非平衡電橋的電阻數(shù)字溫度計(jì)設(shè)計(jì)[J].浙江萬(wàn)里學(xué)院學(xué)報(bào),2009[5]老虎工作室.電路設(shè)計(jì)與制板protel99se典型實(shí)例.人民郵電出版社[6]宋文緒、楊帆.傳感器與檢測(cè)技術(shù)[M].高等教育出版社,2004:附錄A/***********************************************************************************描述:**〔1〕此程序所有延時(shí)采用定時(shí)器做〔2〕開(kāi)發(fā)板上的P0.30口連接溫度傳感器DQ口線(xiàn)〔3〕開(kāi)發(fā)板上P0.0-P0.7口連接液晶屏的DBO-DB7,其他液晶口線(xiàn)連接詳見(jiàn)程序中宏定義〔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ò)大指令集繪圖開(kāi)//#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);//把p1.16-p1.23設(shè)定為輸入}/******************************************************************************************************************************************************************************************************************/voidLCD_DATA_output(){IO0DIR=IO0DIR|LCD_DATA;//設(shè)定p0.0-p0.7為輸出}/******************************************************************************************************************************************************************************************************************/voidCheckState() //狀態(tài)檢查,LCD是否忙{delay1u(200);//while(read_instruct());}/********************************************************************************************************//***********************************************************************************************************函數(shù)名稱(chēng):GPIO_Init()***函數(shù)功能:初始化IO端口,包含一個(gè)uart0,三個(gè)按鍵輸入,以及幾個(gè)普通的輸入輸出端口.***入口參數(shù):無(wú)***出口參數(shù):無(wú)**********************************************************************************************************//*voidGPIO_init(){PINSEL0=0;IO0DIR=0xFF<<8; }*//***********************************************************************************************************函數(shù)名稱(chēng):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ù)名稱(chēng):***函數(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ù)名稱(chēng)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ù)名稱(chēng):***函數(shù)功能:寫(xiě)漢字到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;//釋放總線(xiàn) 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;//拉高總線(xiàn)輸入delay1u(12);if(IO0PIN&eq)date|=0x80;delay1u(3);}returndate;}unsignedcharinnit(){unsignedcharnum;IO0DIR|=eq;//稍做延時(shí)IO0CLR=eq;//將DQ拉低delay1u(600);//準(zhǔn)確延時(shí)大于480us480IO0SET=eq;delay1u(30);IO0DIR&=0xBFFFFFFF;//拉高總線(xiàn)輸入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);//寫(xiě)顯示地址,將在第2行第7列開(kāi)場(chǎng)顯示 W_data(digit[a]);//將百位數(shù)字的字符常量寫(xiě)入LCDW_data(digit[b]);//將十位數(shù)字的字符常量寫(xiě)入LCDW_data(digit[c]);//將個(gè)位數(shù)字的字符常量寫(xiě)入LCDdelay1u(100);//延時(shí)1ms給硬件一點(diǎn)反響時(shí)間}voiddisplay_temp2(unsignedcharx){unsignedchart[]={"℃"} ;//寫(xiě)顯示地址,將在第2行第11列開(kāi)場(chǎng)顯示W(wǎng)_data('.');W_data(digit[x]);//將小數(shù)局部的第一位數(shù)字字符常量寫(xiě)入LCDW_instruct(0x8F);W_data(t[0]); W_data(t[1]); W_data(t[2]);delay1u(100);//延時(shí)1ms給硬件一點(diǎn)反響時(shí)間}/**********************************************************************************************************函數(shù)名稱(chēng):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ù)名稱(chēng):SendTimeRtc()**函數(shù)功能:讀取RTC的時(shí)間值,并將讀出的時(shí)分秒值通過(guò)串口送到上位機(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ù)字的字符常量寫(xiě)入LCDW_data(digit[b]);//將百位數(shù)字的字符常量寫(xiě)入LCDW_data(digit[c]);//將十位數(shù)字的字符常量寫(xiě)入LCDW_data(digit[d]);//將個(gè)位數(shù)字的字符常量寫(xiě)入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_data(digit[a]);

溫馨提示

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