基于51單片機(jī)的電子萬年歷的設(shè)計(jì)資料_第1頁(yè)
基于51單片機(jī)的電子萬年歷的設(shè)計(jì)資料_第2頁(yè)
基于51單片機(jī)的電子萬年歷的設(shè)計(jì)資料_第3頁(yè)
基于51單片機(jī)的電子萬年歷的設(shè)計(jì)資料_第4頁(yè)
基于51單片機(jī)的電子萬年歷的設(shè)計(jì)資料_第5頁(yè)
已閱讀5頁(yè),還剩15頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

1、目 錄摘摘 要要.IABSTRACT.II1 引言引言.12 功能要求功能要求.13 方案論證與設(shè)計(jì)方案論證與設(shè)計(jì).13.1 控制部分的方案選擇.13.2 測(cè)溫部分的方案選擇.13.3 顯示部分的方案選擇.24 系統(tǒng)硬件電路設(shè)計(jì)系統(tǒng)硬件電路設(shè)計(jì).24.1 主控器 AT89C52 .24.2 時(shí)鐘電路 DS1302.34.2.1. DS1302 的性能特性.34.2.2 DS1302 數(shù)據(jù)操作原理.34.3 測(cè)溫電路的設(shè)計(jì).54.3.1 溫度傳感器工作原理 .54.3.2 DS18B20 與單片機(jī)的接口電路.84.4 顯示電路的設(shè)計(jì).94.5 鍵盤接口的設(shè)計(jì) .105 系統(tǒng)程序的設(shè)計(jì)系統(tǒng)程序的設(shè)

2、計(jì).105.1 陽歷程序設(shè)計(jì).105.2 時(shí)間調(diào)整程序設(shè)計(jì).115.3 溫度程序設(shè)計(jì).125.3.1 主程序 .125.3.2 讀出溫度子程序 .125.3.3 溫度轉(zhuǎn)換命令子程序 .125.3.4 計(jì)算溫度子程序 .135.3.5 顯示數(shù)據(jù)刷新子程序 .13 調(diào)試及性能分析調(diào)試及性能分析.136.1 調(diào)試步驟.146.2 性能分析.14 總結(jié)總結(jié).14參考文獻(xiàn)參考文獻(xiàn).14致致 謝謝.14基于 51 單片機(jī)的電子萬年歷的設(shè)計(jì)摘 要電子萬年歷是單片機(jī)系統(tǒng)的一個(gè)應(yīng)用,由硬件和軟件相配合使用。硬件由主控器、時(shí)鐘電路、溫度檢測(cè)電路、顯示電路、鍵盤接口 5 個(gè)模塊組成。主控模塊用 AT89C52、時(shí)鐘

3、電路用時(shí)鐘芯片DS1302、顯示模塊用 LED 數(shù)碼管、溫度檢測(cè)采用 DS18B20 溫度傳感器、鍵盤接口電路用普通按鍵接上拉電阻完成;軟件利用 C 語言編程實(shí)現(xiàn)單片機(jī)程序控制。單片機(jī)通過時(shí)鐘芯片 DS1302 獲取時(shí)間數(shù)據(jù),DS18B20 采集溫度信號(hào)送該給單片機(jī)處理,單片機(jī)再把時(shí)間數(shù)據(jù)和溫度數(shù)據(jù)送給 74LS154 譯碼,然后通過三極管 C9015 放大驅(qū)動(dòng) LED 數(shù)碼管顯示陽歷年、月、日、時(shí)、秒、鬧鐘、星期、溫度。關(guān)鍵詞 電子萬年歷;單片機(jī);溫度傳感器;時(shí)鐘;數(shù)碼顯示AbstractElectronic perpetual calendar which is an applicatio

4、n of the single-chip processor system, is utilized by combining hardware and software. And Hardware is composed of five modules: Main control unit, clock circuit, temperature test circuit, display circuit, keyboard interface. Main control board adopts AT89S52, clock circuit adopts the DS1302 clock c

5、hip, display module adopts the LED digital tube, and temperature test adopts the DS18B20 temperature sensor, keyboard interface circuit is completed by connecting ordinary button with pull-up resistor. Software takes advantage of C to program, so as to realize the programmed control of single-chip p

6、rocessor. Single-chip processor gets the time data through using the DS1302 clock chip. The DS18B20 gathers temperature signals and transmits them to single-chip processor. Then, single-chip processor transmits the time data and the temperature data to the 74LS154 decoder. Lastly, the LED displays s

7、olar calendar year, year, month, day, hour, minute, second, alarm clock, week and temperature with being enlarged and driven by the C9015 triode.Keywords: Electronic perpetual calendar; single-chip processor; temperature sensor; clock; digital display1 1 引言引言隨著微電子技術(shù)和超大規(guī)模集成電路技術(shù)的不斷發(fā)展,家用電子產(chǎn)品不但種類日益豐富,而且

8、變得更加經(jīng)濟(jì)實(shí)用,單片微型計(jì)算機(jī)體積小、性價(jià)比高、功能強(qiáng)、可靠性高等獨(dú)有的特點(diǎn),在各個(gè)領(lǐng)域得到了廣泛的應(yīng)用。電子萬年歷是一種應(yīng)用非常廣泛的日常計(jì)時(shí)工具,數(shù)字顯示的日歷鐘已經(jīng)越來越流行,特別是適合在家庭居室、辦公室、大廳、會(huì)議室、車站和廣場(chǎng)等使用。LED數(shù)字顯示的日歷鐘顯示清晰直觀、走時(shí)準(zhǔn)確、可以進(jìn)行夜視,并且還可以擴(kuò)展出多種功能。功能也越來越齊全,除了公歷年月日、時(shí)分秒、星期顯示及鬧鈴。但通過我們對(duì)各種電子鐘表、歷的不斷觀察總結(jié)發(fā)現(xiàn)目前市場(chǎng)的鐘、歷都存在一些不足之處,比如:時(shí)鐘不精確、產(chǎn)品成本太高、無環(huán)境溫度顯示等,這都給人們的使用帶來了某些不便。為此設(shè)計(jì)了一種功能全面、計(jì)時(shí)準(zhǔn)確、成本低廉的基

