基于單片機(jī)的電子萬(wàn)年歷的設(shè)計(jì)—畢業(yè)設(shè)計(jì)論文_第1頁(yè)
基于單片機(jī)的電子萬(wàn)年歷的設(shè)計(jì)—畢業(yè)設(shè)計(jì)論文_第2頁(yè)
基于單片機(jī)的電子萬(wàn)年歷的設(shè)計(jì)—畢業(yè)設(shè)計(jì)論文_第3頁(yè)
基于單片機(jī)的電子萬(wàn)年歷的設(shè)計(jì)—畢業(yè)設(shè)計(jì)論文_第4頁(yè)
基于單片機(jī)的電子萬(wàn)年歷的設(shè)計(jì)—畢業(yè)設(shè)計(jì)論文_第5頁(yè)
已閱讀5頁(yè),還剩40頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、畢業(yè)設(shè)計(jì)說(shuō)明書(shū)(論文) 設(shè)計(jì)(論文)題目: _ 基于單片機(jī)的萬(wàn)年歷系統(tǒng)設(shè)計(jì) 專(zhuān) 業(yè): 班 級(jí): 學(xué) 號(hào): 姓 名: 指導(dǎo)教師: 信息職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì)(論文)任務(wù)書(shū)信息職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì)(論文)任務(wù)書(shū) 學(xué) 生 姓 名 學(xué)號(hào) 01 班級(jí)應(yīng)電 08-2專(zhuān)業(yè)應(yīng)用電子技術(shù) 設(shè)計(jì)(或論文)題目電子萬(wàn)年歷的設(shè)計(jì) 指導(dǎo)教師姓名職 稱(chēng)工作單位及所從事專(zhuān)業(yè)聯(lián)系方式備 注 講師學(xué)院 21 設(shè)計(jì)(論文)內(nèi)容: 利用單片機(jī)控制和高性能時(shí)鐘芯片設(shè)計(jì)一電子萬(wàn)年歷。要求該系統(tǒng)具有如下特點(diǎn)和功能: 1.可顯示公歷及農(nóng)歷年、月、日和時(shí)、分、秒; 2.走時(shí)準(zhǔn)確,可調(diào)整公歷年、月、日和時(shí)、分、秒; 3.采用市電通過(guò)電源適配器供

2、電,當(dāng)市電停電時(shí),不但萬(wàn)年歷所有數(shù)據(jù)不丟失,且萬(wàn)年歷照常運(yùn)行 (有后備電池供電,可供數(shù)年) ; 4.萬(wàn)年歷設(shè)置運(yùn)行到 2099 年。 進(jìn)度安排: 要有較為詳細(xì)的時(shí)間安排(時(shí)間具體到周) ; 第 24 周:查找資料,選擇參考方案; 第 56 周:確定方案; 第 78 周:查找資料,進(jìn)行單元電路的設(shè)計(jì); 第 910 周:整機(jī)電路整機(jī)與分析; 第 1112 周:整理報(bào)告,定稿; 第 1314 周:制作 ppt,準(zhǔn)備答辯; 第 15 周:答辯。 主要參考文獻(xiàn)、資料(寫(xiě)清楚參考文獻(xiàn)名稱(chēng)、作者、出版單位): 1 王新穎.單片機(jī)原理及應(yīng)用.北京:北京大學(xué)出版社,2008 2 陳忠平.單片機(jī)基礎(chǔ)與最小系統(tǒng)實(shí)踐

3、.北京:北京航空航天大學(xué)出版社,2006 6 沈慶陽(yáng).8051 單片機(jī)實(shí)踐與應(yīng)用.北京:清華大學(xué)出版社,2003 4 侯玉寶.基于 proteus 的 51 系列單片機(jī)設(shè)計(jì)與仿真.北京:電子工業(yè)出版社,2008 5 何立民.單片機(jī)應(yīng)用技術(shù)選編.北京:北京航空航天出版社,2006 6 楊振江.流行單片機(jī)實(shí)用子程序及應(yīng)用實(shí)例.西安:西安電子科技大學(xué)出版社,2007 7 王明順.可涓流充電的串行實(shí)時(shí)時(shí)鐘芯片 ds1302.北京:電子工業(yè)出版社,2009 8 劉和平.單片機(jī)原理及接口程序設(shè)計(jì).北京:北京航天航空大學(xué)出版社,2008 審 批 意 見(jiàn) 教研室負(fù)責(zé)人: 年 月 日 備注:任務(wù)書(shū)由指導(dǎo)教師填寫(xiě)

4、,一式二份。其中學(xué)生一份,指導(dǎo)教師一份。 目 錄 摘要 .1 第 1 章緒論 .2 第 2 章設(shè)計(jì)方案 .3 2.1 系統(tǒng)基本方案選擇和論證 .3 2.1.1 單片機(jī)的選擇.3 2.1.2 顯示模塊的選擇.3 2.1.3 鍵盤(pán)模塊的選擇.3 2.1.4 時(shí)鐘芯片的選擇.4 2.1.5 溫度傳感器的選擇.4 2.2 電路設(shè)計(jì)最終方案決定 .5 第 3 章硬件設(shè)計(jì) .6 3.1 at89c52 單片機(jī) .6 3.1.1 at89c52 的信號(hào)引腳 .8 3.2 ds1302 時(shí)鐘模塊 .10 3.2.1 內(nèi)部結(jié)構(gòu)及引腳.11 3.2.2 工作原理.12 3.2.3 寄存器和控制命令.12 3.3

5、ds18b20 溫度采集模塊 .14 3.3.1 內(nèi)部結(jié)構(gòu)及引腳.15 3.3.2 測(cè)溫原理.15 3.3.3 工作過(guò)程及時(shí)序.16 3.4 鍵盤(pán)模塊 .20 3.5 lcd 顯示模塊 .21 第 4 章軟件設(shè)計(jì) .23 4.1 溫度采集軟件 .23 4.2 陽(yáng)歷軟件設(shè)計(jì) .24 4.3 陰歷軟件設(shè)計(jì) .26 4.4 lcd 顯示系統(tǒng) .29 4.5 按鍵系統(tǒng) .30 4.6 系統(tǒng)主流程圖 .31 第 5 章系統(tǒng)調(diào)試 .32 5.1 調(diào)試過(guò)程 .32 5.2 仿真結(jié)果 .33 總結(jié) .34 參考文獻(xiàn) .35 附錄 1整機(jī)電路圖.36 附錄 2元件明細(xì)表.37 附錄 3 系統(tǒng)主程序.38 摘要

6、電子萬(wàn)年歷能顯示:年、月、日、時(shí)、分、秒及星期信息,并具有可調(diào)整日期和 時(shí)間功能。選用的是單片機(jī) at89c52 來(lái)實(shí)現(xiàn)電子萬(wàn)年歷的功能。 該電子萬(wàn)年歷主要由單片機(jī)、lcd 顯示電路、ds18b20 溫度采集模塊、ds1302 時(shí)鐘 電路模塊組成。系統(tǒng)以硬件軟件化為指導(dǎo)思想,充分發(fā)揮單片機(jī)功能,大部分功能通 過(guò)軟件編程來(lái)實(shí)現(xiàn),電路簡(jiǎn)單明了,系統(tǒng)穩(wěn)定性高,同時(shí)該系統(tǒng)還具有功耗小、成本 低的特點(diǎn),具有很強(qiáng)的實(shí)用性。由于該系統(tǒng)所用元器件較少,單片機(jī)所被占用的 i/o 口不多,因此系統(tǒng)具有較強(qiáng)的可擴(kuò)展性。軟件程序均采用 c 語(yǔ)言編寫(xiě),便于移植與升 級(jí)。報(bào)告詳細(xì)介紹了整個(gè)系統(tǒng)的硬件組成結(jié)構(gòu)、工作原理和系

