基于AT89C51的多功能萬年歷畢業(yè)設計論文_第1頁
基于AT89C51的多功能萬年歷畢業(yè)設計論文_第2頁
基于AT89C51的多功能萬年歷畢業(yè)設計論文_第3頁
基于AT89C51的多功能萬年歷畢業(yè)設計論文_第4頁
基于AT89C51的多功能萬年歷畢業(yè)設計論文_第5頁
已閱讀5頁,還剩21頁未讀 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、基于at89c51的多功能萬年歷摘要:本文介紹了基于at89c51單片機的多功能電子萬年歷的硬件結構和軟硬件設計方法。系統(tǒng)以at89c51單片機為控制器,以串行時鐘日歷芯片ds1302記錄日歷和時間,它可以對年、月、日、時、分、秒進行計時,還具有溫度顯示等多種功能。萬年歷采用直觀的數(shù)字顯示,可以在led上同時顯示年、月、日、周日、時、分、秒,還具有時間校準等功能。此萬年歷具有讀取方便、顯示直觀、功能多樣、電路簡潔、成本低廉等諸多優(yōu)點,具有廣闊的市場前景。關鍵詞 at89c51;電子萬年歷; ds1302;ds18b20目 錄第1章 緒論11.1 課題的研究背景11.2課題的研究目的和意義11.

2、3 課題解決的主要內容1第2章 系統(tǒng)的總體設計22.1系統(tǒng)方案的構想與確定22.1 器件的選用2 2.2.1單片機的選擇2第3章 系統(tǒng)硬件的設計43.1系統(tǒng)硬件框圖43.2 at89c51單片機43.3溫度傳感器的介紹73.4 ds13028第4章 系統(tǒng)的軟件設計114.1 主程序114.2 日歷顯示子程序114.3 從1302讀取日期和時間程序14第5章 proteus使用155.1編程環(huán)境proteus155.2 用proteus isis對電子萬年歷的硬件電路設計155.3用proteus isis進行電子萬年歷的仿真測試19結語22致謝23參考文獻24第1章 緒論1.1 課題的研究背景

3、隨著科技的快速發(fā)展,時間的流逝,從觀太陽、擺鐘到現(xiàn)在電子鐘,人類不斷研究,不斷創(chuàng)新紀錄。它可以對年、月、日、時、分、秒進行計時,還具有溫度顯示等多種功能,而且ds1302的使用壽命長,誤差小。對于數(shù)字電子萬年歷采用直觀的數(shù)字顯示,可以同時顯示年、月、日、時、分、秒和溫度等信息,還具有時間校準等功能。該電路采用at89c51單片機作為核心,功耗小,能在3v的低壓工作,電壓可選用35v電壓供電。此萬年歷具有讀取方便、顯示直觀、功能多樣、電路簡潔、成本低廉等諸多優(yōu)點,符合電子儀器儀表的發(fā)展趨勢,具有廣闊的市場前景。1.2課題的研究目的和意義二十一世紀是數(shù)字化技術高速發(fā)展的時代,而單片機在數(shù)字化高速發(fā)

4、展的時代扮演著極為重要的角色。電子萬年歷的開發(fā)與研究在信息化時代的今天亦是當務之急,因為它應用在學校、機關、企業(yè)、部隊等單位禮堂、訓練場地、教學室、公共場地等場合,可以說遍及人們生活的每一個角落。所以說電子萬年歷的開發(fā)是國家之所需,社會之所需,人民之所需。由于社會對信息交換不斷提高的要求及高新技術的逐步發(fā)展,促使電子萬年歷發(fā)展并且投入市場得到廣泛應用。1.3 課題解決的主要內容本課題所研究的電子萬年歷是單片機控制技術的一個具體應用,主要研究內容包括以下幾個方面:(1)選用電子萬年歷芯片時,應重點考慮功能實在、使用方便、單片存儲、低功耗、抗斷電的器件。(2)根據(jù)選用的電子萬年歷芯片設計外圍電路和

5、單片機的接口電路。(3)在硬件設計時,結構要盡量簡單實用、易于實現(xiàn),使系統(tǒng)電路盡量簡單。(4)根據(jù)設計的硬件電路,編寫控制at89c51芯片的單片機程序。(5)通過編程、編譯、調試,把程序下載到單片機上運行,并實現(xiàn)本設計的功能。(6)在硬件電路和軟件程序設計時,主要考慮提高人機界面的友好性,方便用戶操作等因素。(7)軟件設計時必須要有完善的思路,要做到程序簡單,調試方便。第2章 系統(tǒng)的總體設計單片機電子萬年歷的制作有多種方法,可供選擇的器件和運用的技術也有很多種。所以,系統(tǒng)的總體設計方案應在滿足系統(tǒng)功能的前提下,充分考慮系統(tǒng)使用的環(huán)境,所選的結構要簡單使用、易于實現(xiàn),器件的選用著眼于合適的參數(shù)