9、于 51 單片機(jī)的萬年歷。2 2 功能要求功能要求1. 萬年歷能用數(shù)碼管顯示陽歷年、月、日、星期、小時(shí)、分、秒并設(shè)置指定時(shí)間的鬧鈴。2. 數(shù)字式溫度計(jì)要求測(cè)溫范圍-50100C, LED 數(shù)碼管直讀顯示。3 3 方案論證與設(shè)計(jì)方案論證與設(shè)計(jì)3.13.1 控制部分的方案選擇控制部分的方案選擇1. 用可編程邏輯器件設(shè)計(jì)??刹捎?ALTERA 公司的 FLEX10K 系列 PLD 器件。設(shè)計(jì)起來結(jié)構(gòu)清晰,各個(gè)模塊,從硬件上設(shè)計(jì)起來相對(duì)簡(jiǎn)單,控制與顯示的模塊間的連接也會(huì)比較方便。但是考慮到本設(shè)計(jì)的特點(diǎn),EDA 在功能擴(kuò)展上比較受局限,而且 EDA 占用的資源也相對(duì)多一些。從成本上來講,用可編程邏輯器件

10、來設(shè)計(jì)也沒有什么優(yōu)勢(shì)。 2. 用凌陽 16 位單片機(jī)設(shè)計(jì)。凌陽 16 位單片機(jī)有豐富的中斷源和時(shí)基,方便本實(shí)驗(yàn)的設(shè)計(jì)。它的準(zhǔn)確度相當(dāng)高,并且 C 語言和匯編兼容的編程環(huán)境也很方便來實(shí)現(xiàn)一些遞歸調(diào)用。I/O 口功能也比較強(qiáng)大,方便使用。用凌陽 16 位單片機(jī)做控制器最有特色的就是它的可編程音頻處理,可完成語音的錄制播放和識(shí)別。這些都方便對(duì)設(shè)計(jì)進(jìn)行擴(kuò)展,使設(shè)計(jì)更加完善。成本也相對(duì)低一些。但是,在控制與顯示的結(jié)合上有些復(fù)雜,顯示模組資源相對(duì)有限,而且單片機(jī)的穩(wěn)定性不是很高。3. 主控芯片使用 51 系列 AT89C52 單片機(jī),時(shí)鐘芯片用美國(guó) DALLAS 公司推出的一種高性能、低功耗、帶 RAM

11、的時(shí)鐘 DS1302。采用 DS1302 作為主要計(jì)時(shí)芯片,可以做到計(jì)時(shí)準(zhǔn)確。更重要的是,DS1302 可以在很小電流的后備電源(2.55V 電源,在 2.5V 時(shí)耗電小于 300nA)下繼續(xù)計(jì)時(shí),停電后時(shí)鐘無需重新調(diào)整,并可編程選擇多種充電電流來對(duì)后備電源進(jìn)行慢速充電,可以保證后備電源基本不耗電,還可自設(shè)鬧鈴,陽歷、星期與年月日自動(dòng)對(duì)應(yīng)。本系統(tǒng)采用了此方案。3.23.2 測(cè)溫部分的方案選擇測(cè)溫部分的方案選擇1.在日常生活及工農(nóng)業(yè)生產(chǎn)中經(jīng)常要乃至溫度的檢測(cè)及控制,傳統(tǒng)的測(cè)溫元件有熱電偶和熱電阻。而熱電偶和熱電阻測(cè)一般都是電壓,再轉(zhuǎn)換成對(duì)應(yīng)的溫度,需要比較多的外部硬件支持,硬件電路復(fù)雜,軟件調(diào)試

12、復(fù)雜,制作成本高。2.與前面相比,采用美國(guó) DALLAS 半導(dǎo)體公司繼 DS1820 之后推出的一種改進(jìn)型智能溫度傳感器DS18B20 作為檢測(cè)元件,測(cè)溫范圍為-55125,最大分辨率可達(dá) 0.0625。DS18B20 可以直接讀出被測(cè)溫度值,而且采用 3 線制與單片機(jī)相連,減少了外部的硬件電路,具有低成本和易使用的特點(diǎn)。3.33.3 顯示部分的方案選擇顯示部分的方案選擇1. 液晶顯示方式。液晶顯示效果出眾,可以運(yùn)用菜單項(xiàng)來方便操作,但是在顯示時(shí),特別是使用秒表功能時(shí)掃描速度跟不上,屏幕會(huì)有明顯的閃爍。而且由于 61 板的存儲(chǔ)空間有限,液晶顯示就不能與語音播抱程序同時(shí)實(shí)現(xiàn)。這些大大影響了電子萬