7、統(tǒng)的軟件程序設(shè)計(jì)。 關(guān)鍵詞關(guān)鍵詞萬(wàn)年歷;at89c52;ds1302;ds18b20 第 1 章緒論 隨著人們生活水平的提高和生活節(jié)奏的加快,對(duì)時(shí)間的要求越來(lái)越高,精準(zhǔn)數(shù)字 計(jì)時(shí)的消費(fèi)需求也是越來(lái)越多。 二十一世紀(jì)的今天,最具代表性的計(jì)時(shí)產(chǎn)品就是電子萬(wàn)年歷,它是近代世界鐘表 業(yè)界的第三次革命。第一次是擺和擺輪游絲的發(fā)明,相對(duì)穩(wěn)定的機(jī)械振蕩頻率源使鐘 表的走時(shí)差從分級(jí)縮小到秒級(jí),代表性的產(chǎn)品就是帶有擺或擺輪游絲的機(jī)械鐘或表。 第二次革命是石英晶體振蕩器的應(yīng)用,發(fā)明了走時(shí)精度更高的石英電子鐘表,使鐘表 的走時(shí)月差從分級(jí)縮小到秒級(jí)。第三次革命就是單片機(jī)數(shù)碼計(jì)時(shí)技術(shù)的應(yīng)用(電子萬(wàn) 年歷) ,使計(jì)時(shí)產(chǎn)品

8、的走時(shí)日差從分級(jí)縮小到 1/600 萬(wàn)秒,從原有傳統(tǒng)指針計(jì)時(shí)的方式 發(fā)展為人們?nèi)粘8鼮槭煜さ囊构鈹?shù)字顯示方式,直觀明了,并增加了全自動(dòng)日期、星 期、溫度以及其他日常附屬信息的顯示功能,它更符合消費(fèi)者的生活需求!因此,電 子萬(wàn)年歷的出現(xiàn)帶來(lái)了鐘表計(jì)時(shí)業(yè)界跨躍性的進(jìn)步。 本文介紹了基于 at89c52 單片機(jī)設(shè)計(jì)的電子萬(wàn)年歷。 首先介紹單片機(jī)的發(fā)展與其在中低端領(lǐng)域中的優(yōu)勢(shì)以及課題的開(kāi)發(fā)意義,接著介 紹了 at89c52 單片機(jī)的硬件結(jié)構(gòu),并在此基礎(chǔ)上實(shí)現(xiàn)了萬(wàn)年歷基本電路的設(shè)計(jì),然后 使用單片機(jī) c 語(yǔ)言進(jìn)行萬(wàn)年歷程序的設(shè)計(jì),程序采用模塊化結(jié)構(gòu),使得邏輯關(guān)系簡(jiǎn)單 明了,維護(hù)方便。 第 2 章設(shè)計(jì)方案

9、 2.1 系統(tǒng)基本方案選擇和論證 2.1.1 單片機(jī)的選擇 方案一:采用傳統(tǒng)的 at89c52 作為電機(jī)的控制核心。單片機(jī)算術(shù)運(yùn)算功能強(qiáng),軟 件編程靈活、自由度大,可用軟件編程實(shí)現(xiàn)各種算法和邏輯控制,并且由于其功耗低、 體積小、技術(shù)成熟和成本低等優(yōu)點(diǎn),使其在各個(gè)領(lǐng)域應(yīng)用廣泛。 方案二:采用 ftc10f04 單片機(jī),還帶有非易失性 flash 程序存儲(chǔ)器。它是一種高 性能、低功耗的 8 位 cmos 微處理芯片,市場(chǎng)應(yīng)用最多。其主要特點(diǎn)如下:8kb flash rom,可以擦除 1000 次以上,數(shù)據(jù)保存 10 年。 方案比較:由于本系統(tǒng)對(duì) cpu 運(yùn)算速度要求很高,需要執(zhí)行很復(fù)雜的運(yùn)算,方案

10、 一成本比較低,適合做設(shè)計(jì),方案二運(yùn)算速度高,性能好,所以?xún)煞N方案都有可取之 處。選用方案一作為主方案,方案二作為備用方案。 2.1.2 顯示模塊的選擇 方案一:使用傳統(tǒng)的 led 數(shù)碼管顯示。 數(shù)碼管具有:低能耗、低損耗、低壓、壽 命長(zhǎng)、耐老化、防曬、防潮、防火、防高(低)溫,對(duì)外界環(huán)境要求低,易于維護(hù), 同時(shí)其精度比較高,稱(chēng)重輕,精確可靠,操作簡(jiǎn)單。數(shù)碼管采用 bcd 編碼顯示數(shù)字, 程序編譯容易,資源占用較少。但顯示不夠直觀,太過(guò)單調(diào),電源設(shè)計(jì)復(fù)雜 。 方案二:使用液晶顯示屏顯示時(shí)間數(shù)字。 液晶顯示屏(lcd)具有輕薄短小、低 耗電量、無(wú)輻射危險(xiǎn),平面直角顯示以及影象穩(wěn)定不閃爍等優(yōu)勢(shì),可

11、視面積大,畫(huà)面 效果好,分辨率高,抗干擾能力強(qiáng)等特點(diǎn)。 方案比較:led 數(shù)碼管雖然操作簡(jiǎn)單,實(shí)用性高,但顯示太過(guò)單調(diào)。而本設(shè)計(jì)顯示 內(nèi)容量大,采用 lcd 液晶顯示畫(huà)面效果好,直觀明了,故選用方案二。 2.1.3 鍵盤(pán)模塊的選擇 在對(duì)日期和時(shí)間進(jìn)行控制,對(duì)日期和時(shí)間進(jìn)行調(diào)節(jié)校準(zhǔn)過(guò)程中,系統(tǒng)需要產(chǎn)生激 勵(lì)電流,因此需要用按鍵。 方案一:使用獨(dú)立式鍵盤(pán)。獨(dú)立式鍵盤(pán)是指直接用 i/o 口線構(gòu)成的單個(gè)按鍵電路。 獨(dú)立式按鍵電路配置靈活,軟件結(jié)構(gòu)簡(jiǎn)單。 方案二:使用矩陣式鍵盤(pán)。矩陣式鍵盤(pán)是由行線和列線組成,按鍵位于行、列的 交叉點(diǎn)上,行線、列線分別連接到按鍵開(kāi)關(guān)的兩端。其特點(diǎn)是簡(jiǎn)單且不增加成本,這 種

12、鍵盤(pán)適合按鍵數(shù)量較多的場(chǎng)合。 方案比較:因?yàn)楸驹O(shè)計(jì)鍵盤(pán)部分簡(jiǎn)單需要的按鍵少,故采用獨(dú)立式按鍵選擇方案 二。 2.1.4 時(shí)鐘芯片的選擇 方案一: 直接采用單片機(jī)定時(shí)計(jì)數(shù)器提供秒信號(hào),使用程序?qū)崿F(xiàn)年、月、日、星期、時(shí)、 分、秒計(jì)數(shù)。采用此種方案雖然減少芯片的使用,節(jié)約成本,但是,實(shí)現(xiàn)的時(shí)間誤差 較大。 方案二: 采用 ds1302 時(shí)鐘芯片實(shí)現(xiàn)時(shí)鐘,ds1302 芯片是一種高性能的時(shí)鐘芯片,可自動(dòng)對(duì) 秒、分、時(shí)、日、周、月、年以及閏年補(bǔ)償?shù)哪赀M(jìn)行計(jì)數(shù),而且精度高,位的 ram 做 為數(shù)據(jù)暫存區(qū),工作電壓 2.5v5.5v 范圍內(nèi),2.5v 時(shí)耗電小于 300na. 方案比較:雖然采用單片機(jī)定時(shí)計(jì)

13、數(shù)器提供秒信號(hào)可實(shí)現(xiàn)功能且減少芯片的使用, 但誤差較大,而 ds1302 時(shí)鐘芯片是一種高性能芯片,精度高還具有閏年補(bǔ)償功能,所 以采用方案二。 2.1.5 溫度傳感器的選擇 方案一: 使用熱敏電阻作為傳感器,用熱敏電阻與一個(gè)相應(yīng)阻值電阻相串聯(lián)分壓,利用熱敏 電阻阻值隨溫度變化而變化的特性,采集這兩個(gè)電阻變化的分壓值,并進(jìn)行 a/d 轉(zhuǎn)換。 此設(shè)計(jì)方案需用 a/d 轉(zhuǎn)換電路,增加硬件成本而且熱敏電阻的感溫特性曲線并不是嚴(yán) 格線性的,會(huì)產(chǎn)生較大的測(cè)量誤差。 方案二: 采用數(shù)字式溫度傳感器 ds18b20,此類(lèi)傳感器為數(shù)字式傳感器而且僅需要一條數(shù)據(jù) 線進(jìn)行數(shù)據(jù)傳輸,易于與單片機(jī)連接,可以去除 a/

