版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、<p> 本科畢業(yè)設(shè)計(jì)(論文)</p><p> 題 目:基于SPI總線的數(shù)字電子萬年歷的仿真設(shè)計(jì) </p><p> 作 者: </p><p> 二級(jí)學(xué)院: 電子與信息工程學(xué)院 &
2、lt;/p><p> 專業(yè)班級(jí): 電氣工程及其自動(dòng)化(2)班 </p><p> 指導(dǎo)教師: </p><p> 職 稱: 高工,講師 </p><p> 2015 年 6 月
3、10 日</p><p><b> 摘要</b></p><p> 本次設(shè)計(jì)的課題主要內(nèi)容是多功能數(shù)字電子萬年歷,由于當(dāng)今社會(huì)的飛速發(fā)展,單一的電子時(shí)鐘已經(jīng)無法滿足人們的日常生活。因此發(fā)明一種多功能數(shù)字電子萬年歷的是一種必然的走向。而本人設(shè)計(jì)的數(shù)字萬年歷是以AT89C51單片機(jī)為中心,通過DS1302時(shí)鐘芯片等輔助芯片來實(shí)現(xiàn)在LCD上顯示年份、月份、日期、星期、小
4、時(shí)、分鐘、秒,以及實(shí)時(shí)溫度的顯示。該電子萬年歷通過4個(gè)按鍵來調(diào)節(jié)日期與時(shí)間,通過以軟件編程的方式來完成以上各項(xiàng)功能。而這樣設(shè)計(jì)的數(shù)字電子萬年歷具有成本低廉,使用簡單,功能齊全,基本符合當(dāng)代人的生活需求。</p><p> 關(guān)鍵詞:電子時(shí)鐘;AT89C51單片機(jī);輔助芯片;軟件編程</p><p><b> ABSTRACT</b></p><p
5、> The main subject of the contents of this design is versatile digital electronic calendar, due to the rapid development of today's society, a single electronic clock has been unable to meet people's daily li
6、ves. Therefore, the emergence of multi-function digital electronic calendar is inevitable. And I designed the electronic calendar is based on AT89C51 microcontroller as the core, through the DS1302 clock chip and other a
7、uxiliary chip to achieve is displayed on the LCD the year, month, day, wee</p><p> Keywords: electronic clock; AT89C51 single chip; chip; software programming</p><p><b> 目錄</b><
8、/p><p><b> 1. 緒論1</b></p><p><b> 2. 系統(tǒng)概述2</b></p><p> 2.1. 硬件簡述2</p><p> 2.2. 軟件概述2</p><p> 3. 系統(tǒng)方案選擇及論證3</p><p&g
9、t; 3.1. 各項(xiàng)模塊的方案選擇3</p><p> 3.1.1. 單片機(jī)型號(hào)的選擇及論證3</p><p> 3.1.2. 時(shí)鐘芯片的方案選擇及論證3</p><p> 3.1.3. 溫度傳感器的方案選擇及論證4</p><p> 3.1.4. 顯示模塊的方案選擇及論證4</p><p> 3
10、.2. 總體方案的確定4</p><p> 4. 系統(tǒng)硬件電路的設(shè)計(jì)5</p><p> 4.1. 系統(tǒng)硬件功能及原理介紹5</p><p> 4.1.1. AT89C51單片機(jī)的功能及原理5</p><p> 4.1.2. DS1302時(shí)鐘芯片的功能及原理8</p><p> 4.1.3. DS1
11、8B20溫度傳感器的功能及原理8</p><p> 4.1.4. LCD1602液晶顯示屏的功能及原理9</p><p> 4.2. 主要模塊電路設(shè)計(jì)9</p><p> 4.2.1. 單片機(jī)主控制模塊設(shè)計(jì)10</p><p> 4.2.2. 時(shí)鐘芯片模塊的設(shè)計(jì)10</p><p> 4.2.3.
12、溫度傳感器模塊的設(shè)計(jì)11</p><p> 4.2.4. 顯示模塊的設(shè)計(jì)11</p><p> 4.2.5. 鍵盤模塊的設(shè)計(jì)12</p><p> 4.3. 系統(tǒng)電路的仿真12</p><p> 5. 系統(tǒng)程序的設(shè)計(jì)14</p><p> 5.1. LCD1602的程序設(shè)計(jì)15</p>
13、<p> 5.2. DS1302程序設(shè)計(jì)16</p><p> 5.3. DS18B20程序設(shè)計(jì)17</p><p> 6. 軟件和硬件的結(jié)合調(diào)試18</p><p> 6.1. 硬件的調(diào)試18</p><p> 6.2. 軟件的調(diào)試18</p><p> 6.3. 軟件與硬件的結(jié)合
14、調(diào)試19</p><p><b> 結(jié)論20</b></p><p><b> 致謝21</b></p><p><b> 參考文獻(xiàn)22</b></p><p> 附錄一:仿真圖23</p><p> 附錄二:程序源代碼24<
15、/p><p><b> 緒論</b></p><p> 從古至今,人們?yōu)榱擞涗洉r(shí)間,從觀察天象到在器具上刻線,以及到后來出現(xiàn)的萬年歷,可謂是歷史悠久。而在我國,相傳萬年歷的出現(xiàn)是在1000多年以前的商朝,是一個(gè)叫做萬年的人所創(chuàng)造的。后人為了紀(jì)念他,所以將這種歷法成為“萬年歷”。實(shí)際上萬年歷是以一個(gè)特定的歷法的推算法則為基礎(chǔ)的,用來編排年、月、日、節(jié)氣等信息,做為人們查
16、閱的工具書,而且這個(gè)偉大的文化也因此成就了人類。</p><p> 如今隨著世界上的現(xiàn)代科技的神速發(fā)展,尤其突出的是現(xiàn)代的電子行業(yè)方面的的發(fā)展,給人們的生活帶來了根本性的變化,從而在人們的生活中出現(xiàn)了很多的電子產(chǎn)品,而這些都是以單片機(jī)為基礎(chǔ)的。萬年歷也從傳統(tǒng)的紙質(zhì)萬年歷升級(jí)為現(xiàn)在的數(shù)字電子萬年歷,所謂的電子萬年歷即是以計(jì)算機(jī)等電子產(chǎn)品的方式出現(xiàn)的萬年歷。數(shù)字電子萬年歷的出現(xiàn)極大的方便了人們的日常生活,并且飛速的
17、被應(yīng)用于車站、工廠、餐廳、學(xué)校、劇院等工作娛樂場所,并、而且越來越受人們的青睞。但是,伴隨著電子行業(yè)的爆炸性發(fā)展,單一的電子日歷已經(jīng)不能再滿足人們的日常生活需求了。并且使用電子萬年歷的人們希望該產(chǎn)品有一個(gè)多功能的集合,比如加上時(shí)鐘、鬧鐘以及溫度等來取得更為巨大的便利,而所有的這些,又全是以數(shù)字化的電子時(shí)鐘為基礎(chǔ)的。因此,加強(qiáng)實(shí)際的電子日歷及其擴(kuò)展應(yīng)用的研究,具有非常重要的意義,而且具有很大的實(shí)用價(jià)值。</p><p&
18、gt; 本次設(shè)計(jì)介紹的數(shù)字萬年歷是結(jié)合了程序和電路圖來進(jìn)行的。電路圖的主要構(gòu)成都有單片機(jī)AT89C51,時(shí)鐘芯片DS1302、溫度傳感器DS18B20、鬧鐘電路以及控制電路等其他一些輔助電路,在LCD上不僅顯示出公歷的年份、月份、日期,而且能夠顯示星期、小時(shí)、分鐘、秒數(shù)以及當(dāng)時(shí)附近的溫度。讓此萬年歷能夠及時(shí)的將這些信息反饋給用戶,以便用戶進(jìn)行各項(xiàng)工作。而軟件部分則是以C語言進(jìn)行編程,通過單片機(jī)將指令發(fā)送到各項(xiàng)電路中去,以實(shí)現(xiàn)萬年歷功能
19、的正常運(yùn)行,并且使其具有自我調(diào)節(jié)功能。而且通過C語言進(jìn)行編程的好處是可以隨時(shí)的根據(jù)不同需求對此萬年歷進(jìn)行細(xì)微的調(diào)節(jié),讓此萬年歷具有顯示其他的一些信息。并且C語言相對于匯編語言來說也具有編寫簡單,易于理解的優(yōu)點(diǎn),便于用戶進(jìn)行學(xué)習(xí)與改寫。</p><p><b> 系統(tǒng)概述</b></p><p><b> 硬件簡述</b></p>
20、<p> 本文設(shè)計(jì)的數(shù)字電子萬年歷是以AT89C51單片機(jī)作為CPU(Central Processing Unit,計(jì)算機(jī)中央處理器),構(gòu)成了以單片機(jī)為核心來控制整個(gè)電路。并且結(jié)合了時(shí)鐘芯片DS1302,使其不僅顯示出公歷的年份、月份、日期,而且能夠顯示星期、小時(shí)、分鐘、秒數(shù)等信息,并且能夠自我調(diào)節(jié)和具有去電保存功能。而且在此基礎(chǔ)上另外加上一個(gè)溫度傳感器DS18B20,能夠監(jiān)測到附近的實(shí)時(shí)溫度,并且在LCD上顯示出來。并
21、且此系統(tǒng)通過4個(gè)按鍵對整個(gè)系統(tǒng)進(jìn)行基本的調(diào)節(jié),按鍵分別為控制鍵,加“1”鍵,減“1”鍵,退出鍵組成??傮w方案圖如圖2-1所示。</p><p> 圖2-1 總體方案圖</p><p><b> 軟件概述 </b></p><p> 該系統(tǒng)通過C語言的編寫來實(shí)現(xiàn)以上各項(xiàng)功能,C語言具有撰寫簡單,易于修改的特點(diǎn)。在數(shù)字電子日歷中,包括鬧鈴程
22、序,時(shí)鐘計(jì)時(shí)程序,液晶顯示程序等。并且可以通過軟件燒錄進(jìn)單片機(jī)之中,對時(shí)鐘芯片DS1302、鬧鐘程序等進(jìn)行指令的修正和改良,讓其能夠在LCD顯示器中顯示出年份、月份、日期、小時(shí)、分鐘、秒數(shù)、星期以及實(shí)時(shí)溫度。</p><p> 由于本次設(shè)計(jì)采用的是C語言編程,程序內(nèi)容比較大,因此本次將采用先寫主程序然后再在其中讀寫模塊子程序的辦法進(jìn)行程序的編寫。其中子程序部分包括時(shí)鐘芯片模塊,溫度檢測電路模塊以及LCD顯示屏模
23、塊,這些將在下文進(jìn)行詳細(xì)的介紹。</p><p><b> 系統(tǒng)方案選擇及論證</b></p><p><b> 各項(xiàng)模塊的方案選擇</b></p><p> 單片機(jī)型號(hào)的選擇及論證 </p><p> 方案一:使用單片機(jī)AT89C51做為CPU(Central Processing Un
24、it,計(jì)算機(jī)核心處理器),AT89C51單片機(jī)是采用4kb可進(jìn)行編寫的閃存存儲(chǔ)裝置的低能耗的單片機(jī),擁有32個(gè)I/O口線,兩個(gè)16位定時(shí)/計(jì)數(shù)裝置,并且與MCS-51系列兼容。它的數(shù)據(jù)保存期限為十年,在靜止?fàn)顟B(tài)時(shí)的工作范圍為0Hz-24Hz,具有可編程的串行通道。對于單片機(jī)程序的燒錄和調(diào)試都有很好的作用,并且該單片機(jī)具有高性能,成本低的特點(diǎn),符合本次設(shè)計(jì)的要求。</p><p> 方案二:采用單片機(jī)AT89S5
25、2做為系統(tǒng)的CPU。AT89S52單片機(jī)是采用8kb的可不停的讀取1000次的一個(gè)只讀程序存儲(chǔ)器的單片機(jī)。它是AT89C51單片機(jī)的精簡版,因此也具有51單片機(jī)的所有功能與特點(diǎn),并且AT89S52單片機(jī)能夠在3V的超低電壓下工作,也是一種低能耗,高性能的單片機(jī)。但是AT89S52單片機(jī)相對來說入手的成本會(huì)比較高。</p><p> 根據(jù)以上的那些描述,通過以上兩個(gè)單片機(jī)的各方面的比對可以得出,本次的數(shù)字萬年歷設(shè)
26、計(jì)只需用AT89C51單片機(jī)便可。</p><p> 時(shí)鐘芯片的方案選擇及論證</p><p> 方案一:采用時(shí)鐘芯片DS1302來進(jìn)行時(shí)間的計(jì)數(shù)。DS1302是一種實(shí)時(shí)時(shí)鐘芯片,它是由美國拉萊斯公司研發(fā)并且發(fā)售的。該時(shí)鐘芯片具有低消耗,高性價(jià)比的特點(diǎn),并且能夠提供年份、月份、日期、小時(shí)、分鐘、秒數(shù)、星期的計(jì)數(shù),能夠自動(dòng)調(diào)節(jié)大小月,而且具有閏年補(bǔ)償功能。而且該時(shí)鐘芯片的靜態(tài)RAM空間是
27、31字節(jié)的,,所以在掉電后計(jì)時(shí)還是非常精準(zhǔn)的。并且該產(chǎn)品與單片機(jī)的連接僅僅只有3跟線,看起來非常的簡潔。</p><p> 方案二:直接使用單片機(jī)自帶的內(nèi)部定時(shí)計(jì)數(shù)器進(jìn)行時(shí)間的計(jì)數(shù),而后結(jié)合程序代碼實(shí)現(xiàn)年份、月份、日期、星期、小時(shí)、分鐘、秒等的計(jì)數(shù)。采用此種方案即便不再需要外加一個(gè)芯片了,少了一個(gè)電路模塊的設(shè)計(jì),降低制作成本,節(jié)約設(shè)計(jì)時(shí)間??墒?,使用此方法實(shí)現(xiàn)的計(jì)數(shù)誤差會(huì)在走時(shí)一段時(shí)間后變得越來大,而且非常占用
28、單片機(jī)的內(nèi)部存儲(chǔ)空間。因此本次設(shè)計(jì)不采用此方案進(jìn)行時(shí)間的排版。</p><p> 通過以上的描述,選擇時(shí)鐘芯片DS1302會(huì)更加適合本次設(shè)計(jì)的數(shù)字電子萬年歷。</p><p> 溫度傳感器的方案選擇及論證</p><p> 方案一:采用DS18B20溫度傳感器進(jìn)行實(shí)時(shí)的溫度監(jiān)測。溫度傳感器DS18B20是一種具有“一線便是所有”的溫度傳感器,該產(chǎn)品是由美國達(dá)拉
29、斯公司首次推出的世界上面第一個(gè)具有以上特點(diǎn)的傳感器,它與CPU的連接只要一根線。而且該溫度傳感器具有精準(zhǔn)度高,體積小,抵抗外界的干擾能力優(yōu)秀的特點(diǎn)。此溫度傳感器的工作的直流電壓值是3.0~5.5V/DC。它能夠監(jiān)測到的溫度為-55℃~+125℃,其測量溫度時(shí)的誤差只有1℃,并且在-10℃ 至+85℃范圍內(nèi)的是否精確度更高,只有±0.5℃。</p><p> 方案二:采用熱敏電阻作為溫度檢測的溫度傳感器
30、。這是利用熱敏電阻的電阻值與外界溫度變化有著函數(shù)關(guān)系的特性,然后串聯(lián)一個(gè)相同電阻值的電阻進(jìn)行分壓,分別采集兩個(gè)電阻的電壓值,并進(jìn)行A/D變換。這樣設(shè)計(jì)的時(shí)候就需要連接一個(gè)A/D轉(zhuǎn)換電路,增加了設(shè)計(jì)的時(shí)候的難度和成本。而且該熱敏電阻與溫度的函數(shù)關(guān)系并不是很嚴(yán)謹(jǐn),其函數(shù)曲線不是一條圓滑的曲線,因此測量時(shí)會(huì)產(chǎn)生比較大的誤差,所以不會(huì)選擇用熱敏電阻做為本次設(shè)計(jì)的溫度監(jiān)測。</p><p> 通過上述介紹,本次設(shè)計(jì)必然會(huì)
31、選用DS18B20溫度傳感器進(jìn)行溫度的監(jiān)測。</p><p> 顯示模塊的方案選擇及論證</p><p> 方案一:采用LCD1602液晶顯示屏,此顯示屏具有體積小、質(zhì)量輕盈、能耗小、成像清晰的特點(diǎn)。并且該顯示屏與單片機(jī)的連接方式是采用簡單牢靠的數(shù)字方法進(jìn)行連接,這樣使用起來就顯得非常的簡便。而且其在顯示屏上顯示的內(nèi)容也較為豐富,非常實(shí)用。</p><p>
32、方案二:采用數(shù)碼管來顯示系統(tǒng)數(shù)據(jù),該數(shù)碼管的內(nèi)部組成是八個(gè)發(fā)光的二極管,這樣對于那些只有數(shù)字字符的顯示會(huì)比較適合,而且購買價(jià)錢不貴,但是本次設(shè)計(jì)的電子萬年歷需要顯示的內(nèi)容比較多,也不僅僅是數(shù)字字符了,因此需要比較多的數(shù)碼管,并且設(shè)計(jì)的時(shí)候電路復(fù)雜、編程麻煩。并且數(shù)碼管顯示不穩(wěn)定,存在抖動(dòng)現(xiàn)象,需要通過某些軟件延時(shí)進(jìn)行消抖,操作起來比較的麻煩。</p><p> 通過以上描述,本次設(shè)計(jì)的電子萬年歷毫無疑問的會(huì)使用
33、LCD1602液晶顯示屏。這樣可以更加直觀、清晰的體現(xiàn)此萬年歷的功能。</p><p><b> 總體方案的確定</b></p><p> 通過了上述的各項(xiàng)電路模塊的方案論證以及各項(xiàng)模塊的簡單介紹,因此本次設(shè)計(jì)的總體方案確定為采用單片機(jī)AT89C51為核心,使用時(shí)鐘芯片DS1302進(jìn)行計(jì)時(shí)和計(jì)數(shù)以及用DS18B20溫度傳感器對周圍環(huán)境進(jìn)行溫度檢測,并且將各項(xiàng)結(jié)果通
34、過轉(zhuǎn)換能夠在液晶顯示器LCD1602中呈現(xiàn)出來。</p><p><b> 系統(tǒng)硬件電路的設(shè)計(jì)</b></p><p> 系統(tǒng)硬件功能及原理介紹 </p><p> 本系統(tǒng)的電路系統(tǒng)框圖如圖4-1所示,AT89C51單片機(jī)通過C語言的寫入對時(shí)鐘芯片DS1302和溫度傳感器DS18B20進(jìn)行操控,然后再在其中讀取出相應(yīng)的數(shù)據(jù),進(jìn)而發(fā)出指令讓
35、LCD1602作出相應(yīng)的顯示。</p><p> 圖4-1 單片機(jī)實(shí)現(xiàn)液晶顯示電子萬年歷的總框圖</p><p> AT89C51單片機(jī)的功能及原理</p><p> AT89C51單片機(jī)是美國一家公司研制并且生產(chǎn)的一種擁有4K字節(jié)只讀存儲(chǔ)器,并且擁有CMOS8位微處理器的一個(gè)中央處理裝置。該單片機(jī)使用ATMEL高質(zhì)量的閃爍存儲(chǔ)裝置的技術(shù)來進(jìn)行制造的,同時(shí)也和
36、工業(yè)上規(guī)定的MCS-51系列單片機(jī)兼容。具有ATMEL裝置的AT89C51是一種高品質(zhì)的微型控制裝置,因?yàn)樵谝恍€(gè)的芯片中便結(jié)合了擁有多功能的8位CPU與閃爍存儲(chǔ)器,為很多控制系統(tǒng)都提供了一種性價(jià)比非常高的方法,并且能夠應(yīng)用于很多高性價(jià)比的場合。下圖圖4-2為單片機(jī)實(shí)際框圖。</p><p> AT89C51具備如下幾個(gè)標(biāo)準(zhǔn)功能:4K字節(jié)的只讀存儲(chǔ)器,一個(gè)串行可編程通道,擁有1000多個(gè)字節(jié)的內(nèi)部RAM,16位
37、定時(shí)/記數(shù)器也有兩個(gè),32個(gè)可以用來編程的I/O口總線,還有5個(gè)中斷源,片上振蕩器以實(shí)時(shí)鐘電路。同時(shí),AT89C51的運(yùn)行工作頻率范圍在0Hz~24Hz之間,而且擁有節(jié)電模式可以選擇。這種單片機(jī)在沒有運(yùn)行的時(shí)候會(huì)停止內(nèi)部主要功能的工作,但是還有RAM即串行通信口還是在工作的。掉電模式下只會(huì)保存RAM內(nèi)的東西,但是振蕩器只有在其他硬件啟動(dòng)并且已經(jīng)成功復(fù)位之后才會(huì)再次的運(yùn)行起來。</p><p> 圖4-2 單片機(jī)
38、實(shí)物圖</p><p> 表4-1 單片機(jī)管腳功能表</p><p> 由上面的表中可以得出所有的引腳排列以及功能用處了,而下圖就給出了單片機(jī)是如何具體用這些引腳和內(nèi)部的各大模塊進(jìn)行數(shù)據(jù)的交換與傳輸?shù)?。具體請看圖4-3.</p><p> 圖4-3 AT89C51方框圖</p><p> DS1302時(shí)鐘芯片的功能及原理</p&
39、gt;<p> DS1302 做為美國達(dá)萊斯公司自主研發(fā)的一種高現(xiàn)價(jià)比、低電壓損耗、擁有31個(gè)字節(jié)的靜態(tài)RAM,采用特殊的涓細(xì)電流充電方式供電的實(shí)時(shí)時(shí)鐘電路,它能夠?qū)δ?、月、日、星期、時(shí)、分、秒進(jìn)行計(jì)時(shí),擁有24h和12h的計(jì)時(shí)方式,還能夠區(qū)分大小月份以及具有閏年補(bǔ)償功能。它工作于2.5V至5.5V。DS1302的內(nèi)部有一個(gè)神奇的RAM寄存器用來臨時(shí)存放各種數(shù)據(jù)的,它與單片機(jī)的連接只有三根線。DS1302在進(jìn)行保持?jǐn)?shù)據(jù)和
40、時(shí)鐘信息時(shí)所消耗的能量竟然不到1mW。而且它的計(jì)算年限在2100年之間,并且具有閏年補(bǔ)償功能。而且還可以在主電源斷電情況下定時(shí)功能。</p><p> 當(dāng)然,DS1302的寄存器種類很多,其中包括控制寄存器、年份寄存器等。</p><p> DS1302的引腳分布如圖4-4所示。</p><p> 圖4-4 DS1302引腳排列</p><
41、p> DS1302管腳的描述:其中晶振管腳是X1和 X2這兩個(gè)管腳,GND是一個(gè)接地管腳,RST是復(fù)位管腳,它能夠?qū)⑤斎雴?dòng)置于高電位之中,從而達(dá)到所有數(shù)據(jù)的傳輸,I/O口做為數(shù)據(jù)的輸入/輸出端,直接與單片機(jī)進(jìn)行數(shù)據(jù)交換,SCLK始終作為串行通道的輸入端,Vcc1、Vcc2是連接電源的管腳。</p><p> 同時(shí),DS1302的通電方式非常的特別,它是通過比較Vcc1、Vcc2兩者的電壓大小來最終確定
42、由哪個(gè)進(jìn)行供電。當(dāng)Vcc2給DS1302供電時(shí),此時(shí)的Vcc2大于Vcc1。反之,DS1302就得由Vcc1供電了。</p><p> DS1302的控制方式為從地點(diǎn)為開始輸出。它的輸出條件是最高位必須處于高電位狀態(tài),否則不能輸出數(shù)據(jù)。</p><p> DS18B20溫度傳感器的功能及原理</p><p> DS18B20溫度傳感器做為美國達(dá)拉斯公司研發(fā)銷售
43、的一種高端時(shí)髦的溫度傳感器。它可以直接讀出溫度。并且和單片機(jī)的連接只有一根線。而且這個(gè)溫度傳感器不需要額外外加一個(gè)電源進(jìn)行供電,只需要通過與單片機(jī)相連的那根線供電即可,而且其工作電壓范圍廣,為+3.0~+5.5 V。因而在使用DS18B20后,可以使整個(gè)的電路結(jié)構(gòu)變得更加的簡單,而且顯示結(jié)果的精準(zhǔn)度會(huì)更好。同時(shí),該溫度傳感器具有一個(gè)權(quán)力真空,反極性的特征,它不會(huì)因?yàn)殡娫唇臃戳司蜔袅?,只不過是不運(yùn)行了而已。</p>&l
44、t;p> 同時(shí),DS18B20溫度傳感器的內(nèi)部結(jié)構(gòu)不是很復(fù)雜,也就是幾個(gè)基本的測溫與傳輸部件構(gòu)成。DS18B20的管腳主要有GND,該引腳是電源接地口;DQ為數(shù)字信號(hào)的輸入/輸出端;VDD連接電源輸入端(在連接和接地的寄生電源模式)三部分。</p><p> 其內(nèi)部結(jié)構(gòu)框圖如圖4-5所示。</p><p> 圖4-5 DS18B20的內(nèi)部結(jié)構(gòu)圖</p><
45、p> 低振蕩頻率溫度系數(shù)的晶體在DS18B20效果不受溫度的影響,它主要是針對1個(gè)固定頻率的脈沖信號(hào)。但是在溫度過高的時(shí)候高產(chǎn)品內(nèi)部的頻率會(huì)隨著外界溫度的改變而發(fā)生變化的,然后將此信號(hào)做為一個(gè)數(shù)據(jù)資料進(jìn)行輸入操作。</p><p> LCD1602液晶顯示屏的功能及原理</p><p> LCD1602液晶顯示器都是數(shù)字式的方式連接,和單片機(jī)體系的連接更加簡便。 由于液晶顯示接
46、收到的信號(hào)中的每一位一直保持原來的顏色和亮度,發(fā)光穩(wěn)定,所以不需要持續(xù)刷新而導(dǎo)致出現(xiàn)閃爍。</p><p> 點(diǎn)陣圖形式液晶由很多個(gè)一點(diǎn)一點(diǎn)的顯示單位構(gòu)成,就像一個(gè)坐標(biāo)點(diǎn)一樣,然后通過程序的編寫來確定每個(gè)點(diǎn)是否應(yīng)該亮起來,或者是連續(xù)的幾個(gè)點(diǎn)亮起來形成一條短線。比如說當(dāng)(3ffh)= FFH,然后在屏幕的右下角顯示一個(gè)短的線;當(dāng)(00h)=(FFH,001h)= 00H,(002h)= 00H,......(00
47、eh)= 00H,(00fh)= 00H的時(shí)候,這就是LCD顯示的基本原理。</p><p> 使用LCD來顯示出隨便一個(gè)符號(hào)的過程是十分復(fù)雜的,其緣由就是每一個(gè)字符都是由很多個(gè)小點(diǎn)組成的,這樣就需要在顯示屏上找到各個(gè)點(diǎn)來確定它們是需要亮起來還是不用亮起來。慢慢的就會(huì)形成一個(gè)字符了。但是有些控制器本身就有控制器,那么它們只需將這些東西直接轉(zhuǎn)化成文本文檔直接輸出就好了。設(shè)置光標(biāo)根據(jù)開始在液晶數(shù)和列每列隊(duì)伍號(hào)碼找到
48、相應(yīng)的顯示相應(yīng)的內(nèi)存地址,在此基礎(chǔ)上,對相應(yīng)的字符碼。</p><p><b> 主要模塊電路設(shè)計(jì)</b></p><p> 通過對各個(gè)單元的描述以及了解,接下倆就可以進(jìn)行各個(gè)單元模塊的具體設(shè)計(jì)了。本次設(shè)計(jì)的主要模塊包括了顯示模塊,溫度傳感器電路模塊,鍵盤模塊以及時(shí)鐘電路電路模塊。</p><p> 單片機(jī)主控制模塊設(shè)計(jì)</p>
49、;<p> 如圖4-6所示,本次單片機(jī)的各個(gè)引腳連接如下:9號(hào)引腳為復(fù)位電路的輸入端,在其連接上電容、電阻以及開關(guān)后就組成了一個(gè)完整的復(fù)位電路了,晶體振蕩器頻率為12MHz,為復(fù)位自動(dòng)功率降低方法。18和19引腳連接的是延時(shí)計(jì)時(shí)電路,主要用來進(jìn)行延時(shí)功能。</p><p> 圖4-6 單片機(jī)最小系統(tǒng)圖</p><p> 時(shí)鐘芯片模塊的設(shè)計(jì) </p>&
50、lt;p> 本次設(shè)計(jì)的計(jì)時(shí)電路主要是用DS1302時(shí)鐘芯片進(jìn)行計(jì)數(shù)的。而在前文中已經(jīng)介紹了該時(shí)鐘芯片的原理以及功能了。其中該時(shí)鐘芯片的各個(gè)引腳的連接圖如下圖圖4-7所示。</p><p> 圖4-7 DS1302時(shí)鐘芯片接線圖</p><p> 溫度傳感器模塊的設(shè)計(jì)</p><p> 本次設(shè)計(jì)使用的是DS18B20溫度傳感器來實(shí)現(xiàn)溫度的監(jiān)測的。該溫度傳
51、感器的各項(xiàng)功能及原理也在上文中得到了詳細(xì)的介紹。并且下圖圖4-8給出了該溫度傳感器的詳細(xì)電路連接。由圖中可以看出該傳感器與單片機(jī)的連接非常簡單,僅需要一根線便可以完成與單片機(jī)的完整通信了。</p><p> 圖4-8 溫度傳感器接線圖</p><p><b> 顯示模塊的設(shè)計(jì)</b></p><p> 本設(shè)計(jì)使用的是LCD1602液晶顯示
52、,數(shù)據(jù)可直接反映到用戶眼中。而LCD1602顯示屏的原理以及功能已經(jīng)在前文中做了詳細(xì)的介紹。其引腳連接圖如圖4-9所示。</p><p> 圖4-9 LCD1602液晶顯示屏連接圖</p><p><b> 鍵盤模塊的設(shè)計(jì)</b></p><p> 本次設(shè)計(jì)一共擁有4個(gè)功能按鍵和一個(gè)系統(tǒng)的復(fù)位按鍵,而其中的那些功能按鍵可以任意改變當(dāng)前再顯
53、示的各種狀態(tài)。除卻復(fù)位鍵以外,其他的四個(gè)按鍵的功能如一下描述:第一個(gè)按鈕是控制鍵,它的主要功能是對于顯示屏上的各項(xiàng)數(shù)據(jù)進(jìn)行選擇設(shè)置;第二個(gè)按鍵是進(jìn)入鬧鐘模式的按鈕,在此模式下可以直接設(shè)置鬧鐘的時(shí)間,再次按下這個(gè)按鍵則會(huì)退出鬧鐘界面;第三個(gè)按鍵是設(shè)置的時(shí)候的加一按鍵;最后一個(gè)按鍵是設(shè)置的時(shí)候的減一按鍵。</p><p><b> 系統(tǒng)電路的仿真</b></p><p>
54、; 本次設(shè)計(jì)的電路是通過Proteus 7 Professional仿真軟件進(jìn)行電路的仿真的。Proteus 7 Professional仿真軟件是由英國一家知名的大公司開發(fā)的一款EDA工具軟件。其在全球被廣泛的應(yīng)用,距今已經(jīng)有將近20年的歷史了。該軟件的系統(tǒng)模塊很多,本文主要介紹了其中的仿真部分。</p><p> Proteus作為一款仿真軟件,其中包含了及其強(qiáng)大的元件庫,其中包含了8000多個(gè)數(shù)字和模擬
55、電路中的SPICE模型及各種動(dòng)態(tài)元件。而且Proteus軟件能夠和大部分的編譯軟件進(jìn)行完美的合作,并進(jìn)行系統(tǒng)的綜合調(diào)試,比如keil等軟件。并且整個(gè)的調(diào)試過程與真實(shí)的硬件調(diào)試基本沒有差別。其真實(shí)性為使用者提供了很好的調(diào)試環(huán)境與方便。因此本文使用Proteus軟件進(jìn)行仿真調(diào)試將硬件系統(tǒng)的真實(shí)性得到了極大的肯定。</p><p> 具體的操作過程為雙擊圖標(biāo)等待運(yùn)行proteus軟件中的程序之后,進(jìn)入到這個(gè)仿真軟件的
56、起始設(shè)置的界面。操作前,先設(shè)置視圖菜單捕捉對齊和顏色系統(tǒng),圖形界面的大小等。然后點(diǎn)擊左邊工具欄中的一個(gè)大寫的P按鈕,那個(gè)是選擇元器件用的,在彈出的窗口中輸入這個(gè)電路應(yīng)該需要的各種元件的英文名字,然后雙擊進(jìn)行添加到自己的元件庫中,而后點(diǎn)擊鼠標(biāo)并放置元件和調(diào)整它的位置以及元件的各種參數(shù)設(shè)置,最后進(jìn)行元器件之間連線與布局,編寫程序;之后在雙擊單片機(jī),在彈出的窗口內(nèi)選擇該系統(tǒng)對應(yīng)的程序,然后再添加進(jìn)去,點(diǎn)擊確定按鈕,然后再點(diǎn)擊界面上的運(yùn)行按鈕,
57、觀察整個(gè)仿真電路的運(yùn)行情況。</p><p> 由上文可以發(fā)現(xiàn)通過該軟件進(jìn)行仿真具有操作簡單方便,并且效果良好。具體的仿真圖詳見附錄一。</p><p><b> 系統(tǒng)程序的設(shè)計(jì)</b></p><p> 本次設(shè)計(jì)中的軟件編程部分會(huì)全部采用C語言來編程,其中C語言是一種可讀性很高的語言,它在處理器中的運(yùn)行速度非常的快,并且處理各種數(shù)據(jù)的能
58、力也非常好,語言結(jié)構(gòu)很簡單,深受人們歡迎。使用C語言來對系統(tǒng)的軟件進(jìn)行對應(yīng)的編程和時(shí)候,相比較與匯編語言,對于用戶的體驗(yàn)上來說,C語言在結(jié)構(gòu)上會(huì)更加的通俗,可讀性會(huì)比較高。</p><p> 本次設(shè)計(jì)的主流程圖如下圖圖5-1所以,由于顯示器LCD1602,溫度傳感器DS18B20以及時(shí)鐘芯片DS1302的數(shù)據(jù)閱讀和其指派功能已經(jīng)在各自的頭文件中完成了,以后只要在主程序中只要加以引用就可以了。詳細(xì)的程序請?jiān)斠姼戒?/p>
59、二。</p><p> 圖5-1 程序主流程圖</p><p> LCD1602的程序設(shè)計(jì)</p><p> 表5-1 LCD1602命令控制</p><p> A=1漸增;A=0逐減;</p><p> B=0屏不動(dòng);B=1,A =1且字符寫顯示左移,反之右移;</p><p>
60、C=1屏幕開;C=0屏幕關(guān);</p><p> D=1地址光標(biāo)顯示,D=0不顯;</p><p> E=1光標(biāo)閃爍,E=0不閃;</p><p> G=0,F(xiàn)=0光標(biāo)左移,此外右移;</p><p> G=0,F(xiàn)=1,字符和光標(biāo)左移,此外右移;</p><p> H=1,數(shù)據(jù)是8b;H=0,數(shù)據(jù)是4b;<
61、;/p><p> I=0,顯示一行;I=1,顯示兩行;</p><p> J=1,點(diǎn)陣5x10;J=0,點(diǎn)陣5x7;</p><p> K=1,LCD繁忙;K=0,空閑。</p><p> 圖5-2 LCD1602初始化</p><p> 如上圖LCD1602經(jīng)過設(shè)置8位數(shù)據(jù)輸入、2行、點(diǎn)陣5x7顯示;再清屏;再
62、設(shè)置字符上輸入格式。在LCD中可設(shè)置判忙子程序,使LCD正常運(yùn)行,實(shí)際中影響不大。在Keil軟件單步調(diào)試判忙會(huì)循環(huán)執(zhí)行,因?yàn)閱纹瑱C(jī)讀取外器件端口都為一??捎梅抡嫫鱽磉M(jìn)行單步程序仿真解決。</p><p> DS1302程序設(shè)計(jì)</p><p> DS1302通過寫入時(shí)間寄存器的相對其地址,讀取時(shí)間。在實(shí)物中,需先判斷秒位寄存器(Adress為0x80)的最高位是否為0(為0時(shí)內(nèi)部振蕩器
63、開啟)。在手動(dòng)按鍵調(diào)節(jié)時(shí)間時(shí),先去掉寫保護(hù)(在0x8E地址寫入0x00);再加上寫保護(hù)(向0x8E地址寫入0x80)。</p><p> 表5-2 DS1302地址/命令字節(jié)格式</p><p><b> 圖5-3 讀單字節(jié)</b></p><p><b> 圖5-4 寫單字節(jié)</b></p><
64、p> 圖5-5 DS1302初始化</p><p> DS18B20程序設(shè)計(jì)</p><p> DS18b20在初始化時(shí),需一系列單數(shù)據(jù)線的拉高置低,并間隔相應(yīng)時(shí)間??稍O(shè)判錯(cuò)標(biāo)志位,讀數(shù)據(jù)復(fù)查。在采集時(shí),要經(jīng)初始化并跳器件序列號(hào),再延時(shí),再重復(fù)之前操作,最后接收溫度的低位和高位??捎蓪?shí)際程序用時(shí)、精度等,確定溫度(9-12b)的輸出位數(shù)。器件內(nèi)含CRC-8檢錯(cuò),增強(qiáng)其準(zhǔn)確度。&
65、lt;/p><p> 圖5-6 DS18B20初始化過程 圖5-6 DS18B20溫度采集</p><p> 軟件和硬件的結(jié)合調(diào)試</p><p><b> 硬件的調(diào)試</b></p><p> Proteus軟件會(huì)通過對系統(tǒng)軟件進(jìn)行分小段的調(diào)試與監(jiān)測系統(tǒng)在運(yùn)行時(shí)的整體狀況來分析,以便能夠更好
66、的完成此次硬件與軟件的調(diào)試。 </p><p> 針對于以上提出的整體狀況的調(diào)試,我們其實(shí)只要打開這個(gè)軟件,然后將已經(jīng)繪制成功的仿真圖打開,然后再點(diǎn)擊軟件左下方的運(yùn)行按鈕。當(dāng)然,此時(shí)的單片機(jī)之中可以是有程序也可以是沒有程序的,不過為了調(diào)試結(jié)果更加的準(zhǔn)確,還是先確保該系統(tǒng)中的單片機(jī)是沒有程序的存在。最后移動(dòng)鼠標(biāo)觀察各個(gè)電路模塊以及各個(gè)元器件的通電狀況是否正常。</p><p> 對于使
67、用軟件的分塊調(diào)試,這個(gè)的前提是以上的整體調(diào)試已經(jīng)沒有問題,然后是已經(jīng)有準(zhǔn)備好的在該系統(tǒng)中有的電路模塊的子程序。隨后我們就可以將其中一個(gè)子程序燒錄進(jìn)單片機(jī)之中,然后在點(diǎn)擊運(yùn)行而后觀察這個(gè)電路模塊的運(yùn)行情況以及顯示狀況。以此類推,我們只要把所有的電路模塊都試過去,那么,即使其中某個(gè)小塊出了問題也是很好解決的。 </p><p> 因此,在本次設(shè)計(jì)之中,可以通過先將仿真圖繪制成功后,然后點(diǎn)擊運(yùn)行按鈕,并觀察各個(gè)元件的
68、電平的數(shù)值顯示。如有問題,再進(jìn)行修改與替換。確保該電子萬年歷系統(tǒng)的硬件在軟件中能夠正常的運(yùn)行。</p><p><b> 軟件的調(diào)試</b></p><p> 在一個(gè)系統(tǒng)的開發(fā)之中除了必要的硬件之外,同樣也離不開程序的編寫,而我們所謂的程序可以通過機(jī)器或者人工的方法寫入單片機(jī)之中,但現(xiàn)在已經(jīng)很少會(huì)去使用手冊的編制。而所謂的機(jī)器匯編就是通過匯編軟件將寫好的源代碼轉(zhuǎn)化
69、成能夠讓單片機(jī)識(shí)別的語言,比如Keil軟件在變異后生成的hex文件。伴隨著當(dāng)今世界上的電子科的神速發(fā)展,語言的編譯也開始從基本的匯編語言慢慢的編譯到后來的開發(fā)出更加高級(jí)的語言來進(jìn)行語言的編譯。當(dāng)然隨著程序語言的升級(jí),一般的編譯軟件對于它們的識(shí)別也漸漸的變得吃力起來,因此編譯軟件的升級(jí)就顯得非常的重要。而其中,Keil軟件就是目前在世界上最為流行的一個(gè)語言編譯軟件,這個(gè)軟件可以完美的適用于51系列的各種單片機(jī)之中。如果你不相信它的流行度,
70、你可以去看看各大電子開發(fā)商最為支持的軟件是什么。Keil是一款功能非常強(qiáng)大的語言編譯軟件,它可以進(jìn)行C語言的編寫和編譯,另外它還自帶了一個(gè)及其強(qiáng)大的仿真調(diào)試裝置,通過一個(gè)神奇而且強(qiáng)大的開發(fā)環(huán)境(uVision)將所有的強(qiáng)大功能都結(jié)合在了一起。</p><p> Keil軟件的具體操作過程為先打開該軟件,然后再在上面的工具欄中找到項(xiàng)目蘭,點(diǎn)擊創(chuàng)建一個(gè)新的項(xiàng)目,然后在新建一個(gè)文件,點(diǎn)擊保存,這樣就可以開始編寫系統(tǒng)所
71、需的程序了。編寫完成后點(diǎn)擊調(diào)試按鈕,然后再將編寫好的源代碼以后綴為”.c”的格式保存下來,然后在修改完之后點(diǎn)擊編譯按鈕準(zhǔn)備生成一個(gè)hex文件,最后將這個(gè)hex文件放入仿真圖中的單片機(jī)之中就可以進(jìn)行調(diào)試了。</p><p> 因而本次設(shè)計(jì)的系統(tǒng)軟件調(diào)試這塊就主要是用Keil軟件進(jìn)行C語言的編寫與調(diào)試,以及后來編譯可以生成hex文件。其中,用匯編語言編制的軟件,C語言的功能,可讀性,結(jié)構(gòu),具有維護(hù)優(yōu)勢明顯。<
72、/p><p> 軟件與硬件的結(jié)合調(diào)試</p><p> 通過上文介紹的幾個(gè)軟件以及操作方法,現(xiàn)在可以進(jìn)行結(jié)合調(diào)試并觀察最后的運(yùn)行結(jié)果。具體的運(yùn)行調(diào)試結(jié)果詳見附錄一。</p><p><b> 結(jié)論</b></p><p> 本次設(shè)計(jì)利用的是以51單片機(jī)做為中央處理器,結(jié)合外部那些時(shí)鐘芯片一起的電路模塊,溫度傳感器DS
73、18B20,液晶顯示器的電路模塊,復(fù)位電路以及鍵盤控制模塊等構(gòu)成的一個(gè)多功能的數(shù)字電子萬年歷。然后使用ISIS軟件進(jìn)行系統(tǒng)電路仿真,再通過KEIL軟件進(jìn)行C語言的編寫,最后在顯示器上實(shí)現(xiàn)了同時(shí)顯示年份、月份、日期、星期、小時(shí)、分鐘、秒以及實(shí)時(shí)溫度,另外還有一個(gè)鬧鈴功能。</p><p> 本人設(shè)計(jì)的數(shù)字電子萬年歷通過上文可以發(fā)現(xiàn),除了課題要求實(shí)現(xiàn)的那些功能之外,該系統(tǒng)還有溫度監(jiān)測功能與鬧鈴功能,加上這兩個(gè)功能會(huì)
74、顯得這個(gè)萬年歷更顯得人性化,更加的符合用戶的日常需求,也符合我國未來的發(fā)展方向,這也是本人的創(chuàng)新點(diǎn)。</p><p> 在本次課題設(shè)計(jì)的過程中,我遇到過非常多的問題與難點(diǎn)。比如說在軟件的編寫過程中,在寫完子程序后發(fā)現(xiàn)自己竟然不能將該子程序與主程序完美的連接起來。后來通過自己慢慢的翻閱各種書籍以及向指導(dǎo)老師求助,終于在后來將程序調(diào)試了出來。當(dāng)然,在硬件設(shè)計(jì)的時(shí)候也遇到過繪制完電路圖之后發(fā)現(xiàn)整個(gè)系統(tǒng)完全處于待機(jī)狀態(tài)
75、,完全沒有反映。最后也是同學(xué)的幫助才得以完成的。當(dāng)然在開始設(shè)計(jì)之前,我曾經(jīng)查閱過很多資料,也發(fā)現(xiàn)了很多的難點(diǎn),比如說時(shí)鐘芯片與單片機(jī)的通信問題,再后來的設(shè)計(jì)過程中,其實(shí)那些問題都被自己慢慢的攻克了下來。</p><p> 因此,通過本次的畢業(yè)設(shè)計(jì)之后,我覺得自己將之前幾年學(xué)過的單片機(jī)知識(shí)以及各種軟件操作的只是都重溫了一遍,并且現(xiàn)在已經(jīng)將這些只是都結(jié)合融入到自己的腦海之中,讓自己在這方面的專業(yè)知識(shí)得到了一個(gè)新的升
76、華,同時(shí)也在平時(shí)積累的過程中豐富了自己的大腦。</p><p> 應(yīng)該說我們學(xué)校的畢業(yè)設(shè)計(jì)就是我們在學(xué)校的最后一次考試,也是學(xué)校對我們的考驗(yàn)。雖然講的是萬事開頭難,但是,都過前期的不斷積累,這個(gè)開頭其實(shí)并不是很難。因此,做一次畢業(yè)設(shè)計(jì)也是對我們自己的提高。因?yàn)樵谝淮萎厴I(yè)設(shè)計(jì)中,我能夠?qū)W到很多,那對我以后的生活工作都是很有幫助的。</p><p><b> 致謝</b&g
77、t;</p><p> 能夠完成完成本次畢業(yè)設(shè)計(jì),感謝的人其實(shí)是很多的。首先感謝學(xué)校給了我一個(gè)展現(xiàn)自我的機(jī)會(huì)。其次是我們的指導(dǎo)老師,在做設(shè)計(jì)的日子里得到了指導(dǎo)老師的耐心指導(dǎo),使得我的畢業(yè)設(shè)計(jì)能夠順利的完成,在此向我們的指導(dǎo)教師表示最為誠摯的感謝。然后是感謝那些給我提供幫助的老師和同學(xué)們,是你們的支持和鼓勵(lì)讓我對這次的畢業(yè)設(shè)計(jì)的完成有了強(qiáng)烈的自信與動(dòng)力,同時(shí)你們也給了我很多無私的幫助和支持,在此我表示非常感謝。&
78、lt;/p><p><b> 參考文獻(xiàn)</b></p><p> [1] 張毅剛, 彭喜元. 單片機(jī)原理及接口技術(shù)[M]. 北京:人民郵電出版社.2008.</p><p> [2] 張蓬. Protel DXP電路設(shè)計(jì)入門與應(yīng)用[M]. 北京:機(jī)械工業(yè)出版社.2005</p><p> [3] 劉守義, 鐘 蘇.
79、數(shù)字電子技術(shù)[M]. 西安:西安電子科技大學(xué)出版社. 2003.</p><p> [4] 趙亮, 候國銳. 單片機(jī)C語言編程與實(shí)例[M].北京: 人民郵電出版社. 2003.</p><p> [5] 劉利. 液晶顯示原理[M].上海: 電子工業(yè)出版社.2002.</p><p> [6] 于復(fù)生,宋現(xiàn)春等. 時(shí)鐘芯片DS1302及其在數(shù)據(jù)記錄中的應(yīng)用[M]
80、. 電子技術(shù)應(yīng)用.2000.</p><p> [7] 李建忠. 單片機(jī)原理及應(yīng)用[M]. 西安:西安電子科技大學(xué)出版社,2002.</p><p> [8] 何立民. 單片機(jī)與嵌入式系統(tǒng)應(yīng)用[M], 北京:北京航空航天大學(xué)出版社.2003.</p><p> [9] 彭偉,單片機(jī)C語言程序設(shè)計(jì)實(shí)訓(xùn)100例——基于8051+Proteus仿真(第二版)[M]
81、,電子工業(yè)出版社,2012</p><p> [10] 馬忠梅. 單片機(jī)的C語言應(yīng)用程序設(shè)計(jì)[M]. 北京:北京 航天航空大學(xué)出版社.1997.</p><p> [11] 周雪. 模擬電子技術(shù)[M]. 西安:西安電子科技大學(xué)出版社.2005.</p><p> [12] 康華光. 電子技術(shù)基礎(chǔ)[M]. 北京: 高等教育出版社,2001.</p>
82、<p> [13] 楊子文. 單片機(jī)原理及應(yīng)用[M]. 西安電子科技大學(xué)出版社 2006.</p><p> [14] TONDRAD,HALL Drew.The inception of checkla:a detailed design and a nalysis of Micromouse[D].Las Vegas:University of Nevada,2004.</p&g
83、t;<p> [15] KOREY, BOTENSTEIN J.Potential field methods and their inherent lim itati ons For mobile robotnavigation[C]Proceedingsof and Automation:S acramento.CA,USA1991:97-98.</p><p><
84、b> 附錄一:仿真圖</b></p><p><b> 附錄二:程序源代碼</b></p><p> #include<reg51.h></p><p> #include<intrins.h></p><p> #define uchar unsigned char&
85、lt;/p><p> #define uint unsigned int</p><p> uchar code digit[]={"0123456789"}; //定義字符數(shù)組顯示數(shù)字</p><p> uchar code Error[]="Error!Check!"; //說明沒有檢測到DS18B20&
86、lt;/p><p> uchar code table[]="Alarm Clock";</p><p> uchar code table1[]="0123456789";</p><p> uchar code table2[]="WEEK";</p><p> uchar
87、code table3[]="Today is fine!";</p><p> uchar code table4[]="HELLO!";</p><p> uchar code table5[]="quzhouxueyuan quxiaobin";</p><p> uchar code tabl
88、e6[]="Happy new year!!";//1.1</p><p> uchar code table7[]="Valentine's Day"; //2.14</p><p> /*uchar code table8[]="Qing Ming jie!";//4.5</p><p>
89、 uchar code table9[]="Happy Labor Day!";//5.1</p><p> uchar code table10[]="Duan Wu jie!";//6.15</p><p> uchar code table11[]="Army day!";//8.1</p><p&g
90、t; uchar code table12[]="Teacher's Day!";//9.10</p><p> uchar code table13[]="National Day!";//10.1</p><p> /*********************************************************
91、**********************</p><p> 以下是對液晶模塊的操作程序</p><p> *******************************************************************************/</p><p> sbit RS=P2^0; //寄存器選擇位,將RS
92、位定義為P2.0引腳</p><p> sbit RW=P2^1; //讀寫選擇位,將RW位定義為P2.1引腳</p><p> sbit E=P2^2; //使能信號(hào)位,將E位定義為P2.2引腳</p><p> sbit BF=P0^7; //忙碌標(biāo)志位,,將BF位定義為P0.7引腳</p
93、><p> sbit DQ=P2^6;</p><p> sbit T_RST=P1^5;</p><p> sbit T_CLK=P1^3; </p><p> sbit T_IO=P1^4;</p><p> sbit beep=P2^4;</p><p>
94、; sbit key1=P3^0; //調(diào)鬧鐘的小時(shí)即x</p><p> sbit key2=P3^1; //調(diào)鬧鐘的分鐘即y</p><p> sbit key3=P3^2; //顯示切換</p><p> sbit key4=P3^3;</p><p> sbit ACC0=ACC^0;</p>&l
95、t;p> sbit ACC7=ACC^7;</p><p> uchar time; //設(shè)置全局變量,專門用于嚴(yán)格延時(shí)</p><p> static uchar x=0x08,y=30;</p><p> uchar t_sec,sec1,sec2;</p><p> uchar t_min,min1,min2;<
96、;/p><p> uchar t_hour,hour1,hour2;</p><p> uchar t_mon,mon1,mon2;</p><p> uchar t_day,day1,day2;</p><p> uchar t_year,year1,year2;</p><p> uchar week,wee
97、k1;</p><p> uchar com,inf;</p><p> void tixing(unsigned char mm,unsigned dd);</p><p> void show();</p><p> void delay1(uchar t)</p><p><b> {<
98、/b></p><p> uchar a,b;</p><p> for(a=t;a>0;a--)</p><p> for(b=110;b>0;b--);</p><p><b> }</b></p><p> /***************************
99、**************************</p><p> 函數(shù)功能:延時(shí)1ms</p><p> (3j+2)*i=(3×33+2)×10=1010(微秒),可以認(rèn)為是1毫秒</p><p> ***************************************************/</p><
100、;p> void delay1ms()</p><p><b> {</b></p><p> uchar i,j;</p><p> for(i=0;i<10;i++)</p><p> for(j=0;j<33;j++)</p><p><b> ;
101、 </b></p><p><b> }</b></p><p> /*****************************************************</p><p> 函數(shù)功能:延時(shí)若干毫秒</p><p><b> 入口參數(shù):n</b></p
102、><p> ***************************************************/</p><p> void delaynms(uchar n)</p><p><b> {</b></p><p><b> uchar i;</b></p>&
103、lt;p> for(i=0;i<n;i++)</p><p> delay1ms();</p><p><b> }</b></p><p> /*****************************************************</p><p> 函數(shù)功能:判斷液晶模塊的忙碌
104、狀態(tài)</p><p> 返回值:result。result=1,忙碌;result=0,不忙</p><p> ***************************************************/</p><p> bit BusyTest(void)</p><p><b> {</b>&l
105、t;/p><p> bit result;</p><p> RS=0; //根據(jù)規(guī)定,RS為低電平,RW為高電平時(shí),可以讀狀態(tài)</p><p><b> RW=1;</b></p><p> E=1; //E=1,才允許讀寫</p><p> _nop_();
106、 //空操作</p><p><b> _nop_();</b></p><p><b> _nop_(); </b></p><p> _nop_(); //空操作四個(gè)機(jī)器周期,給硬件反應(yīng)時(shí)間</p><p> result=BF; //將忙碌標(biāo)志電平賦給result</p&
107、gt;<p> E=0; //將E恢復(fù)低電平</p><p> return result;</p><p><b> }</b></p><p> /*****************************************************</p><p> 函數(shù)
108、功能:將模式設(shè)置指令或顯示地址寫入液晶模塊</p><p> 入口參數(shù):dictate</p><p> ***************************************************/</p><p> void WriteInstruction (uchar dictate)</p><p><b>
109、; { </b></p><p> while(BusyTest()==1); //如果忙就等待</p><p> RS=0; //根據(jù)規(guī)定,RS和R/W同時(shí)為低電平時(shí),可以寫入指令</p><p><b> RW=0; </b></p><p> E=
110、0; //E置低電平(根據(jù)表8-6,寫指令時(shí),E為高脈沖,</p><p> // 就是讓E從0到1發(fā)生正跳變,所以應(yīng)先置"0"</p><p><b> _nop_();</b></p><p> _nop_(); //空操作兩個(gè)機(jī)器周期,給硬件反應(yīng)時(shí)間
111、</p><p> P0=dictate; //將數(shù)據(jù)送入P0口,即寫入指令或地址</p><p><b> _nop_();</b></p><p><b> _nop_();</b></p><p><b> _nop_();</b></
112、p><p> _nop_(); //空操作四個(gè)機(jī)器周期,給硬件反應(yīng)時(shí)間</p><p> E=1; //E置高電平</p><p><b> _nop_();</b></p><p><b> _nop_();</b></p&
113、gt;<p><b> _nop_();</b></p><p> _nop_(); //空操作四個(gè)機(jī)器周期,給硬件反應(yīng)時(shí)間</p><p> E=0; //當(dāng)E由高電平跳變成低電平時(shí),液晶模塊開始執(zhí)行命令</p><p><b> }</b&g
114、t;</p><p> /*****************************************************</p><p> 函數(shù)功能:指定字符顯示的實(shí)際地址</p><p><b> 入口參數(shù):x</b></p><p> *******************************
115、********************/</p><p> void WriteAddress(unsigned char x)</p><p><b> {</b></p><p> WriteInstruction(x|0x80); //顯示位置的確定方法規(guī)定為"80H+地址碼x"</p><
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲(chǔ)空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 數(shù)字萬年歷畢業(yè)設(shè)計(jì)
- 電子萬年歷畢業(yè)設(shè)計(jì)
- 電子萬年歷畢業(yè)設(shè)計(jì)
- 電子萬年歷畢業(yè)設(shè)計(jì)
- 畢業(yè)設(shè)計(jì)---電子萬年歷設(shè)計(jì)
- 畢業(yè)設(shè)計(jì)---電子萬年歷的設(shè)計(jì)
- 畢業(yè)設(shè)計(jì)---電子萬年歷的設(shè)計(jì)
- 電子萬年歷畢業(yè)設(shè)計(jì)稿
- 畢業(yè)設(shè)計(jì)----電子萬年歷論文設(shè)計(jì)
- 電子萬年歷畢業(yè)設(shè)計(jì)2
- 電子萬年歷設(shè)計(jì)
- 電子萬年歷的設(shè)計(jì)與仿真
- 萬年歷畢業(yè)設(shè)計(jì)---基于stc89c52萬年歷的設(shè)計(jì)
- 電子鐘萬年歷畢業(yè)設(shè)計(jì)
- 萬年歷課程設(shè)計(jì)--萬年歷電子時(shí)鐘
- 數(shù)字萬年歷設(shè)計(jì)論文
- 數(shù)字電子課設(shè)萬年歷的設(shè)計(jì)
- 數(shù)碼萬年歷的畢業(yè)設(shè)計(jì)
- 數(shù)碼萬年歷的畢業(yè)設(shè)計(jì)
- 萬年歷電子時(shí)鐘溫度畢業(yè)設(shè)計(jì)
評(píng)論
0/150
提交評(píng)論