13、年歷的性能。2. 相比液晶顯示,8 段數(shù)碼管雖然操作比液晶顯示略顯繁瑣,但可視范圍十分寬,而且經(jīng)濟(jì)實(shí)惠,也不需要復(fù)雜的驅(qū)動(dòng)程序。所以最后選擇 LED 數(shù)碼管顯示方案。綜上所述,按照系統(tǒng)設(shè)計(jì)功能的要求,確定硬件系統(tǒng)由主控制器、時(shí)鐘模塊、測(cè)溫電路、顯示模塊、鍵盤接口共 5 個(gè)模塊組成,總體系統(tǒng)構(gòu)成框圖如圖 3.1 所示。圖 3.1 電子萬年歷系統(tǒng)構(gòu)成框圖4 4 系統(tǒng)硬件電路設(shè)計(jì)系統(tǒng)硬件電路設(shè)計(jì)電子萬年歷電路原理圖見附件一,系統(tǒng)由主控制器 AT89C52、時(shí)鐘芯片 DS1302、溫度傳感器DS18B20 傳感器、顯示電路及鍵盤掃描電路組成。4.14.1 主控器主控器 AT89C52AT89C52AT

14、MEL 公司生產(chǎn)的 AT89C52 單片機(jī)采用高性能的靜態(tài) 80C51 設(shè)計(jì),由先進(jìn)工藝制造,并帶有非易失性 Flsah 程序存儲(chǔ)器。它是一種高性能、低功耗的 8 位 CMOS 微處理芯片,市場(chǎng)應(yīng)用最多。主要性能特點(diǎn)有: 8KB Flash ROM,可以檫寫 1000 次以上,數(shù)據(jù)保存 10 年。 256 字節(jié)內(nèi)部 RAM。 電源控制模式 時(shí)鐘可停止和恢復(fù); 空閑模式; 掉電模式。 6 個(gè)中斷源。4 個(gè)中斷優(yōu)先級(jí)。 4 個(gè) 8 位 I/O 口。 全雙工增強(qiáng)型 UART。 3 個(gè) 16 位定時(shí)/計(jì)數(shù)器,T0、T1(標(biāo)準(zhǔn) 80C51)和增加的 T2(捕獲和比較) 。 全靜態(tài)工作方式:024MHz。

15、DS1302 時(shí)鐘模塊AT89C52主控制器DS18B2 溫度探測(cè)鍵盤掃描電路數(shù)碼顯示電路4.24.2 時(shí)鐘電路時(shí)鐘電路 DS1302DS13024.2.1.4.2.1. DS1302DS1302 的性能特性的性能特性實(shí)時(shí)時(shí)鐘,可對(duì)秒、分、時(shí)、日、周、月以及帶閏年補(bǔ)償?shù)哪赀M(jìn)行計(jì)數(shù);用于高速數(shù)據(jù)暫存的 318 位 RAM;最少引腳的串行 I/O;2.55.5V 電壓工作范圍;2.5V 時(shí)耗電小于 300nA;用于時(shí)鐘或 RAM 數(shù)據(jù)讀/寫的單字節(jié)或多字節(jié)(脈沖方式)數(shù)據(jù)傳送方式;簡(jiǎn)單的 3 線接口;可選的慢速充電(至 Vcc1)的能力。DS1302 時(shí)鐘芯片包括實(shí)時(shí)時(shí)鐘/日歷和 31 字節(jié)的靜態(tài)

16、 RAM。它經(jīng)過一個(gè)簡(jiǎn)單的串行接口與微處理器通信。實(shí)時(shí)時(shí)鐘/日歷提供秒、分、時(shí)、日、周、月和年等信息。對(duì)于小于 31 天的月和月末的日期自動(dòng)調(diào)整,還包括閏年校正的功能。時(shí)鐘的運(yùn)行可以采用 24h 或帶 AM(上午)/PM(下午)的12h 格式。采用三線接口與 CPU 進(jìn)行同步通信,并可采用突發(fā)方式一次傳送多個(gè)字節(jié)的時(shí)鐘信號(hào)或RAM 數(shù)據(jù)。DS1302 有主電源/后備電源雙電源引腳:Vcc1在單電源與電池供電的系統(tǒng)中提供低電源,并提供低功率的電池備份;Vcc2在雙電源系統(tǒng)中提供主電源,在這種運(yùn)用方式中,Vcc1連接到備份電,以便在沒有主電源的情況下能保存時(shí)間信息以及數(shù)據(jù)。DS1302 由 Vcc

17、1或 Vcc2中較大者供電。當(dāng) Vcc2大于 Vcc1+0.2V 時(shí),Vcc2 給 DS1302 供電;當(dāng) Vcc2小于 Vcc 時(shí), DS13026 由 Vcc1供電。4.2.24.2.2 DS1302DS1302 數(shù)據(jù)操作原理數(shù)據(jù)操作原理DS1302 在任何數(shù)據(jù)傳送時(shí)必須先初始化,把 RST 腳置為高電平,然后把 8 位地址和命令字裝入移位寄存器,數(shù)據(jù)在 SCLK 的上升沿被輸入。無論是讀周期還是寫周期,開始 8 位指定 40 個(gè)寄存器中哪個(gè)將被訪問到。在開始 8 個(gè)時(shí)鐘周期,把命令字節(jié)裝入移位寄存器之后,另外的時(shí)鐘周期在讀操作時(shí)輸出數(shù)據(jù),在寫操作是寫入時(shí)寫入數(shù)據(jù)。時(shí)鐘脈沖的個(gè)數(shù)在單字節(jié)方

18、式下為 8 加 8,在多字節(jié)方式下為 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 置為高電平。DS1302 的引腳及內(nèi)部結(jié)構(gòu)圖如圖 4.1 所示,表 4.1 為各引腳的功能。DS1302 的控制字如圖 4.2 所示??刂谱止?jié)的最高位(位 7)必須是邏輯 1;如果它為 0,則不能把數(shù)據(jù)寫入到 DS1302 中。位 6 如果為 0,則表示存取日歷時(shí)鐘數(shù)據(jù);為 1 表示存取 RAM 數(shù)據(jù)。位 5