14、d 模塊,降低硬件成本,簡(jiǎn)化系統(tǒng) 電路。另外,數(shù)字式溫度傳感器還具有測(cè)量精度高、測(cè)量范圍廣等優(yōu)點(diǎn)。 方案比較:選用 ds18b20 數(shù)字式溫度傳感器,與單片機(jī)連接簡(jiǎn)單,成本低,還具有 測(cè)量精度高、測(cè)量范圍廣等優(yōu)點(diǎn)。而熱敏電阻作為傳感器,成本高,誤差大。所以選 用方案二。 2.2 電路設(shè)計(jì)最終方案決定 綜上各方案所述,對(duì)此次作品的方案選定: at89c52 單片機(jī),內(nèi)部自帶有 6kb 的 flash 存儲(chǔ)器及 256kb ram 單元,不需另外擴(kuò)展 eeprom 及靜態(tài) ram,可以在線下載程 序,易于日后的升級(jí)。ds1302 時(shí)鐘日歷芯片,穩(wěn)定性高誤差小。數(shù)字式溫度傳感器 ds18b20,測(cè)量

15、準(zhǔn)確,誤差小范圍廣。lcd 液晶顯示,顯示清晰直觀明了。 第 3 章硬件設(shè)計(jì) 該系統(tǒng)硬件設(shè)計(jì)總體思想是以單片機(jī)為控制系統(tǒng),接受感應(yīng)信息并進(jìn)行處理后, 將控制指令傳出,對(duì)各個(gè)系統(tǒng)進(jìn)行對(duì)應(yīng)操作。硬件設(shè)計(jì)總體框圖如圖 3-1 所示。 at89c52 主控模塊 鍵盤(pán)模塊 ds18b20 溫 度采集模塊 lcd 顯示模塊 ds1302 時(shí)鐘模塊 圖 3-1 硬件設(shè)計(jì)框圖 主控模塊:根據(jù)輸入信息進(jìn)行處理,并將控制數(shù)據(jù)傳出。 顯示模塊:顯示相關(guān)的內(nèi)容。 時(shí)鐘模塊:提供時(shí)鐘數(shù)據(jù)。 溫度采集模塊:感應(yīng)和提供溫度。 鍵盤(pán)模塊:對(duì)系統(tǒng)進(jìn)行操作。 3.1 at89c52 單片機(jī) 單片機(jī)實(shí)質(zhì)上是一個(gè)芯片。它具有結(jié)構(gòu)簡(jiǎn)單

16、、控制功能強(qiáng)、可靠性高、體積小、 價(jià)格低等優(yōu)點(diǎn),單片機(jī)技術(shù)作為計(jì)算機(jī)技術(shù)的一個(gè)重要分支,廣泛的應(yīng)用于工業(yè)控制、 智能化儀器儀表、家用電器、電子玩具等各個(gè)領(lǐng)域。 atmel 公司生產(chǎn)的 at89c52 單片機(jī)采用高性能的靜態(tài) 80c51 設(shè)計(jì),并采用先進(jìn)工 藝制造,還帶有非易失性 flash 程序存儲(chǔ)器。它是一種高性能、低功耗的 8 位 cmos 微 處理芯片,市場(chǎng)應(yīng)用最多。其主要特點(diǎn)如下:8kb flash rom,可以擦除 1000 次以上, 數(shù)據(jù)保存 10 年。技術(shù)特點(diǎn)有:256 字節(jié)內(nèi)部 ram;電源控制模式;時(shí)鐘可停止和恢復(fù); 空閑/掉電模式;6 個(gè)中斷源;4 個(gè)中斷優(yōu)先級(jí);4 個(gè) 8

17、 位 i/o 口;全雙工增強(qiáng)型 tuar;3 個(gè) 16 位定時(shí)/計(jì)數(shù)器:t0、t1(標(biāo)準(zhǔn) 80c51)和增加的 t2(捕獲和比較) ;全靜 態(tài)工作方式:024mhz;at89c52 單片機(jī)的基本結(jié)構(gòu)請(qǐng)參見(jiàn)圖 3-2,各部分情況介紹如 下: 中央處理器(cpu):中央處理器是單片機(jī)的核心,完成運(yùn)算和控制功能。 at89c52 的 cpu 能處理 8 位二進(jìn)制數(shù)或代碼。 內(nèi)部數(shù)據(jù)存儲(chǔ)器(內(nèi)部 ram):at89c52 芯片中共有 256 個(gè) ram 單元,但其中后 128 單元被專(zhuān)用寄存器占用,能作為寄存器供用戶使用的只是前 128 單元,用于存放可 讀寫(xiě)的數(shù)據(jù)。因此通常所說(shuō)的內(nèi)部數(shù)據(jù)存儲(chǔ)器就是指

18、前 128 單元,簡(jiǎn)稱(chēng)內(nèi)部 ram。 內(nèi)部程序存儲(chǔ)器(內(nèi)部 rom):at89c52 共有 8kb 掩膜 rom,用于存放程序、原始 數(shù)據(jù)或表格,因此稱(chēng)之為程序存儲(chǔ)器,簡(jiǎn)稱(chēng)內(nèi)部 rom。 定時(shí)器/計(jì)數(shù)器:at89c52 共有 2 個(gè) 16 位的定時(shí)器/計(jì)數(shù)器,以實(shí)現(xiàn)定時(shí)或計(jì)數(shù)功 能,并以其定時(shí)或計(jì)數(shù)結(jié)果對(duì)計(jì)算機(jī)進(jìn)行控制。 cpu 時(shí)鐘電路rom定時(shí)/計(jì)數(shù)器ram 中斷系統(tǒng)并行接口串行接口 p3 txd x p rxd int0int1p2p1p0 t1 圖 3-2 at89c52 單片機(jī)結(jié)構(gòu)框圖 并行 i/o 口:at89c52 共有四個(gè) 8 位的 i/o 口(p0、p1、p2、p3) ,以實(shí)

19、現(xiàn)數(shù)據(jù)的 并行輸入輸出。 串行口:at89c52 單片機(jī)有一個(gè)全雙工的串行口,以實(shí)現(xiàn)單片機(jī)和其它設(shè)備之間的 串行數(shù)據(jù)傳送。該串行口功能較強(qiáng),既可作為全雙工異步通信收發(fā)器使用,也可作為 同步移位器使用。 中斷控制系統(tǒng):at89c52 單片機(jī)的中斷功能較強(qiáng),以滿足控制應(yīng)用的需要。 at89c52 共有 5 個(gè)中斷源,即外中斷 2 個(gè),定時(shí)/計(jì)數(shù)中斷 2 個(gè),串行中斷 1 個(gè)。全部 中斷分為高級(jí)和低級(jí)共二個(gè)優(yōu)先級(jí)別。 t0 時(shí)鐘電路:at89c52 芯片的內(nèi)部有時(shí)鐘電路,但石英晶體和微調(diào)電容需外接。時(shí)鐘 電路為單片機(jī)產(chǎn)生時(shí)鐘脈沖序列。系統(tǒng)允許的晶振頻率一般為 6mhz 和 12mhz。 從上述內(nèi)容可

20、以看出,at89c52 雖然是一個(gè)單片機(jī)芯片,但作為計(jì)算機(jī)應(yīng)該具有的 基本部件它都包括,因此實(shí)際上它已是一個(gè)簡(jiǎn)單的微型計(jì)算機(jī)系統(tǒng)了。 3.1.1 at89c52 的信號(hào)引腳 at89c52 是標(biāo)準(zhǔn)的 40 引腳雙列直插式集成電路芯片,引腳排列請(qǐng)參見(jiàn)圖 3-2。 信號(hào)引腳介紹 p0.0p0.7:低八位地址/數(shù)據(jù)總線分時(shí)復(fù)用。 p1.0p1.7:只能做一般 i/o 口。 p2.0p2.7:高八位地址總線。 p3.0p3.7:8 位雙向口線。 ale:地址鎖存控制信號(hào)。 在系統(tǒng)擴(kuò)展時(shí),ale 用于控制把 p0 口輸出的低 8 位地址鎖存器鎖存起來(lái),以實(shí)現(xiàn) 低位地址和數(shù)據(jù)的隔離。此外由于 ale 是以