6、、穩(wěn)定的性能、較低的功耗以及低廉的成本。2.1系統(tǒng)方案的構想與確定系統(tǒng)的功能往往決定了系統(tǒng)采用的結構,經過分析用lm016l和ledmpx做顯示器比用一般的顯示管更直觀清楚;在時鐘芯片的選擇上直接采用單片機定時計數(shù)器提供秒信號,使用程序實現(xiàn)年、月、日、星期、時、分、秒計數(shù)。采用此種方案雖然減少芯片的使用,節(jié)約成本,但是,實現(xiàn)的時間誤差較大。而用ds1302時鐘芯片實現(xiàn)時鐘,ds1302芯片是一種高性能的時鐘芯片,可自動對秒、分、時、日、周、月、年以及閏年補償?shù)哪赀M行計數(shù),而且精度高,位的ram做為數(shù)據(jù)暫存區(qū),工作電壓2.5v5.5v范圍內,2.5v時耗電小于300na.所以選用ds1302;在

7、溫度傳感器的選用上使用熱敏電阻作為傳感器,用熱敏電阻與一個相應阻值電阻相串聯(lián)分壓,利用熱敏電阻阻值隨溫度變化而變化的特性,采集這兩個電阻變化的分壓值,并進行a/d轉換。此設計方案需用a/d轉換電路,增加硬件成本而且熱敏電阻的感溫特性曲線并不是嚴格線性的,會產生較大的測量誤差。而采用數(shù)字式溫度傳感器ds18b20,此類傳感器為數(shù)字式傳感器而且僅需要一條數(shù)據(jù)線進行數(shù)據(jù)傳輸,易于與單片機連接,可以去除a/d模塊,降低硬件成本,簡化系統(tǒng)電路。另外,數(shù)字式溫度傳感器還具有測量精度高、測量范圍廣等優(yōu)點,所以用ds18b20;最后用respack-8連接單片機at89c51,從而實現(xiàn)多功能電子萬年歷的功能。

8、2.1 器件的選用 單片機at89c51,顯示屏lm016l,溫度傳感器ds18b20,傳感器ds1302,排阻respack-82.2.1單片機的選擇單片機自70年代問世以來以微處理器(mpu)技術及超大規(guī)模集成電路技術的發(fā)展為先導,用廣泛的應用領域拉動得到蓬勃發(fā)展,單片機功能正日漸完善。單片機的應用,使許多領域的技術水平和自動化程度大大提高,可以說當今世界正在經受一場以單片機技術為標志的新技術革命浪潮的沖擊。主要單片機類型如下:(1)mcs-51系列單片機mcs-51系列單片機主要是指intel公司生產的以51位內核的單片機芯片,具有8位cpu、4k字節(jié)rom、128字節(jié)ram、可擴展外部

9、64k字節(jié)ram和rom、2個16位的定時器/計數(shù)器、4個8位并行i/o口、1個全雙工串行i/o口、21字節(jié)的專用寄存器、5個中斷源、片內自帶振蕩器、片內單總線等功能部件。(2)at89c51單片機at89c51單片機的主要特性如下:l 與mcs-51產品指令系統(tǒng)完全兼容l 4k字節(jié)的在線編程flash存儲器,1000次擦寫周期l 4.05.5v的工作電壓范圍l 全靜態(tài)工作模式:033mhzl 三級程序存儲器鎖l 1288字節(jié)內部ram l 32個可編程i/o口線l 2個16位定時/計數(shù)器l 6個中斷源l 全雙工串行uart通道l 低功耗空閑和掉電模式l 中斷可從空閑模式喚醒系統(tǒng)l 看門狗(w

10、dt)及雙數(shù)據(jù)指針l 掉電標識和快速編程特性l 具有掉電狀態(tài)下的中斷恢復功能l 靈活的在系統(tǒng)編程(isp字節(jié)或頁寫模式)由于at89c51單片機片內有4k字節(jié)的在線編程flash存儲器,可以擦寫1000次,具有掉電模式,而且具有掉電狀態(tài)下的中斷恢復功能,對設計開發(fā)非常實用。所以選用at89c51單片機作為電子萬年歷芯片的控制單片機。第3章 系統(tǒng)硬件的設計根據(jù)上述所確定的系統(tǒng)方案構想,下面進行系統(tǒng)硬件電路的具體設計,系統(tǒng)的總體結構框圖如圖所示。3.1系統(tǒng)硬件框圖系統(tǒng)硬件框圖如圖3-1圖3-1 系統(tǒng)硬件框圖3.2 at89c51單片機 本系統(tǒng)采用的是美國atmel公司生產的at89c51單片機,首