19、1(A4A0)指示操作單元的地址。最低有效位(位 0)如為 0,表示要進(jìn)行寫操作;為 1 表示進(jìn)行讀操作??刂谱止?jié)總是從最低位開始輸入/輸出。為了提高對(duì) 32 個(gè)地址的尋址能力(地址/命令位 15=邏輯 1) ,可以把時(shí)鐘/日歷或 RAM 寄存器規(guī)定為多字節(jié)(burst)方式。位 6 規(guī)定時(shí)鐘或 RAM,而位 0 規(guī)定讀或?qū)?。在時(shí)鐘/日歷寄存器中的地址 931 或 RAM 寄存器中的地址 31 不能寄存數(shù)據(jù)。在多字節(jié)方式中,讀或?qū)憦牡刂?0 的位 0開始。必須按數(shù)據(jù)傳送的次序?qū)懽钕鹊?8 個(gè)寄存器。但是,當(dāng)以多字節(jié)方式寫 RAM 時(shí),為了傳送數(shù)據(jù)不必寫所有 31 字節(jié)。不管是否寫了全部 31

20、字節(jié),所寫的每一字節(jié)都將傳送至 RAM。12345678Vcc1SCLKI/ORSTVcc2X1X2GND電源控制Vcc1Vcc2GND輸入移位寄存器I/OSCLK實(shí)時(shí)時(shí)鐘命令與控制邏輯振蕩器與分頻器318RAMRSTX2X132.768kHzDATA BUS圖 4.1 DS1302 引腳及內(nèi)部結(jié)構(gòu)表 4.1 DS1302 引腳功能引腳號(hào)引腳名稱功 能1Vcc2主電源2,3X1,X2振蕩源,外界 32.768kHz 晶振4GND地線5RST復(fù)位/片選線6I/O串行數(shù)據(jù)輸入/輸出端(雙向)7SCLK串行數(shù)據(jù)輸入端8Vcc1后備電池7 6 5 4 3 2 1 01RAMCKA4A3A2A1A0RA

21、MK圖 4.2 DS1302 的控制字DS1302 共有 12 個(gè)寄存器,其中有 7 個(gè)寄存器與日歷、時(shí)鐘相關(guān),存放的數(shù)據(jù)位為 BCD 碼形式。其日歷、時(shí)間寄存器及其控制字見表 3.2,其中奇數(shù)為讀操作,偶數(shù)為寫操作。時(shí)鐘暫停:秒寄存器的位 7 定義位時(shí)鐘暫停位。當(dāng)它為 1 時(shí),DS1302 停止震蕩,進(jìn)入低功耗的備份方式。通常在對(duì) DS1302 進(jìn)行寫操作時(shí)(如進(jìn)入時(shí)鐘調(diào)整程序) ,停止震蕩。當(dāng)它為 0 時(shí),時(shí)鐘將開始啟動(dòng)。AMPM/1224小時(shí)方式:小時(shí)寄存器的位 7 定義為 12 或 24小時(shí)方式選擇位。它為高電平時(shí),選擇 12小時(shí)方式。在此方式下,位 5 是 AM/PM 位,此位是高電

22、平時(shí)表示 PM 低電平表示AM。在 24小時(shí)方式下,位 5 為第二個(gè) 10小時(shí)位(2023h) 。表 4.2 內(nèi)部寄存器地址和內(nèi)容命令字節(jié)積存器內(nèi)容積存器名寫讀取值范圍76543210秒積存器80H81H0059CH10SSEC分積存器82H83H0059010 minMIN小時(shí)積存器84H85H0023 或 011212/24010A/PHRHR日積存器85H87H0128,29,30,310010DATEDATE月積存器88H89H011200010MMONTH周積存器8AH8BH010700000DAY年積存器8CHD3H009910YEARYEARDS1302 的晶震選用 32.768

23、kHz,電容推薦值為 33pF,因?yàn)檎鹗庮l率較低,也可以不接電容,對(duì)計(jì)時(shí)精度影響不大。4.34.3 測(cè)溫電路的設(shè)計(jì)測(cè)溫電路的設(shè)計(jì)測(cè)溫電路主要使用溫度傳感器 DS18B20,由于精度要求不高所以采用 2 位共陽 LED 數(shù)碼管以動(dòng)態(tài)掃描法實(shí)現(xiàn)溫度顯示。其設(shè)計(jì)原理圖如附件一所示。4.3.14.3.1 溫度傳感器工作原理溫度傳感器工作原理DS18B20 溫度傳感器是美國(guó) DALLAS 半導(dǎo)體公司最新推出的一種改進(jìn)型智能溫度傳感器,與傳統(tǒng)的熱敏電阻等測(cè)溫元件相比,它能直接讀出被測(cè)溫度,并且可根據(jù)實(shí)際要示通過簡(jiǎn)單的編程實(shí)現(xiàn)912 位的數(shù)字值讀數(shù)方式。DS18B20 的性能特點(diǎn)如下:獨(dú)特的單線接口僅需要一

24、個(gè)端口引腳進(jìn)行通信;多個(gè) DS18B20 可以并聯(lián)在唯一的三線上,實(shí)現(xiàn)多點(diǎn)組網(wǎng)功能;無須外部器件;可通過數(shù)據(jù)線供電,電壓范圍為 3.03.5V;零待機(jī)功耗;溫度以 9 或 12 數(shù)字量讀出;用戶可定義的非易失性溫度報(bào)警設(shè)置;報(bào)警搜索命令識(shí)別并標(biāo)志超過程序限定溫度(溫度報(bào)警條件)的器件;負(fù)電壓特性,電源極性接反時(shí),溫度計(jì)不會(huì)因發(fā)熱而燒毀,但不能正常工作。DS18B20 采用 3 腳 PR35 封裝或腳 SOIC 封裝,其內(nèi)部結(jié)構(gòu)框圖如圖 4.3 所示。64 位 ROM 的位結(jié)構(gòu)如圖 4.4 所示。開始 8 位是產(chǎn)品類型的編號(hào),接著是每個(gè)器件的唯一的序號(hào),共有 48 位,最后 8 位是前面 56