21、晶振六分之一的固定頻率輸出的正脈沖, 因此可作為外部時(shí)鐘或外部定時(shí)脈沖使用。 :外部程序存儲(chǔ)器讀選通信號(hào)。在讀外部 rom 時(shí)有效(低電平) ,以psenpsen 實(shí)現(xiàn)外部 rom 單元的讀操作。 :訪問(wèn)程序存儲(chǔ)控制信號(hào)。當(dāng)信號(hào)為低電平時(shí),對(duì) rom 的讀操作限定在外eaea 部程序存儲(chǔ)器;而當(dāng)信號(hào)為高電平時(shí),則對(duì) rom 的讀操作是從內(nèi)部程序存儲(chǔ)器開(kāi)始,ea 并可延至外部程序存儲(chǔ)器。 rst:復(fù)位信號(hào)。當(dāng)輸入的復(fù)位信號(hào)延續(xù) 2 個(gè)機(jī)器周期以上高電平即為有效,用以 完成單片機(jī)的復(fù)位初始化操作。 xtal1 和 xtal2:外接晶體引線端。當(dāng)使用芯片內(nèi)部時(shí)鐘時(shí),此二引線端用于外接 石英晶體和微調(diào)

22、電容;當(dāng)使用外部時(shí)鐘時(shí),用于接外部時(shí)鐘脈沖信號(hào)。 vss:地線。 vcc:+5v 電源。 以上是 at89c52 單片機(jī)芯片 40 條引腳的定義及簡(jiǎn)單功能說(shuō)明。 p1.0 1 p1.1 2 p1.2 3 p1.3 4 p1.4 5 p1.5 6 p1.6 7 p1.7 8 rst/vpd 9 rxd p3.0 10 txd p3.1 11 int0 p3.2 12 int1 p3.3 13 t0 p3.4 14 t1 p3.5 15 wr p3.6 16 rd p3.7 17 xtal2 18 xtal1 19 vss 2021 p2.1 22 p2.2 23 p2.3 24 p2.4 25

23、p2.5 26 p2.6 27 p2.7 28 psen 29 ale/prog 30 ea/vpp 31 p0.7 32 p0.6 33 p0.5 34 p0.4 35 p0.3 36 p0.2 37 p0.1 38 p0.0 39 vcc 40 圖 3-3 at89c52 引腳圖 信號(hào)引腳的第二功能 由于工藝及標(biāo)準(zhǔn)化等原因,芯片的引腳數(shù)目是有限制的。例如 at89c52 系列把芯 片引腳數(shù)目限定為 40 條,但單片機(jī)為實(shí)現(xiàn)其功能所需要的信號(hào)數(shù)目卻遠(yuǎn)遠(yuǎn)超過(guò)此數(shù), 因此就出現(xiàn)了需要與可能的矛盾。如何解決這個(gè)矛盾,兼職是唯一可行的辦法,即給 一些信號(hào)引腳賦以雙重功能。如果把前述的信號(hào)定義為引腳第

24、一功能的話,則根據(jù)需 要再定義的信號(hào)就是它的第二功能。下面介紹一些信號(hào)引腳的第二功能。 p3 口線的第二功能: p3 的 8 條口線都定義有第二功能,詳見(jiàn)表 3-1。 eprom 存儲(chǔ)器程序固化所需要的信號(hào): 有內(nèi)部 eprom 的單片機(jī)芯片,為寫(xiě)入程序需提供專(zhuān)門(mén)的編程脈沖和編程電源,這 些信號(hào)也是由信號(hào)引腳以第二功能的形式提供的,即: 編程脈沖:30 腳(ale/prog) 編程電壓(25v):31 腳(/vpp)ea 備用電源引入: 由于萬(wàn)年歷在運(yùn)行過(guò)程中需要電源,而在運(yùn)行過(guò)程中有可能出現(xiàn)突發(fā)情況,所以 引入備用電源。at89c52 單片機(jī)的備用電源也是以第二功能的方式由 9 腳(rst/

25、vpd) 引入的。當(dāng)電源發(fā)生故障電壓降低到下限值時(shí),備用電源經(jīng)此端向內(nèi)部 ram 提供電壓, 以保護(hù)內(nèi)部 ram 中的信息不丟失。 表 3-1 p3 口各引腳與第二功能表 以上把 at89c52 單片機(jī)的全部信號(hào),分別以第一功能和第二功能的形式列出。各 種型號(hào)的芯片,其引腳的第一功能信號(hào)是相同的,所不同的只在引腳的第二功能信號(hào)。 對(duì)于 9、30 和 31 三個(gè)引腳,由于第一功能信號(hào)與第二功能信號(hào)是單片機(jī)在不同工 作方式下的信號(hào),因此不會(huì)發(fā)生使用上的矛盾。但是 p3 口的情況卻有所不同,它的第 二功能信號(hào)都是單片機(jī)的重要控制信號(hào)。因此在實(shí)際使用時(shí),都是先按需要選用第二 功能信號(hào),剩下的才以第一功

26、能的身份作數(shù)據(jù)位的輸入輸出使用。 3.2 ds1302 時(shí)鐘模塊 ds1302 是 dallas 半導(dǎo)體公司推出的時(shí)鐘芯片,內(nèi)含一個(gè)實(shí)時(shí)時(shí)鐘/日歷和 31 字節(jié) 靜態(tài) ram,可以通過(guò)串行接口與單片機(jī)進(jìn)行通信。實(shí)時(shí)時(shí)鐘/日歷電路提供秒、分、時(shí)、 日、星期、月、年的信息,每個(gè)月的天數(shù)和閏年的天數(shù)可自動(dòng)調(diào)整,時(shí)鐘操作可通過(guò) am/pm 標(biāo)志位決定采用 24 或 12 小時(shí)時(shí)間格式。ds1302 與單片機(jī)之間能簡(jiǎn)單地采用同 步串行的方式進(jìn)行通信,僅需三根 i/o 線:復(fù)位(rst)、i/o 數(shù)據(jù)線、串行時(shí)鐘 (sclk)。時(shí)鐘/ram 的讀/寫(xiě)數(shù)據(jù)以一字節(jié)或多達(dá) 31 字節(jié)的字符組方式通信。ds13

27、02 工作時(shí)功耗很低,保持?jǐn)?shù)據(jù)和時(shí)鐘信息時(shí),功耗小于 1mw。 此外,ds1302 還有年份寄存器、控制寄存器、充電寄存器、時(shí)鐘突發(fā)寄存器及 與 ram 相關(guān)的寄存器等。時(shí)鐘突發(fā)寄存器可一次性順序讀寫(xiě)除充電寄存器外的所有 寄存器內(nèi)容。 引腳第二功能第二功能信號(hào)名稱(chēng) p3.0rxd 串行數(shù)據(jù)接收 p3.1txd 串行數(shù)據(jù)發(fā)送 p3.20int 外部中斷 0 申請(qǐng) p3.31int 外部中斷 1 申請(qǐng) p3.4t0 定時(shí)器/計(jì)數(shù)器 0 的外部輸入 p3.5t1 定時(shí)器/計(jì)數(shù)器 1 的外部輸入 p3.6wr 外部 ram 寫(xiě)選通 p3.7rd 外部 ram 讀選通 3.2.1 內(nèi)部結(jié)構(gòu)及引腳 電 源

28、 控 制 輸入移位 寄存器 振蕩器與 分頻器 實(shí)時(shí)時(shí)鐘 命令與控制 邏輯 31*8ram vcc1 vcc2 gnd i/o sclk rst x1x2 圖 3-4 ds1302 內(nèi)部結(jié)構(gòu)圖 圖 3-5 ds1302 引腳排列 ds1302 的引腳排列,其中 vcc1 為后備電源, vcc2 為主電源。在主電源關(guān)閉 的情況下,也能保持時(shí)鐘的連續(xù)運(yùn)行。 ds1302 由 vcc1 或 vcc2 兩者中的較大者供 電。當(dāng) vcc2 大于 vcc10.2v 時(shí),vcc2 給 ds1302 供電。當(dāng) vcc2 小于 vcc1 時(shí), ds1302 由 vcc1 供電。x1 和 x2 是振蕩源,外接 32