11、先我們來熟悉一下at89c51單片機的外部引腳和內部結構。1.單片機的引腳功能at89c51單片機有40個引腳。l vcc:電源電壓+5vl gnd:接地l p0口:p0口是一組8位漏極開路型雙向i/o口,也即地址/數(shù)據(jù)總線復用口。作為輸出口用時,每位能驅動8個ttl邏輯門電路,對端口寫“1”可作為高阻抗輸入端用。在訪問外部數(shù)據(jù)存儲器或程序存儲器時,這組口線分時轉換地址(低8位)和數(shù)據(jù)總線服用,在訪問期間激活內部上拉電阻。在flash編程時,p0口接收指令字節(jié),而在程序校驗時,輸出指令字節(jié),校驗時要求外接上拉電阻。l p1口:p1口是一個帶內部上拉電阻的8位雙向i/o,p1的輸出緩沖級可驅動(

12、吸收或輸出電流)4個ttl邏輯門電路。對端口寫“1”,通過內部的上拉電阻把端口拉到高電平,此時可作輸入口。作輸入口使用時,因為內部存在上拉電阻,某個引腳被外部信號拉低時會輸出一個電流。 flash 編程和程序校驗期間,p1接收低8位地址。l p2口:p2口是一個帶內部上拉電阻的8位雙向i/o,p2的輸出緩沖級可驅動(吸收或輸出電流)4個ttl邏輯門電路。對端口寫“1”,通過內部的上拉電阻把端口拉到高電平,此時可作輸入口。作輸入口使用時,因為內部存在上拉電阻,某個引腳被外部信號拉低時會輸出一個電流。在訪問外部程序存儲器或16位地址的外部數(shù)據(jù)存儲器(例如執(zhí)行movxdptr指令)時,p2口送出高8

13、位地址數(shù)據(jù)。在訪問8位地址的外部數(shù)據(jù)存儲器(movx ri指令)時,p2口線上的內容(也即特殊功能寄存器(sfr)區(qū)中p2寄存器的內容),在整個訪問期間不改變。flash 編程和程序校驗期間,p2亦接收低高位地址和其他控制信號。l p3口:p3口是一組帶內部上拉電阻的8位雙向i/o,p3的輸出緩沖級可驅動(吸收或輸出電流)4個ttl邏輯門電路。對p3口寫入“1”時,它們被內部的上拉電阻拉高并可作為輸入端口。作輸入端時,被外部拉低的p3口將用上拉電阻輸出電流。p3口除了作為一般的i/o口線外,更重要的用途是它的第二功能,見表3-1所示:p3口還接收一些用于flash閃速存儲器編程和程序校驗的控制

14、信號。表3-1 p3口的第二功能圖端口引腳第二功能p3.0rxd(串行輸入口)p3.1txd(串行輸出口)p3.2int0(外中斷0)p3.3int1(外中斷1)p3.4t0(定時/計時器0外部輸入)p3.5t1(定時/計時器1外部輸入)p3.6wr(外部數(shù)據(jù)存儲器寫選通)p3.7rd(外部數(shù)據(jù)存儲器讀選通)l rst:復位輸入。當振蕩器工作時,rst引腳出現(xiàn)兩個機器周期以上高電平將使單片機復位。wdt溢出將使引腳輸出高電平,設置sfr auxr的disrt0(地址8eh)可打開或關閉該功能。disrt0位缺省為reset輸出高電平打開狀態(tài)。l ale/prog:當訪問外部程序存儲器或數(shù)據(jù)存儲

15、器時,ale(地址鎖存器允許)輸出脈沖用于鎖存地址的低8位字節(jié)。即使不訪問外部存儲器,ale仍以時鐘振蕩頻率的1/6輸出固定的正脈沖信號,因此它可對外輸出時鐘或用于定時目的。要注意的是:每當訪問外部數(shù)據(jù)存儲器時將跳過一個ale脈沖。對flash存儲器編程期間,該引腳還用于輸入編程脈沖(prog)。如有必要,可通過多特殊功能寄存器(sfr)區(qū)中的8eh單元的d0位置,可禁止ale操作。該位置后,只有一條movx和movc指令ale才會被激活。另外,該引腳會被微弱拉高,單片機執(zhí)行外部程序時,應設置ale無效。l psen:程序存儲允許(psen)輸出是外部程序存儲器的讀選通信號,當at89c51由

16、外部程序存儲器取指令(或數(shù)據(jù))時,每個機器周期兩次psen有效,即輸出兩個脈沖。當訪問外部數(shù)據(jù)存儲器,沒有兩次有效的psen信號。l ea/vpp:外部訪問允許。欲使cpu僅訪問外部程序存儲器(地址為0000hffffh),ea端必須保持低電平(接地)。需要注意的是:如果加密位lb1被編程,復位時內部會鎖存ea端狀態(tài)。如ea端為高電平(接vcc端),cpu則執(zhí)行內部程序存儲器中的指令。flash存儲器編程時,該引腳加上+12v的變成電壓vpp.l xtal1:振蕩器反相放大器及內部時鐘發(fā)生器的輸入端。l xtal2:振蕩器反相放大器的輸出端。at89c51單片機內部結構2.at89c51單片機

17、與mcs-51完全兼容 l 看門狗(wdt):wdt是一種需要軟件控制的復位方式。wdt 由13位計數(shù)器和特殊功能寄存器中的看門狗定時器復位存儲器(wdtrst)構成。wdt 在默認情況下無法工作;為了激活wdt,用戶必須往wdtrst 寄存器(地址:0a6h)中依次寫入01eh 和0e1h。當wdt激活后,晶振工作,wdt在每個機器周期都會增加。wdt計時周期依賴于外部時鐘頻率。除了復位(硬件復位或wdt溢出復位),沒有辦法停止wdt工作。當wdt溢出,它將驅動rsr引腳輸出一個高電平。l 可編程串口(uart)在at89c51中,uart 的操作與at89c51 和at89c52 一樣。a