25、位的 CRC 檢驗(yàn)碼,這也是多個(gè) DS18B20 可以采用一線進(jìn)行通信的原因。非易失性溫度報(bào)警觸發(fā)器 TH 和 TL,可通過軟件寫入戶報(bào)警上下限。DS18B20 溫度傳感器的內(nèi)部存儲(chǔ)器還包括一個(gè)調(diào)整暫存 RAM 和一個(gè)易失性的可電擦除的EERAM。高速暫存 RAM 的結(jié)構(gòu)為 8 字節(jié)存儲(chǔ)器,結(jié)構(gòu)如圖 4.5 所示。頭 2 個(gè)字節(jié)包含測(cè)得的溫度信息,第 3 和第 4 節(jié)是 TH 和 TL 的拷貝,是易失的,每次上電復(fù)位時(shí)被刷新。第 5 個(gè)字節(jié)為配置寄存器,它的內(nèi)容用于確定溫度值的數(shù)字轉(zhuǎn)換分辨率。DS18B20 工作時(shí)按此寄存器中的分辨率將溫度轉(zhuǎn)換為相應(yīng)64 位ROM 和單線接口圖 4.DS18B

26、20 內(nèi)部結(jié)構(gòu)圖存儲(chǔ)器與控制邏輯高速緩存溫度傳感器高溫觸發(fā)器 TH低溫觸發(fā)器 TL配置寄存器8 位 CRC 發(fā)生器 I/OCVDD8 位檢驗(yàn) CRC48 位序列號(hào)8 位工廠代碼(10H) MSB LSB MSB LSB MSB LSB 圖 4.4 64 位 ROM 結(jié)構(gòu)圖溫度 LSB溫度 MSBTH 用戶字節(jié) 1TL 用戶字節(jié) 2TH 用戶字節(jié)1配置寄存器TL 用戶字節(jié)2保留保留保留CRC1 字節(jié)2 字節(jié)3 字節(jié)4 字節(jié)5 字節(jié)6 字節(jié)7 字節(jié)8 字節(jié)9 字節(jié)圖 4.5 高速暫存 RAM 結(jié)構(gòu)圖精度的數(shù)值。該字節(jié)各位的定義如圖 4.6 所示。低 5 位一直 1,M 是測(cè)試模式位,用于設(shè)置DS1

27、8B20 在工作模式還是在測(cè)試模式。在 DS18B20 出廠時(shí)該位被設(shè)置為 0,用戶不要去改動(dòng),R1 和R0 決定溫度轉(zhuǎn)換的精度位數(shù),即用來設(shè)置分辨率,定義方法見表 4.3。由表 4.3 可見,DS18B20 溫度轉(zhuǎn)換的時(shí)間比較長(zhǎng),而且設(shè)定的分辨率越高,所需要的溫度數(shù)據(jù)轉(zhuǎn)換時(shí)間就越長(zhǎng)。因此,在實(shí)際應(yīng)用中要將分辨率和轉(zhuǎn)換時(shí)間權(quán)衡考慮。高速暫存 RAM 的第 6、7、8 字節(jié)保留未用,表現(xiàn)為全邏輯 1。第 9 字節(jié)讀出前面所有 8 字節(jié)的CRC 碼,可用來檢驗(yàn)數(shù)據(jù),從而保證通信數(shù)據(jù)的正確性。當(dāng) DS18B20 接收到溫度轉(zhuǎn)換命令后,開始啟動(dòng)轉(zhuǎn)換。轉(zhuǎn)換完成后的溫度值就以 16 位帶符號(hào)擴(kuò)EEROM展

28、的二進(jìn)制補(bǔ)碼形式存儲(chǔ)在高速暫存存儲(chǔ)器的第 1、2 字節(jié)。單片機(jī)可以通過單線接口讀出該數(shù)據(jù),讀數(shù)據(jù)時(shí)低位在先,高位在后,數(shù)據(jù)格式以 0.0625C/LSB 形式表示。溫度值格式如圖 4.7 所示。TMR1R011111圖 4.6 配置寄存器表 4.3 DS18B20 分辨率的定義規(guī)定R1R0分辨率/位測(cè)量最大轉(zhuǎn)換時(shí)間/ms00993.750110187.510113751112750表 4.4 DS18B20 溫度與測(cè)得值對(duì)應(yīng)表溫度/C二進(jìn)制表示十六進(jìn)制表示+1250000 0111 1101 000007D0H+850000 0101 0101 00000550H+25.06250000 00

29、01 1001 00010191H+10.1250000 0000 1010 001000A2H+0.50000 0000 0000 10000008H00000 0000 0000 00000000H-0.51111 1111 1111 1000FFF8H-10.1251111 1111 0101 1110FF5EH-25.06251111 1110 0110 1111FE6FH-551111 1100 1001 0000FC90H232221202-12-22-32-4SSSSSS6S5S4 圖 4.7 溫度數(shù)字值格式LS 字節(jié)MS 字節(jié)預(yù)置計(jì)數(shù)器 1減法計(jì)數(shù)器1低溫度系數(shù)振蕩器減到 0減