29、.768khz 晶振。rst 是復(fù)位/片 選線,通過(guò)把 rst 輸入驅(qū)動(dòng)置高電平來(lái)啟動(dòng)所有的數(shù)據(jù)傳送。 rst 輸入有兩種功 能:首先, rst 接通控制邏輯,允許地址 /命令序列送入移位寄存器;其次, rst 提供終止單字節(jié)或多字節(jié)數(shù)據(jù)的傳送手段。當(dāng)rst 為高電平時(shí),所有的數(shù)據(jù)傳送 被初始化,允許對(duì) ds1302 進(jìn)行操作。如果在傳送過(guò)程中 rst 置為低電平,則會(huì)終 止此次數(shù)據(jù)傳送, i/o 引腳變?yōu)楦咦钁B(tài)。上電運(yùn)行時(shí),在vcc2.0v 之前,rst 必 須保持低電平。只有在 sclk 為低電平時(shí),才能將 rst 置為高電平。 i/o 為串行數(shù) 據(jù)輸入輸出端(雙向)。sclk 為時(shí)鐘輸入

30、端。 3.2.2 工作原理 ds1302 工作時(shí)為了對(duì)任何數(shù)據(jù)傳送進(jìn)行初始化,需要將復(fù)位腳(rst)置為高電平 且將 8 位地址和命令信息裝入移位寄存器。數(shù)據(jù)在時(shí)鐘(sclk)的上升沿串行輸入, 前 8 位指定訪問(wèn)地址,命令字裝入移位寄存器后,在之后的時(shí)鐘周期,讀操作時(shí)輸出 數(shù)據(jù),寫(xiě)操作時(shí)輸出數(shù)據(jù)。時(shí)鐘脈沖的個(gè)數(shù)在單字節(jié)方式下為 8+8(8 位地址+8 位數(shù)據(jù)) ,在多字節(jié)方式下為 8 加最多可達(dá) 248 的數(shù)據(jù)。 3.2.3 寄存器和控制命令 對(duì) ds1302 的操作就是對(duì)其內(nèi)部寄存器的操作,ds1302 內(nèi)部共有 12 個(gè)寄存器,其 中有 7 個(gè)寄存器與日歷、時(shí)鐘相關(guān),存放的數(shù)據(jù)位為 bc

31、d 碼形式。此外,ds1302 還有 年份寄存器、控制寄存器、充電寄存器、時(shí)鐘突發(fā)寄存器及與 ram 相關(guān)的寄存器等。 時(shí)鐘突發(fā)寄存器可一次性順序讀寫(xiě)除充電寄存器以外的寄存器。日歷、時(shí)間寄存器及 控制字如表 3-2 所示: 表 3-2 日歷、時(shí)鐘寄存器與控制字對(duì)照表 76543210 寄存器名稱(chēng) 1ram/cka4a3a2a1a0rd/w 秒寄存器 1000000 分寄存器 1000001 小時(shí)寄存器 1000010 日寄存器 1000011 月寄存器 1000100 星期寄存器 1000101 年寄存器 1000110 寫(xiě)保護(hù)寄存器 1000111 慢充電寄存器 1001000 時(shí)鐘突發(fā)寄存

32、器 1011111 最后一位 rd/w,為“0”時(shí)表示進(jìn)行寫(xiě)操作,為“1”時(shí)表示讀操作。 ds1302 內(nèi)部寄存器列表如表 3-3 所示: 表 3-3:ds1302 內(nèi)部主要寄存器分布表 命令字各位內(nèi)容 寄存器名稱(chēng) 寫(xiě)讀 取值范圍 76543210 秒寄存器 80h81h00-59ch10secsec 分寄存器 82h83h00-59010minmin 小時(shí)寄存器 84h85h 01-12 或 00-2312/24 0 ahrhr 日期寄存器 86h87h01- 28,29,30,3 1 0010datedate 月份寄存器 88h89h01-1200010mmonth 周寄存器 8ah8bh

33、01-0700000day 年份寄存器 8ch8dh00-9910yearyear ds1302 內(nèi)部的 ram 分為兩類(lèi),一類(lèi)是單個(gè) ram 單元,共 31 個(gè),每個(gè)單元為一個(gè) 8 位的字節(jié),其命令控制字為 cohfdh,其中奇數(shù)為讀操作,偶數(shù)為寫(xiě)操作;再一類(lèi)為突 發(fā)方式下的 ram,此方式下可一次性讀寫(xiě)所有的 ram 的 31 個(gè)字節(jié),命令控制字為 feh(寫(xiě))、ffh(讀)。 我們現(xiàn)在已經(jīng)知道了控制寄存器和 ram 的邏輯地址,接著就需要知道如何通過(guò)外 部接口來(lái)訪問(wèn)這些資源。單片機(jī)是通過(guò)簡(jiǎn)單的同步串行通訊與 ds1302 通訊的,每次通 訊都必須由單片機(jī)發(fā)起,無(wú)論是讀還是寫(xiě)操作,單片機(jī)都

34、必須先向 ds1302 寫(xiě)入一個(gè)命 令幀,這個(gè)幀的格式如表 3-2 所示,最高位 bit7 固定為 1,bit6 決定操作是針對(duì) ram 還是時(shí)鐘寄存器,接著的 5 個(gè) bit 是 ram 或時(shí)鐘寄存器在 ds1302 的內(nèi)部地址,最后一 個(gè) bit 表示這次操作是讀操作抑或是寫(xiě)操作。 物理上,ds1302 的通訊接口由 3 個(gè)口線組成,即*rst,sclk,i/o。其中*rst 從 低電平變成高電平啟動(dòng)一次數(shù)據(jù)傳輸過(guò)程,sclk 是時(shí)鐘線,i/o 是數(shù)據(jù)線。具體的讀 寫(xiě)時(shí)序參考圖 3-5,但是請(qǐng)注意,無(wú)論是哪種同步通訊類(lèi)型的串行接口,都是對(duì)時(shí)鐘信 號(hào)敏感的,而且一般數(shù)據(jù)寫(xiě)入有效是在上升沿,讀

35、出有效是在下降沿(ds1302 正是如 此的,但是在芯片手冊(cè)里沒(méi)有明確說(shuō)明),如果不是特別確定,則把程序設(shè)計(jì)成這樣: 平時(shí) sclk 保持低電平,在時(shí)鐘變動(dòng)前設(shè)置數(shù)據(jù),在時(shí)鐘變動(dòng)后讀取數(shù)據(jù),即數(shù)據(jù)操作 總是在 sclk 保持為低電平的時(shí)候,相鄰的操作之間間隔有一個(gè)上升沿和一個(gè)下降沿。 *rst i/o 圖 3-6 ds1302 的命令字結(jié)構(gòu) sclk 為 0寫(xiě)入的數(shù)據(jù)sclk 為 1sclk 為 0讀出的數(shù)據(jù) 圖 3-7 ds1302 時(shí)鐘模塊 3.3 ds18b20 溫度采集模塊 ds18b20 是美國(guó) dallas 半導(dǎo)體公司繼 ds1820 之后最新推出的一種改進(jìn)型智能溫度 傳感器。與傳

36、統(tǒng)的熱敏電阻相比,他能夠直接讀出被測(cè)溫度并且可根據(jù)實(shí)際要求通過(guò) 簡(jiǎn)單的編程實(shí)現(xiàn) 912 位的數(shù)字值讀數(shù)方式??梢苑謩e在 93.75 ms 和 750 ms 內(nèi)完成 9 位和 12 位的數(shù)字量,并且從 ds18b20 讀出的信息或?qū)懭?ds18b20 的信息僅需要一根 口線讀寫(xiě),溫度變換功率來(lái)源于數(shù)據(jù)總線,總線本身也可以向所掛接的 ds18b20 供電, 而無(wú)需額外電源。因而使用 ds18b20 可使系統(tǒng)結(jié)構(gòu)更趨簡(jiǎn)單,可靠性更高。他在測(cè)溫 精度、轉(zhuǎn)換時(shí)間、傳輸距離、分辨率等方面較 ds1820 有了很大的改進(jìn),給用戶帶來(lái)了 更方便的使用和更令人滿意的效果。 sclk 3.3.1 內(nèi)部結(jié)構(gòu)及引腳