18、t89c51系列單片機的串行通信口可以工作于同步和異步通信方式。當工作于異步方式時,它具有全雙工的操作功能,也就是說,它可以同時進行數(shù)據(jù)的發(fā)送和接收。串行口內的接收器采用的是雙緩沖結構,能夠在接收到的第一個字節(jié)從接收寄存器讀走之前就開始接收第二個字節(jié)(當然,如果第二個字節(jié)接收完畢,而第一個字節(jié)仍然沒有被讀走,那將會丟掉一個字節(jié))。串行口的發(fā)送和接收操作都是通過特殊功能寄存器中的數(shù)據(jù)緩沖寄存器sbuf進行的,但在sbuf的內部,接收寄存器和發(fā)送寄存器在物理結構上是完全獨立的。如果將數(shù)據(jù)寫入sbuf,數(shù)據(jù)會被送入發(fā)送寄存器準備發(fā)送。如果執(zhí)行sbuf指令,則讀出的數(shù)據(jù)一定來自接收緩存器。因此,cpu

19、對sbuf的讀寫,實際上是分別訪問2個不同的寄存器。這2個寄存器的功能決不能混淆。l 振蕩電路:at89c51系列單片機的內部振蕩器,由一個單極反相器組成。xtal1反相器的輸入,xtal2為反相器的輸出??梢岳盟鼉炔康恼袷幤鳟a生時鐘,只要xtal1和xtal2引腳上一個晶體及電容組成的并聯(lián)諧振電路,便構成一個完整的振蕩信號發(fā)生器,此方式稱為內部方式。另一種方式由外部時鐘源提供一個時鐘信號到xtal1端輸入,而xtal2端浮空。在組成一個單片機應用系統(tǒng)時,多數(shù)采用這種方式,這種方式結構緊湊,成本低廉,可靠性高。在電路中,對電容c1和c2的值要求不是很嚴格,如果使用高質的晶振,則不管頻率為多少

20、,c1、c2通常都選擇30pf。l 定時/計數(shù)器:at89c51單片機內含有2個16位的定時器/計數(shù)器。當用于定時器方式時,定時器的輸入來自內部時鐘發(fā)生電路,每過一個機器周期,定時器加1,而一個機器周期包含有12個振蕩周期,所以,定時器的技術頻率為晶振頻率的1/12,而計數(shù)頻率最高為晶振頻率的1/24。為了實現(xiàn)定時和計數(shù)功能,定時器中含有3種基本的寄存器:控制寄存器、方式寄存器和定時器/計數(shù)器??刂萍拇嫫魇且粋€8位的寄存器,用于控制定時器的工作狀態(tài),方式寄存器是一個8位的寄存器,用于確定定時器的工作方式,定時器/計數(shù)器是16位的計數(shù)器,分為高字節(jié)和低字節(jié)兩部分。l ram:高于7fh內部數(shù)據(jù)存

21、儲器的地址是8位的,也就是說其地址空間只有256字節(jié),但內部ram的尋址方式實際上可提供384字節(jié)。的直接地址訪問同一個存儲空間,高于7fh的間接地址訪問另一個存儲空間。這樣,雖然高128字節(jié)區(qū)分與專用寄器 ,即特殊功能寄存器區(qū)的地址是重合的,但實際上它們是分開的。究竟訪問哪一區(qū),存是通過不同的尋址方式加以區(qū)分的。l sfr:sfr是具有特殊功能的所有寄存器的集合,共含有22個不同寄存器,它們的地址分配在80hffh中。雖然如此,不是所有的單元都被特殊功能寄存器占用,未被占用的單元,其內容是不確定的。如對這些單元進行讀操作,得到的是一些隨機數(shù),而寫入則無效,所以在編程時不應該將數(shù)據(jù)寫入這些未確

22、定的地址單元中,特殊功能寄存器主要有累加器acc、b寄存器、程序狀態(tài)字寄存器psw、堆棧指針sp、數(shù)據(jù)指針dptr、i/o端口、串行口數(shù)據(jù)緩沖器sbuf、定時器寄存器、捕捉寄存器、控制寄存器。l 中斷系統(tǒng):at89c51單片機有6個中斷源,中斷系統(tǒng)主要由中斷允許寄存器ie、中斷優(yōu)先級寄存器ip、優(yōu)先級結構和一些邏輯門組成。ie寄存器用于允許或禁止中斷;ip寄存器用于確定中斷源的優(yōu)先級別;優(yōu)先級結構用于執(zhí)行中斷源的優(yōu)先排序;有關邏輯門用于輸入中斷請求信號。在整個中斷響應過程中cpu所執(zhí)行的操作步驟如下:(1)完成當前指令的操作(2)將pc內容壓入堆棧(3)保存當前的中斷狀態(tài)(4)阻止同級的中斷請