30、法計(jì)數(shù)器 2預(yù)置溫度寄存器減到 0高溫度系數(shù)振蕩器斜率累加器計(jì)數(shù)比較器增加圖 4.8 DS18B20 測(cè)溫原理圖停止當(dāng)符號(hào)位 S=0 時(shí),表現(xiàn)測(cè)得的溫度值為正值,可以直接將二進(jìn)制位轉(zhuǎn)換為十進(jìn)制,當(dāng)符號(hào)位S=1 時(shí),表示測(cè)得的溫度值為負(fù)值,要先將補(bǔ)碼變成原碼再計(jì)算十進(jìn)制值。表 4.4 是一部分溫度值對(duì)應(yīng)的二進(jìn)制溫度數(shù)據(jù)。DS18B20 完成溫度轉(zhuǎn)換后,把測(cè)得的溫度值與 RAM 中的 TH、TL 字節(jié)內(nèi)容作比較。若 TTH 或TTL,則將該器件內(nèi)的報(bào)警標(biāo)志位置位,并對(duì)主機(jī)發(fā)出的報(bào)警搜索命令作出響應(yīng)。因此,可用多只DS18B20 同時(shí)測(cè)量溫度并進(jìn)行報(bào)警搜索。在 64 位 ROM 的最高有效字節(jié)中存儲(chǔ)

31、有循環(huán)冗余檢驗(yàn)碼(CRC) 。主機(jī)根據(jù) ROM 的前 56 位來計(jì)算CRC 值,并和存入 DS18B20 的 CRC 作比較,以判斷主機(jī)收到的 ROM 數(shù)據(jù)是否正確。DS18B20 的測(cè)溫原理如圖 4.8 所示。圖中低溫度系數(shù)晶振的振蕩頻率受溫度的影響很小,用于產(chǎn)生固定頻率的脈沖信號(hào)送給減法計(jì)數(shù)器 1;高溫度系數(shù)晶振隨溫度變化其振蕩頻率明顯改變,所產(chǎn)生的信號(hào)作為減法計(jì)數(shù)器 2 的脈沖輸入。圖中還隱含著計(jì)數(shù)門,當(dāng)計(jì)算門打開時(shí),DS18B20 就對(duì)低溫度系數(shù)振蕩器產(chǎn)生的時(shí)鐘脈沖進(jìn)行計(jì)數(shù),進(jìn)而完成溫度測(cè)量。計(jì)數(shù)門的開啟時(shí)間由高溫度系數(shù)振蕩器來決定,每次測(cè)量前,首先將-55C 所對(duì)應(yīng)的一個(gè)基數(shù)分別置入

32、減法計(jì)數(shù)器 1、溫度寄存器中,減法計(jì)數(shù)器 1 和溫度寄存器被預(yù)置在-55C 所對(duì)應(yīng)的一個(gè)基數(shù)值。減法計(jì)數(shù)器 1 對(duì)低溫系數(shù)晶振產(chǎn)生的脈沖信號(hào)進(jìn)行減法計(jì)數(shù),當(dāng)減法計(jì)數(shù)器 1 的預(yù)置值減到 0時(shí),溫度寄存的值將加 1,減法計(jì)數(shù)器 1 的預(yù)置值將重新被裝入,減法計(jì)數(shù)器 1 重新開始對(duì)低溫度系數(shù)晶振產(chǎn)生的脈沖信號(hào)進(jìn)行計(jì)數(shù),如此循環(huán)直到減法計(jì)數(shù)器 2 計(jì)數(shù)到 0 時(shí),停止溫度寄存器值的累加,此時(shí)溫度寄存器中的數(shù)值就是所測(cè)溫度值。圖 4.8 中的斜率累加器用于補(bǔ)償和修正測(cè)溫過程中的非線性,其輸出用于修正減法計(jì)數(shù)器的預(yù)置值,只要計(jì)數(shù)門未關(guān)閉就重復(fù)上述過程,直到溫度寄存器值達(dá)到被測(cè)溫度值。另外,由于 DS18

33、B20 單線通信功能是分時(shí)完成的,它有嚴(yán)格的時(shí)隙概念,因此讀寫時(shí)序很重要。系統(tǒng)對(duì) DS18B20 的各種操作必須按協(xié)議進(jìn)行。操作協(xié)議為:初始化 DS18B20(發(fā)復(fù)位脈沖) 發(fā)ROM 功能指令 發(fā)存儲(chǔ)器操作命令 處理數(shù)據(jù)。4.3.24.3.2 DS18B20DS18B20 與單片機(jī)的接口電路與單片機(jī)的接口電路DS18B20 可以采用兩種方式供電,一種是采用電源供電方式,此時(shí) DS18B20 的 1 腳接地,2 腳作為引線,3 腳接電源。另一種是寄生電源供電方式。單片機(jī)端口接單線總線,為保證在有效的DS18B20 時(shí)鐘周期內(nèi)提供足夠的電流,可用一個(gè) MOSFET 管來完成對(duì)總線的上拉。當(dāng) DS1

34、8B20 處于寫存儲(chǔ)器操作和溫度 A/D 轉(zhuǎn)換操作時(shí),總線上必須有強(qiáng)的上拉,上拉開啟時(shí)間最大為 10us。采用寄生電源供電方式時(shí) VDD和 GND 端均接地。由于單線制只有一根線,因此發(fā)送接口必須是三態(tài)的。4.44.4 顯示電路的設(shè)計(jì)顯示電路的設(shè)計(jì)顯示部分采用普通的共陽數(shù)碼管顯示,采用動(dòng)態(tài)掃描,以減少硬件電路。考慮到第一次掃描17 位數(shù)碼管顯示時(shí)會(huì)出現(xiàn)閃爍情況,設(shè)計(jì)時(shí) 17 個(gè)數(shù)碼管分 3 排同時(shí)掃描。第一排 8 個(gè)數(shù)碼管分別為千年、百年、十年、年、十月、月、十日、日,第二排 7 個(gè)數(shù)碼管分別為十時(shí)、時(shí)、十分、分、十秒、秒,第三排 3 個(gè)數(shù)碼管分別為星期、溫度(兩位)顯示。顯示時(shí)采用串行口輸出