37、高速緩存儲(chǔ) 存器 8 位 crc 生成 器 儲(chǔ)存器和控制器溫度靈敏器件 低溫觸發(fā)器 tl 高溫觸發(fā)器 th 64 位 rom 和單 線接 口 電 源 檢 測(cè) 配置寄存器 圖 3-8 ds18b20 內(nèi)部結(jié)構(gòu)圖 vcc dq gnd 圖 3-9 ds18b20 引腳排列 3.3.2 測(cè)溫原理 ds18b20 的測(cè)溫原理如圖 3-9 所示,圖中低溫度系數(shù)晶振的振蕩頻率受溫度的影響 很小,用于產(chǎn)生固定頻率的脈沖信號(hào)送給減法計(jì)數(shù)器 1,高溫度系數(shù)晶振隨溫度變化其 震蕩頻率明顯改變,所產(chǎn)生的信號(hào)作為減法計(jì)數(shù)器 2 的脈沖輸入,圖中還隱含著計(jì)數(shù) 門(mén),當(dāng)計(jì)數(shù)門(mén)打開(kāi)時(shí),ds18b20 就對(duì)低溫度系數(shù)振蕩器產(chǎn)生

38、的時(shí)鐘脈沖后進(jìn)行計(jì)數(shù),進(jìn) 而完成溫度測(cè)量。計(jì)數(shù)門(mén)的開(kāi)啟時(shí)間由高溫度系數(shù)振蕩器來(lái)決定,每次測(cè)量前,首先 將-55所對(duì)應(yīng)的基數(shù)分別置入減法計(jì)數(shù)器 1 和溫度寄存器中,減法計(jì)數(shù)器 1 和溫度寄 存器被預(yù)置在-55所對(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 重新開(kāi)始對(duì)低溫度系數(shù)晶振產(chǎn)生的脈沖信 號(hào)進(jìn)行計(jì)數(shù),如此循環(huán)直到減法計(jì)數(shù)器 2 計(jì)數(shù)到 0 時(shí),停止溫度寄存器值的累加,此 時(shí)溫度寄存器中的數(shù)值即為所測(cè)溫度。圖 3-9 中的斜率累加器用于補(bǔ)償和修正

39、測(cè)溫過(guò) 程中的非線性,其輸出用于修正減法計(jì)數(shù)器的預(yù)置值,只要計(jì)數(shù)門(mén)仍未關(guān)閉就重復(fù)上 述過(guò)程,直至溫度寄存器值達(dá)到被測(cè)溫度值,這就是 ds18b20 的測(cè)溫原理。 預(yù)置 低溫度系數(shù) 振蕩器 高溫度系數(shù) 振蕩器 減法計(jì)數(shù)器 2 斜率累加器 減法計(jì)數(shù)器 1 =0 =0 比較器 預(yù)置 溫度寄存器 lsb 置 1/清零 +1 停止 圖 3-10 ds18b20 的測(cè)溫原理框圖 3.3.3 工作過(guò)程及時(shí)序 ds18b20 內(nèi)部的低溫度系數(shù)振蕩器是一個(gè)振蕩頻率隨溫度變化很小的振蕩器,為計(jì) 數(shù)器 1 提供一頻率穩(wěn)定的計(jì)數(shù)脈沖。 高溫度系數(shù)振蕩器是一個(gè)振蕩頻率對(duì)溫度很敏感的振蕩器,為計(jì)數(shù)器 2 提供一個(gè) 頻率隨

40、溫度變化的計(jì)數(shù)脈沖。 初始時(shí),溫度寄存器被預(yù)置成-55,每當(dāng)計(jì)數(shù)器 1 從預(yù)置數(shù)開(kāi)始減計(jì)數(shù)到 0 時(shí), 溫度寄存器中寄存的溫度值就增加 1,這個(gè)過(guò)程重復(fù)進(jìn)行,直到計(jì)數(shù)器 2 計(jì)數(shù)到 0 時(shí) 便停止。 初始時(shí),計(jì)數(shù)器 1 預(yù)置的是與-55相對(duì)應(yīng)的一個(gè)預(yù)置值。以后計(jì)數(shù)器 1 每一個(gè)循 環(huán)的預(yù)置數(shù)都由斜率累加器提供。為了補(bǔ)償振蕩器溫度特性的非線性性,斜率累加器 提供的預(yù)置數(shù)也隨溫度相應(yīng)變化。計(jì)數(shù)器 1 的預(yù)置數(shù)也就是在給定溫度處使溫度寄存 器寄存值增加 1計(jì)數(shù)器所需要的計(jì)數(shù)個(gè)數(shù)。 ds18b20 內(nèi)部的比較器以四舍五入的量化方式確定溫度寄存器的最低有效位。在計(jì) 數(shù)器 2 停止計(jì)數(shù)后,比較器將計(jì)數(shù)器

41、1 中的計(jì)數(shù)剩余值轉(zhuǎn)換為溫度值后與 0.25進(jìn)行 比較,若低于 0.25,溫度寄存器的最低位就置 0;若高于 0.25,最低位就置 1; 若高于 0.75時(shí),溫度寄存器的最低位就進(jìn)位然后置 0。這樣,經(jīng)過(guò)比較后所得的溫 度寄存器的值就是最終讀取的溫度值了,其最后位代表 0.5,四舍五入最大量化誤差 為1/2lsb,即 0.25。 溫度寄存器中的溫度值以 9 位數(shù)據(jù)格式表示,最高位為符號(hào)位,其余 8 位以二進(jìn) 制補(bǔ)碼形式表示溫度值。測(cè)溫結(jié)束時(shí),這 9 位數(shù)據(jù)轉(zhuǎn)存到暫存存儲(chǔ)器的前兩個(gè)字節(jié)中, 符號(hào)位占用第一字節(jié),8 位溫度數(shù)據(jù)占據(jù)第二字節(jié)。 ds18b20 測(cè)量溫度時(shí)使用特有的溫度測(cè)量技術(shù)。ds1

42、8b20 內(nèi)部的低溫度系數(shù)振蕩器 能產(chǎn)生穩(wěn)定的頻率信號(hào);同樣的,高溫度系數(shù)振蕩器則將被測(cè)溫度轉(zhuǎn)換成頻率信號(hào)。 當(dāng)計(jì)數(shù)門(mén)打開(kāi)時(shí),ds18b20 進(jìn)行計(jì)數(shù),計(jì)數(shù)門(mén)開(kāi)通時(shí)間由高溫度系數(shù)振蕩器決定。芯片 內(nèi)部還有斜率累加器,可對(duì)頻率的非線性度加以補(bǔ)償。測(cè)量結(jié)果存入溫度寄存器中。 一般情況下的溫度值應(yīng)該為 9 位,但因符號(hào)位擴(kuò)展成高 8 位,所以最后以 16 位補(bǔ)碼形 式讀出。 ds18b20 工作過(guò)程一般遵循以下協(xié)議:初始化rom 操作命令存儲(chǔ)器操作命 令處理數(shù)據(jù)。 1.初始化 單總線上的所有處理均從初始化序列開(kāi)始。初始化序列包括總線主機(jī)發(fā)出一復(fù)位 脈沖,接著由從屬器件送出存在脈沖。存在脈沖讓總線控制

43、器知道 ds18b20 在總線上 且已準(zhǔn)備好操作。 2.rom 操作命令 一旦總線主機(jī)檢測(cè)到從屬器件的存在,它便可以發(fā)出器件 rom 操作命令之一。所 有 rom 操作命令均為 8 位長(zhǎng)。這些命令列表如下: read rom(讀 rom)33h 此命令允許總線主機(jī)讀 ds18b20 的 8 位產(chǎn)品系列編碼,唯一的 48 位序列號(hào),以及 8 位的 crc。此命令只能在總線上僅有一個(gè) ds18b20 的情況下可以使用。如果總線上存 在多于一個(gè)的從屬器件,那么當(dāng)所有從片企圖同時(shí)發(fā)送時(shí)將發(fā)生數(shù)據(jù)沖突的現(xiàn)象(漏 極開(kāi)路會(huì)產(chǎn)生線與的結(jié)果) 。 match rom( 符合 rom)55h 此命令后繼以 64

44、 位的 rom 數(shù)據(jù)序列,允許總線主機(jī)對(duì)多點(diǎn)總線上特定的 ds18b20 尋址。只有與 64 位 rom 序列嚴(yán)格相符的 ds18b20 才能對(duì)后繼的存貯器操作命令作出響 應(yīng)。所有與 64 位 rom 序列不符的從片將等待復(fù)位脈沖。此命令在總線上有單個(gè)或多個(gè) 器件的情況下均可使用。 skip rom( 跳過(guò) rom )cch 在單點(diǎn)總線系統(tǒng)中,此命令通過(guò)允許總線主機(jī)不提供 64 位 rom 編碼而訪問(wèn)存儲(chǔ)器 操作來(lái)節(jié)省時(shí)間。如果在總線上存在多于一個(gè)的從屬器件而且在 skip rom 命令之后發(fā) 出讀命令,那么由于多個(gè)從片同時(shí)發(fā)送數(shù)據(jù),會(huì)在總線上發(fā)生數(shù)據(jù)沖突(漏極開(kāi)路下 拉會(huì)產(chǎn)生線與的效果) 。

45、 search rom( 搜索 rom)f0h 當(dāng)系統(tǒng)開(kāi)始工作時(shí),總線主機(jī)可能不知道單線總線上的器件個(gè)數(shù)或者不知道其 64 位 rom 編碼。搜索 rom 命令允許總線控制器用排除法識(shí)別總線上的所有從機(jī)的 64 位編 碼。 alarm search(告警搜索)ech 此命令的流程與搜索 rom 命令相同。但是,僅在最近一次溫度測(cè)量出現(xiàn)告警的情 況下,ds18b20 才對(duì)此命令作出響應(yīng)。告警的條件定義為溫度高于 th 或低于 tl。只要 ds18b20 一上電,告警條件就保持在設(shè)置狀態(tài),直到另一次溫度測(cè)量顯示出非告警值或 者改變 th 或 tl 的設(shè)置,使得測(cè)量值再一次位于允許的范圍之內(nèi)。貯存在

46、 eeprom 內(nèi)的 觸發(fā)器值用于告警。 3.存儲(chǔ)器操作命令 write scratchpad(寫(xiě)暫存存儲(chǔ)器)4eh 這個(gè)命令向 ds18b20 的暫存器中寫(xiě)入數(shù)據(jù),開(kāi)始位置在地址 2。接下來(lái)寫(xiě)入的兩個(gè) 字節(jié)將被存到暫存器中的地址位置 2 和 3。可以在任何時(shí)刻發(fā)出復(fù)位命令來(lái)中止寫(xiě)入。 read scratchpad(讀暫存存儲(chǔ)器)beh 這個(gè)命令讀取暫存器的內(nèi)容。讀取將從字節(jié) 0 開(kāi)始,一直進(jìn)行下去,直到第 9(字 節(jié) 8,crc)字節(jié)讀完。如果不想讀完所有字節(jié),控制器可以在任何時(shí)間發(fā)出復(fù)位命令 來(lái)中止讀取。 copy scratchpad(復(fù)制暫存存儲(chǔ)器)48h 這條命令把暫存器的內(nèi)容拷貝

47、到 ds18b20 的 e2 存儲(chǔ)器里,即把溫度報(bào)警觸發(fā)字節(jié) 存入非易失性存儲(chǔ)器里。如果總線控制器在這條命令之后跟著發(fā)出讀時(shí)間隙,而 ds18b20 又正在忙于把暫存器拷貝到 e2 存儲(chǔ)器,ds18b20 就會(huì)輸出一個(gè)“0” ,如果拷 貝結(jié)束的話,ds18b20 則輸出“1” 。如果使用寄生電源,總線控制器必須在這條命令 發(fā)出后立即起動(dòng)強(qiáng)上拉并最少保持 10ms。 convert t(溫度變換)44h 這條命令啟動(dòng)一次溫度轉(zhuǎn)換而無(wú)需其他數(shù)據(jù)。溫度轉(zhuǎn)換命令被執(zhí)行,而后 ds18b20 保持等待狀態(tài)。如果總線控制器在這條命令之后跟著發(fā)出讀時(shí)間隙,而 ds18b20 又忙 于做時(shí)間轉(zhuǎn)換的話,ds18

48、b20 將在總線上輸出“0” ,若溫度轉(zhuǎn)換完成,則輸出“1” 。如 果使用寄生電源,總線控制器必須在發(fā)出這條命令后立即起動(dòng)強(qiáng)上拉,并保持 500ms。 recall e2(重新調(diào)整 e2)b8h 這條命令把貯存在 e2 中溫度觸發(fā)器的值重新調(diào)至?xí)捍娲鎯?chǔ)器。這種重新調(diào)出的操 作在對(duì) ds18b20 上電時(shí)也自動(dòng)發(fā)生,因此只要器件一上電,暫存存儲(chǔ)器內(nèi)就有了有效 的數(shù)據(jù)。在這條命令發(fā)出之后,對(duì)于所發(fā)出的第一個(gè)讀數(shù)據(jù)時(shí)間片,器件會(huì)輸出溫度 轉(zhuǎn)換忙的標(biāo)識(shí):“0”=忙, “1”=準(zhǔn)備就緒。 read power supply(讀電源)b4h 對(duì)于在此命令發(fā)送至 ds18b20 之后所發(fā)出的第一讀數(shù)據(jù)的時(shí)間