23、求(5)將中斷程序入口地址送pc寄存器(6)執(zhí)行中斷服務程序(7)返回3.3溫度傳感器的介紹 at89c51作為溫度測試系統(tǒng)設計的核心器件。該器件是intel公司生產的mcs5l列單片機中的基礎產品,采用了可靠的cmos工藝制造技術,具有高性能的8位單片機,屬于標準的mcs51的cmos產品。不僅結合了hmos的高速和高密度技術及chmos的低功耗特征,而且繼承和擴展了mcs48單片機的體系結構和指令系統(tǒng)。單片機小系統(tǒng)的電路圖如圖2所示。 ds18b20可以程序設定912位的分辨率,精度為0.5c??蛇x更小的封裝方式,更寬的電壓適用范圍。分辨率設定,及用戶設定的報警溫度存儲在eprom中,掉電

24、后依然保存。溫度傳感器ds18b20引腳如圖3-2所示。 8引腳封裝 to92封裝圖3-2 溫度傳感器引腳功能說明nc :空引腳,懸空不使用;vdd :可選電源腳,電源電壓范圍35.5v。當工作于寄生電源時,此引腳必須接地。dq :數(shù)據(jù)輸入/輸出腳。漏極開路,常態(tài)下高電平。gnd :為電源地ds18b20內部結構主要由四部分組成:64位光刻rom、溫度傳感器、非揮發(fā)的溫度報警觸發(fā)器th和tl、配置寄存器。光刻rom中的64位序列號是出廠前被光刻好的,它可以看作是該ds18b20的地址序列碼。64位光刻rom的排列是:開始8位(28h)是產品類型標號,接著的48位是該ds18b20自身的序列號,

25、最后8位是前面56位的循環(huán)冗余校驗碼(crc=x8+x5+x4+1)。光刻rom的作用是使每一個ds18b20都各不相同,這樣就可以實現(xiàn)一根總線上掛接多個ds18b20的目的。ds18b20中的溫度傳感器可完成對溫度的測量,以12位轉化為例:用16位符號擴展的二進制補碼讀數(shù)形式提供,以0.0625/lsb形式表達,其中s為符號位。這是12位轉化后得到的12位數(shù)據(jù),存儲在18b20的兩個8比特的ram中,二進制中的前面5位是符號位,如果測得的溫度大于0,這5位為0,只要將測到的數(shù)值乘于0.0625即可得到實際溫度;如果溫度小于0,這5位為1,測到的數(shù)值需要取反加1再乘于0.0625即可得到實際溫

26、度。 例如+125的數(shù)字輸出為07d0h,+25.0625的數(shù)字輸出為0191h,-25.0625的數(shù)字輸出為ff6fh,-55的數(shù)字輸出為fc90h。ds18b20溫度傳感器的內部存儲器包括一個高速暫存ram和一個非易失性的可電擦除的e2ram,后者存放高溫度和低溫度觸發(fā)器th、tl和結構寄存器。 暫存存儲器包含了8個連續(xù)字節(jié),前兩個字節(jié)是測得的溫度信息,第一個字節(jié)的內容是溫度的低八位,第二個字節(jié)是溫度的高八位。第三個和第四個字節(jié)是th、tl的易失性拷貝,第五個字節(jié)是結構寄存器的易失性拷貝,這三個字節(jié)的內容在每一次上電復位時被刷新。第六、七、八個字節(jié)用于內部計算。第九個字節(jié)是冗余檢驗字節(jié)。

27、該字節(jié)各位的意義如下: tm r1 r0 1 1 1 1 1低五位一直都是1 ,tm是測試模式位,用于設置ds18b20在工作模式還是在測試模式。在ds18b20出廠時該位被設置為0,用戶不要去改動。r1和r0用來設置分辨率,如表3-2所示:(ds18b20出廠時被設置為12位) 表3-2 ds18b20溫度轉換時間表r1r0分辨率/位溫度最大轉向時間00993.750110187.510113751112750根據(jù)ds18b20的通訊協(xié)議,主機控制ds18b20完成溫度轉換必須經過三個步驟:每一次讀寫之前都要對ds18b20進行復位,復位成功后發(fā)送一條rom指令,最后發(fā)送ram指令,這樣才能

28、對ds18b20進行預定的操作。復位要求主cpu將數(shù)據(jù)線下拉500微秒,然后釋放,ds18b20收到信號后等待1660微秒左右,后發(fā)出60240微秒的存在低脈沖,主cpu收到此信號表示復位成功。3.4 ds1302 現(xiàn)在流行的串行時鐘電路很多,如ds1302、 ds1307、pcf8485等。這些電路的接口簡單、價格低廉、使用方便,被廣泛地采用。本文介紹的實時時鐘電路ds1302是dallas公司的一種具有涓細電流充電能力的電路,主要特點是采用串行數(shù)據(jù)傳輸,可為掉電保護電源提供可編程的充電功能,并且可以關閉充電功能。采用普通32.768khz晶振。 ds1302 是美國dallas公司推出的一

