版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、<p><b> 目 錄</b></p><p><b> 1 緒論1</b></p><p> 1.1 課題研究的背景1</p><p> 1.2 課題的研究目的與意義1</p><p> 1.3 課題研究的主要內(nèi)容1</p><p> 2
2、系統(tǒng)功能要求與總體設(shè)計(jì)3</p><p> 2.1 系統(tǒng)功能要求3</p><p> 2.2 系統(tǒng)方案選擇3</p><p> 2.3系統(tǒng)總體設(shè)計(jì)4</p><p> 3 系統(tǒng)硬件設(shè)計(jì)6</p><p> 3.1單片機(jī)主控模塊的設(shè)計(jì)6</p><p> 3.1.1 AT8
3、9S52功能特性6</p><p> 3.1.2 AT89S52引腳結(jié)構(gòu)介紹6</p><p> 3.1.3 單片機(jī)最小系統(tǒng)9</p><p> 3.2 時(shí)鐘電路模塊的設(shè)計(jì)10</p><p> 3.2.1 DS1302簡介10</p><p> 3.2.2 DS1302與單片機(jī)接口電路11&l
4、t;/p><p> 3.3 溫度采集模塊的設(shè)計(jì)13</p><p> 3.3.1 DS18B20簡介13</p><p> 3.3.2 DS18B20與單片機(jī)接口電路14</p><p> 3.4 鍵盤顯示模塊的設(shè)計(jì)15</p><p> 3.4.1 按鍵電路的設(shè)計(jì)15</p><
5、p> 3.4.2 顯示電路的設(shè)計(jì)16</p><p> 3.5 電源電路設(shè)計(jì)18</p><p> 4 系統(tǒng)軟件設(shè)計(jì)20</p><p> 4.1 主程序設(shè)計(jì)20</p><p> 4.2 時(shí)鐘子程序的設(shè)計(jì)21</p><p> 4.3 測溫子程序22</p><p&g
6、t; 4.4 顯示子程序23</p><p> 5 系統(tǒng)仿真與測試24</p><p> 5.1 Proteus ISIS簡介24</p><p> 5.1.1 啟動(dòng)Proteus24</p><p> 5.1.2 Proteus運(yùn)行界面25</p><p> 5.1.3 Proteus功能仿真
7、25</p><p> 5.2 系統(tǒng)仿真結(jié)果26</p><p> 5.3 系統(tǒng)測試28</p><p><b> 結(jié)束語30</b></p><p><b> 致 謝31</b></p><p><b> 參考文獻(xiàn)32</b><
8、;/p><p><b> 附 錄33</b></p><p> 附錄一:整機(jī)原理圖33</p><p> 附錄二:整機(jī)PCB圖34</p><p> 附錄三:部分源程序35</p><p> 電子萬年歷的設(shè)計(jì)與實(shí)現(xiàn)</p><p><b> 摘
9、 要</b></p><p> 本文介紹一種基于AT89S52單片機(jī)的帶溫度顯示的數(shù)字萬年歷的實(shí)現(xiàn)方法,系統(tǒng)包括單片機(jī)最小系統(tǒng)模塊、時(shí)鐘計(jì)時(shí)模塊、溫度采集模塊、鍵盤顯示模塊。時(shí)鐘模塊采用高性能時(shí)鐘芯片DS1302,溫度采集模塊采用DS18B20集成溫度傳感器,顯示模塊以LCD1602液晶屏作為顯示。能夠?qū)崿F(xiàn)年、月、日、時(shí)、分、秒、星期、溫度同時(shí)顯示,而且能區(qū)分平年、閏年和月份的大小并帶有掉電保護(hù)、整
10、點(diǎn)報(bào)時(shí)及鬧鐘等功能。該系統(tǒng)具有電路設(shè)計(jì)新穎、功耗低、體積小、顯示清晰等優(yōu)點(diǎn)。</p><p> 關(guān)鍵字: AT89S52/萬年歷/DS1302/DS18B20</p><p> The design and implementation </p><p> of the electronic calendar</p><p><
11、b> ABSTARCT</b></p><p> This paper introduces a AT89S52 SCM with temperature of based on the digital display calendar design, system including single chip minimize system module, clock module, tem
12、perature acquisition module, keyboard display module. The clock module by high performance clock chip DS1302, temperature gathering module USES integrated temperature sensor DS18B20, display module to LCD1602 as display
13、LCD screen. To realize the date and time, minutes and seconds, week, temperature shows at the same time, and</p><p> Key word: AT89S52, calendar, DS1302, DS18B20</p><p><b> 1 緒論</b&g
14、t;</p><p> 1.1 課題研究的背景</p><p> 二十一世紀(jì)的今天,最具代表性的計(jì)時(shí)產(chǎn)品就是電子萬年歷,它是近代世界鐘表業(yè)界的第三次革命。第一次是擺和擺輪游絲的發(fā)明,相對穩(wěn)定的機(jī)械振蕩頻率源使鐘表的走時(shí)差從分級縮小到秒級,代表性的產(chǎn)品就是帶有擺或擺輪游絲的機(jī)械鐘或表。第二次革命是石英晶體振蕩器的應(yīng)用,發(fā)明了走時(shí)精度更高的石英電子鐘表,使鐘表的工作時(shí)日差從分級縮小到秒級。
15、第三次革命就是單片機(jī)數(shù)碼計(jì)時(shí)技術(shù)的應(yīng)用(電子萬年歷),使計(jì)時(shí)產(chǎn)品的走時(shí)日差從分級縮小到1/600萬秒,從原有傳統(tǒng)指針計(jì)時(shí)的方式發(fā)展為人們?nèi)粘8鼮槭煜さ囊构鈹?shù)字顯示方式,直觀明了,并增加了全自動(dòng)日期、星期、溫度以及其他日常附屬信息的顯示功能,它更符合消費(fèi)者的生活需求!因此,電子萬年歷的出現(xiàn)帶來了鐘表計(jì)時(shí)業(yè)界跨躍性的進(jìn)步[1]。</p><p> 隨著當(dāng)今世界經(jīng)濟(jì)的快速發(fā)展和信息化時(shí)代的來臨,各種各樣的小型智能家電
16、產(chǎn)品陸續(xù)出現(xiàn)在我們的生活中。日歷是人們不可或缺的日常用品。萬年歷目前已經(jīng)不再局限于以紙質(zhì)形式出現(xiàn)。以電腦軟件或者電子產(chǎn)品形式出現(xiàn)的萬年歷被稱為電子萬年歷。與傳統(tǒng)紙質(zhì)形式的萬年歷相比,電子萬年歷得到了越來越廣泛的應(yīng)用,采用電子時(shí)鐘作為時(shí)間顯示已經(jīng)成為一種時(shí)尚。目前市場上各式各樣的電子時(shí)鐘數(shù)不勝數(shù),但多數(shù)是只針對時(shí)間顯示,功能單一,使用不便,壽命不長不能滿足人們?nèi)粘I钚枨?。而電子萬年歷采用智能電子控制和顯示技術(shù),改善了紙制日歷的缺陷。&l
17、t;/p><p> 1.2課題的研究目的與意義</p><p> 二十一世紀(jì)是數(shù)字化技術(shù)高速發(fā)展的時(shí)代,而單片機(jī)在數(shù)字化高速發(fā)展的時(shí)代扮演著極為重要的角色。電子萬年歷的開發(fā)與研究在信息化時(shí)代的今天亦是當(dāng)務(wù)之急,因?yàn)樗鼞?yīng)用在學(xué)校、機(jī)關(guān)、企業(yè)、部隊(duì)等單位禮堂、訓(xùn)練場地、教學(xué)室、公共場地等場合,可以說遍及人們生活的每一個(gè)角落。所以說電子萬年歷的開發(fā)是國家之所需,社會(huì)之所需,人民之所需。<
18、/p><p> 由于社會(huì)對信息交換不斷提高的要求及高新技術(shù)的逐步發(fā)展,數(shù)字萬年歷具有讀取方便、顯示直觀、功能多樣、電路簡潔、成本低廉等諸多優(yōu)點(diǎn),符合電子儀器儀表的發(fā)展趨勢,促使電子萬年歷發(fā)展并且投入市場得到廣泛應(yīng)用,具有廣闊的市場前景。</p><p> 1.3課題研究的主要內(nèi)容</p><p> 本課題所研究的電子萬年歷是單片機(jī)控制技術(shù)的一個(gè)具體應(yīng)用,主要研究內(nèi)
19、容包括以下幾個(gè)方面:</p><p> (1) 選用電子萬年歷芯片時(shí),應(yīng)重點(diǎn)考慮功能實(shí)在、使用方便、單片存儲、低功耗、抗斷電的器件。</p><p> (2) 根據(jù)選用的電子萬年歷芯片設(shè)計(jì)外圍電路和單片機(jī)的接口電路。</p><p> (3) 在硬件設(shè)計(jì)時(shí),結(jié)構(gòu)要盡量簡單實(shí)用、易于實(shí)現(xiàn),使系統(tǒng)電路盡量簡單。</p><p> (4)
20、根據(jù)設(shè)計(jì)的硬件電路,自制PCB電路板完成器件的焊接,并編寫控制AT89S52芯片的單片機(jī)程序。</p><p> (5) 通過編程、編譯、調(diào)試,把程序下載到單片機(jī)上運(yùn)行,并實(shí)現(xiàn)本設(shè)計(jì)的功能。</p><p> (6) 軟件設(shè)計(jì)時(shí)必須要有完善的思路,要做到程序簡單,調(diào)試方便。</p><p> 2系統(tǒng)功能要求與總體設(shè)計(jì)</p><p>
21、 2.1 系統(tǒng)功能要求</p><p> 設(shè)計(jì)一個(gè)能顯示年、月、日、時(shí)、分、秒、星期和當(dāng)前溫度的數(shù)字萬年歷,采用LCD顯示并具備以下功能:</p><p><b> 一、 基本功能</b></p><p> 能夠任意設(shè)定年、月、日、時(shí)、分、秒、星期。</p><p><b> 二、 發(fā)揮功能</b
22、></p><p> (1) 任意設(shè)定報(bào)時(shí)時(shí)間;</p><p> (2) 帶有溫度顯示;</p><p> (3) 能夠區(qū)分平年、閏年和月份的大??;</p><p> (4) 帶有掉電保護(hù)(停電后時(shí)鐘正常運(yùn)行,可以不顯示)。</p><p> (5) 有整點(diǎn)提示和鬧鐘。</p><
23、p> 2.2 系統(tǒng)方案選擇</p><p> 根據(jù)系統(tǒng)功能要求,初步確定系統(tǒng)由主控模塊、時(shí)鐘模塊、顯示模塊、按鍵接口模塊、電源模塊5部分模塊組成,另外再擴(kuò)充一個(gè)溫度檢測模塊,用于顯示測的實(shí)時(shí)的溫度,具體可由以下兩種方案實(shí)現(xiàn)。</p><p> 方案一:單片機(jī)為主控制核心,時(shí)間和溫度數(shù)據(jù)是通過時(shí)鐘芯片DS1302和數(shù)字溫度傳感器DS18B20來讀取的,通過液晶顯示器顯示出來,并采
24、用按鍵來完成對當(dāng)前時(shí)間的調(diào)整和定時(shí)時(shí)間的設(shè)定。</p><p> 方案二:以單片機(jī)為住控制核心,時(shí)間通過軟件編程來實(shí)現(xiàn),通過單片機(jī)的定時(shí)器,得出一秒的時(shí)間,再根據(jù)秒、分、時(shí)、日、星期、年之間的進(jìn)制關(guān)系,完成基本的時(shí)鐘功能,再通過LED顯示模塊顯示出來。溫度檢測部分有熱敏電阻將溫度轉(zhuǎn)換成模擬量的電壓信號,經(jīng)A/D轉(zhuǎn)換器,將其轉(zhuǎn)換成對應(yīng)的數(shù)字量,再通過單片機(jī)把溫度值傳給LED顯示模塊顯示出來,并用按鍵來完成對當(dāng)前時(shí)
25、間的調(diào)整和定時(shí)時(shí)間的設(shè)定。</p><p> 方案一和方案二的比較:時(shí)鐘設(shè)計(jì)可以用軟件編程或硬件實(shí)現(xiàn),若用軟件設(shè)計(jì)誤差相對于硬件設(shè)計(jì)略大,在軟件設(shè)計(jì)中定時(shí)器如采用軟件查詢的方法占用大量的CPU資源,所以最好采用中斷的方式以節(jié)約資源,但用軟件編程的方法對晶振要求很高。因?yàn)闀r(shí)間的誤差主要來源于理想機(jī)器周期和實(shí)際周期之間的微小差距,此外還有送定時(shí)器初值時(shí)產(chǎn)生的誤差,況且用軟件編程比較復(fù)雜,所以本設(shè)計(jì)采用日歷時(shí)鐘芯片。
26、時(shí)鐘芯片時(shí)間精確度高,性價(jià)比高,相對于軟件編程性能有很大提高,且可二次開發(fā),用于實(shí)時(shí)記錄一些重要的數(shù)據(jù)。為了增加設(shè)計(jì)的實(shí)用性方案一和方案二都增加了溫度顯示模塊,采用數(shù)字溫度芯片具有體積小、抗干擾能力強(qiáng)、調(diào)試方便或不用調(diào)試、易于實(shí)現(xiàn)群測等優(yōu)點(diǎn),而且直接輸出數(shù)字量的溫度值,簡化了測量電路的同時(shí)又保證了測溫精度。采用熱敏電阻檢測溫度,其原理是熱敏電阻的阻值隨溫度的變化而變化,從而改變電路電壓或電流,這樣就得出與溫度有對應(yīng)電壓或電流的信號,再經(jīng)
27、計(jì)算,就可得出被測溫度。由于電壓或電流量都是模擬量,易于受外界干擾,并且熱敏元件存在非線性誤差,這都將影響溫度的測量精度,還給計(jì)算帶來了麻煩。顯示模塊采用LCD能同時(shí)顯示所有信息,顯示直觀,軟</p><p> 綜合上面比較論證,本設(shè)計(jì)采用方案一來實(shí)現(xiàn)。</p><p><b> 2.3系統(tǒng)總體設(shè)計(jì)</b></p><p> 系統(tǒng)包括單片
28、機(jī)主控模塊、時(shí)鐘模塊、溫度采集模塊、顯示模塊、按鍵接口模塊、電源模塊??驁D如圖2-1所示。</p><p> 系統(tǒng)主控模塊由AT89S52單片機(jī)組成,完成整個(gè)系統(tǒng)的信息采集和控制。時(shí)鐘模塊采用的是DS1302數(shù)字時(shí)鐘芯片,主要為萬年歷提供系統(tǒng)時(shí)鐘,并帶有掉電保護(hù)。外接電源為一個(gè)3.6伏的紐扣電池,以保證系統(tǒng)電源掉電后時(shí)鐘正常運(yùn)行,可以不顯示。按鍵有四個(gè)獨(dú)立按鍵組成。顯示模塊選用的是LCD1602做顯示,完成系統(tǒng)
29、時(shí)間和溫度的顯示。溫度采集選用的是DS18B20,主要完成實(shí)時(shí)溫度的采集。蜂鳴器完成整點(diǎn)提示和鬧鐘功能。電源模塊為經(jīng)典的7805穩(wěn)壓模塊,為整個(gè)系統(tǒng)提供電源。</p><p> 本系統(tǒng)由DS1302提供萬年歷系統(tǒng)時(shí)鐘,DS18B20采集實(shí)時(shí)溫度,經(jīng)單片機(jī)由軟件處理后顯示實(shí)時(shí)時(shí)鐘和實(shí)時(shí)溫度。并且通過按鍵對時(shí)鐘和鬧鐘的調(diào)整,有蜂鳴器完成鬧鐘提示。</p><p><b> 3系統(tǒng)
30、硬件設(shè)計(jì)</b></p><p> 3.1單片機(jī)主控模塊的設(shè)計(jì)</p><p> 3.1.1 AT89S52功能特性 </p><p> AT89S52[2]是一種低功耗、高性能CMOS8位微控制器,具有8K在系統(tǒng)可編程Flash存儲器。使用Atmel公司高密度非易失性存儲器技術(shù)制造,與工業(yè)80C51 產(chǎn)品指令和引腳完全兼容。片上Flash允
31、許程序存儲器在系統(tǒng)可編程,亦適于常規(guī)編程器。在單芯片上,擁有靈巧的8位CPU 和在系統(tǒng) 可編程Flash,使得AT89S52為眾多嵌入式控制應(yīng)用系統(tǒng)提供高靈活、更有效的解決方案。</p><p> AT89S52具有以下標(biāo)準(zhǔn)功能:8k字節(jié)Flash,256字節(jié)RAM,32位I/O 口線,看門狗定時(shí)器,2個(gè)數(shù)據(jù)指針,三個(gè)16位定時(shí)器/計(jì)數(shù)器,一個(gè)6向量2級中斷結(jié)構(gòu),全雙工串行口,片內(nèi)晶振及時(shí)鐘電路。另外,AT89
32、S52可降至0Hz靜態(tài)邏輯操作,支持2種軟件可選擇節(jié)電模式。空閑模式下,CPU停止工作,允許RAM、定時(shí)器/計(jì)數(shù)器、串口、中斷繼續(xù)工作。掉電保護(hù)方式下,RAM內(nèi)容被保存,振蕩器被凍結(jié),單片機(jī)一切工作停止,直到下一個(gè)中斷或硬件復(fù)位為止。同時(shí)該芯片還具有PDIP、TQFP和PLCC等三 種封裝形式,以適應(yīng)不同產(chǎn)品的需求。</p><p> 3.1.2 AT89S52引腳結(jié)構(gòu)介紹</p><p&g
33、t; AT89S52單片機(jī)引腳圖如圖3-1所示:</p><p> AT89S52單片機(jī)共有40個(gè)引腳,主電源引腳Vcc和GND,外部晶振引腳XATL1和XATL2,控制和復(fù)位引腳,輸入/輸出引腳。輸入/輸出有4個(gè)準(zhǔn)雙向并行的8位I/O口P0~P3,P0口為三態(tài)雙向口,可以驅(qū)動(dòng)8個(gè)TTL電路,P1,P2,P3口為準(zhǔn)雙向口(作為輸入時(shí),口線被拉成高電平故稱為準(zhǔn)雙向口),其負(fù)載能力為4個(gè)TTL電路。</p&
34、gt;<p> VCC(40腳):電源端,接+5V。</p><p> GND(20腳):接電源地。</p><p> P0口:P0口是一個(gè)8位漏極開路的雙向I/O口。作為輸出口,每位能驅(qū)動(dòng)8個(gè)TTL邏輯電平。對P0端口寫“1”時(shí),引腳用作高阻抗輸入。當(dāng)訪問外部程序和數(shù)據(jù)存儲器時(shí),P0口也被作為低8位地址/數(shù)據(jù)復(fù)用。在這種模式下,P0口具有內(nèi)部上拉電阻。在Flash編程
35、時(shí),P0口也用來接收指令字節(jié);在程序校驗(yàn)時(shí),輸出指令字節(jié)。程序校驗(yàn)時(shí),需要外部上拉電阻。</p><p> P1口:P1口是一個(gè)具有內(nèi)部上拉電阻的8 位雙向I/O 口,p1 輸出緩沖器能驅(qū)動(dòng)4 個(gè)TTL 邏輯電平。對P1 端口寫“1”時(shí),內(nèi)部上拉電阻把端口拉高,此時(shí)可以作為輸入口使用。作為輸入使用時(shí),被外部拉低的引腳由于內(nèi)部電阻的原因,將輸出電流(IIL)。此外,P1.0和P1.2分別作定時(shí)器/計(jì)數(shù)器2的外部計(jì)
36、數(shù)輸入(P1.0/T2)和時(shí)器/計(jì)數(shù)器2的觸發(fā)輸入(P1.1/T2EX),具體如下表所示。在flash編程和校驗(yàn)時(shí),P1口接收低8位地址字節(jié)。</p><p> P2口:P2口是一個(gè)具有內(nèi)部上拉電阻的8 位雙向I/O 口,P2輸出緩沖器能驅(qū)動(dòng)4個(gè)TTL邏輯電平。對P2 端口寫“1”時(shí),內(nèi)部上拉電阻把端口拉高,此時(shí)可以作為輸入口使用。作為輸入使用時(shí),被外部拉低的引腳由于內(nèi)部電阻的原因,將輸出電流(TTL)。在訪問
37、外部程序存儲器或用16位地址讀取外部數(shù)據(jù)存儲器(例如執(zhí)行MOVX @DPTR)時(shí),P2口送出高八位地址。在這種應(yīng)用中,P2口使用很強(qiáng)的內(nèi)部上拉發(fā)送“1”。在使用8位地址(如MOVX @RI)訪問外部數(shù)據(jù)存儲器時(shí),P2口輸出P2鎖存器的內(nèi)容。在Flash編程和校驗(yàn)時(shí),P2口也接收高8位地址字節(jié)和一些控制信號。</p><p> P3口:P3口是一個(gè)具有內(nèi)部上拉電阻的8位雙向I/O口,P2輸出緩沖器能驅(qū)動(dòng)4個(gè)TTL
38、 邏輯電平。對P3 端口寫“1”時(shí),內(nèi)部上拉電阻把端口拉高,此時(shí)可以作為輸入口使用。作為輸入使用時(shí),被外部拉低的引腳由于內(nèi)部電阻的原因,將輸出電流(IIL)。P3口亦作為AT89S52特殊功能(第二功能)使用,如下表3-1所示。在flash編程和校驗(yàn)時(shí),P3口也接收一些控制信號。</p><p> RST(9引腳):復(fù)位輸入。晶振工作時(shí),RST腳持續(xù)2個(gè)機(jī)器周期高電平將使單片機(jī)復(fù)位??撮T狗計(jì)時(shí)完成后,RST 腳
39、輸出96個(gè)晶振周期的高電平。特殊寄存器AUXR(地址8EH)上的DISRTO位可以使此功能無效。DISRTO默認(rèn)狀態(tài)下,復(fù)位高電平有效。</p><p> ALE/PROG(30引腳):地址鎖存控制信號(ALE)是訪問外部程序存儲器時(shí),鎖存低8 位地址的輸出脈沖。在flash編程時(shí),此引腳(PROG)也用作編程輸入脈沖。在一般情況下,ALE 以晶振六分之一的固定頻率輸出脈沖,可用來作為外部定時(shí)器或時(shí)鐘使用。然而
40、,特別強(qiáng)調(diào),在每次訪問外部數(shù)據(jù)存儲器時(shí),ALE脈沖將會(huì)跳過。如果需要,通過將地址為8EH的SFR的第0位置 “1”,ALE操作將無效。這一位置 “1”,ALE 僅在執(zhí)行MOVX 或MOVC指令時(shí)有效。否則,ALE 將被微弱拉高。這個(gè)ALE 使能標(biāo)志位(地址為8EH的SFR的第0位)的設(shè)置對微控制器處于外部執(zhí)行模式下無效。</p><p> PSEN(29引腳):外部程序存儲器選通信號(PSEN)是外部程序存儲器
41、選通信號。當(dāng)AT89S52從外部程序存儲器執(zhí)行外部代碼時(shí),PSEN在每個(gè)機(jī)器周期被激活兩次,而在訪問外部數(shù)據(jù)存儲器時(shí),PSEN將不被激活。</p><p> EA/VPP(31引腳):訪問外部程序存儲器控制信號。為使能從0000H 到FFFFH的外部程序存儲器讀取指令,EA必須接GND。為了執(zhí)行內(nèi)部程序指令,EA應(yīng)該接VCC。在Flash編程期間,EA也接收12伏VPP電壓。</p><p&
42、gt; XTAL1(19引腳):振蕩器反相放大器和內(nèi)部時(shí)鐘發(fā)生電路的輸入端。</p><p> XTAL2(18引腳):振蕩器反相放大器的輸出端。</p><p> 3.1.3 單片機(jī)最小系統(tǒng)</p><p> 單片機(jī)最小系統(tǒng)電路主要有晶體振蕩電路和復(fù)位電路組成。</p><p><b> (1) 振蕩電路</b&g
43、t;</p><p> 石英晶體振蕩器也稱石英晶體諧振器,它用來穩(wěn)定頻率和選擇頻率,是一種可以取代LC諧振回路的晶體諧振元件。 </p><p> 本設(shè)計(jì)所用的晶體振蕩電路如圖3-2所示。 </p><p> 圖3-2 晶體振蕩電路</p><p> 此晶振電路所選用的石英晶振頻率為11.0592MHz。時(shí)鐘周期就是單片機(jī)外接晶振的倒
44、數(shù),它的時(shí)間周期就是(1/12 us),是計(jì)算機(jī)中最基本的、最小的時(shí)間單位。</p><p> 在一個(gè)時(shí)鐘周期內(nèi),CPU僅完成一個(gè)最基本的動(dòng)作。對于某種單片機(jī)來說,若采用了1MHz的時(shí)鐘頻率,則時(shí)鐘周期為1us;若采用4MHz的時(shí)鐘頻率,則時(shí)鐘周期為250μs。由于時(shí)鐘脈沖是計(jì)算機(jī)的基本工作脈沖,它控制著計(jì)算機(jī)的工作節(jié)奏(使計(jì)算機(jī)的每一步都統(tǒng)一到它的步調(diào)上來)。顯然,對同一種機(jī)型的計(jì)算機(jī),時(shí)鐘頻率越高,計(jì)算機(jī)的
45、工作速度就越快。但是,由于不同的計(jì)算機(jī)硬件電路和器件的不完全相同,所以其所需要的時(shí)鐘周頻率范圍也不一定相同。一般的設(shè)計(jì)中使用到的單片機(jī)的時(shí)鐘范圍是12MHz或11.0592MHz。</p><p><b> (2) 復(fù)位電路</b></p><p> 單片機(jī)復(fù)位是使CPU和系統(tǒng)中的其他功能部件都處在一個(gè)確定的初始狀態(tài),并從這個(gè)狀態(tài)開始工作,例如復(fù)位后PC=0000
46、H,使單片機(jī)從第一個(gè)單元取指令。無論是在單片機(jī)剛開始接上電源時(shí),還是斷電后或者發(fā)生故障后都要復(fù)位,所以必須弄清楚AT89S52型單片機(jī)復(fù)位的條件、復(fù)位電路和復(fù)位后狀態(tài)。</p><p> 單片機(jī)復(fù)位的條件是:必須使RST/Vpd或RST引腳(9)加上持續(xù)兩個(gè)機(jī)器周期(即24個(gè)振蕩周期)的高電平。例如,若時(shí)鐘頻率為12MHz,每機(jī)器周期為1us,則只需2us以上時(shí)間的高電平,在RST引腳出現(xiàn)高電平后的第二個(gè)機(jī)器周
47、期執(zhí)行復(fù)位。單片機(jī)常用的復(fù)位電路如圖3-3所示。</p><p><b> 圖3-3 復(fù)位電路</b></p><p> 圖3-3為復(fù)位電路也是本次設(shè)計(jì)所用的復(fù)位電路,其復(fù)位方法為只要單片機(jī)一上電REST為高電平單片機(jī)即復(fù)位。除此之外我們所學(xué)的電路還有手動(dòng)復(fù)位電路和自動(dòng)復(fù)位電路。</p><p> 3.2 時(shí)鐘電路模塊的設(shè)計(jì)</p&
48、gt;<p> 3.2.1 DS1302簡介</p><p> DS1302[3][4]是美國DALLAS公司推出的一種高性能、低功耗、帶RAM的實(shí)時(shí)時(shí)鐘芯片,它可以對年、月、日、周、時(shí)、分、秒進(jìn)行計(jì)時(shí),具有閏年補(bǔ)償功能,工作電壓為2.5V~5.5V。采用三線接口與CPU進(jìn)行同步通信,并可采用突發(fā)方式一次傳送多個(gè)字節(jié)的時(shí)鐘信號或RAM數(shù)據(jù)。DS1302內(nèi)部有一個(gè)31×8的用于臨時(shí)性存
49、放數(shù)據(jù)的RAM寄存器。DS1302是DS1202的升級產(chǎn)品,與DS1202兼容,但增加了主電源/后背電源雙電源引腳,同時(shí)提供了對后背電源進(jìn)行涓泳電流充電的能力。</p><p> DS1302的引腳排列如圖3-4,其中Vcc1為后備電源,Vcc2為主電源。在主電源關(guān)閉的情況下,也能保持時(shí)鐘的連續(xù)運(yùn)行。DS1302由Vcc1或Vcc2兩者中的較大者供電。當(dāng)Vcc2大于Vcc1+0.2V時(shí),Vcc2給DS1302供
50、電。當(dāng)Vcc2小于Vcc1時(shí),DS1302由Vcc1供電。X1和X2是振蕩源,外接32.768KHz晶振。RST是復(fù)位/片選線,通過把RST輸入驅(qū)動(dòng)置高電平來啟動(dòng)所有的數(shù)據(jù)傳送。RST輸入有兩種功能:首先,RST接通控制邏輯,允許地址/命令序列送入移位寄存器;其次,RST提供終止單字節(jié)或多字節(jié)數(shù)據(jù)的傳送手段。當(dāng)RST為高電平時(shí),所有的數(shù)據(jù)傳送被初始化,允許對DS1302進(jìn)行操作。如果在傳送過程中RSTS置為低電平,則會(huì)終止此次數(shù)據(jù)傳送,
51、I/O引腳變?yōu)楦咦钁B(tài)。上電動(dòng)行時(shí),在Vcc大于等于2.5V之前,RST必須保持低電平。中有在SCLK 為低電平時(shí),才能將RST置為高電平,I/O為串行數(shù)據(jù)輸入端(雙向)。SCLK始終是輸入端。</p><p> 3.2.2 DS1302與單片機(jī)接口電路</p><p> DS1302與單片機(jī)接口電路如圖3-5所示。電路原理圖如圖,DS1302與單片機(jī)的連接也僅需要3條線:CE引腳、SC
52、LK串行時(shí)鐘引腳、I/O串行數(shù)據(jù)引腳,Vcc2為備用電源,外接32.768kHz晶振,為芯片提供計(jì)時(shí)脈沖。</p><p> DS1302在任何數(shù)據(jù)傳送時(shí)必須先初始化,把RST腳置為高電平,然后把8位地址和命令字裝入移位寄存器,數(shù)據(jù)在SCLK的上升沿被訪問到。在開始8個(gè)時(shí)鐘周期,把命令字節(jié)裝入移位寄存器后,另外的時(shí)鐘周期在讀操作時(shí)輸出數(shù)據(jù),在寫操作時(shí)寫入數(shù)據(jù)。時(shí)鐘脈沖的個(gè)數(shù)在單字節(jié)方式下為8+8,在多字節(jié)方式下
53、為8+字節(jié)數(shù),最大可達(dá)248字節(jié)數(shù)。如果在傳送過程中置RST腳為低電平,則會(huì)終止本次數(shù)據(jù)傳送,并且I/O引腳變?yōu)楦咦钁B(tài)。上電運(yùn)行時(shí),在Vcc≥2.5V之前,RST腳必須保持低電平。只有在SCLK為低電平時(shí),才能將RST置為高電平。</p><p> DS1302的控制字如表3-2所示??刂谱止?jié)的最高有效位(位7)必須是邏輯1,如果它為0,則不能把數(shù)據(jù)寫入到DS1302中。位6如果為0,則表示存取日歷時(shí)鐘數(shù)據(jù);為
54、1則表示存取RAM數(shù)據(jù)。位5~1(A4~A0)指示操作單元的地址。最低有效位(位0)如果為0,則表示藥進(jìn)行寫操作;為1表示進(jìn)行讀操作??刂谱止?jié)總是從最低位開始輸入/輸出。</p><p> 為了提高對32個(gè)地址尋址能力(地址/命令位1~5=邏輯1),可以把時(shí)鐘/日歷或RAM寄存器規(guī)定為多字節(jié)(burst)方式。位6規(guī)定時(shí)鐘或RAM,而位0規(guī)定讀或?qū)?。在時(shí)鐘/日歷寄存器中的地址9~31或RAM寄存器中的地址31不
55、能存儲數(shù)據(jù)。在多字節(jié)方式下,讀或?qū)憦牡刂?的位0開始。必須按數(shù)據(jù)傳送的次序?qū)懽钕鹊?個(gè)寄存器。但是,當(dāng)以多字節(jié)方式寫RAM時(shí),為了傳送數(shù)據(jù)不必寫所有的31字節(jié),不管是否謝了全部31字節(jié),所寫的每一字節(jié)都將傳送至RAM。</p><p> DS1302共有12個(gè)寄存器,其中有7個(gè)寄存器與日歷、時(shí)鐘相關(guān),存放的數(shù)據(jù)位為BCD碼形式。其日歷、時(shí)間寄存器及其控制字如下表所示,其中奇數(shù)為讀操作,偶數(shù)為寫操作。</p
56、><p> 時(shí)鐘暫停:秒寄存器的位7定義位時(shí)鐘暫停位。當(dāng)它為1時(shí),DS1302停止振蕩,進(jìn)入低功耗的備份方式,通常在對DS1302進(jìn)行寫操作時(shí)(如進(jìn)入時(shí)鐘調(diào)整程序),停止振蕩。當(dāng)它為0時(shí),時(shí)鐘將開始啟動(dòng)。</p><p> AM-PM/12-24小時(shí)方式:小時(shí)寄存器的位7定義為12或24小時(shí)方式選擇位。它為高電平時(shí),選擇12小時(shí)方式。在此方式下,位5為第二個(gè)10小時(shí)位(20~23h)。&l
57、t;/p><p> DS1302有主電源/后備電源雙電源引腳:Vcc1在單電源與電池供電的系統(tǒng)中提供低電源,并提供低功率的電磁備份;Vcc1在雙電池系統(tǒng)中提供主電源。在這種運(yùn)行方式中,Vcc1里連接到后備電源,以便在沒有主電源的情況下能保存時(shí)間信息以及數(shù)據(jù)。DS1302由Vcc1或Vcc2中較打大者供電。當(dāng)Vcc2>(Vcc1+0.2V)時(shí),Vcc2給DS1302供電;當(dāng)Vcc2<Vcc1時(shí),DS1302由Vcc1
58、供電。Vcc1為后備電源,Vcc2為主電源。在主電源關(guān)閉的情況下,也能保持時(shí)鐘的連續(xù)運(yùn)行。實(shí)現(xiàn)停電后時(shí)鐘正常運(yùn)行,可以不顯示,實(shí)現(xiàn)掉電保護(hù)[5]。</p><p> 3.3 溫度采集模塊的設(shè)計(jì)</p><p> 3.3.1 DS18B20簡介</p><p> 系統(tǒng)采用數(shù)字式溫度傳感器DS18B20[6],它是數(shù)字式溫度傳感器,具有測量精度高,電路連接簡單特
59、點(diǎn),此類傳感器僅需要一條數(shù)據(jù)線進(jìn)行數(shù)據(jù)傳輸,DS18B20引腳功能如表3-6所示。獨(dú)特的一線接口,只需要一條口線通信多點(diǎn)能力,簡化了分布式溫度傳感應(yīng)用無需外部元件可用數(shù)據(jù)總線供電[7],電壓范圍為3.0V至5.5V無需備用電源測量溫度范圍為-55度至+125度。-10度至+85度范圍內(nèi)精度為±0.5度溫度傳感器可編程的分辨率為9~12位[8][9]。</p><p> DS18B20的主要特征:<
60、;/p><p> (1) 全數(shù)字溫度轉(zhuǎn)換及輸出。</p><p> (2) 先進(jìn)的單總線數(shù)據(jù)通信。</p><p> (3) 最高12位分辨率,精度可達(dá)土0.5攝氏度。</p><p> (4) 12位分辨率時(shí)的最大工作周期為750毫秒。</p><p> (5) 可選擇寄生工作方式。</p>&l
61、t;p> (6) 檢測溫度范圍為–55°C ~+125°C (–67°F ~+257°F)</p><p> (7) 內(nèi)置EEPROM,限溫報(bào)警功能。</p><p> (8) 64位光刻ROM,內(nèi)置產(chǎn)品序列號,方便多機(jī)掛接。</p><p> (9) 多樣封裝形式,適應(yīng)不同硬件系統(tǒng)。</p>&l
62、t;p> DS18B20芯片封裝結(jié)構(gòu)如圖3-6:</p><p> 圖3-6 DS18B20芯片封裝</p><p> DS18B20引腳功能: (1) GND 電壓地; (2) DQ 單數(shù)據(jù)總線;(3) VDD 電源電壓 </p><p> 3.3.2 DS18B20與單片機(jī)接口電路</p><p> 如圖3-7所示,DS1
63、8B20只需要接到控制器(單片機(jī))的一個(gè)I/O口上[10],由于單總線為開漏所以需要外接一個(gè)4.7K的上拉電阻。如要采用寄生工作方式,只要將VDD電源引腳與單總線并聯(lián)即可。但在程序設(shè)計(jì)中,寄生工作方式將會(huì)對總線的狀態(tài)有一些特殊的要求。</p><p> DS18B20的溫度檢測與數(shù)字?jǐn)?shù)據(jù)輸出全集成于一個(gè)芯片之上,從而抗干擾力更強(qiáng)。一個(gè)工作周期可分為兩個(gè)部分,即溫度檢測和數(shù)據(jù)處理[11]。在講解其工作流程之前我們
64、有必要了解DS18B20的內(nèi)部存儲器資源。DS18B20共有三種形態(tài)的存儲器資源,它們分別是: </p><p> ROM 只讀存儲器:用于存放DS18B20ID編碼,其前8位是單線系列編碼(DS18B20的編碼是19H),后面48位是芯片唯一的序列號,最后8位是以上56的位的CRC碼(冗余校驗(yàn))。數(shù)據(jù)在出產(chǎn)時(shí)設(shè)置不由用戶更改。DS18B20共64位ROM。</p><p> RAM
65、數(shù)據(jù)暫存器:用于內(nèi)部計(jì)算和數(shù)據(jù)存取,數(shù)據(jù)在掉電后丟失,DS18B20共9個(gè)字節(jié)RAM,每個(gè)字節(jié)為8位。第1、2個(gè)字節(jié)是溫度轉(zhuǎn)換后的數(shù)據(jù)值信息,第3、4個(gè)字節(jié)是用戶EEPROM(常用于溫度報(bào)警值儲存)的鏡像。在上電復(fù)位時(shí)其值將被刷新。第5個(gè)字節(jié)則是用戶第3個(gè)EEPROM的鏡像。第6、7、8個(gè)字節(jié)為計(jì)數(shù)寄存器,是為了讓用戶得到更高的溫度分辨率而設(shè)計(jì)的,同樣也是內(nèi)部溫度轉(zhuǎn)換、計(jì)算的暫存單元。第9個(gè)字節(jié)為前8個(gè)字節(jié)的CRC碼。EEPROM 非易
66、失性記憶體,用于存放長期需要保存的數(shù)據(jù),上下限溫度報(bào)警值和校驗(yàn)數(shù)據(jù),DS18B20共3位EEPROM,并在RAM都存在鏡像,以方便用戶操作。</p><p> 3.4鍵盤顯示模塊的設(shè)計(jì)</p><p> 3.4.1 按鍵電路的設(shè)計(jì)</p><p> 本系統(tǒng)按鍵采用獨(dú)立按鍵設(shè)計(jì),具有電路簡單,軟件實(shí)現(xiàn)簡單等有點(diǎn)。按鍵電路設(shè)計(jì)如圖3-8所示。</p>
67、<p> 系統(tǒng)共有四個(gè)獨(dú)立按鍵,分別為“鬧鐘停止鍵”、“設(shè)置鍵”、“增加鍵”、“減小鍵”,當(dāng)鬧鐘響起后只能手動(dòng)關(guān)閉,即按下“鬧鐘停止鍵”鬧鐘停止;當(dāng)調(diào)整時(shí)間或者調(diào)整鬧鐘時(shí)間時(shí)按“設(shè)置鍵”選擇要設(shè)置的選項(xiàng),本系統(tǒng)“設(shè)置鍵”采用循環(huán)選擇被調(diào)對象的模式,選中要調(diào)整的對象后按“增加鍵”或“減小鍵”調(diào)整完成后按“設(shè)置鍵”確認(rèn)。</p><p> 圖 3-8 按鍵電路</p><p>
68、 3.4.2顯示電路的設(shè)計(jì)</p><p> 一、LCD1602簡介</p><p> 液晶顯示器以其微功耗、體積小、顯示內(nèi)容豐富、超薄輕巧的諸多優(yōu)點(diǎn),在各類儀表和低功耗系統(tǒng)中得到廣泛的應(yīng)用[12]。根據(jù)顯示內(nèi)容可以分為字符型液晶,圖形液晶。根據(jù)顯示容量又可以分為單行16字,2行16字[13],兩行20字等等。這里介紹常用的字16字X2行的字符型液晶模塊的使用方法。這是一種通用模塊。
69、與數(shù)碼管相比該模塊有如下優(yōu)點(diǎn):</p><p> (1) 位數(shù)多,可顯示32位,32個(gè)數(shù)碼管體積相當(dāng)龐大了。</p><p> (2) 顯示內(nèi)容豐富,可顯示所有數(shù)字和大、小寫字母。</p><p> (3) 程序簡單,如果用數(shù)碼管動(dòng)態(tài)顯示,會(huì)占用很多時(shí)間來刷新顯示,而1602自動(dòng)完成此功能。</p><p> 1602采用標(biāo)準(zhǔn)的16腳
70、接口,其外觀圖如圖3-9所示,其中引腳如圖3-10所示(模塊背面有標(biāo)注)。</p><p> 第1腳:VSS為地電源</p><p> 第2腳:VDD接5V正電源</p><p> 第3腳:V0為液晶顯示器對比度調(diào)整端,接正電源時(shí)對比度最弱,接地電源時(shí)對比度最高,對比度過高時(shí)會(huì)產(chǎn)生“鬼影”,使用時(shí)可以通過一個(gè)10K的電位器調(diào)整對比度(建議接地,弄不好有的模塊會(huì)
71、不顯示)</p><p> 第4腳:RS為寄存器選擇,高電平時(shí)選擇數(shù)據(jù)寄存器、低電平時(shí)選擇指令寄存器。</p><p> 第5腳:RW為讀寫信號線,高電平時(shí)進(jìn)行讀操作,低電平時(shí)進(jìn)行寫操作。</p><p> 第6腳:E端為使能端,當(dāng)E端由高電平跳變成低電平時(shí),液晶模塊執(zhí)行命令。</p><p> 第7~14腳:D0~D7為8位雙向數(shù)據(jù)
72、線。</p><p> 第15~16腳:空腳(有的用來接背光)</p><p> 二、LCD1602與單片機(jī)接口電路</p><p> 1602液晶模塊內(nèi)部的控制器共有11條控制指令,如表3-3所示:</p><p> 1602液晶模塊的讀寫操作、屏幕和光標(biāo)的操作都是通過指令編程來實(shí)現(xiàn)的。(說明:1為高電平、0為低電平)</p&
73、gt;<p> 指令1:清顯示,指令碼01H,光標(biāo)復(fù)位到地址00H位置。</p><p> 指令2:光標(biāo)復(fù)位,光標(biāo)返回到地址00H。</p><p> 指令3:光標(biāo)和顯示模式設(shè)置 I/D:光標(biāo)移動(dòng)方向,高電平右移,低電平左移S:屏幕上所有文字是否左移或者右移。高電平表示有效,低電平則無效。</p><p> 指令4:顯示開關(guān)控制。 D:控制整體
74、顯示的開與關(guān),高電平表示開顯示,低電平表示關(guān)顯示 C:控制光標(biāo)的開與關(guān),高電平表示有光標(biāo),低電平表示無光標(biāo) B:控制光標(biāo)是否閃爍,高電平閃爍,低電平不閃爍。</p><p> 指令5:光標(biāo)或顯示移位 S/C:高電平時(shí)移動(dòng)顯示的文字,低電平時(shí)移動(dòng)光標(biāo)。</p><p> 指令6:功能設(shè)置命令 DL:高電平時(shí)為4位總線,低電平時(shí)為8位總線 N:低電平時(shí)為單行顯示,高電平時(shí)雙行顯示 F: 低
75、電平時(shí)顯示5x7的點(diǎn)陣字符,高電平時(shí)顯示5x10的點(diǎn)陣字符。</p><p> 指令7:字符發(fā)生器RAM地址設(shè)置。</p><p> 指令8:DDRAM地址設(shè)置。</p><p> 指令9:讀忙信號和光標(biāo)地址 BF:為忙標(biāo)志位,高電平表示忙,此時(shí)模塊不能接收命令或者數(shù)據(jù),如果為低電平表示不忙。</p><p><b> 指令
76、10:寫數(shù)據(jù)。</b></p><p><b> 指令11:讀數(shù)據(jù)。</b></p><p> 單片機(jī)與LCD的接口電路如圖3-11所示。</p><p> 圖3-11 LCD1602接口電路</p><p> 3.5 電源電路設(shè)計(jì)</p><p> 圖3-12 電源電路原理
77、圖</p><p> 電源電路采用經(jīng)典穩(wěn)壓電源電路。采用市電220V經(jīng)變壓器變?yōu)?V交流電壓,經(jīng)過橋式整流,電容濾波,通過三端穩(wěn)壓芯片7805穩(wěn)壓后再通過電容濾波后輸出+5V的系統(tǒng)電路所用電源。7805是三端集成穩(wěn)壓電路器件,其內(nèi)具有過流和過熱保護(hù)功能,即使過負(fù)載時(shí)穩(wěn)壓器也不會(huì)遭到損壞,一方面限制輸出電流,使其不會(huì)過大,過熱時(shí)切斷輸出,使內(nèi)部電流不致過大。7805的三端分別為輸入Vin、輸出端Vo和公共端COM
78、,使用時(shí)公共端COM通常接地。內(nèi)部等效電路由調(diào)整管、控制電路、誤差放大器、保護(hù)電路等組成。原理圖如圖3-12所示。</p><p><b> 4.系統(tǒng)軟件設(shè)計(jì)</b></p><p> 軟件的設(shè)計(jì)是設(shè)計(jì)控制系統(tǒng)的應(yīng)用程序。其任務(wù)是在整體設(shè)計(jì)和硬件設(shè)計(jì)的基礎(chǔ)上,確定程序結(jié)構(gòu),分配內(nèi)RAM資源,劃分功能模塊,然后進(jìn)行主程序和各模塊程序的設(shè)計(jì),最后連接起來成為一個(gè)完整應(yīng)
79、用程序,與硬件相結(jié)合完成相應(yīng)功能。</p><p> 系統(tǒng)軟件主要有主程序、DS1302時(shí)鐘子程序、DS18B20測溫子程序、顯示按鍵子程序。</p><p><b> 4.1 主程序設(shè)計(jì)</b></p><p> 主程序的組成是通過分別調(diào)用各子程序組成總體系統(tǒng)功能,能很直觀的看出主程序所要完成的功能,首先是初始化各模塊,之后調(diào)用鍵盤完成
80、時(shí)間的調(diào)整,調(diào)用日歷子程序完成日歷時(shí)鐘的初始化和時(shí)間數(shù)據(jù)的讀寫,調(diào)用溫度子程序完成溫度芯片的初始化和讀寫,調(diào)用鬧鐘子程序當(dāng)時(shí)間達(dá)到定時(shí)時(shí)間時(shí)鬧鈴打開,一分鐘后自動(dòng)關(guān)閉,調(diào)用顯示子程序顯示數(shù)據(jù),最后又轉(zhuǎn)到鍵盤程序來回循環(huán)。</p><p> 初始化部分主要有初始化定時(shí)器部分和和一些寄存器、標(biāo)志位、初始化時(shí)間等對定時(shí)器T0初始化時(shí),首先置初值,CPU開中斷,定時(shí)器T0開中斷,并且開始計(jì)數(shù),而對定時(shí)器T1初始化時(shí),首
81、先置初值,,定時(shí)器T1關(guān)中斷,并且停止計(jì)數(shù),只有收到命令時(shí)才能產(chǎn)生中斷。主程序采用模塊化設(shè)計(jì),流程圖如圖4-1所示。</p><p> 寄存器的初始化主要是初始化執(zhí)行程序時(shí)用到的部分RAM空間,防止程序執(zhí)行時(shí)帶來混亂。</p><p> 標(biāo)志位初始化是對時(shí)間調(diào)整時(shí)判斷是調(diào)分還是調(diào)時(shí)等而專設(shè)的位標(biāo)志,初始化過程中標(biāo)志位全部置“0”,即開始時(shí)是處于顯示狀態(tài),而不是調(diào)整狀態(tài),這一點(diǎn)在程序中相
82、當(dāng)明了。</p><p> 初始化時(shí)間是開機(jī)時(shí)顯示的時(shí)間,并通過調(diào)用日歷時(shí)鐘的寫程序來完成時(shí)間的置初值。</p><p> 4.2 時(shí)鐘子程序的設(shè)計(jì)</p><p> DS1302與CPU的連接需要三條線[14],即SCLK(7)、I/O(6)、RST(5)。</p><p> 圖4-2 日歷時(shí)鐘的寫和讀</p><
83、;p> 日歷時(shí)鐘DS1302的讀寫和溫度芯片DS18B20一樣,都需要初始化時(shí)序、讀時(shí)序、寫時(shí)序。所有時(shí)序都是將主機(jī)作為主設(shè)備,單總線器件作為從設(shè)備。而每一次命令和數(shù)據(jù)的傳輸都是從主機(jī)啟動(dòng)寫時(shí)序開始,如果要求單總線器件回送是低位在先。讀寫都是16位數(shù)據(jù)高8位是地址低8位是數(shù)據(jù),在讀寫時(shí)要嚴(yán)格遵從其讀寫時(shí)序,否則讀寫將會(huì)失效。流程圖如圖4-2所示。</p><p> 當(dāng)RST為高電平時(shí),所有的數(shù)據(jù)傳送被初
84、始化,允許對DS1302進(jìn)行操作。如果在傳送過程中RST置為低電平,則會(huì)終止此次數(shù)據(jù)傳送,I/O引腳變?yōu)楦咦钁B(tài)。上電運(yùn)行時(shí),在Vcc≥2.5V之前,RST必須保持低電平。只有在SCLK為低電平時(shí),才能將RST置為高電平,這一點(diǎn)我們要一定注意。</p><p> 當(dāng)RST置為高電平時(shí),在串行時(shí)鐘的SCLK的上升沿,DS1302從I/O端口讀入一位數(shù)據(jù),8個(gè)串行時(shí)鐘脈沖就可以讀入一個(gè)字節(jié)的數(shù)據(jù)。在串行時(shí)鐘的下降沿,
85、DS1302向I/O端口輸出一位數(shù)據(jù),8個(gè)串行時(shí)鐘脈沖就可以輸出一個(gè)字節(jié)的數(shù)據(jù)。</p><p><b> 4.3 測溫子程序</b></p><p> 由于DS18B20采用的是單總線協(xié)議方式,即在一根數(shù)據(jù)線上實(shí)現(xiàn)數(shù)據(jù)的雙向傳輸,而對AT89S51單片機(jī)來說,硬件上并不支持單總線協(xié)議,因此,我們必須采用軟件的方法來模擬單總線的協(xié)議時(shí)序來完成對DS18B20芯片的
86、訪問。由于DS18B20是在一根I/O線上讀寫數(shù)據(jù),因此,對讀寫的數(shù)據(jù)位有著嚴(yán)格的時(shí)序要求。DS18B20有嚴(yán)格的通信協(xié)議來保證各位數(shù)據(jù)傳輸?shù)恼_性和完整性。該協(xié)議定義了幾種信號的時(shí)序:初始化時(shí)序、讀時(shí)序、寫時(shí)序。所有時(shí)序都是將主機(jī)作為主設(shè)備,單總線器件作為從設(shè)備。而每一次命令和數(shù)據(jù)的傳輸都是從主機(jī)啟動(dòng)寫時(shí)序開始,如果要求單總線器件回送數(shù)據(jù),在進(jìn)行寫命令后,主機(jī)需啟動(dòng)讀時(shí)序完成數(shù)據(jù)接收。數(shù)據(jù)和命令的傳輸都是低位在先。讀溫度子程序如圖4-
87、3所示。</p><p><b> 4.4 顯示子程序</b></p><p> 首先對1602顯示屏進(jìn)行初始化(初始化大約持續(xù)10ms左右),然后檢查盲信號,若BF=0,則獲得顯示RAM的地址,寫入相應(yīng)的數(shù)據(jù)顯示;如BF=1,則代表模塊正在進(jìn)行內(nèi)部操作,不接受任何外部指令和數(shù)據(jù),直到BF=0為止。顯示流程如圖4-4所示。</p><p>
88、<b> 5系統(tǒng)仿真與測試</b></p><p> 5.1 Proteus ISIS簡介</p><p> Proteus ISIS是英國Labcenter公司開發(fā)的電路分析與實(shí)物仿真軟件。它運(yùn)行于Windows操作系統(tǒng)上,可以仿真、分析(SPICE)各種模擬器件和集成電路[15][16]。</p><p><b> 該軟件
89、的特點(diǎn)是:</b></p><p> (1) 全部滿足我們提出的單片機(jī)軟件仿真系統(tǒng)的標(biāo)準(zhǔn),并在同類產(chǎn)品中具有明顯的優(yōu)勢。</p><p> (2) 具有模擬電路仿真、數(shù)字電路仿真、單片機(jī)及其外圍電路組成的系統(tǒng)的仿真、RS-232動(dòng)態(tài)仿真、I2C調(diào)試器、SPI調(diào)試器、鍵盤和LCD系統(tǒng)仿真的功能;有各種虛擬儀器,如示波器、邏輯分析儀、信號發(fā)生器等。</p><
90、;p> (3)目前支持的單片機(jī)類型有:ARM7系列、68000系列、8051系列、AVR系列、PIC12系列、PIC16系列、PIC18系列、Z80系列、HC11系列以及各種外圍芯片。</p><p> (4)支持大量的存儲器和外圍芯片。</p><p> 總之,該軟件是一款集單片機(jī)和SPICE分析于一身的仿真軟件,功能極其強(qiáng)大,可仿真ARM、51、AVR、PIC。</p
91、><p> 5.1.1 啟動(dòng)Proteus </p><p> 雙擊桌面上的ISIS 7 Professional圖標(biāo)或者單擊屏幕左下方的“開始”→“程序”→“Proteus 7 Professional” →“ISIS 7 Professional”,出現(xiàn)如圖5.1所示屏幕,表明進(jìn)入Proteus ISIS集成環(huán)境。</p><p> Proteus啟動(dòng)畫面如圖
92、5-1所示。</p><p> 5.1.2 Proteus運(yùn)行界面</p><p> Proteus ISIS的工作界面是一種標(biāo)準(zhǔn)的Windows界面,如圖5-2所示。</p><p> 包括:標(biāo)題欄、主菜單、標(biāo)準(zhǔn)工具欄、繪圖工具欄、狀態(tài)欄、對象選擇按鈕、預(yù)覽對象方位控制按鈕、仿真進(jìn)程控制按鈕、預(yù)覽窗口、對象選擇器窗口、圖形編輯窗口。運(yùn)行Proteus程序后
93、,進(jìn)入軟件的主界面。通過左側(cè)工具欄中的P(從庫中選擇元件命令)命令,在Pick Devices 左側(cè)窗口中選擇所需元件的關(guān)鍵字,然后放置元件并調(diào)整方向和位置以及參數(shù)設(shè)置,最后進(jìn)行連線。</p><p> 5.1.3 Proteus功能仿真</p><p> 按照原理圖畫好連接線后,最后載入hex文件后按Proteus運(yùn)行按鈕可以進(jìn)行模擬仿真,可以全速運(yùn)行也可以單步調(diào)試運(yùn)行。完整的連接
94、圖如圖5-3所示。</p><p> 5.2 系統(tǒng)仿真結(jié)果</p><p> 按下運(yùn)行按鈕LCD顯示如圖5-4所示。顯示的時(shí)間日期數(shù)據(jù)是程序內(nèi)部設(shè)置的初值。</p><p> 對萬年歷的參數(shù)調(diào)整時(shí)參照以下步驟:當(dāng)鬧鐘響起后只能手動(dòng)關(guān)閉,即按下“鬧鐘停止鍵”鬧鐘停止;當(dāng)調(diào)整時(shí)間或者調(diào)整鬧鐘時(shí)間時(shí)按“設(shè)置鍵”選擇要設(shè)置的選項(xiàng),本設(shè)計(jì)“設(shè)置鍵”采用循環(huán)選擇被調(diào)對象的
95、模式,選中要調(diào)整的對象后按“增加鍵”或“減小鍵”調(diào)整完成后按“設(shè)置鍵”確認(rèn)。</p><p> 一、調(diào)整時(shí)間時(shí)如圖5-5所示,光標(biāo)閃爍的位置是調(diào)整的對象。</p><p> 二、調(diào)整定時(shí):閃爍M調(diào)整的是定時(shí)的秒,如圖5-6所示;閃爍F調(diào)整的是定</p><p> 時(shí)的分,如圖5-7所示;閃爍S調(diào)整定時(shí)的時(shí),如圖5-8所示。</p><p&g
96、t; 三、閏年和平年的調(diào)整</p><p> 閏年和平年顯示結(jié)果:2010年是平年所以2月只有28天,當(dāng)調(diào)整“日”加時(shí)只能到“28”, 如圖5-9所示。2012年是閏年所以2月有29天,當(dāng)調(diào)整“日”可加到“29”,如圖5-10所示。</p><p><b> 5.3 系統(tǒng)測試</b></p><p> 系統(tǒng)測試分為硬件測試和軟件測試兩部
97、分。</p><p> 在電路板焊接完成后首先進(jìn)行硬件測試,檢測硬件電路是否有短路、斷路、虛焊等。主要檢測DS1302和18B20的硬件電路, DS1302很簡單,只通過3根線與單片機(jī)相連,很容易檢測,主要是檢查其引腳,如晶振和電源等是否接好。另外可以通過軟件來調(diào)試硬件,如為了測試顯示電路連接是否正確,可以編寫一個(gè)簡單的顯示程序來測試它。接下來可進(jìn)行軟件調(diào)試,可以編寫只含DS1302的計(jì)時(shí)和讀寫程序、顯示程序,
98、測試DS1302是否正常工作。18B20的硬件電路只有一根數(shù)據(jù)線。檢測完成后給系統(tǒng)上電,液晶顯示屏顯示結(jié)果如圖5-11所示。</p><p> 調(diào)節(jié)10K電位器R4可調(diào)整液晶顯示屏的亮度。顯示結(jié)果可以看出DS1302的硬件和軟件都是正常的,而溫度顯示是錯(cuò)誤的,初步判斷是單片機(jī)讀取溫度數(shù)據(jù)時(shí)錯(cuò)誤,而在仿真中讀取是正確的,仿真中的時(shí)間延時(shí)比較長,所以判斷溫度子程序中的延時(shí)不夠長造成的,所以增加溫度子程序中的延時(shí)長。
99、把程序重新編譯后燒寫,上電</p><p> 圖5-11 液晶顯示屏的顯示</p><p> 結(jié)果顯示如圖5-12所示,顯示結(jié)果證明時(shí)鐘和溫度都已正常。</p><p> 圖5-12 液晶顯示屏的顯示</p><p> 調(diào)整到合適亮度后,按控制按鈕,光標(biāo)會(huì)從陽歷年位開始閃爍,進(jìn)入設(shè)定調(diào)整狀態(tài)。此時(shí)按加按鈕,當(dāng)前數(shù)字就可改變。按一次,數(shù)
100、字加1;若長按,則數(shù)字連續(xù)加。此時(shí),調(diào)整的位一直在閃爍,直到再次按光標(biāo)移動(dòng)控制位,光標(biāo)跳到下一位閃爍。調(diào)整順序依次為:陽歷年、月、日,陰歷年、月、日,時(shí)、分、秒,鬧鈴時(shí)、分。當(dāng)全部參數(shù)調(diào)整完畢后,按退出按鈕,光標(biāo)停止閃爍,退出設(shè)定調(diào)整狀態(tài);當(dāng)再次按下此按鈕,鬧鈴顯示“開”;當(dāng)?shù)谌伟聪麓随I,鬧鈴顯示“關(guān)”。若當(dāng)前月為閏月,則屏幕左下角會(huì)顯示“閏月”;若不是閏月,則無顯示。</p><p> 調(diào)試分為硬件調(diào)試和軟
101、件調(diào)試。硬件調(diào)試主要是DS1302的硬件電路很簡單,只通過3根線與單片機(jī)相連,很容易檢測,主要是檢查其引腳,如晶振和電源等是否接好。另外可以通過軟件來調(diào)試硬件,如為了測試顯示電路連接是否正確,可以編寫一個(gè)簡單的顯示程序來測試它。接下來可進(jìn)行軟件調(diào)試,可以編寫只含DS1302的計(jì)時(shí)和讀寫程序、顯示程序,測試DS1302是否正常工作。最后調(diào)試時(shí)間調(diào)整程序和陰歷推算程序。</p><p> 經(jīng)過反復(fù)的調(diào)試和實(shí)驗(yàn),電子
102、萬年歷可以正常顯示時(shí)間并進(jìn)行時(shí)間調(diào)整,基本完成了預(yù)期要實(shí)現(xiàn)的目標(biāo)。</p><p><b> 結(jié)束語</b></p><p> 本設(shè)計(jì)介紹了電子萬年歷的實(shí)現(xiàn),完成了單片機(jī)最小系統(tǒng)、時(shí)鐘計(jì)時(shí)、溫度采集、鍵盤顯示、電源等模塊的設(shè)計(jì)。時(shí)鐘模塊采用高性能時(shí)鐘芯片DS1302,溫度采集模塊采用DS18B20集成溫度傳感器,顯示模塊以LCD1602液晶屏作為顯示。能夠?qū)崿F(xiàn)年、
103、月、日、時(shí)、分、秒、星期、溫度同時(shí)顯示,有平年閏年和鬧鐘等功能,完成了設(shè)計(jì)任務(wù)和要求。</p><p> 本設(shè)計(jì)雖完成基本的任務(wù)和要求,但是本設(shè)計(jì)還有很多功能的欠缺有待進(jìn)一步的完善和改進(jìn),比如設(shè)定時(shí)間和鬧鐘過程繁瑣,顯示可以用顯示面積大的數(shù)碼管,加入語音報(bào)時(shí)功能,增加顯示陰歷功能等。</p><p><b> 致 謝</b></p><p>
104、; 通過本次畢業(yè)設(shè)計(jì),感覺學(xué)到了很多東西,我不僅加深了對電路設(shè)計(jì)原理、單片機(jī)原理和Protel DXP等方面的知識的理解,更重要的是學(xué)會(huì)怎么樣將理論很好地應(yīng)用到實(shí)際當(dāng)中去,而且我還學(xué)會(huì)了如何去培養(yǎng)我的創(chuàng)新精神,從而不斷地戰(zhàn)勝自己,超越自己。當(dāng)然在本次的畢業(yè)設(shè)計(jì)過程中,我遇到過許多困難,但是我經(jīng)過自己的不斷地努力,通過復(fù)習(xí)以前學(xué)過的知識、上網(wǎng)查閱資料、請教老師和同學(xué)等多種解決方法,最終順利完成了本次畢業(yè)設(shè)計(jì)。這也對我們今后的工作敲響了警
105、鐘:要認(rèn)真的看待每個(gè)需要處理的問題,不要認(rèn)為事情過于簡單,不能急于求成,但不要放棄。當(dāng)然由于自己的知識和技術(shù)水平有限,定有許多不足之處希望老師批評指正!</p><p> 這次畢業(yè)設(shè)計(jì)從開始確定設(shè)計(jì)方案到最終完成設(shè)計(jì),首先要感謝指導(dǎo)老師的悉心教導(dǎo)!還要感謝的是以前交給我這些理論知識的老師們!在此對您們表示由衷的感謝!</p><p><b> 參考文獻(xiàn)</b>&l
106、t;/p><p> [1] AlModarresi, SMT;White, NM. Calendar conversion for real-time systems[J].Advances in Engineering Software, 2004, 35(8/9):511-516.</p><p> [2] 余發(fā)山 王福忠.單片機(jī)原理及應(yīng)用技術(shù)[M]. 北京:中國礦業(yè)大學(xué)出版社,20
107、07:9-13.</p><p> [3] 鄭春來, 韓團(tuán)軍, 賈建科. 帶日歷時(shí)鐘的實(shí)時(shí)溫度檢測系統(tǒng)設(shè)計(jì).科技廣場,2011(7):123-126</p><p> [4] 肖炎根,舒望.基于實(shí)時(shí)鐘芯片的電子萬年歷的設(shè)計(jì)[J]. 電子技術(shù),2007,36(11):91-94.</p><p> [5] 趙敏. 一種多功能串行E2FROM的編程與應(yīng)用[J].
108、福建電腦,2002(12):35-36.</p><p> [6] 廖琪梅,韓彬,楊文昭等.基于單總線器件DS18B20的溫度測量儀[J].國外電子器件,2008(2):24-27.</p><p> [7] 張永安,王睿. 基于DS12C887的數(shù)字時(shí)鐘的實(shí)現(xiàn)[J]. 內(nèi)蒙古農(nóng)業(yè)大學(xué)學(xué)報(bào)(自然科學(xué)版),2010, 31(3):263-265.</p><
109、p> [8] 胡紹祖,曾連蓀. 基于單片機(jī)的室內(nèi)溫度采集和控制系統(tǒng)[J].電腦知識與技術(shù),(7):1743-1744.</p><p> [9] 奚建榮. 基于51單片機(jī)的多點(diǎn)溫度控制系統(tǒng)設(shè)計(jì)[J].現(xiàn)代電子技術(shù),2009,(2):186-188.</p><p> [10] 楊偉偉. 淺談基于單片機(jī)的溫度測控系統(tǒng)設(shè)計(jì)[J].信息與電腦,2010,(2):50-51.</
溫馨提示
- 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. 眾賞文庫僅提供信息存儲空間,僅對用戶上傳內(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 基于單片機(jī)的萬年歷畢業(yè)設(shè)計(jì)
- 基于單片機(jī)的萬年歷設(shè)計(jì)畢業(yè)設(shè)計(jì)
- 畢業(yè)設(shè)計(jì)---基于單片機(jī)萬年歷的設(shè)計(jì)
- 畢業(yè)設(shè)計(jì)---基于單片機(jī)萬年歷的設(shè)計(jì)
- 基于單片機(jī)的萬年歷設(shè)計(jì)畢業(yè)設(shè)計(jì)
- 單片機(jī)萬年歷系統(tǒng)畢業(yè)設(shè)計(jì)
- 基于51單片機(jī)的萬年歷畢業(yè)設(shè)計(jì)
- 基于單片機(jī)的電子萬年歷畢業(yè)設(shè)計(jì)
- 基于單片機(jī)的電子萬年歷設(shè)計(jì)畢業(yè)設(shè)計(jì)
- 畢業(yè)設(shè)計(jì)---基于51單片機(jī)的萬年歷設(shè)計(jì)
- 畢業(yè)設(shè)計(jì)---基于51單片機(jī)的萬年歷設(shè)計(jì)
- 畢業(yè)設(shè)計(jì)---單片機(jī)控制的萬年歷設(shè)計(jì)
- 畢業(yè)設(shè)計(jì)---基于單片機(jī)的數(shù)字萬年歷設(shè)計(jì)
- 基于單片機(jī)的萬年歷設(shè)計(jì)畢業(yè)設(shè)計(jì).doc
- 51單片機(jī)萬年歷畢業(yè)設(shè)計(jì)論文
- 基于51單片機(jī)的液晶萬年歷畢業(yè)設(shè)計(jì)
- 51基于單片機(jī)的電子萬年歷畢業(yè)設(shè)計(jì)
- 畢業(yè)設(shè)計(jì)----基于單片機(jī)的電子萬年歷的設(shè)計(jì)
- 基于單片機(jī)的電子萬年歷的設(shè)計(jì)畢業(yè)設(shè)計(jì)
- 基于單片機(jī)的數(shù)字萬年歷設(shè)計(jì)
評論
0/150
提交評論