49、片,器件都會(huì)給出 其電源方式的信號(hào):“0”=寄生電源供電, “1”=外部電源供電。 4.處理數(shù)據(jù) ds18b20 的高速暫存存儲(chǔ)器由 9 個(gè)字節(jié)組成。當(dāng)溫度轉(zhuǎn)換命令發(fā)布后,經(jīng)轉(zhuǎn)換所得 的溫度值以二字節(jié)補(bǔ)碼形式存放在高速暫存存儲(chǔ)器的第 0 和第 1 個(gè)字節(jié)。單片機(jī)可通 過(guò)單線接口讀到該數(shù)據(jù),讀取時(shí)低位在前,高位在后。 表 3-4 ds18b20 溫度數(shù)據(jù)表 溫度 二進(jìn)制十六進(jìn)制 +1250000 0111 1101 0000 07d0h +850000 0101 0101 0000 0550h +25.06250000 0001 1001 0001 0191h +10.1250000 0000

50、1010 0010 00a2h +0.50000 0000 0000 1000 0008h 0.00000 0000 0000 0000 0000h -0.51111 1111 1111 1000 fff8h -10.1251111 1111 0101 1110 ff5eh -25.06251111 1110 0110 fe6fh 1111 -551111 1100 1001 0000 fc90h 上表是 ds18b20 溫度采集轉(zhuǎn)化后得到的 12 位數(shù)據(jù),存儲(chǔ)在 ds18b20 的兩個(gè) 8 比特 的 ram 中,二進(jìn)制中的前面 5 位是符號(hào)位,如果測(cè)得的溫度大于或等于 0,這 5 位為 0,

51、只要將測(cè)到的數(shù)值乘于 0.0625 即可得到實(shí)際溫度;如果溫度小于 0,這 5 位為 1, 測(cè)到的數(shù)值需要取反加 1 再乘于 0.0625 即可得到實(shí)際溫度。 溫度轉(zhuǎn)換計(jì)算方法舉例: 例如當(dāng) ds18b20 采集到+125的實(shí)際溫度后,輸出為 07d0h,則: 實(shí)際溫度=07d0h0.0625=20000.0625=1250c。 例如當(dāng) ds18b20 采集到-55的實(shí)際溫度后,輸出為 fc90h,則應(yīng)先將 11 位數(shù)據(jù)位 取反加 1 得 370h(符號(hào)位不變,也不作為計(jì)算) ,則: 實(shí)際溫度=370h0.0625=8800.0625=550c。 圖 3-11 ds18b20 溫度采集模塊 3