29、種高性能、低功耗、帶ram的實時時鐘電路,它可以對年、月、日、周日、時、分、秒進行計時,具有閏年補償功能,工作電壓為2.5v5.5v。采用三線接口與cpu進行同步通信,并可采用突發(fā)方式一次傳送多個字節(jié)的時鐘信號或ram數(shù)據(jù)。ds1302內部有一個318的用于臨時性存放數(shù)據(jù)的ram寄存器。ds1302是ds1202的升級產品,與ds1202兼容,但增加了主電源/后背電源雙電源引腳,同時提供了對后背電源進行涓細電流充電的能力。 ds1302的引腳排列,其中vcc1為后備電源,vcc2為主電源。在主電源關閉的情況下,也能保持時鐘的連續(xù)運行。ds1302由vcc1或vcc2兩者中的較大者供電。當vcc

30、2大于vcc10.2v時,vcc2給ds1302供電。當vcc2小于vcc1時,ds1302由vcc1供電。x1和x2是振蕩源,外接32.768khz晶振。rst是復位/片選線,通過把rst輸入驅動置高電平來啟動所有的數(shù)據(jù)傳送。rst輸入有兩種功能:首先,rst接通控制邏輯,允許地址/命令序列送入移位寄存器;其次,rst提供終止單字節(jié)或多字節(jié)數(shù)據(jù)的傳送手段。當rst為高電平時,所有的數(shù)據(jù)傳送被初始化,允許對ds1302進行操作。如果在傳送過程中rst置為低電平,則會終止此次數(shù)據(jù)傳送,i/o引腳變?yōu)楦咦钁B(tài)。上電運行時,在vcc2.5v之前,rst必須保持低電平。只有在sclk為低電平時,才能將r

31、st置為高電平。i/o為串行數(shù)據(jù)輸入輸出端(雙向),后面有詳細說明。sclk始終是輸入端。 ds1302 的控制字節(jié)的最高有效位(位7)必須是邏輯1,如果它為0,則不能把數(shù)據(jù)寫入ds1302中,位6如果為0,則表示存取日歷時鐘數(shù)據(jù),為1表示存取ram數(shù)據(jù);位5至位1指示操作單元的地址;最低有效位(位0)如為0表示要進行寫操作,為1表示進行讀操作,控制字節(jié)總是從最低位開始輸出。 在控制指令字輸入后的下一個sclk時鐘的上升沿時,數(shù)據(jù)被寫入ds1902,數(shù)據(jù)輸入從低位即位0開始。同樣,在緊跟8位的控制指令字后的下一個sclk脈沖的下降沿讀出ds1302的數(shù)據(jù),讀出數(shù)據(jù)時從低位0位到高位7。 ds1

32、302有12個寄存器,其中有7個寄存器與日歷、時鐘相關,存放的數(shù)據(jù)位為bcd碼形式,其日歷、時間寄存器及其控制字見表1。 此外,ds1302 還有年份寄存器、控制寄存器、充電寄存器、時鐘突發(fā)寄存器及與ram相關的寄存器等。時鐘突發(fā)寄存器可一次性順序讀寫除充電寄存器外的所有寄存器內容。 ds1302與ram相關的寄存器分為兩類:一類是單個ram單元,共31個,每個單元組態(tài)為一個8位的字節(jié),其命令控制字為c0hfdh,其中奇數(shù)為讀操作,偶數(shù)為寫操作;另一類為突發(fā)方式下的ram寄存器,此方式下可一次性讀寫所有的ram的31個字節(jié),命令控制字為feh(寫)、ffh(讀)。 ds1302與cpu的連接需

33、要三條線,即sclk(7)、i/o(6)、rst(5)。ds1902與89c2051的連接圖,其中,時鐘的顯示用led。 ds1302與cpu的連接,實際上,在調試程序時可以不加電容器,只加一個32.768khz 的晶振即可。只是選擇晶振時,不同的晶振,誤差也較大。另外,還可以在上面的電路中加入ds18b20,同時顯示實時溫度。只要占用cpu一個口線即可。 led還可以換成lcd,還可以使用北京衛(wèi)信杰科技發(fā)展有限公司生產的10位多功能8段液晶顯示模塊lcm101,內含看門狗(wdt)/時鐘發(fā)生器及兩種頻率的蜂鳴器驅動電路,并有內置顯示ram,可顯示任意字段筆劃,具有34線串行接口,可與任何單片

34、機、ic接口。功耗低,顯示狀態(tài)時電流為2a (典型值),省電模式時小于1a,工作電壓為2.4v3.3v,顯示清晰。ds1302的引腳圖3-3所示 圖3-3 ds1302引腳圖ds1302的實時時間流程。根據(jù)流程框圖,不難采集實時時間。下面對ds1302的基本操作進行編程: 根據(jù)本人在調試中遇到的問題,特作如下說明: ds1302 與微處理器進行數(shù)據(jù)交換時,首先由微處理器向電路發(fā)送命令字節(jié),命令字節(jié)最高位msb(d7)必須為邏輯1,如果d7=0,則禁止寫ds1302,即寫保護;d6=0,指定時鐘數(shù)據(jù),d6=1,指定ram數(shù)據(jù);d5d1指定輸入或輸出的特定寄存器;最低位lsb(d0)為邏輯0,指定