35、段碼,用 1片 74LS164 來驅(qū)動(dòng) 3 排數(shù)碼管,這樣掃描一次只需 7ms。表 4.5 74LS164 特性表操作模式輸 入輸 出復(fù) 位MRABQ0Q1Q7LLQ0Q6HLLLQ0Q6HLHLQ0Q6HHLLQ0Q6移 位HHHHQ0Q674LS164 內(nèi)部為 8 個(gè) D 觸發(fā)器,用以實(shí)現(xiàn)數(shù)據(jù)的串行移位,74LS164 特性見表 4.5。單片機(jī)以串口方式 0(移位寄存器方式)輸出數(shù)據(jù),3 片 74LS164 作為 3 排共陽數(shù)碼管的串/并轉(zhuǎn)換顯示接口。74LS164 為 TTl 單向 8 位移位寄存器,可實(shí)現(xiàn)串行輸入,并行輸出。其中 A、B(第 1、2 腳)為串行數(shù)據(jù)輸入端,2 個(gè)引腳按邏

36、輯“與”運(yùn)算規(guī)律輸入信號(hào),共一個(gè)輸入信號(hào)時(shí)可并接,共同作為輸入腳。CP(第 8 腳)為時(shí)鐘輸入端,可連接到串行口的 TXD 端。每一個(gè)時(shí)鐘信號(hào)的上升沿加到 CP端時(shí),移位寄存器移一位。8 個(gè)時(shí)鐘脈沖過后,8 位二進(jìn)制數(shù)全部移入 74LS164 中。MR 腳(第 9 腳)為復(fù)位端,當(dāng)該腳為低電平時(shí),移位寄存器各位復(fù) 0;只有當(dāng)它高電平時(shí),時(shí)鐘脈沖才起作用。Q1Q8(第 36 和 1013 引腳)并行輸出端分別接數(shù)碼管的 ha(因?yàn)榇趶牡臀婚_始傳送)各段對(duì)應(yīng)的引腳上。在給出了 8 個(gè)脈沖后,最先進(jìn)入 74LS164 的第一個(gè)字節(jié)數(shù)據(jù)到達(dá)了最高位。再來1 個(gè)脈沖,第 1 個(gè)脈沖就會(huì)從最高位移出,進(jìn)

37、入下個(gè) 74LS164 的第 1 位。3 片 74LS164 首尾相串,而時(shí)鐘端則接在一起。這樣,當(dāng)輸入 8 個(gè)脈沖時(shí),從單片機(jī) RXD 端輸出的第 1 字節(jié)數(shù)據(jù)就進(jìn)入了第1 片 74LS164 中,而當(dāng)?shù)?2 個(gè) 8 個(gè)脈沖到來后,第 1 字節(jié)數(shù)據(jù)就進(jìn)入了第 2 片 74LS164,而隨后的第 2 字節(jié)的數(shù)據(jù)則進(jìn)入了第 1 片 74LS164。這樣,當(dāng)?shù)?3 個(gè) 8 個(gè)脈沖完成后,首次送出的數(shù)據(jù)被送到了最下面的 164(第 3 片)中,其它數(shù)據(jù)依次出現(xiàn)在第二和第一片 74LS164 中,實(shí)現(xiàn)了數(shù)據(jù)在74LS164 中的串行輸入、并行輸出。在方式 0 狀態(tài)下,串行口為同步移位寄存器方式,其波特

38、率是固定的,為 fosc/12。數(shù)據(jù)由RXD(P3.0)端輸入或輸出,同步移位脈沖由 TXD(P3.1)端輸出。發(fā)送、接收數(shù)據(jù)時(shí)低位在先。所以根據(jù)提供的硬件電路圖,在編寫程序時(shí),查共陽數(shù)碼管的段碼的二進(jìn)制數(shù)據(jù)應(yīng)該將正常的共陽數(shù)據(jù)管 09 的二進(jìn)制值按位反序排序,如原來的二進(jìn)制為 11000000(C0H) ,要改為 00000011(03H) ,就能使數(shù)碼管正常顯示。4.54.5 鍵盤接口的設(shè)計(jì)鍵盤接口的設(shè)計(jì)由于按鍵只有 5 個(gè),用普通按鈕接 10K 上拉電阻,用查詢法完成讀鍵功能。5 5 系統(tǒng)程序的設(shè)計(jì)系統(tǒng)程序的設(shè)計(jì)5.15.1 陽歷程序設(shè)計(jì)陽歷程序設(shè)計(jì)因?yàn)槭褂昧藭r(shí)鐘芯片 DS1302,陽歷

39、程序只需從 DS1302 各寄存器中讀出年、周、月、日、小時(shí)、分、秒等數(shù)據(jù),再處理即可。在首次對(duì) DS1302 進(jìn)行操作之前,必須對(duì)它進(jìn)行初始化,然后從DS1302 中讀出數(shù)據(jù),再經(jīng)過處理后,送給顯示緩沖單元。陽歷程序流程圖見圖 5.1 所示。初始化 13021302 開始振蕩從 1302 中讀出年、周、月、日、小時(shí)、分、秒開 始讀出的數(shù)據(jù)都為BCD 碼,將其高低位分離送顯示緩沖單元圖 5.1 陽歷程序流程圖5.25.2 時(shí)間調(diào)整程序設(shè)計(jì)時(shí)間調(diào)整程序設(shè)計(jì)調(diào)整時(shí)間用 5 個(gè)調(diào)整按鈕,1 個(gè)作為移位、控制用,2 個(gè)作為加和減用,還有 2 個(gè)作為鬧鐘調(diào)整使用,分別定義為控制按鈕、加按鈕、減按鈕、鬧鐘