52、.4 鍵盤(pán)模塊 按照鍵盤(pán)與 cpu 的連接方式可以分為查詢(xún)按鍵和矩陣式鍵盤(pán)。由于程序操作簡(jiǎn)單, 只需 4 個(gè)按鍵,所以選有查詢(xún)式按鍵。查詢(xún)式按鍵是各按鍵相互獨(dú)立,每個(gè)按鍵占用 一根 i/o 口線,每根 i/o 口線上的按鍵工作狀態(tài)不會(huì)影響其他 i/o 口線上按鍵的工作 狀態(tài)。查詢(xún)式按鍵電路配置靈活,軟件結(jié)構(gòu)簡(jiǎn)單,但每個(gè)按鍵必須占用一根 i/o 口線, 在按鍵數(shù)量較多時(shí),i/o 口線浪費(fèi)較大,且電路結(jié)構(gòu)顯得繁雜。故這種形式適用于按鍵 數(shù)量較少的場(chǎng)合。 此設(shè)計(jì)因?yàn)樾枰陌存I少。決定選用 4 個(gè)按鈕的小鍵盤(pán),四個(gè)按鈕的功能分別為: up 鍵,具有向上和加 1 的功能。down 鍵,具有向下和減 1

53、的功能。clear 鍵,具有清 除返回的功能。function 鍵具有運(yùn)行進(jìn)入的功能。它們與單片機(jī)的 p0 口相連,依次接 p0.0,p0.1,p0.2,p0.3。 圖 3-12 鍵盤(pán)模塊 3.5 lcd 顯示模塊 就時(shí)鐘而言,通常可采用液晶顯示或數(shù)碼管顯示。由于一般的段式液晶屏,需要 專(zhuān)門(mén)的驅(qū)動(dòng)電路,而且可視性相對(duì)較差,對(duì)于具有驅(qū)動(dòng)電路和微處理器接口的液晶顯 示模塊(字符或點(diǎn)陣) ,一般多采用并行接口,對(duì)微處理器的接口要求較高,占用資源 多。因此,本設(shè)計(jì)采用 lgm12641bs1r 顯示。lgm12641bs1r 的指令可帶一個(gè)、兩個(gè)參數(shù), 或無(wú)參數(shù)。若指令中含有參數(shù),則每條指令執(zhí)行時(shí)均須

54、先送入?yún)?shù),再送入指令代碼。 由于狀態(tài)位作用不一樣,因此執(zhí)行不同指令必須檢測(cè)不同狀態(tài)位。其引腳功能如下: vcc:電源。 gnd:接地。 db0db7:數(shù)據(jù)線。 :復(fù)位信號(hào)。rst e:數(shù)據(jù)讀寫(xiě)操作控制位,e 線向 lcd 模塊發(fā)送一個(gè)脈沖,lcd 模塊與單片機(jī)之間 將進(jìn)行一次數(shù)據(jù)交換。 r/w:讀寫(xiě)控制線,r/w=0:寫(xiě)操作,r/w=1:讀操作。 di:顯示指令控制端。 vo:液晶顯示器驅(qū)動(dòng)電源。 vout:lcd 驅(qū)動(dòng)負(fù)電壓。 cs1:右半屏選屏信號(hào)。 cs2:左半屏選屏信號(hào)。 圖 3-13 lcd 顯示模塊 第 4 章軟件設(shè)計(jì) 本系統(tǒng)的軟件采用 c 語(yǔ)言編寫(xiě),主要由時(shí)鐘系統(tǒng),溫度采集系統(tǒng)

55、,控制系統(tǒng)和顯 示系統(tǒng)組成。單片機(jī)向時(shí)鐘芯片和測(cè)溫元件發(fā)出命令使其完成讀或?qū)懖僮鳎瑢⒆x出的 信息轉(zhuǎn)為 bcd 碼,最后送入顯示系統(tǒng)實(shí)現(xiàn)功能。軟件系統(tǒng)框圖如下: 控制系統(tǒng) 顯示系統(tǒng) 時(shí)鐘系統(tǒng) 溫度采集系統(tǒng) 圖 4-1 軟件系統(tǒng)框圖 4.1 溫度采集軟件 因?yàn)?ds18b20 溫度傳感器在測(cè)溫時(shí)是通過(guò)累加來(lái) 記錄溫度的,為了溫度傳感器正常穩(wěn)定的運(yùn)行,需要 加延時(shí)子程序。程序如下: void sensor_delay(uchar count) while(count-); / count 表示延時(shí)參數(shù),值越大,延時(shí)時(shí)間越長(zhǎng) 單總線上的所有處理都要從初始化開(kāi)始。初始化 序 圖 4-2 溫度采集流程圖

56、列包括總線主機(jī)發(fā)出一復(fù)位脈沖,接著由從屬器件送出 存在脈沖。存在脈沖讓總線控制器知道 ds18b20 在總線上且已準(zhǔn)備好操作。初始化程 序如下: uchar sensor_initial(void) 初始化模塊 ds18b20 取得溫度值 存入儲(chǔ)存器 處理溫度值,換成 bcd 碼 顯示溫度 uchar i = 0; dq = 1; / dq 復(fù)位 sensor_delay(8); / 稍做延時(shí) dq = 0; / 單片機(jī)將 dq 拉低 sensor_delay(80); / 精確延時(shí),大于 480us dq = 1; / 拉高總線 sensor_delay(14); / 稍做延時(shí)后 i = d

57、q; / 若 x=0 則初始化成功,若 x=1 則初始化失 敗 sensor_delay(20); return (i); 一旦總線主機(jī)檢測(cè)到從屬器件的存在,它便可以發(fā)出器件 rom 操作命令之一,所 有 rom 操作命令均為 8 位長(zhǎng)。rom 操作命令:read t(讀區(qū)溫度寄存器)beh,skip rom( 跳過(guò) rom )cch,convert t(溫度變換)44h。 sensor_write_byte( 0 xcc ); / 跳過(guò)讀序號(hào)列號(hào)的操作 sensor_write_byte( 0 x44 ); / 啟動(dòng)溫度轉(zhuǎn)換 sensor_write_byte( 0 xcc ); / 跳過(guò)讀

58、序號(hào)列號(hào)的操作 sensor_write_byte( 0 xbe ); / 讀取溫度寄存器 4.2 陽(yáng)歷軟件設(shè)計(jì) 因?yàn)槭褂昧藭r(shí)鐘芯片 ds1302,陽(yáng)歷程序只需從 ds1302 各寄存器中讀出年、周、月、日、時(shí)、分、秒等 數(shù)據(jù),再處理即可。 單片機(jī)是通過(guò)簡(jiǎn)單的同步串行通訊與 ds1302 通訊的, 每次通訊都必須由單片機(jī)發(fā)起,無(wú)論是讀還是寫(xiě)操作,單 片機(jī)都必須先向 ds1302 寫(xiě)入一個(gè)命令幀。此命令幀是由 八位二進(jìn)制組成,最高位 bit7 固定為 1,bit6 決定操作 是針對(duì) ram 還是時(shí)鐘寄存器,接著的 5 個(gè) bit 是 ram 或時(shí) 鐘寄存器在 ds1302 的內(nèi)部地址,最后一個(gè)

59、bit 表示這次 子程序入口 初始化 1302 時(shí)鐘芯片 從 1302 時(shí)鐘芯片中讀 出時(shí)間和日期 讀出數(shù)據(jù)為 bcd 碼, 送入顯示緩沖單元 操作是 圖 4-3 陽(yáng)歷流程圖 讀操作抑或是寫(xiě)操作,詳細(xì)格式可見(jiàn)表 3-2。由此可定義位變 量: sbit acc0 = acc 0; /定義最低位 sbit acc7 = acc 7; /定義最高位 #define second_address0 x80 /秒寄存器 #define minute_address0 x82 /分寄存器 #define hour_address 0 x84 /小時(shí)寄存器 #define day_address 0 x86

60、 /日期寄存器 #define month_address 0 x88 /月份寄存器 #define year_address 0 x8c /年寄存器 首次對(duì) ds1302 進(jìn)行操作之前,必須對(duì)它進(jìn)行初始化,然后從 ds1302 中讀出數(shù)據(jù), 再經(jīng)過(guò)處理后,送給顯示緩沖單元。初始化相應(yīng)程序如下: clock_write_time(0 x8e,0 x00); /wp=0 寫(xiě)操作 /最高位為 0 時(shí)鐘芯片工作 clock_write_time( second_address, * clock_time ); /秒 clock_time +; /指向分 clock_write_time( minut

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 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)論