35、寫操作(輸入), d0=1,指定讀操作(輸出)。 在ds1302的時鐘日歷或ram進行數(shù)據(jù)傳送時,ds1302必須首先發(fā)送命令字節(jié)。若進行單字節(jié)傳送,8位命令字節(jié)傳送結束之后,在下2個sclk周期的上升沿輸入數(shù)據(jù)字節(jié),或在下8個sclk周期的下降沿輸出數(shù)據(jù)字節(jié)。 ds1302與ram相關的寄存器分為兩類:一類是單個ram單元,共31個,每個單元組態(tài)為一個8位的字節(jié),其命令控制字為c0hfdh,其中奇數(shù)為讀操作,偶數(shù)為寫操作;再一類為突發(fā)方式下的ram寄存器,在此方式下可一次性讀、寫所有的ram的31個字節(jié)。 要特別說明的是備用電源b1,可以用電池或者超級電容器(0.1f以上)。雖然ds1302

36、在主電源掉電后的耗電很小,但是,如果要長時間保證時鐘正常,最好選用小型充電電池??梢杂美鲜诫娔X主板上的3.6v充電電池。如果斷電時間較短(幾小時或幾天)時,就可以用漏電較小的普通電解電容器代替。100 f就可以保證1小時的正常走時。ds1302在第一次加電后,必須進行初始化操作。初始化后就可以按正常方法調整時間。 ds1302 存在時鐘精度不高,易受環(huán)境影響,出現(xiàn)時鐘混亂等缺點。ds1302可以用于數(shù)據(jù)記錄,特別是對某些具有特殊意義的數(shù)據(jù)點的記錄,能實現(xiàn)數(shù)據(jù)與出現(xiàn)該數(shù)據(jù)的時間同時記錄。這種記錄對長時間的連續(xù)測控系統(tǒng)結果的分析及對異常數(shù)據(jù)出現(xiàn)的原因的查找具有重要意義。傳統(tǒng)的數(shù)據(jù)記錄方式是隔時采樣

37、或定時采樣,沒有具體的時間記錄,因此,只能記錄數(shù)據(jù)而無法準確記錄其出現(xiàn)的時間;若采用單片機計時,一方面需要采用計數(shù)器,占用硬件資源,另一方面需要設置中斷、查詢等,同樣耗費單片機的資源,而且,某些測控系統(tǒng)可能不允許。但是,如果在系統(tǒng)中采用時鐘芯片ds1302,則能很好地解決這個問題。第4章 系統(tǒng)的軟件設計電子萬年歷的功能是在程序控制下實現(xiàn)的。該系統(tǒng)的軟件設計方法與硬件設計相對應,按整體功能分成多個不同的程序模塊,分別進行設計、編程和調試,最后通過主程序將各程序模塊連接起來。這樣有利于程序修改和調試,增強了程序的可移植性。4.1 主程序 主程序如圖4-1所示: 圖4-1 主程序圖4.2 日歷顯示子

38、程序 =日歷顯示子程序= display: mov a,#81h ;設定年第1位的顯示地址為第1行,第1列 lcall write_com mov a, #32h ;數(shù)字2的ascii碼 lcall write_data mov a,#82h ;設定年第2位的顯示地址為第1行,第2列 lcall write_com mov a, #30h ;數(shù)字0的ascii碼 lcall write_data mov a,#83h ;設定年第3位的顯示地址為第1行,第3列 lcall write_com mov a, time_year_lbuf ;年的底位緩存數(shù)據(jù) add a,#30h ;加30h修正取a

39、scii碼 lcall write_data mov a,#84h ;設定年第4位的顯示地址為第1行,第4列 lcall write_com mov a, time_year_hbuf ;年的高位緩存數(shù)據(jù) add a,#30h ;加30h修正取ascii碼 lcall write_data mov a,#85h;(規(guī)定顯示年的位置) acall write_com;(調用命令寫入子程序) mov a,#00h acall write_data;(調用數(shù)據(jù)寫入子程序) mov a,#86h ;設定月第1位的顯示地址為第1行,第6列 lcall write_com mov a, mont_lbuf

40、 ;月的低位緩存數(shù)據(jù) add a,#30h ;加30h修正取ascii碼 lcall write_data mov a,#87h ;設定月第2位的顯示地址為第1行,第7列 lcall write_com mov a, mont_hbuf ;月的高位緩存數(shù)據(jù) add a,#30h ;加30h修正取ascii碼 lcall write_data mov a,#88h;(規(guī)定顯示月的位置) acall write_com;(調用命令寫入子程序) mov a,#01h acall write_data;(調用數(shù)據(jù)寫入子程序) mov a,#89h ;設定天第1位的顯示地址為第1行,第9列 lcall

41、write_com mov a, time_day_lbuf ;天的低位緩存數(shù)據(jù) add a,#30h ;加30h修正取ascii碼 lcall write_data mov a,#8ah ;設定天第2位的顯示地址為第1行,第10列 lcall write_com mov a, time_day_hbuf ;天的高位緩存數(shù)據(jù) add a,#30h ;加30h修正取ascii碼 lcall write_data mov a,#8bh;(規(guī)定顯示日的位置) acall write_com;(調用命令寫入子程序) mov a,#02h acall write_data;(調用數(shù)據(jù)寫入子程序);- m

