版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、<p> 本科畢業(yè)設(shè)計(論文)</p><p> 題 目:基于SPI總線的數(shù)字電子萬年歷的仿真設(shè)計 </p><p> 作 者: </p><p> 二級學(xué)院: 電子與信息工程學(xué)院 &
2、lt;/p><p> 專業(yè)班級: 電氣工程及其自動化(2)班 </p><p> 指導(dǎo)教師: </p><p> 職 稱: 高工,講師 </p><p> 2015 年 6 月
3、10 日</p><p><b> 摘要</b></p><p> 本次設(shè)計的課題主要內(nèi)容是多功能數(shù)字電子萬年歷,由于當(dāng)今社會的飛速發(fā)展,單一的電子時鐘已經(jīng)無法滿足人們的日常生活。因此發(fā)明一種多功能數(shù)字電子萬年歷的是一種必然的走向。而本人設(shè)計的數(shù)字萬年歷是以AT89C51單片機(jī)為中心,通過DS1302時鐘芯片等輔助芯片來實現(xiàn)在LCD上顯示年份、月份、日期、星期、小
4、時、分鐘、秒,以及實時溫度的顯示。該電子萬年歷通過4個按鍵來調(diào)節(jié)日期與時間,通過以軟件編程的方式來完成以上各項功能。而這樣設(shè)計的數(shù)字電子萬年歷具有成本低廉,使用簡單,功能齊全,基本符合當(dāng)代人的生活需求。</p><p> 關(guān)鍵詞:電子時鐘;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. 各項模塊的方案選擇3</p><p> 3.1.1. 單片機(jī)型號的選擇及論證3</p><p> 3.1.2. 時鐘芯片的方案選擇及論證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è)計5</p><p> 4.1. 系統(tǒng)硬件功能及原理介紹5</p><p> 4.1.1. AT89C51單片機(jī)的功能及原理5</p><p> 4.1.2. DS1302時鐘芯片的功能及原理8</p><p> 4.1.3. DS1
11、8B20溫度傳感器的功能及原理8</p><p> 4.1.4. LCD1602液晶顯示屏的功能及原理9</p><p> 4.2. 主要模塊電路設(shè)計9</p><p> 4.2.1. 單片機(jī)主控制模塊設(shè)計10</p><p> 4.2.2. 時鐘芯片模塊的設(shè)計10</p><p> 4.2.3.
12、溫度傳感器模塊的設(shè)計11</p><p> 4.2.4. 顯示模塊的設(shè)計11</p><p> 4.2.5. 鍵盤模塊的設(shè)計12</p><p> 4.3. 系統(tǒng)電路的仿真12</p><p> 5. 系統(tǒng)程序的設(shè)計14</p><p> 5.1. LCD1602的程序設(shè)計15</p>
13、<p> 5.2. DS1302程序設(shè)計16</p><p> 5.3. DS18B20程序設(shè)計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間,從觀察天象到在器具上刻線,以及到后來出現(xiàn)的萬年歷,可謂是歷史悠久。而在我國,相傳萬年歷的出現(xiàn)是在1000多年以前的商朝,是一個叫做萬年的人所創(chuàng)造的。后人為了紀(jì)念他,所以將這種歷法成為“萬年歷”。實際上萬年歷是以一個特定的歷法的推算法則為基礎(chǔ)的,用來編排年、月、日、節(jié)氣等信息,做為人們查
16、閱的工具書,而且這個偉大的文化也因此成就了人類。</p><p> 如今隨著世界上的現(xiàn)代科技的神速發(fā)展,尤其突出的是現(xiàn)代的電子行業(yè)方面的的發(fā)展,給人們的生活帶來了根本性的變化,從而在人們的生活中出現(xiàn)了很多的電子產(chǎn)品,而這些都是以單片機(jī)為基礎(chǔ)的。萬年歷也從傳統(tǒng)的紙質(zhì)萬年歷升級為現(xiàn)在的數(shù)字電子萬年歷,所謂的電子萬年歷即是以計算機(jī)等電子產(chǎn)品的方式出現(xiàn)的萬年歷。數(shù)字電子萬年歷的出現(xiàn)極大的方便了人們的日常生活,并且飛速的
17、被應(yīng)用于車站、工廠、餐廳、學(xué)校、劇院等工作娛樂場所,并、而且越來越受人們的青睞。但是,伴隨著電子行業(yè)的爆炸性發(fā)展,單一的電子日歷已經(jīng)不能再滿足人們的日常生活需求了。并且使用電子萬年歷的人們希望該產(chǎn)品有一個多功能的集合,比如加上時鐘、鬧鐘以及溫度等來取得更為巨大的便利,而所有的這些,又全是以數(shù)字化的電子時鐘為基礎(chǔ)的。因此,加強(qiáng)實際的電子日歷及其擴(kuò)展應(yīng)用的研究,具有非常重要的意義,而且具有很大的實用價值。</p><p&
18、gt; 本次設(shè)計介紹的數(shù)字萬年歷是結(jié)合了程序和電路圖來進(jìn)行的。電路圖的主要構(gòu)成都有單片機(jī)AT89C51,時鐘芯片DS1302、溫度傳感器DS18B20、鬧鐘電路以及控制電路等其他一些輔助電路,在LCD上不僅顯示出公歷的年份、月份、日期,而且能夠顯示星期、小時、分鐘、秒數(shù)以及當(dāng)時附近的溫度。讓此萬年歷能夠及時的將這些信息反饋給用戶,以便用戶進(jìn)行各項工作。而軟件部分則是以C語言進(jìn)行編程,通過單片機(jī)將指令發(fā)送到各項電路中去,以實現(xiàn)萬年歷功能
19、的正常運行,并且使其具有自我調(diào)節(jié)功能。而且通過C語言進(jìn)行編程的好處是可以隨時的根據(jù)不同需求對此萬年歷進(jìn)行細(xì)微的調(diào)節(jié),讓此萬年歷具有顯示其他的一些信息。并且C語言相對于匯編語言來說也具有編寫簡單,易于理解的優(yōu)點,便于用戶進(jìn)行學(xué)習(xí)與改寫。</p><p><b> 系統(tǒng)概述</b></p><p><b> 硬件簡述</b></p>
20、<p> 本文設(shè)計的數(shù)字電子萬年歷是以AT89C51單片機(jī)作為CPU(Central Processing Unit,計算機(jī)中央處理器),構(gòu)成了以單片機(jī)為核心來控制整個電路。并且結(jié)合了時鐘芯片DS1302,使其不僅顯示出公歷的年份、月份、日期,而且能夠顯示星期、小時、分鐘、秒數(shù)等信息,并且能夠自我調(diào)節(jié)和具有去電保存功能。而且在此基礎(chǔ)上另外加上一個溫度傳感器DS18B20,能夠監(jiān)測到附近的實時溫度,并且在LCD上顯示出來。并
21、且此系統(tǒng)通過4個按鍵對整個系統(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語言的編寫來實現(xiàn)以上各項功能,C語言具有撰寫簡單,易于修改的特點。在數(shù)字電子日歷中,包括鬧鈴程
22、序,時鐘計時程序,液晶顯示程序等。并且可以通過軟件燒錄進(jìn)單片機(jī)之中,對時鐘芯片DS1302、鬧鐘程序等進(jìn)行指令的修正和改良,讓其能夠在LCD顯示器中顯示出年份、月份、日期、小時、分鐘、秒數(shù)、星期以及實時溫度。</p><p> 由于本次設(shè)計采用的是C語言編程,程序內(nèi)容比較大,因此本次將采用先寫主程序然后再在其中讀寫模塊子程序的辦法進(jìn)行程序的編寫。其中子程序部分包括時鐘芯片模塊,溫度檢測電路模塊以及LCD顯示屏模
23、塊,這些將在下文進(jìn)行詳細(xì)的介紹。</p><p><b> 系統(tǒng)方案選擇及論證</b></p><p><b> 各項模塊的方案選擇</b></p><p> 單片機(jī)型號的選擇及論證 </p><p> 方案一:使用單片機(jī)AT89C51做為CPU(Central Processing Un
24、it,計算機(jī)核心處理器),AT89C51單片機(jī)是采用4kb可進(jìn)行編寫的閃存存儲裝置的低能耗的單片機(jī),擁有32個I/O口線,兩個16位定時/計數(shù)裝置,并且與MCS-51系列兼容。它的數(shù)據(jù)保存期限為十年,在靜止?fàn)顟B(tài)時的工作范圍為0Hz-24Hz,具有可編程的串行通道。對于單片機(jī)程序的燒錄和調(diào)試都有很好的作用,并且該單片機(jī)具有高性能,成本低的特點,符合本次設(shè)計的要求。</p><p> 方案二:采用單片機(jī)AT89S5
25、2做為系統(tǒng)的CPU。AT89S52單片機(jī)是采用8kb的可不停的讀取1000次的一個只讀程序存儲器的單片機(jī)。它是AT89C51單片機(jī)的精簡版,因此也具有51單片機(jī)的所有功能與特點,并且AT89S52單片機(jī)能夠在3V的超低電壓下工作,也是一種低能耗,高性能的單片機(jī)。但是AT89S52單片機(jī)相對來說入手的成本會比較高。</p><p> 根據(jù)以上的那些描述,通過以上兩個單片機(jī)的各方面的比對可以得出,本次的數(shù)字萬年歷設(shè)
26、計只需用AT89C51單片機(jī)便可。</p><p> 時鐘芯片的方案選擇及論證</p><p> 方案一:采用時鐘芯片DS1302來進(jìn)行時間的計數(shù)。DS1302是一種實時時鐘芯片,它是由美國拉萊斯公司研發(fā)并且發(fā)售的。該時鐘芯片具有低消耗,高性價比的特點,并且能夠提供年份、月份、日期、小時、分鐘、秒數(shù)、星期的計數(shù),能夠自動調(diào)節(jié)大小月,而且具有閏年補(bǔ)償功能。而且該時鐘芯片的靜態(tài)RAM空間是
27、31字節(jié)的,,所以在掉電后計時還是非常精準(zhǔn)的。并且該產(chǎn)品與單片機(jī)的連接僅僅只有3跟線,看起來非常的簡潔。</p><p> 方案二:直接使用單片機(jī)自帶的內(nèi)部定時計數(shù)器進(jìn)行時間的計數(shù),而后結(jié)合程序代碼實現(xiàn)年份、月份、日期、星期、小時、分鐘、秒等的計數(shù)。采用此種方案即便不再需要外加一個芯片了,少了一個電路模塊的設(shè)計,降低制作成本,節(jié)約設(shè)計時間??墒?,使用此方法實現(xiàn)的計數(shù)誤差會在走時一段時間后變得越來大,而且非常占用
28、單片機(jī)的內(nèi)部存儲空間。因此本次設(shè)計不采用此方案進(jìn)行時間的排版。</p><p> 通過以上的描述,選擇時鐘芯片DS1302會更加適合本次設(shè)計的數(shù)字電子萬年歷。</p><p> 溫度傳感器的方案選擇及論證</p><p> 方案一:采用DS18B20溫度傳感器進(jìn)行實時的溫度監(jiān)測。溫度傳感器DS18B20是一種具有“一線便是所有”的溫度傳感器,該產(chǎn)品是由美國達(dá)拉
29、斯公司首次推出的世界上面第一個具有以上特點的傳感器,它與CPU的連接只要一根線。而且該溫度傳感器具有精準(zhǔn)度高,體積小,抵抗外界的干擾能力優(yōu)秀的特點。此溫度傳感器的工作的直流電壓值是3.0~5.5V/DC。它能夠監(jiān)測到的溫度為-55℃~+125℃,其測量溫度時的誤差只有1℃,并且在-10℃ 至+85℃范圍內(nèi)的是否精確度更高,只有±0.5℃。</p><p> 方案二:采用熱敏電阻作為溫度檢測的溫度傳感器
30、。這是利用熱敏電阻的電阻值與外界溫度變化有著函數(shù)關(guān)系的特性,然后串聯(lián)一個相同電阻值的電阻進(jìn)行分壓,分別采集兩個電阻的電壓值,并進(jìn)行A/D變換。這樣設(shè)計的時候就需要連接一個A/D轉(zhuǎn)換電路,增加了設(shè)計的時候的難度和成本。而且該熱敏電阻與溫度的函數(shù)關(guān)系并不是很嚴(yán)謹(jǐn),其函數(shù)曲線不是一條圓滑的曲線,因此測量時會產(chǎn)生比較大的誤差,所以不會選擇用熱敏電阻做為本次設(shè)計的溫度監(jiān)測。</p><p> 通過上述介紹,本次設(shè)計必然會
31、選用DS18B20溫度傳感器進(jìn)行溫度的監(jiān)測。</p><p> 顯示模塊的方案選擇及論證</p><p> 方案一:采用LCD1602液晶顯示屏,此顯示屏具有體積小、質(zhì)量輕盈、能耗小、成像清晰的特點。并且該顯示屏與單片機(jī)的連接方式是采用簡單牢靠的數(shù)字方法進(jìn)行連接,這樣使用起來就顯得非常的簡便。而且其在顯示屏上顯示的內(nèi)容也較為豐富,非常實用。</p><p>
32、方案二:采用數(shù)碼管來顯示系統(tǒng)數(shù)據(jù),該數(shù)碼管的內(nèi)部組成是八個發(fā)光的二極管,這樣對于那些只有數(shù)字字符的顯示會比較適合,而且購買價錢不貴,但是本次設(shè)計的電子萬年歷需要顯示的內(nèi)容比較多,也不僅僅是數(shù)字字符了,因此需要比較多的數(shù)碼管,并且設(shè)計的時候電路復(fù)雜、編程麻煩。并且數(shù)碼管顯示不穩(wěn)定,存在抖動現(xiàn)象,需要通過某些軟件延時進(jìn)行消抖,操作起來比較的麻煩。</p><p> 通過以上描述,本次設(shè)計的電子萬年歷毫無疑問的會使用
33、LCD1602液晶顯示屏。這樣可以更加直觀、清晰的體現(xiàn)此萬年歷的功能。</p><p><b> 總體方案的確定</b></p><p> 通過了上述的各項電路模塊的方案論證以及各項模塊的簡單介紹,因此本次設(shè)計的總體方案確定為采用單片機(jī)AT89C51為核心,使用時鐘芯片DS1302進(jìn)行計時和計數(shù)以及用DS18B20溫度傳感器對周圍環(huán)境進(jìn)行溫度檢測,并且將各項結(jié)果通
34、過轉(zhuǎn)換能夠在液晶顯示器LCD1602中呈現(xiàn)出來。</p><p><b> 系統(tǒng)硬件電路的設(shè)計</b></p><p> 系統(tǒng)硬件功能及原理介紹 </p><p> 本系統(tǒng)的電路系統(tǒng)框圖如圖4-1所示,AT89C51單片機(jī)通過C語言的寫入對時鐘芯片DS1302和溫度傳感器DS18B20進(jìn)行操控,然后再在其中讀取出相應(yīng)的數(shù)據(jù),進(jìn)而發(fā)出指令讓
35、LCD1602作出相應(yīng)的顯示。</p><p> 圖4-1 單片機(jī)實現(xiàn)液晶顯示電子萬年歷的總框圖</p><p> AT89C51單片機(jī)的功能及原理</p><p> AT89C51單片機(jī)是美國一家公司研制并且生產(chǎn)的一種擁有4K字節(jié)只讀存儲器,并且擁有CMOS8位微處理器的一個中央處理裝置。該單片機(jī)使用ATMEL高質(zhì)量的閃爍存儲裝置的技術(shù)來進(jìn)行制造的,同時也和
36、工業(yè)上規(guī)定的MCS-51系列單片機(jī)兼容。具有ATMEL裝置的AT89C51是一種高品質(zhì)的微型控制裝置,因為在一小個的芯片中便結(jié)合了擁有多功能的8位CPU與閃爍存儲器,為很多控制系統(tǒng)都提供了一種性價比非常高的方法,并且能夠應(yīng)用于很多高性價比的場合。下圖圖4-2為單片機(jī)實際框圖。</p><p> AT89C51具備如下幾個標(biāo)準(zhǔn)功能:4K字節(jié)的只讀存儲器,一個串行可編程通道,擁有1000多個字節(jié)的內(nèi)部RAM,16位
37、定時/記數(shù)器也有兩個,32個可以用來編程的I/O口總線,還有5個中斷源,片上振蕩器以實時鐘電路。同時,AT89C51的運行工作頻率范圍在0Hz~24Hz之間,而且擁有節(jié)電模式可以選擇。這種單片機(jī)在沒有運行的時候會停止內(nèi)部主要功能的工作,但是還有RAM即串行通信口還是在工作的。掉電模式下只會保存RAM內(nèi)的東西,但是振蕩器只有在其他硬件啟動并且已經(jīng)成功復(fù)位之后才會再次的運行起來。</p><p> 圖4-2 單片機(jī)
38、實物圖</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時鐘芯片的功能及原理</p&
39、gt;<p> DS1302 做為美國達(dá)萊斯公司自主研發(fā)的一種高現(xiàn)價比、低電壓損耗、擁有31個字節(jié)的靜態(tài)RAM,采用特殊的涓細(xì)電流充電方式供電的實時時鐘電路,它能夠?qū)δ?、月、日、星期、時、分、秒進(jìn)行計時,擁有24h和12h的計時方式,還能夠區(qū)分大小月份以及具有閏年補(bǔ)償功能。它工作于2.5V至5.5V。DS1302的內(nèi)部有一個神奇的RAM寄存器用來臨時存放各種數(shù)據(jù)的,它與單片機(jī)的連接只有三根線。DS1302在進(jìn)行保持?jǐn)?shù)據(jù)和
40、時鐘信息時所消耗的能量竟然不到1mW。而且它的計算年限在2100年之間,并且具有閏年補(bǔ)償功能。而且還可以在主電源斷電情況下定時功能。</p><p> 當(dāng)然,DS1302的寄存器種類很多,其中包括控制寄存器、年份寄存器等。</p><p> DS1302的引腳分布如圖4-4所示。</p><p> 圖4-4 DS1302引腳排列</p><
41、p> DS1302管腳的描述:其中晶振管腳是X1和 X2這兩個管腳,GND是一個接地管腳,RST是復(fù)位管腳,它能夠?qū)⑤斎雴又糜诟唠娢恢?,從而達(dá)到所有數(shù)據(jù)的傳輸,I/O口做為數(shù)據(jù)的輸入/輸出端,直接與單片機(jī)進(jìn)行數(shù)據(jù)交換,SCLK始終作為串行通道的輸入端,Vcc1、Vcc2是連接電源的管腳。</p><p> 同時,DS1302的通電方式非常的特別,它是通過比較Vcc1、Vcc2兩者的電壓大小來最終確定
42、由哪個進(jìn)行供電。當(dāng)Vcc2給DS1302供電時,此時的Vcc2大于Vcc1。反之,DS1302就得由Vcc1供電了。</p><p> DS1302的控制方式為從地點為開始輸出。它的輸出條件是最高位必須處于高電位狀態(tài),否則不能輸出數(shù)據(jù)。</p><p> DS18B20溫度傳感器的功能及原理</p><p> DS18B20溫度傳感器做為美國達(dá)拉斯公司研發(fā)銷售
43、的一種高端時髦的溫度傳感器。它可以直接讀出溫度。并且和單片機(jī)的連接只有一根線。而且這個溫度傳感器不需要額外外加一個電源進(jìn)行供電,只需要通過與單片機(jī)相連的那根線供電即可,而且其工作電壓范圍廣,為+3.0~+5.5 V。因而在使用DS18B20后,可以使整個的電路結(jié)構(gòu)變得更加的簡單,而且顯示結(jié)果的精準(zhǔn)度會更好。同時,該溫度傳感器具有一個權(quán)力真空,反極性的特征,它不會因為電源接反了就燒掉了,只不過是不運行了而已。</p>&l
44、t;p> 同時,DS18B20溫度傳感器的內(nèi)部結(jié)構(gòu)不是很復(fù)雜,也就是幾個基本的測溫與傳輸部件構(gòu)成。DS18B20的管腳主要有GND,該引腳是電源接地口;DQ為數(shù)字信號的輸入/輸出端;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個固定頻率的脈沖信號。但是在溫度過高的時候高產(chǎn)品內(nèi)部的頻率會隨著外界溫度的改變而發(fā)生變化的,然后將此信號做為一個數(shù)據(jù)資料進(jìn)行輸入操作。</p><p> LCD1602液晶顯示屏的功能及原理</p><p> LCD1602液晶顯示器都是數(shù)字式的方式連接,和單片機(jī)體系的連接更加簡便。 由于液晶顯示接
46、收到的信號中的每一位一直保持原來的顏色和亮度,發(fā)光穩(wěn)定,所以不需要持續(xù)刷新而導(dǎo)致出現(xiàn)閃爍。</p><p> 點陣圖形式液晶由很多個一點一點的顯示單位構(gòu)成,就像一個坐標(biāo)點一樣,然后通過程序的編寫來確定每個點是否應(yīng)該亮起來,或者是連續(xù)的幾個點亮起來形成一條短線。比如說當(dāng)(3ffh)= FFH,然后在屏幕的右下角顯示一個短的線;當(dāng)(00h)=(FFH,001h)= 00H,(002h)= 00H,......(00
47、eh)= 00H,(00fh)= 00H的時候,這就是LCD顯示的基本原理。</p><p> 使用LCD來顯示出隨便一個符號的過程是十分復(fù)雜的,其緣由就是每一個字符都是由很多個小點組成的,這樣就需要在顯示屏上找到各個點來確定它們是需要亮起來還是不用亮起來。慢慢的就會形成一個字符了。但是有些控制器本身就有控制器,那么它們只需將這些東西直接轉(zhuǎn)化成文本文檔直接輸出就好了。設(shè)置光標(biāo)根據(jù)開始在液晶數(shù)和列每列隊伍號碼找到
48、相應(yīng)的顯示相應(yīng)的內(nèi)存地址,在此基礎(chǔ)上,對相應(yīng)的字符碼。</p><p><b> 主要模塊電路設(shè)計</b></p><p> 通過對各個單元的描述以及了解,接下倆就可以進(jìn)行各個單元模塊的具體設(shè)計了。本次設(shè)計的主要模塊包括了顯示模塊,溫度傳感器電路模塊,鍵盤模塊以及時鐘電路電路模塊。</p><p> 單片機(jī)主控制模塊設(shè)計</p>
49、;<p> 如圖4-6所示,本次單片機(jī)的各個引腳連接如下:9號引腳為復(fù)位電路的輸入端,在其連接上電容、電阻以及開關(guān)后就組成了一個完整的復(fù)位電路了,晶體振蕩器頻率為12MHz,為復(fù)位自動功率降低方法。18和19引腳連接的是延時計時電路,主要用來進(jìn)行延時功能。</p><p> 圖4-6 單片機(jī)最小系統(tǒng)圖</p><p> 時鐘芯片模塊的設(shè)計 </p>&
50、lt;p> 本次設(shè)計的計時電路主要是用DS1302時鐘芯片進(jìn)行計數(shù)的。而在前文中已經(jīng)介紹了該時鐘芯片的原理以及功能了。其中該時鐘芯片的各個引腳的連接圖如下圖圖4-7所示。</p><p> 圖4-7 DS1302時鐘芯片接線圖</p><p> 溫度傳感器模塊的設(shè)計</p><p> 本次設(shè)計使用的是DS18B20溫度傳感器來實現(xiàn)溫度的監(jiān)測的。該溫度傳
51、感器的各項功能及原理也在上文中得到了詳細(xì)的介紹。并且下圖圖4-8給出了該溫度傳感器的詳細(xì)電路連接。由圖中可以看出該傳感器與單片機(jī)的連接非常簡單,僅需要一根線便可以完成與單片機(jī)的完整通信了。</p><p> 圖4-8 溫度傳感器接線圖</p><p><b> 顯示模塊的設(shè)計</b></p><p> 本設(shè)計使用的是LCD1602液晶顯示
52、,數(shù)據(jù)可直接反映到用戶眼中。而LCD1602顯示屏的原理以及功能已經(jīng)在前文中做了詳細(xì)的介紹。其引腳連接圖如圖4-9所示。</p><p> 圖4-9 LCD1602液晶顯示屏連接圖</p><p><b> 鍵盤模塊的設(shè)計</b></p><p> 本次設(shè)計一共擁有4個功能按鍵和一個系統(tǒng)的復(fù)位按鍵,而其中的那些功能按鍵可以任意改變當(dāng)前再顯
53、示的各種狀態(tài)。除卻復(fù)位鍵以外,其他的四個按鍵的功能如一下描述:第一個按鈕是控制鍵,它的主要功能是對于顯示屏上的各項數(shù)據(jù)進(jìn)行選擇設(shè)置;第二個按鍵是進(jìn)入鬧鐘模式的按鈕,在此模式下可以直接設(shè)置鬧鐘的時間,再次按下這個按鍵則會退出鬧鐘界面;第三個按鍵是設(shè)置的時候的加一按鍵;最后一個按鍵是設(shè)置的時候的減一按鍵。</p><p><b> 系統(tǒng)電路的仿真</b></p><p>
54、; 本次設(shè)計的電路是通過Proteus 7 Professional仿真軟件進(jìn)行電路的仿真的。Proteus 7 Professional仿真軟件是由英國一家知名的大公司開發(fā)的一款EDA工具軟件。其在全球被廣泛的應(yīng)用,距今已經(jīng)有將近20年的歷史了。該軟件的系統(tǒng)模塊很多,本文主要介紹了其中的仿真部分。</p><p> Proteus作為一款仿真軟件,其中包含了及其強(qiáng)大的元件庫,其中包含了8000多個數(shù)字和模擬
55、電路中的SPICE模型及各種動態(tài)元件。而且Proteus軟件能夠和大部分的編譯軟件進(jìn)行完美的合作,并進(jìn)行系統(tǒng)的綜合調(diào)試,比如keil等軟件。并且整個的調(diào)試過程與真實的硬件調(diào)試基本沒有差別。其真實性為使用者提供了很好的調(diào)試環(huán)境與方便。因此本文使用Proteus軟件進(jìn)行仿真調(diào)試將硬件系統(tǒng)的真實性得到了極大的肯定。</p><p> 具體的操作過程為雙擊圖標(biāo)等待運行proteus軟件中的程序之后,進(jìn)入到這個仿真軟件的
56、起始設(shè)置的界面。操作前,先設(shè)置視圖菜單捕捉對齊和顏色系統(tǒng),圖形界面的大小等。然后點擊左邊工具欄中的一個大寫的P按鈕,那個是選擇元器件用的,在彈出的窗口中輸入這個電路應(yīng)該需要的各種元件的英文名字,然后雙擊進(jìn)行添加到自己的元件庫中,而后點擊鼠標(biāo)并放置元件和調(diào)整它的位置以及元件的各種參數(shù)設(shè)置,最后進(jìn)行元器件之間連線與布局,編寫程序;之后在雙擊單片機(jī),在彈出的窗口內(nèi)選擇該系統(tǒng)對應(yīng)的程序,然后再添加進(jìn)去,點擊確定按鈕,然后再點擊界面上的運行按鈕,
57、觀察整個仿真電路的運行情況。</p><p> 由上文可以發(fā)現(xiàn)通過該軟件進(jìn)行仿真具有操作簡單方便,并且效果良好。具體的仿真圖詳見附錄一。</p><p><b> 系統(tǒng)程序的設(shè)計</b></p><p> 本次設(shè)計中的軟件編程部分會全部采用C語言來編程,其中C語言是一種可讀性很高的語言,它在處理器中的運行速度非常的快,并且處理各種數(shù)據(jù)的能
58、力也非常好,語言結(jié)構(gòu)很簡單,深受人們歡迎。使用C語言來對系統(tǒng)的軟件進(jìn)行對應(yīng)的編程和時候,相比較與匯編語言,對于用戶的體驗上來說,C語言在結(jié)構(gòu)上會更加的通俗,可讀性會比較高。</p><p> 本次設(shè)計的主流程圖如下圖圖5-1所以,由于顯示器LCD1602,溫度傳感器DS18B20以及時鐘芯片DS1302的數(shù)據(jù)閱讀和其指派功能已經(jīng)在各自的頭文件中完成了,以后只要在主程序中只要加以引用就可以了。詳細(xì)的程序請詳見附錄
59、二。</p><p> 圖5-1 程序主流程圖</p><p> LCD1602的程序設(shè)計</p><p> 表5-1 LCD1602命令控制</p><p> A=1漸增;A=0逐減;</p><p> B=0屏不動;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,點陣5x10;J=0,點陣5x7;</p><p> K=1,LCD繁忙;K=0,空閑。</p><p> 圖5-2 LCD1602初始化</p><p> 如上圖LCD1602經(jīng)過設(shè)置8位數(shù)據(jù)輸入、2行、點陣5x7顯示;再清屏;再
62、設(shè)置字符上輸入格式。在LCD中可設(shè)置判忙子程序,使LCD正常運行,實際中影響不大。在Keil軟件單步調(diào)試判忙會循環(huán)執(zhí)行,因為單片機(jī)讀取外器件端口都為一??捎梅抡嫫鱽磉M(jìn)行單步程序仿真解決。</p><p> DS1302程序設(shè)計</p><p> DS1302通過寫入時間寄存器的相對其地址,讀取時間。在實物中,需先判斷秒位寄存器(Adress為0x80)的最高位是否為0(為0時內(nèi)部振蕩器
63、開啟)。在手動按鍵調(diào)節(jié)時間時,先去掉寫保護(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è)計</p><p> DS18b20在初始化時,需一系列單數(shù)據(jù)線的拉高置低,并間隔相應(yīng)時間??稍O(shè)判錯標(biāo)志位,讀數(shù)據(jù)復(fù)查。在采集時,要經(jīng)初始化并跳器件序列號,再延時,再重復(fù)之前操作,最后接收溫度的低位和高位??捎蓪嶋H程序用時、精度等,確定溫度(9-12b)的輸出位數(shù)。器件內(nèi)含CRC-8檢錯,增強(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軟件會通過對系統(tǒng)軟件進(jìn)行分小段的調(diào)試與監(jiān)測系統(tǒng)在運行時的整體狀況來分析,以便能夠更好
66、的完成此次硬件與軟件的調(diào)試。 </p><p> 針對于以上提出的整體狀況的調(diào)試,我們其實只要打開這個軟件,然后將已經(jīng)繪制成功的仿真圖打開,然后再點擊軟件左下方的運行按鈕。當(dāng)然,此時的單片機(jī)之中可以是有程序也可以是沒有程序的,不過為了調(diào)試結(jié)果更加的準(zhǔn)確,還是先確保該系統(tǒng)中的單片機(jī)是沒有程序的存在。最后移動鼠標(biāo)觀察各個電路模塊以及各個元器件的通電狀況是否正常。</p><p> 對于使
67、用軟件的分塊調(diào)試,這個的前提是以上的整體調(diào)試已經(jīng)沒有問題,然后是已經(jīng)有準(zhǔn)備好的在該系統(tǒng)中有的電路模塊的子程序。隨后我們就可以將其中一個子程序燒錄進(jìn)單片機(jī)之中,然后在點擊運行而后觀察這個電路模塊的運行情況以及顯示狀況。以此類推,我們只要把所有的電路模塊都試過去,那么,即使其中某個小塊出了問題也是很好解決的。 </p><p> 因此,在本次設(shè)計之中,可以通過先將仿真圖繪制成功后,然后點擊運行按鈕,并觀察各個元件的
68、電平的數(shù)值顯示。如有問題,再進(jìn)行修改與替換。確保該電子萬年歷系統(tǒng)的硬件在軟件中能夠正常的運行。</p><p><b> 軟件的調(diào)試</b></p><p> 在一個系統(tǒng)的開發(fā)之中除了必要的硬件之外,同樣也離不開程序的編寫,而我們所謂的程序可以通過機(jī)器或者人工的方法寫入單片機(jī)之中,但現(xiàn)在已經(jīng)很少會去使用手冊的編制。而所謂的機(jī)器匯編就是通過匯編軟件將寫好的源代碼轉(zhuǎn)化
69、成能夠讓單片機(jī)識別的語言,比如Keil軟件在變異后生成的hex文件。伴隨著當(dāng)今世界上的電子科的神速發(fā)展,語言的編譯也開始從基本的匯編語言慢慢的編譯到后來的開發(fā)出更加高級的語言來進(jìn)行語言的編譯。當(dāng)然隨著程序語言的升級,一般的編譯軟件對于它們的識別也漸漸的變得吃力起來,因此編譯軟件的升級就顯得非常的重要。而其中,Keil軟件就是目前在世界上最為流行的一個語言編譯軟件,這個軟件可以完美的適用于51系列的各種單片機(jī)之中。如果你不相信它的流行度,
70、你可以去看看各大電子開發(fā)商最為支持的軟件是什么。Keil是一款功能非常強(qiáng)大的語言編譯軟件,它可以進(jìn)行C語言的編寫和編譯,另外它還自帶了一個及其強(qiáng)大的仿真調(diào)試裝置,通過一個神奇而且強(qiáng)大的開發(fā)環(huán)境(uVision)將所有的強(qiáng)大功能都結(jié)合在了一起。</p><p> Keil軟件的具體操作過程為先打開該軟件,然后再在上面的工具欄中找到項目蘭,點擊創(chuàng)建一個新的項目,然后在新建一個文件,點擊保存,這樣就可以開始編寫系統(tǒng)所
71、需的程序了。編寫完成后點擊調(diào)試按鈕,然后再將編寫好的源代碼以后綴為”.c”的格式保存下來,然后在修改完之后點擊編譯按鈕準(zhǔn)備生成一個hex文件,最后將這個hex文件放入仿真圖中的單片機(jī)之中就可以進(jìn)行調(diào)試了。</p><p> 因而本次設(shè)計的系統(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> 通過上文介紹的幾個軟件以及操作方法,現(xiàn)在可以進(jìn)行結(jié)合調(diào)試并觀察最后的運行結(jié)果。具體的運行調(diào)試結(jié)果詳見附錄一。</p><p><b> 結(jié)論</b></p><p> 本次設(shè)計利用的是以51單片機(jī)做為中央處理器,結(jié)合外部那些時鐘芯片一起的電路模塊,溫度傳感器DS
73、18B20,液晶顯示器的電路模塊,復(fù)位電路以及鍵盤控制模塊等構(gòu)成的一個多功能的數(shù)字電子萬年歷。然后使用ISIS軟件進(jìn)行系統(tǒng)電路仿真,再通過KEIL軟件進(jìn)行C語言的編寫,最后在顯示器上實現(xiàn)了同時顯示年份、月份、日期、星期、小時、分鐘、秒以及實時溫度,另外還有一個鬧鈴功能。</p><p> 本人設(shè)計的數(shù)字電子萬年歷通過上文可以發(fā)現(xiàn),除了課題要求實現(xiàn)的那些功能之外,該系統(tǒng)還有溫度監(jiān)測功能與鬧鈴功能,加上這兩個功能會
74、顯得這個萬年歷更顯得人性化,更加的符合用戶的日常需求,也符合我國未來的發(fā)展方向,這也是本人的創(chuàng)新點。</p><p> 在本次課題設(shè)計的過程中,我遇到過非常多的問題與難點。比如說在軟件的編寫過程中,在寫完子程序后發(fā)現(xiàn)自己竟然不能將該子程序與主程序完美的連接起來。后來通過自己慢慢的翻閱各種書籍以及向指導(dǎo)老師求助,終于在后來將程序調(diào)試了出來。當(dāng)然,在硬件設(shè)計的時候也遇到過繪制完電路圖之后發(fā)現(xiàn)整個系統(tǒng)完全處于待機(jī)狀態(tài)
75、,完全沒有反映。最后也是同學(xué)的幫助才得以完成的。當(dāng)然在開始設(shè)計之前,我曾經(jīng)查閱過很多資料,也發(fā)現(xiàn)了很多的難點,比如說時鐘芯片與單片機(jī)的通信問題,再后來的設(shè)計過程中,其實那些問題都被自己慢慢的攻克了下來。</p><p> 因此,通過本次的畢業(yè)設(shè)計之后,我覺得自己將之前幾年學(xué)過的單片機(jī)知識以及各種軟件操作的只是都重溫了一遍,并且現(xiàn)在已經(jīng)將這些只是都結(jié)合融入到自己的腦海之中,讓自己在這方面的專業(yè)知識得到了一個新的升
76、華,同時也在平時積累的過程中豐富了自己的大腦。</p><p> 應(yīng)該說我們學(xué)校的畢業(yè)設(shè)計就是我們在學(xué)校的最后一次考試,也是學(xué)校對我們的考驗。雖然講的是萬事開頭難,但是,都過前期的不斷積累,這個開頭其實并不是很難。因此,做一次畢業(yè)設(shè)計也是對我們自己的提高。因為在一次畢業(yè)設(shè)計中,我能夠?qū)W到很多,那對我以后的生活工作都是很有幫助的。</p><p><b> 致謝</b&g
77、t;</p><p> 能夠完成完成本次畢業(yè)設(shè)計,感謝的人其實是很多的。首先感謝學(xué)校給了我一個展現(xiàn)自我的機(jī)會。其次是我們的指導(dǎo)老師,在做設(shè)計的日子里得到了指導(dǎo)老師的耐心指導(dǎo),使得我的畢業(yè)設(shè)計能夠順利的完成,在此向我們的指導(dǎo)教師表示最為誠摯的感謝。然后是感謝那些給我提供幫助的老師和同學(xué)們,是你們的支持和鼓勵讓我對這次的畢業(yè)設(shè)計的完成有了強(qiáng)烈的自信與動力,同時你們也給了我很多無私的幫助和支持,在此我表示非常感謝。&
78、lt;/p><p><b> 參考文獻(xiàn)</b></p><p> [1] 張毅剛, 彭喜元. 單片機(jī)原理及接口技術(shù)[M]. 北京:人民郵電出版社.2008.</p><p> [2] 張蓬. Protel DXP電路設(shè)計入門與應(yīng)用[M]. 北京:機(jī)械工業(yè)出版社.2005</p><p> [3] 劉守義, 鐘 蘇.
79、數(shù)字電子技術(shù)[M]. 西安:西安電子科技大學(xué)出版社. 2003.</p><p> [4] 趙亮, 候國銳. 單片機(jī)C語言編程與實例[M].北京: 人民郵電出版社. 2003.</p><p> [5] 劉利. 液晶顯示原理[M].上海: 電子工業(yè)出版社.2002.</p><p> [6] 于復(fù)生,宋現(xiàn)春等. 時鐘芯片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è)計實訓(xùn)100例——基于8051+Proteus仿真(第二版)[M]
81、,電子工業(yè)出版社,2012</p><p> [10] 馬忠梅. 單片機(jī)的C語言應(yīng)用程序設(shè)計[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; //使能信號位,將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)鬧鐘的小時即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)格延時</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ù)功能:延時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ù)功能:延時若干毫秒</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為高電平時,可以讀狀態(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_(); //空操作四個機(jī)器周期,給硬件反應(yīng)時間</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同時為低電平時,可以寫入指令</p><p><b> RW=0; </b></p><p> E=
110、0; //E置低電平(根據(jù)表8-6,寫指令時,E為高脈沖,</p><p> // 就是讓E從0到1發(fā)生正跳變,所以應(yīng)先置"0"</p><p><b> _nop_();</b></p><p> _nop_(); //空操作兩個機(jī)器周期,給硬件反應(yīng)時間
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_(); //空操作四個機(jī)器周期,給硬件反應(yīng)時間</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_(); //空操作四個機(jī)器周期,給硬件反應(yīng)時間</p><p> E=0; //當(dāng)E由高電平跳變成低電平時,液晶模塊開始執(zhí)行命令</p><p><b> }</b&g
114、t;</p><p> /*****************************************************</p><p> 函數(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)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 數(shù)字萬年歷畢業(yè)設(shè)計
- 電子萬年歷畢業(yè)設(shè)計
- 電子萬年歷畢業(yè)設(shè)計
- 電子萬年歷畢業(yè)設(shè)計
- 畢業(yè)設(shè)計---電子萬年歷設(shè)計
- 畢業(yè)設(shè)計---電子萬年歷的設(shè)計
- 畢業(yè)設(shè)計---電子萬年歷的設(shè)計
- 電子萬年歷畢業(yè)設(shè)計稿
- 畢業(yè)設(shè)計----電子萬年歷論文設(shè)計
- 電子萬年歷畢業(yè)設(shè)計2
- 電子萬年歷設(shè)計
- 電子萬年歷的設(shè)計與仿真
- 萬年歷畢業(yè)設(shè)計---基于stc89c52萬年歷的設(shè)計
- 電子鐘萬年歷畢業(yè)設(shè)計
- 萬年歷課程設(shè)計--萬年歷電子時鐘
- 數(shù)字萬年歷設(shè)計論文
- 數(shù)字電子課設(shè)萬年歷的設(shè)計
- 數(shù)碼萬年歷的畢業(yè)設(shè)計
- 數(shù)碼萬年歷的畢業(yè)設(shè)計
- 萬年歷電子時鐘溫度畢業(yè)設(shè)計
評論
0/150
提交評論