40、加按紐、鬧鐘減按紐。在調(diào)整時(shí)間過程中,要調(diào)整的位與別的位應(yīng)該有區(qū)別。所以增加了閃爍功能,即調(diào)整的位一直在閃爍,直到調(diào)整下一位。閃爍原理就是,讓要調(diào)整的一位每隔一定時(shí)間熄滅一次,比如說 50ms。利用定時(shí)器計(jì)時(shí),當(dāng)達(dá)到50ms 溢出時(shí),就送給該位熄滅符,在下一次溢出時(shí),再送正常顯示的值,不斷交替,直到調(diào)整該位結(jié)束。此時(shí)送正常顯示值給該位,再進(jìn)入下一位調(diào)整閃爍程序。時(shí)間調(diào)整程序流程圖如圖 5.2 所示。5.35.3 溫度程序設(shè)計(jì)溫度程序設(shè)計(jì)系統(tǒng)程序主要包括主程序、讀出溫度子程序、溫度轉(zhuǎn)換命令子程序、計(jì)算溫度子程序、顯示數(shù)據(jù)刷新子程序等等。5.3.15.3.1 主程序主程序主程序的主要功能是負(fù)責(zé)溫度

41、的實(shí)時(shí)顯示、讀出并處理 DS18B20 的測(cè)量溫度值,溫度測(cè)量每1s 進(jìn)行一次。其程序流程圖見 5.3。5.3.5.3.2 2 讀出溫度子程序讀出溫度子程序主要功能是讀出 RAM 中的 9 字節(jié),在讀出時(shí)需進(jìn)行 CRC 校驗(yàn),校驗(yàn)有錯(cuò)時(shí)不進(jìn)行溫度數(shù)據(jù)的改寫。其程序流程圖如圖 5.4 所示。5.3.35.3.3 溫度轉(zhuǎn)換命令子程序溫度轉(zhuǎn)換命令子程序溫度轉(zhuǎn)換子程序主要是發(fā)溫度轉(zhuǎn)換開始命令,當(dāng)采用 12 位分辨率時(shí)轉(zhuǎn)換時(shí)間約為 750ms,在本程序設(shè)計(jì)中采用 1s 顯示程序延時(shí)法等待轉(zhuǎn)換的完成。溫度轉(zhuǎn)換命令子程序流程圖如圖 5.5 所示。等待按鍵程序減鍵有效年減 1控制鍵有效,進(jìn)入年調(diào)整程序員加鍵有

42、效年加 1等待按鍵程序減鍵有效日減 1控制鍵有效,進(jìn)入日調(diào)整程序員加鍵有效日加 1等待按鍵程序減鍵有效小時(shí)減 1控制鍵有效,進(jìn)入小時(shí)調(diào)整程序員加鍵有效小時(shí)加 1等待按鍵程序減鍵有效月減 1控制鍵有效,進(jìn)入月調(diào)整程序員加鍵有效月加 1等待按鍵程序減鍵有效星期減 1控制鍵有效,進(jìn)入星期調(diào)整程序員加鍵有效星期加 1等待按鍵程序減鍵有效分減 1控制鍵有效,進(jìn)入分調(diào)整程序員加鍵有效分加 1控制鍵有效,跳出時(shí)間調(diào)整程序,進(jìn)入主循環(huán)程序圖 5.2 時(shí)間調(diào)整程序程序流程圖初始化調(diào)用顯示子程序1S 到?初次上電?讀出溫度值溫度計(jì)算處理顯示數(shù)據(jù)刷新發(fā)溫度轉(zhuǎn)換開始命令NYYN圖 5.3 DS18B20 溫度計(jì)主程序

43、流程圖 圖 5.4 讀出溫度子程序流程圖5.3.45.3.4 計(jì)算溫度子程序計(jì)算溫度子程序計(jì)算溫度子程序?qū)?RAM 中讀取值進(jìn)行 BCD 碼的轉(zhuǎn)換運(yùn)算,并進(jìn)行溫度值正負(fù)的判定,其程序流程圖如圖 5.6 所示。5.3.55.3.5 顯示數(shù)據(jù)刷新子程序顯示數(shù)據(jù)刷新子程序顯示數(shù)據(jù)刷新子程序主要是對(duì)顯示緩沖器中的顯示數(shù)據(jù)進(jìn)行刷新操作,當(dāng)最高顯示位為 0 時(shí)將符號(hào)顯示位移入下一位。程序流程圖如圖 5.7 所示。發(fā)跳過 ROM 命令發(fā)溫度轉(zhuǎn)換開始命令結(jié)束發(fā) DS18B20 復(fù)位命令圖 5.5 溫度轉(zhuǎn)換命令子程序流程圖發(fā) DS18B20 復(fù)位命令發(fā)跳過 ROM 命令發(fā)讀取溫度命令讀取操作,CRC 校驗(yàn)9 字節(jié)完?CRC 校驗(yàn)正確?移入溫度暫存器結(jié)束NYYN開始溫度零下?溫度值取補(bǔ)碼置“”標(biāo)志置“+”標(biāo)志結(jié)束計(jì)算小數(shù)位 BCD 值計(jì)算整數(shù)位 BCD 值NY溫度數(shù)據(jù)移入顯示寄存器十位數(shù) 0?百位數(shù) 0?十位數(shù)顯示符號(hào)百位數(shù)不顯示百位數(shù)顯示數(shù)據(jù)(不顯示符號(hào))結(jié)束NNYY圖 5.6

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論