42、ov a,#0cfh lcall write_com mov a, week_data_hbuf add a,#30h ;加30h修正取ascii碼 lcall write_data mov a,#0c4h ;設定小時第1位的顯示地址為第2行,第0列 lcall write_com mov a, hour_lbuf ;小時的低位緩存數(shù)據(jù) add a,#30h ;加30h修正取ascii碼 lcall write_data mov a,#0c5h ;設定小時第2位的顯示地址為第2行,第1列 lcall write_com mov a, hour_hbuf ;小時的高位緩存數(shù)據(jù) add a,#30

43、h ;加30h修正取ascii碼 lcall write_data mov a,#0c6h ;設定冒號的顯示地址為第2行,第2列 lcall write_com mov a, #3ah ;冒號的ascii碼 lcall write_data mov a,#0c7h ;設定分鐘第1位的顯示地址為第2行,第3列 lcall write_com mov a, mintue_lbuf ;分鐘的低位緩存數(shù)據(jù) add a,#30h ;加30h修正取ascii碼 lcall write_data mov a,#0c8h ;設定分鐘第2位的顯示地址為第2行,第4列 lcall write_com mov a,

44、 mintue_hbuf ;分鐘的高位緩存數(shù)據(jù) add a,#30h ;加30h修正取ascii碼 lcall write_data mov a,#0c9h ;設定冒號的顯示地址為第2行,第5列 lcall write_com mov a, #3ah ;冒號的ascii碼 lcall write_data mov a,#0cah ;設定秒鐘第1位的顯示地址為第2行,第6列 lcall write_com mov a, second_lbuf ;秒鐘的低位緩存數(shù)據(jù) add a,#30h ;加30h修正取ascii碼 lcall write_data mov a,#0cbh ;設定秒鐘第2位的顯示

45、地址為第2行,第7列 lcall write_com mov a, second_hbuf ;秒鐘的高位緩存數(shù)據(jù) add a,#30h ;加30h修正取ascii碼 lcall write_data ret4.3 從1302讀取日期和時間程序 圖4-2 從1302讀取程序下面是一段讀ds1302程序;=讀1302子程序=rd_ds1302: mov ds1302_addr,#8dh ;讀ds1302中的年 lcall read ;調用讀ds1302子程序 mov time_year, ds1302_data ;把讀?00000000000000000000000000- mov time_mo

46、nt, ds1302_data ;把讀出的月數(shù)據(jù)存入月寄存器中 mov ds1302_addr,#87h ;讀ds1302中的天 lcall read mov time_day, ds1302_data ;把讀出的天數(shù)據(jù)存入天寄存器中 mov ds1302_addr,#85h ;讀ds1302中的小時 lcall read mov hour, ds1302_data ;把讀出的天數(shù)據(jù)存入小時寄存器中 mov ds1302_addr,#83h ;讀ds1302中的分鐘 lcall read mov mintue, ds1302_data ;把讀出的天數(shù)據(jù)存入分鐘寄存器中 mov ds1302_a

47、ddr,#81h ;讀ds1302中的秒鐘 lcall read mov second, ds1302_data ;把讀出的天數(shù)據(jù)存入秒鐘寄存器中ret第5章 proteus使用5.1編程環(huán)境proteusproteus軟件是由英國labcenter electronics 公司開發(fā)的eda工具軟件,由isis和ares兩個軟件構成,其中isis是一款便捷的電子系統(tǒng)仿真平臺軟件,ares是一款高級的布線編輯軟件,它集成了高級原理布線圖、混合模式spice電路仿真、pcb設計以及自動布線來實現(xiàn)一個完整的電子設計。5.2 用proteus isis對電子萬年歷的硬件電路設計通過proteus is

48、is軟件的vsm(虛擬仿真技術),用戶可以對模擬電路、數(shù)字電路、模數(shù)混合電路,以及基于微控制器的系統(tǒng)連同所有外圍接口電子元器件一起仿真。用proteus isis設計硬件電路的過程 選擇設計圖紙的到小根據(jù)設計所使用到元器件的多少,選擇合適大小的設計圖紙,操作是單擊菜單欄上的systemset sheet size ,然后彈出如圖5-1所示的對話框,從中選擇合適大小的圖紙,也可以選擇user進行圖紙的自定義設置。在設計過程中也可以通過此方法調整圖紙的大小。 圖 5-1設計圖紙的大小 選取仿真所需的元器件 選取元器件的方式是,單擊如圖5-2所示的按鈕“p”。會彈出如圖5-3所示的窗口。圖 5-2查詢仿真器件圖 5-3選擇需要的仿真器件 從此窗口的左上角的“keywords”中輸入電子萬年歷設計用到的器件,如輸入“at89c51”,在中間會列出帶有輸入關鍵字的元器件,選擇合適的元器件并雙擊它,則已經選擇好了該元器件。然后再在“keywords”

溫馨提示

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

評論

0/150

提交評論