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

下載本文檔

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

文檔簡介

1、基于單片機(jī)控制的電子萬年歷的設(shè)計(jì)摘要單片機(jī)應(yīng)用技術(shù)飛速發(fā)展,縱觀我們現(xiàn)在生活的各個(gè)領(lǐng)域,從導(dǎo)彈的導(dǎo)航裝置,到飛機(jī)上各種儀表的控制,從計(jì)算機(jī)的網(wǎng)絡(luò)通訊與數(shù)據(jù)傳輸,到工業(yè)自動(dòng)化過程的實(shí)時(shí)控制和數(shù)據(jù)處理,以及我們生活中廣泛使用的各種智能ic卡等,這些都離不開單片機(jī)。在本設(shè)計(jì)中采用單片機(jī)at89c52作為控制器來控制電路。本設(shè)計(jì)分別對(duì)硬、軟件進(jìn)行設(shè)計(jì)說明。硬件包括制器at89c52、時(shí)鐘電路ds1302、顯示電路及鍵盤掃描電路組成,比如ds1302時(shí)鐘芯片包括實(shí)時(shí)時(shí)鐘/日歷和31字節(jié)的靜態(tài)ram。它經(jīng)過一個(gè)簡單的串行接口與微處理器通信。實(shí)時(shí)時(shí)鐘/日歷提供秒、分、時(shí)、日、周、月和年等信息。軟件部分給出了

2、部分程序流程圖的設(shè)計(jì),包括陽歷程序、時(shí)間調(diào)整程序和陰歷程序。陽歷程序是從ds1302各個(gè)寄存器中讀出年、周、月、日、時(shí)、分、秒等數(shù)據(jù)。時(shí)間調(diào)整程序時(shí)用來正確的執(zhí)行調(diào)整時(shí)間的功能。陰歷程序的是要靠陽歷日期來推算的。推算方法是,根據(jù)陽歷當(dāng)前日期在一年中的天數(shù)來計(jì)算陰歷日期。軟件編程采用匯編語言編寫,因?yàn)槠浜啙?、使用方便靈活、容易實(shí)現(xiàn)程序的模塊化和結(jié)構(gòu)化。關(guān)鍵詞:at89c52芯片;ds1302芯片;匯編語言;陽歷程序;陰歷程序design of electronic calendar based on single chip microcomputer control abstractmicroc

3、omputer application technology rapid development, throughout we now all spheres of life, from missile navigation devices, to the aircraft various kinds of instrument control, from the computer network communication and data transmission, to industrial automation process real-time control and data pr

4、ocessing, as well as our life is widely used in all kinds of intelligent ic card, these are inseparable from microcontroller. in this design uses the monolithic at89c52 as controller to control circuit. the design of hardware and software respectively design explains. hardware including making machi

5、nes at89c52 single, clocking circuit ds1302, display circuit and keypad scanning circuit component, such as ds1302 clock chip including real-time clock/calendar and 31 bytes of static ram. it passes through a simple serial interface and microprocessor communications. real-time clock/calendar provide

6、s seconds, points, when, day, week, month and year and other information. software part gives part of the program flowchart design, including the gregorian calendar procedure, time adjustment procedures and lunar program. the gregorian calendar program ds1302 register read from each year, week, mont

7、h, day, when data such as, minutes and seconds. time to adjust to the correct implementation program adjusting time functions. lunar program is to rely on the gregorian calendar date of extrapolate. computative method is, according to the solar calendar days of the year the current date to calculate

8、 the lunar calendar date. software programming using assembly language, because it is simple and easy to use agile and easy to implement procedures of modular and structured. key words: at89c52 single chip;ds1302 chip;assembly language;gregorian calendar program;lunar program目錄摘要iabstractii1 緒論11.1

9、單片機(jī)的介紹11.2 本設(shè)計(jì)的要求21.2.1功能要求21.2.2方案論證21.3 本設(shè)計(jì)的內(nèi)容31.3.1 硬件31.3.2 軟件32 系統(tǒng)硬件電路的設(shè)計(jì)42.1主控制器的設(shè)計(jì)42.1.1 at89c52主要性能特點(diǎn)42.1.2 at89c52引腳圖與引腳功能42.1.3 主控制器的連線圖72.2 時(shí)鐘電路的設(shè)計(jì)82.2.1芯片介紹82.2.2 ds1302數(shù)據(jù)操作原理82.2.3時(shí)鐘電路的連線圖112.3 顯示電路的設(shè)計(jì)123 系統(tǒng)程序的設(shè)計(jì)153.1陽歷程序153.2時(shí)間調(diào)整程序153.3陰歷程序163.4顯示程序20總結(jié)21致謝22參考文獻(xiàn)23附錄a 控制程序清單24附錄b 電路圖34

10、1 緒論1.1 單片機(jī)的介紹單片機(jī)的全稱是單片微型計(jì)算機(jī)(single chip micro-computer)。為了使用方便,它把組成計(jì)算機(jī)的主要功能部件:中央處理器(cpu)、數(shù)據(jù)存儲(chǔ)器(ram)、程序存儲(chǔ)器(rom、eptom、e2prom或flash)、定時(shí)/計(jì)數(shù)器和各種輸入/輸出接口電路等都集成在一塊半導(dǎo)體芯片上,構(gòu)成了一個(gè)完整的計(jì)算機(jī)系統(tǒng)。與通用的計(jì)算機(jī)不同,單片機(jī)的指令功能是按照工業(yè)控制的要求設(shè)計(jì),因此它又被稱為微控制器(microcontroller)。單片機(jī)具有體積小、重量輕、耗能省、價(jià)格低、可靠性高和通用靈活等優(yōu)點(diǎn)。近幾年來,單片機(jī)的發(fā)展更為迅速,它已滲透到諸多學(xué)科的領(lǐng)域,

11、以及人們生活的各個(gè)方面,如今單片機(jī)已廣泛地應(yīng)用在智能儀器儀表、機(jī)電設(shè)備過程控制、自動(dòng)檢測、家用電器和數(shù)據(jù)處理等各個(gè)方面。單片機(jī)出現(xiàn)的歷史并不長,它的產(chǎn)生于發(fā)展與微處理器的產(chǎn)生于發(fā)展大體上同步,也經(jīng)歷了3個(gè)階段: 第一個(gè)階段:20世紀(jì)70年代為單片機(jī)的初級(jí)階段。 這個(gè)階段以intel公司的mcs-48系列單片機(jī)為典型代表。因受工藝和集成度限制,單片機(jī)中的cpu功能低、存貯器容量小、io接口的種類和數(shù)量少,只能用在簡單場合。 第二個(gè)階段:20世紀(jì)80年代為單片機(jī)的成熟階段。 這個(gè)階段以intel的mcs-51、mcs-96系列單片機(jī)為典型代表。出現(xiàn)了性能較高的8位和16位單片機(jī)。提高了cpu的功能

12、、擴(kuò)大了存貯器的容量、增加了io接口種類和數(shù)量,單片機(jī)內(nèi)包括了異步串行口、a/d、多功能定時(shí)器等特殊io電路。單片機(jī)應(yīng)用也得到了推廣。 第三個(gè)階段:20世紀(jì)90年代至今為單片機(jī)高速發(fā)展階段。 世界上著名半導(dǎo)體廠商不斷推出各種新型的8位、16位和32位單片機(jī),單片機(jī)的性能不斷完善,品種大量增加,在功能、功耗、體積、價(jià)格等方面能滿足各種復(fù)雜的或簡單的應(yīng)用場合需求,單片機(jī)應(yīng)用深入到各行業(yè)和消費(fèi)類的電子產(chǎn)品中1。單片機(jī)是為了實(shí)現(xiàn)控制功能而設(shè)計(jì)的一種微型計(jì)算機(jī),它的應(yīng)用首先是控制功能,即實(shí)現(xiàn)計(jì)算機(jī)控制。目前單片機(jī)滲透到我們生活的各個(gè)領(lǐng)域。單片機(jī)控制技術(shù)制藥研究如何控制計(jì)算機(jī)技術(shù)和自動(dòng)控制理論應(yīng)用于工業(yè)生

13、產(chǎn)過程中。隨著科學(xué)技術(shù)的不斷發(fā)展,單片機(jī)報(bào)時(shí)控制技術(shù)的應(yīng)用領(lǐng)域已經(jīng)日益廣泛,如在冶金、化工、電力、自動(dòng)化機(jī)床、工業(yè)機(jī)器人控制、柔韌制造系統(tǒng)和計(jì)算機(jī)集成制造系統(tǒng)等工業(yè)測控方面,已經(jīng)取得了令人矚目的研究與應(yīng)用成果,并在國民經(jīng)濟(jì)中發(fā)揮著越來越大的作用。 報(bào)時(shí)系統(tǒng)在現(xiàn)代社會(huì)中應(yīng)用很廣泛,大到大型的企業(yè)集團(tuán),小到一個(gè)學(xué)校的定時(shí)系統(tǒng)以及家用的具有智能性的鬧鐘等。報(bào)時(shí)系統(tǒng)最重要的一個(gè)特性就是體現(xiàn)出其控制時(shí)間的準(zhǔn)確性、精確性。本設(shè)計(jì)任務(wù)正是以時(shí)間為控制對(duì)象,設(shè)計(jì)一個(gè)由單片機(jī)控制的報(bào)時(shí)系統(tǒng)。我所設(shè)計(jì)的基于單片機(jī)的自動(dòng)報(bào)時(shí)系統(tǒng),它不僅能實(shí)現(xiàn)數(shù)字電子時(shí)鐘的各種功能,如具有較時(shí)、調(diào)時(shí)、定時(shí)、鬧鐘等功能,而且還能實(shí)現(xiàn)定

14、點(diǎn)報(bào)時(shí)的功能。實(shí)時(shí)時(shí)鐘可提供秒、分、時(shí)、日、星期、月和年,一個(gè)月小于31天時(shí)可以自動(dòng)調(diào)整,本設(shè)計(jì)具有簡單,實(shí)用性強(qiáng),成本低,使用維護(hù)方便,軟件功能強(qiáng),運(yùn)行穩(wěn)定可靠等優(yōu)點(diǎn)2。1.2 本設(shè)計(jì)的要求1.2.1功能要求電子萬年歷能顯示陽歷年、月、日、星期、時(shí)、分、秒和陰歷月、日,在顯示農(nóng)歷時(shí)間時(shí),能表明是否為閏年。1.2.2方案論證按照系統(tǒng)審計(jì)功能的要求,初步確定系統(tǒng)由主控模塊、時(shí)鐘模塊、顯示模塊和鍵盤接口模塊共4個(gè)模塊組成,電路系統(tǒng)構(gòu)成框圖如圖1.1所示。主控芯片使用51系列at89c52單片機(jī),時(shí)鐘芯片使用美國dallas公司推出的一種高性能、低功耗、帶ram的實(shí)時(shí)時(shí)鐘ds1302。采用ds130

15、2作為計(jì)時(shí)芯片,可以做到計(jì)時(shí)準(zhǔn)確。更重要的是,ds1302可以在很小電流的后備電源(2.55.5v電源,在2.5v時(shí)耗點(diǎn)小于300na)下繼續(xù)計(jì)時(shí),而且ds1302可以編程選擇多種充電電流來對(duì)后備電源進(jìn)行慢速充電,可以保證后備電源基本不耗電。顯示模塊采用普通模塊采用普通的共陽led數(shù)碼管,鍵輸出采用查詢法實(shí)現(xiàn)功能調(diào)整3。時(shí)鐘電路(ds1302)主控模塊(89c52)鍵掃描電路led顯示電路圖1.1 電子萬年歷電路系統(tǒng)構(gòu)成框圖1.3 本設(shè)計(jì)的內(nèi)容1.3.1 硬件根據(jù)設(shè)計(jì)要求,系統(tǒng)的組成框圖如圖1.1所示,主要由主控制器at89c52、時(shí)鐘電路ds1302、顯示電路及鍵掃描電路組成。對(duì)于電子萬年歷

16、來說,硬件系統(tǒng)是它的最基本的框架,是系統(tǒng)的所有功能的基礎(chǔ)。硬件的選擇和所選硬件的性能對(duì)系統(tǒng)的功能實(shí)現(xiàn)以及系統(tǒng)的精度都有直接的影響,系統(tǒng)的設(shè)計(jì)成功與否很大程度上取決于硬件系統(tǒng)的設(shè)計(jì)。1.3.2 軟件 本設(shè)計(jì)主要采用匯編語言進(jìn)行編程,同時(shí)利用protel99se進(jìn)行電路圖的繪制。本設(shè)計(jì)主要分為3部分,分別是陽歷程序、時(shí)間調(diào)整程序和陰歷程序。陽歷程序是從ds1302各個(gè)寄存器中讀出年、周、月、日、時(shí)、分、秒等數(shù)據(jù)。時(shí)間調(diào)整程序時(shí)用來正確的執(zhí)行調(diào)整時(shí)間的功能。陰歷程序的是要靠陽歷日期來推算的。推算方法是,根據(jù)陽歷當(dāng)前日期在一年中的天數(shù)來計(jì)算陰歷日期。2 系統(tǒng)硬件電路的設(shè)計(jì)附錄b所示為電子萬年歷電路設(shè)計(jì)

17、原理圖,系統(tǒng)由主控制器at89c52、時(shí)鐘電路ds1302、顯示電路及鍵掃描電路組成。2.1主控制器的設(shè)計(jì)本設(shè)計(jì)采用了芯片at89c52作為核心控制器。at89c52是atmel公司產(chǎn)生的一款性能穩(wěn)定的8位單片機(jī)。at89c52具有1kb的flash程序存儲(chǔ)器,1個(gè)512字節(jié)的ram,4個(gè)8位的雙向可位尋址i/o端口,3個(gè)16位的定時(shí)/計(jì)數(shù)器及1個(gè)串行口和6個(gè)向量二級(jí)中斷結(jié)構(gòu)。2.1.1 at89c52主要性能特點(diǎn)at89c52的性能特性如下4: 1. 8kb flash rom,可以擦除1000次以上,數(shù)據(jù)保存10年。2. 256字節(jié)內(nèi)部ram。3. 電源控制模式:1) 時(shí)鐘可停止和恢復(fù);2

18、) 空閑模式;3) 掉電模式。4. 6個(gè)中斷源。5. 4個(gè)中斷優(yōu)先級(jí)。6. 4個(gè)8位i/o口。7. 全雙工增強(qiáng)型uart。8. 3個(gè)16位定時(shí)/計(jì)數(shù)器:t0、t1(標(biāo)準(zhǔn)80c51)和增加的t2(捕獲和比較)。9. 全靜態(tài)工作方式:024mhz。2.1.2 at89c52引腳圖與引腳功能at89c52的引腳排列如圖2.1所示。圖2.1 at89c52的引腳at89c52的引腳功能介紹如下5:1. rst:復(fù)位輸入。晶振工作時(shí),rst腳持續(xù)2個(gè)機(jī)器周期高電平將使單片機(jī)復(fù)位。特殊寄存器auxr(地址8eh)上的disrto位可以使此功能無效。disrto默認(rèn)狀態(tài)下,復(fù)位高電平有效。2. ale/:地

19、址鎖存控制信號(hào)(ale)是訪問外部程序存儲(chǔ)器時(shí),鎖存底8位地址的輸出脈沖。在flash編程時(shí),此引腳()也用作編程輸入脈沖。在一般情況下,ale以晶振六分之一的固定頻率輸出脈沖,可用來作為外部 定時(shí)器或時(shí)鐘使用。然而,特別強(qiáng)調(diào),在每次訪問外部數(shù)據(jù)存儲(chǔ)器時(shí),ale脈沖將會(huì)跳過。如果需要,通過將地址為8eh的sfr的第0位置“1”,ale操作將無效。這一位置“1”,ale僅在執(zhí)行movx或movc指令時(shí)有效。否則,ale將被微弱拉高。這個(gè)ale使能標(biāo)志位(地址為8eh的sfr的第0位)的設(shè)置對(duì)微控制器處于外部執(zhí)行模式下無效。3. :外部程序存儲(chǔ)器選通信號(hào)()是外部程序存儲(chǔ)器選通信號(hào)。當(dāng)at89c5

20、2從外部程序存儲(chǔ)器執(zhí)行外部代碼時(shí),在每個(gè)機(jī)器周期被激活兩次,而在訪問外部數(shù)據(jù)存儲(chǔ)器時(shí),將不被激活。4. /vpp:訪問外部程序存儲(chǔ)器控制信號(hào)。為使能從0000h到ffffh的外部程序存儲(chǔ)器讀取指令,必須接gnd。為了執(zhí)行內(nèi)部程序指令,應(yīng)該接vcc。在flash編程期間,也接收12伏vpp電壓。5. xtal1:振蕩器反相放大器和內(nèi)部時(shí)鐘發(fā)生電路的輸入端。6. xtal2:振蕩器反相放大器的輸出端。7. vcc:電源。8. gnd:地。9. p0口:p0口是一個(gè)8位漏極開路的雙向i/o口。作為輸出口,每位能驅(qū)動(dòng)8個(gè)ttl邏輯電平。對(duì)p0端口寫“1”時(shí),引腳用作高電阻抗輸入。當(dāng)訪問外部程序和數(shù)據(jù)存

21、儲(chǔ)器時(shí),p0口也被作為低8為地址/數(shù)據(jù)復(fù)用。在這種模式下,p0具有內(nèi)部上拉電阻。10. p1口:p1口是一個(gè)具有內(nèi)部上拉電阻的8位雙向i/o口,p1輸出緩沖器驅(qū)動(dòng)4個(gè)ttl邏輯電平。對(duì)p1端口寫“1”時(shí),內(nèi)部上拉電阻把端口拉高,此時(shí)可以作為輸入口使用。作為輸入使用時(shí),被外部拉低的引腳有一內(nèi)部電阻的原因,將輸出電流(iil)。此外,p1.0和p1.2分別作定時(shí)器/計(jì)數(shù)器2的外部計(jì)數(shù)輸入(p1.0/t2)和定時(shí)器/計(jì)數(shù)器2的觸發(fā)輸入(p1.1/t2ex),在flash編程和校驗(yàn)時(shí),p1口接收低8位地址字節(jié)。p1.0的第二功能是代替t2(定時(shí)器/計(jì)數(shù)器t2的外部計(jì)數(shù)輸入),時(shí)鐘輸出;p1.1的第二功

22、能是代替t2ex(定時(shí)器/計(jì)數(shù)器t2的捕捉/沖在觸發(fā)信號(hào)和方向控制);p1.5的第二功能是代替mosi(在系統(tǒng)編程用);p1.6的第二功能是代替miso(在系統(tǒng)編程用);p1.7的第二功能是代替sck(在系統(tǒng)編程)。11. p2口:p2口是一個(gè)具有內(nèi)部上拉電阻的8位雙向i/o口,p2輸出緩沖器能驅(qū)動(dòng)4個(gè)ttl邏輯電平。對(duì)p2端口寫“1”時(shí),內(nèi)部上拉電阻把端口拉高,此時(shí)可以作為輸入口使用。作為輸入口使用時(shí),被外部拉低的引腳由于內(nèi)部電阻的原因,將輸出電流(iil)。在訪問外部程序存儲(chǔ)器或用16位地址讀取外部數(shù)據(jù)存儲(chǔ)器(例如執(zhí)行movx dptr)時(shí),p2口送出高八位地址。在這種應(yīng)用中,p2口使用很

23、強(qiáng)的內(nèi)部上拉發(fā)送1。在使用8位地址(如movx ri)訪問外部數(shù)據(jù)存儲(chǔ)器時(shí),p2口輸出p2鎖存器的內(nèi)容。在flash編程和校驗(yàn)時(shí),p2口也接收高8位地址字節(jié)和一些控制信號(hào)。12. p3口:p3口是一個(gè)具有內(nèi)部上拉電阻的8位雙向i/o口,p2輸出緩沖器能驅(qū)動(dòng)4個(gè)ttl邏輯電平。對(duì)p3端口寫“1”時(shí),內(nèi)部上拉電阻把端口拉高,此時(shí)可以作為輸入口使用。作為輸入使用時(shí),被外部拉低的引腳由于內(nèi)部電阻的原因,將輸出電流(iil)。p3口亦作為at89c52特殊功能(第二功能)使用,在flash編程和校驗(yàn)時(shí),p3口也接收一些控制信號(hào)。p3.0可代替rxd(串行輸入);p3.1可代替txd(串行輸出);p3.2

24、可替代(外部中斷0);p3.3可代替(外部中斷0);p3.4可代替t0(定時(shí)器0外部輸入);p3.5可代替t1(定時(shí)器1外部輸入);p3.6可代替(外部數(shù)據(jù)存儲(chǔ)器寫選通);p3.7可代替(外部數(shù)據(jù)存儲(chǔ)器寫選通)。2.1.3主控制器的連線圖主控制器模塊電路圖如圖2.2所示,rst接復(fù)位電路,p1.0/t、p1.1/t和p1.2接按鍵電路,int1和int0接時(shí)鐘電路,p2.0p2.6、rxd和txd接顯示電路。圖2.2 主控制模塊電路圖2.2 時(shí)鐘電路的設(shè)計(jì)2.2.1芯片介紹1. ds1302的性能特性:1) 實(shí)時(shí)時(shí)鐘,可對(duì)秒、分、時(shí)、日、周、月以及帶閏年補(bǔ)償?shù)哪赀M(jìn)行計(jì)數(shù);2) 用于高速數(shù)據(jù)暫存

25、的318位ram;3) 最少引腳的串行i/o;4) 2.55.5v電壓工作范圍;5) 2.5v時(shí)耗電小于300na;6) 用于時(shí)鐘或ram數(shù)據(jù)讀/寫的單字節(jié)或多字節(jié)(脈沖方式)數(shù)據(jù)傳送方式;7) 簡單的三線接口;8) 可選的慢速充電(至vcc1)的能力。ds1302時(shí)鐘芯片包括實(shí)時(shí)時(shí)鐘/日歷和31字節(jié)的靜態(tài)ram。它經(jīng)過一個(gè)簡單的串行接口與微處理器通信。實(shí)時(shí)時(shí)鐘/日歷提供秒、分、時(shí)、日、周、月和年等信息。對(duì)于小于31天的月和月末的日期自動(dòng)進(jìn)行調(diào)整,還包括閏年校正的功能。時(shí)鐘的運(yùn)行可以采用24時(shí)或帶am(上午)/pm(下午)的12時(shí)的格式。采用三線接口與cpu進(jìn)行同步通信,并可采用突發(fā)方式一次傳

26、送多字節(jié)的時(shí)鐘信號(hào)或ram數(shù)據(jù)。ds1302有主電源.后備電源雙電源引腳:vcc1在單電源與電池供電的系統(tǒng)中提供低電源,并提供低功率的電池備份;vcc2在雙電源系統(tǒng)中提供主電源。在這種運(yùn)用方式中,vcc1連接到后背電源,以便在沒有主電源的情況下能保存時(shí)間信息以及數(shù)據(jù)。ds1302由vcc1或vcc2中較大者供電。當(dāng)vcc2(vcc1+0.2v)時(shí),vcc2給ds1302供電;當(dāng)vcc2vcc1時(shí),ds1302由vcc1供電6。2.2.2 ds1302數(shù)據(jù)操作原理ds1302在任何數(shù)據(jù)傳送時(shí)必須先初始化,把rst腳置為高電平,然后把8位地址和命令字裝入移位寄存器,數(shù)據(jù)在sclk的上升沿被輸入。無

27、論是讀周期還是寫周期,開始8位指定40個(gè)寄存器中哪個(gè)將被訪問到。在開始8個(gè)時(shí)鐘周期,把命令字節(jié)裝入移位寄存器后,另外的時(shí)鐘周期在讀操作時(shí)輸出數(shù)據(jù),在寫操作時(shí)候?qū)懭霐?shù)據(jù)。時(shí)鐘脈沖的個(gè)數(shù)在單字節(jié)方式下為8+8,在多字節(jié)方式下為8+字節(jié)數(shù),最大可達(dá)248字節(jié)數(shù)。 如果在傳送過程中置rst腳為低電平,則會(huì)終止本次數(shù)據(jù)傳送,并且i/o引腳變?yōu)楦咦钁B(tài)。上電運(yùn)行時(shí),在vcc2.5v之前,rst腳必須保持低電平。只有在sclk為低電平時(shí),才能將rst置為高電平。ds1302的引腳及內(nèi)部結(jié)構(gòu)圖如圖2.3所示。表2.1所列為各引腳的功能7。電源控制vcc1vcc2gnd輸入移位寄存器實(shí)時(shí)時(shí)鐘命令與控制邏輯i/os

28、clk振蕩器與分頻器318ramx1x23.2768khz數(shù)據(jù)總線圖2.3 ds1032 引腳及內(nèi)部結(jié)構(gòu) ds1302的控制字如圖2.4所示。控制字節(jié)的最高有效位(位7)必須是邏輯1,如果它為0,則不能把數(shù)據(jù)寫入到ds1302中。位6如果為0,則表示存取日歷時(shí)鐘數(shù)據(jù);為1則表示存取ram數(shù)據(jù)。位51(a4a0)指示操作單位的地址。最低有效位(位0)如果為0,則表示要進(jìn)行寫操作;為1表示進(jìn)行讀操作。控制字節(jié)總是從最低位開始輸入/輸出。表2.1 ds1302引腳功能引腳號(hào)引腳名稱功能1vcc2主電源2,3x1,x2振蕩源,外接32768hz晶振4gnd地線5復(fù)位/片選線6i/o串行數(shù)據(jù)輸入/輸出端

29、(雙向)7sclk串行數(shù)據(jù)輸入端8vcc1后備電源 7 6 5 4 3 2 1 01ram a4a3a2a1a0ram圖2.4 ds1302的控制字 為了提高對(duì)32個(gè)地址尋址能力(地址/命令位15=邏輯1),可以把時(shí)鐘/日歷或ram寄存器規(guī)定為多字節(jié)(burst)方式。位6規(guī)定時(shí)鐘或ram,而位0規(guī)定讀或?qū)?。在時(shí)鐘/日歷寄存器中的地址931或ram寄存器中的地址31不能存儲(chǔ)數(shù)據(jù)。在多字節(jié)方式中,讀或?qū)憦牡刂?的位0開始。必須按數(shù)據(jù)傳送的次序?qū)懽钕鹊?個(gè)寄存器。但是,當(dāng)以多字節(jié)方式寫ram時(shí),為了傳送數(shù)據(jù)不必寫所有的31字節(jié)。不管是否寫了全部31字節(jié),所寫的每一字節(jié)都將傳送至ram。ds1302

30、共有12個(gè)寄存器,其中有7個(gè)寄存器與日歷、時(shí)鐘相關(guān),存放的數(shù)據(jù)位為bcd碼形式。其日歷、時(shí)間寄存器及其控制字日表2.2所列,其中奇數(shù)為讀操作,偶數(shù)為寫操作。表2.2 內(nèi)部寄存器地址和內(nèi)容寄存器名命令字節(jié)取值范圍寄存器內(nèi)容寫讀76543210秒寄存器80h81h0059ch10secsec分寄存器82h83h0059010minmin時(shí)寄存器84h85h0023或011212/24010a/phrhr日期寄存器86h87h0128、29、30、310010datedate月份寄存器88h89h011200010mmonth周寄存器8ah8bh010700000day年寄存器8ch8dh00991

31、0yearyear 時(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)。 am-pm/12-24時(shí)方式:時(shí)寄存器的位7定義為12或24時(shí)方式選擇位。它為高電平時(shí),選擇12時(shí)方式。在此方式下,位5是am/pm位,高電平時(shí)表示pm,低電平時(shí)表示am。在24時(shí)方式下,位5為第二個(gè)10時(shí)位(2023h)。 ds1302的晶振選用32768hz,電容推薦值為6 pf。因?yàn)檎袷庮l率較低,也可以不接電容,對(duì)計(jì)時(shí)精度影響不大。2.2.3時(shí)鐘電路的連線圖時(shí)鐘電路連接如圖2.

32、5所示。圖2.5 時(shí)鐘電路2.3 顯示電路的設(shè)計(jì)顯示部分采用普通的共陽數(shù)碼管顯示,采用動(dòng)態(tài)掃描,以減少硬件電路??紤]到一次掃描19位數(shù)碼管顯示時(shí)會(huì)出現(xiàn)閃爍情況,設(shè)計(jì)時(shí)19個(gè)數(shù)碼管分3排同時(shí)掃描,第一排6個(gè)數(shù)碼管分別為千年、百年、十年、年、十月、月,第二排6位數(shù)碼管分別為十時(shí)、時(shí)、十分、分、十秒、秒,第三排7位數(shù)碼管分別為星期、陰歷十月、陰歷月、陰歷十日、陰歷日、十日、日。顯示時(shí)采用串行口輸出段碼,用3片74ls164來驅(qū)動(dòng)3排數(shù)碼管,這樣掃描一次只需7ms。顯示電路連接圖如圖2.6所示。圖2.6 顯示電路 74ls164內(nèi)部為8個(gè)d觸發(fā)器,用以實(shí)現(xiàn)數(shù)據(jù)的串行移位。74ls164的特性如表2.3

33、所列。表2.3 74ls164特性表操作模式輸入輸出復(fù)位mrabq0q1q7移位llq0q6hlllq0q6hlhlq0q6hhllq0q6hhhhq0q6單片機(jī)以串行口方式0(移位寄存器方式)輸出數(shù)據(jù),3片74ls164作為3排共陽數(shù)碼管的串/并轉(zhuǎn)換顯示接口。74ls164為ttl單向8位移位寄存器,可實(shí)現(xiàn)串行輸入,并行輸出。其中a、b(第1、2腳)為串行數(shù)據(jù)輸入端,兩個(gè)引腳按邏輯“與”運(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ù)全部移入7

34、4ls164中。mr腳(第9腳)為復(fù)位端,當(dāng)該腳為低電平時(shí),移位寄存器各位復(fù)0;只有當(dāng)它為高電平時(shí),時(shí)鐘脈沖才起作用。q1q8(第36和1013引腳)并行輸出端分別接數(shù)碼管的h、g、f、e、d、c、b、a各段對(duì)應(yīng)的引腳上(因?yàn)榇锌趶牡臀婚_始傳送)。在給出了8個(gè)脈沖后,最先進(jìn)入74ls164的第一字節(jié)數(shù)據(jù)到達(dá)了最高位。再來一個(gè)脈沖,第一個(gè)脈沖就會(huì)從最高位移出,進(jìn)入下個(gè)74ls164的第一位。3片74ls164首尾相串,而時(shí)鐘端則接在一起。這樣,當(dāng)輸入8個(gè)脈沖時(shí),從單片機(jī)rxd端輸出的第一字節(jié)數(shù)據(jù)就進(jìn)入到了第一片74ls164中,而當(dāng)?shù)诙€(gè)8個(gè)脈沖到來后,第一字節(jié)數(shù)據(jù)就進(jìn)入了第二片74ls164

35、,而隨后的第二字節(jié)的數(shù)據(jù)則進(jìn)入了第一片74ls164。這樣,當(dāng)?shù)谌?個(gè)脈沖完成后,首次送出的數(shù)據(jù)被送到了最下面的164(第三片)中,其他數(shù)據(jù)一次出現(xiàn)在第二、第一片74ls164中,實(shí)現(xiàn)了數(shù)據(jù)在74ls164中的串行輸入、并行輸出。在方式0狀態(tài)下,串行口為同步移位寄存器方式,其波特率是固定的,為fosc/12;數(shù)據(jù)由rxd(p3.0)端輸入或輸出,同步移位脈沖由txd(p3.1)端輸出;發(fā)送、接收數(shù)據(jù)時(shí),低位在先。因此,根據(jù)提供的硬件電路圖,在編寫程序時(shí),查共陽數(shù)碼管的段碼的二進(jìn)制數(shù)據(jù)應(yīng)該將正常的共陽數(shù)碼管09的二進(jìn)制值按位反序排序,例如原來的二進(jìn)制11000000(c0h),要改為00000

36、011(03h),就能使數(shù)碼管正常顯示8。3 系統(tǒng)程序的設(shè)計(jì)本設(shè)計(jì)主要采用匯編語言進(jìn)行編程,同時(shí)利用protel99se進(jìn)行電路圖的繪制。本設(shè)計(jì)主要分為3部分,分別是陽歷程序、時(shí)間調(diào)整程序和陰歷程序。3.1陽歷程序 因?yàn)槭褂昧藭r(shí)鐘芯片ds1302,陽歷程序只需從ds1302各個(gè)寄存器中讀出年、周、月、日、時(shí)、分、秒等數(shù)據(jù),再處理即可。在首次對(duì)ds1302進(jìn)行操作前,必須對(duì)它進(jìn)行初始化,然后從ds1302中讀出數(shù)據(jù),再經(jīng)過處理后,送給顯示緩沖單元。陽歷程序流程圖如圖3.1所示。開始初始化13021302開始振蕩從1302中讀出年、周、月、日、時(shí)、分、秒讀出的數(shù)據(jù)都為bcd碼,將其高低位分離,送顯

37、示緩沖單元圖3.1 陽歷程序流程圖3.2時(shí)間調(diào)整程序 調(diào)整時(shí)間用2個(gè)調(diào)整按鈕(注:電路圖中畫有3個(gè)按鈕,另一個(gè)按鈕讀者可用于減1操作鍵),1個(gè)作為移位、控制用,另外1個(gè)作為加調(diào)整用,分別定義為控制按鈕、加按鈕。在調(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)整程序流程圖如圖3.2所示。3.3陰歷程序陰歷程序的

38、是要靠陽歷日期來推算的。要根據(jù)陽歷來推算陰歷日期,首先要設(shè)計(jì)算法。推算方法是,根據(jù)陽歷當(dāng)前日期在一年中的天數(shù)來計(jì)算陰歷日期。陽歷一個(gè)月不是30天就是31天(2月除外,閏年2月為29年,平年2月為28天)。陰歷一年有12個(gè)月或13個(gè)月(含閏月),一個(gè)月為30天或29天。如果把一個(gè)只有29天的月稱為小月,用1為標(biāo)志,把30天的月稱為大月,用0為標(biāo)志,那么12位二進(jìn)制就能表示一年12個(gè)月的大小。如果有閏月,則把閏月的月份作為一字節(jié)的高4位,低4位表示閏月大小,大月為0,小月為1.這樣,一字節(jié)就包含了所有閏月的信息。陰歷春節(jié)和陽歷元旦相差的天數(shù)也用一字節(jié)表示??偣灿?字節(jié)就可以存儲(chǔ)一年中任何一天陽歷與

39、陰歷對(duì)應(yīng)關(guān)系的有關(guān)數(shù)據(jù),例如2004年的陰歷與陽歷對(duì)應(yīng)關(guān)系如表3.1所列。 表3.1 2004年的陰歷與陽歷對(duì)應(yīng)關(guān)系表月份123456789101112閏2月大小小大大大小大小大小大小大小天數(shù)1000101010101二進(jìn)制293030302930293029302930十六進(jìn)制44422255522221控制鍵有效,進(jìn)入年調(diào)整程序控制鍵有效,進(jìn)入月調(diào)整程序等待按鍵程序加鍵有效年加1控制鍵有效,進(jìn)入日調(diào)整程序控制鍵有效,進(jìn)入星期調(diào)整程序控制鍵有效,進(jìn)入是調(diào)整程序控制鍵有效,進(jìn)入分調(diào)整程序等待按鍵程序等待按鍵程序等待按鍵程序等待按鍵程序等待按鍵程序加鍵有效加鍵有效加鍵有效加鍵有效加鍵有效月加1日

40、加1星期加1時(shí)加1分加1控制鍵有效,跳出時(shí)間調(diào)整程序,進(jìn)入主循環(huán)程序圖3.2 時(shí)間調(diào)整程序流程圖 2004年的春節(jié)和元旦差21天,這樣2004年的信息表示為:21,42h,52h,21h。其中表示12個(gè)月大小信息的字節(jié),第4位和第7位不用。第一字節(jié)為十進(jìn)制,其他的都為十六進(jìn)制。按此方法,50年的陽歷和陰歷對(duì)應(yīng)關(guān)系表總共使用200字節(jié)。 有了算法和數(shù)據(jù)以后,就可設(shè)計(jì)軟件了。先要根據(jù)當(dāng)前陽歷的日期,算出陽歷為該年中的第幾天。圖3.3所示為計(jì)算陽歷中任何一天在該年中為第幾天的程序流程圖。置陽歷總天數(shù)為0當(dāng)前月為1總天數(shù)中加入該月天數(shù)月數(shù)加1與當(dāng)前月同?總天數(shù)中加入號(hào)數(shù)當(dāng)前號(hào)數(shù)是總天數(shù)計(jì)算陽歷天數(shù)結(jié)束

41、,總天數(shù)中的數(shù)據(jù)為當(dāng)前日期在陽歷年中為第幾天nnyy圖3.3 計(jì)算陽歷天數(shù)程序流程圖 計(jì)算出當(dāng)前陽歷日期為該年中的第幾天后,再減去陽歷該年春節(jié)和元旦的日差,如果夠減,則相減的結(jié)果就是陰歷在該年的總第幾天了,根據(jù)該數(shù)據(jù)就可以推算出具體的當(dāng)前陰歷日期;如果不夠減,則表示當(dāng)前陰歷年為陽歷年的前一年。在這種情況下,根據(jù)實(shí)際,當(dāng)前陰歷日期會(huì)處于陰歷11月或12月,此時(shí)春節(jié)和元旦的日差減去前面計(jì)算出的當(dāng)前陽歷日期在陽歷年為第幾天的數(shù)據(jù),其結(jié)果表示當(dāng)前陰歷日期離春節(jié)的天數(shù)。計(jì)算出的陽歷天數(shù)為該年的第幾天,存放在寄存器r2和r3中。計(jì)算出天數(shù)后,如果大于ffh,則把ffh存放在r2中,余值存放在r3中。也就是

42、說,在用寄存器r2和r3表示的天數(shù)信息中,r2充當(dāng)主寄存器,數(shù)據(jù)先存滿r2,再存r3。在整個(gè)轉(zhuǎn)換程序中,這里面得數(shù)據(jù)不能被覆蓋。 計(jì)算出陽歷總天數(shù)后,就可以根據(jù)它來推算陰歷日期。推算方法是,先用總天數(shù)減去春節(jié)和元旦的日差,如果結(jié)果為1,則該天正好是春節(jié)(因?yàn)榇汗?jié)在元旦之后,在計(jì)算春節(jié)和元旦的日差時(shí),假設(shè)元旦為0天,春節(jié)為n天,則日差為n,而前面計(jì)算的陽歷總天數(shù)是該天在該年中的第幾天,是以元旦為1而得到的,與計(jì)算春節(jié)和元旦日差的這種方法相比,其數(shù)值少了1,所以要在原來本應(yīng)該以0作為該天就是春節(jié)的依據(jù)的基礎(chǔ)上加1,即以1作為該天是春節(jié)的標(biāo)志);如果結(jié)果小于1,則陰歷應(yīng)該是陽歷的前一年;如果結(jié)果大于

43、1,說明陽歷和陰歷為同一年。再根據(jù)查表所得的該年的陰歷的閏月和大小月的信息,就可以推算出該天的陰歷日期了。圖3.4所示為由總天數(shù)推算出陰歷日期的程序流程圖。程序入口r2減1個(gè)月天數(shù)減去閏月天數(shù)月加1夠減下個(gè)月為閏月r3=0?r2=r2+r3r3=0r2=0?月份為當(dāng)前正在減的月份的前一個(gè)月的最后一天月份為當(dāng)前正在減的月份,號(hào)數(shù)為r2中的值yynnynyn圖3.4 推算陰歷日期的程序流圖3.4顯示程序采用動(dòng)態(tài)掃描顯示,由19個(gè)數(shù)碼管,3個(gè)譯碼器74ls138接1k限流電阻,再接8550三極管接到共陽數(shù)碼管的com端作為選通位碼,每位選擇相應(yīng)的列。顯示程序流程圖如3.5所示。初始化調(diào)日、秒、月數(shù)據(jù)

44、調(diào)星期數(shù)據(jù)a數(shù)據(jù)左移,數(shù)據(jù)送人r5返回置p2口為1延時(shí)1ms掃描字送p2口調(diào)農(nóng)歷日、月、年數(shù)據(jù)acc.6=0?ny圖3.5 顯示程序流程圖 總結(jié) 通過這次萬年歷的畢業(yè)設(shè)計(jì),掌握了設(shè)計(jì)電子系統(tǒng)的基本方法和過程。用匯編語言設(shè)計(jì)實(shí)現(xiàn)的電子萬年歷,是一個(gè)以硬件設(shè)計(jì)位置,軟件配結(jié)合使用的過程。這種軟件設(shè)計(jì)與硬件設(shè)計(jì)的結(jié)合,以一片器件代替由多片小規(guī)模集成數(shù)字電路組成的電路,其優(yōu)勢已經(jīng)越來越明顯。由此可見,在進(jìn)行系統(tǒng)設(shè)計(jì)時(shí),如果系統(tǒng)比較復(fù)雜,所需器件數(shù)目多,并要求體積小、速度快、功耗低時(shí),首先應(yīng)該考慮用匯編語言來進(jìn)行芯片設(shè)計(jì),然后再進(jìn)行整體設(shè)計(jì)。 在這次畢業(yè)設(shè)計(jì)過程中,我從一個(gè)對(duì)匯編語言還不太懂,算是一個(gè)入

45、門的新手,到現(xiàn)在可以基本讀懂程序,并會(huì)用keil軟件對(duì)錯(cuò)誤程序進(jìn)行基本修改的層次,這算是一種進(jìn)步。通過對(duì)電子萬年歷這個(gè)設(shè)計(jì)任務(wù)進(jìn)行實(shí)際設(shè)計(jì)和調(diào)試,這使我產(chǎn)生了對(duì)電子技術(shù)的濃厚興趣,相信這種興趣會(huì)在今后的學(xué)習(xí)工作中起到很大推動(dòng)作用,我也相信,在今后,我會(huì)更深一步的去接觸電子產(chǎn)品以及這個(gè)行業(yè)。致謝 在本次論文設(shè)計(jì)過程中,赫健老師對(duì)該論文從選題,構(gòu)思到最后定稿的各個(gè)環(huán)節(jié)給予細(xì)心指引與教導(dǎo),使我得以最終完成畢業(yè)論文設(shè)計(jì)。在學(xué)習(xí)中,老師嚴(yán)謹(jǐn)?shù)闹螌W(xué)態(tài)度、豐富淵博的知識(shí)、敏銳的學(xué)術(shù)思維、精益求精的工作態(tài)度以及誨人不倦的師者風(fēng)范是我終身學(xué)習(xí)的楷模,導(dǎo)師們的高深精湛的造詣與嚴(yán)謹(jǐn)求實(shí)的治學(xué)精神,將永遠(yuǎn)激勵(lì)著我。這

46、四年中還得到眾多老師的關(guān)心支持和幫助。在此,謹(jǐn)向老師們致以衷心的感謝和崇高的敬意! 最后,我要向百忙之中抽出時(shí)間對(duì)本文進(jìn)行審閱,評(píng)議和參與本人論文答辯的各位老師表示感謝。參考文獻(xiàn)1 楊子文.單片機(jī)原理及應(yīng)用m,西安電子科技大學(xué)出版社,2006:5-6.2 張友得,趙志英,涂時(shí)亮單片微型機(jī)原理、應(yīng)用與實(shí)驗(yàn)m。復(fù)旦大學(xué)出版社,2006:1-3.3 樓然苗,李光飛.單片機(jī)課程設(shè)計(jì)指導(dǎo)m.北京航空航天大學(xué)出版社,2007:115-130.4 王幸之,鐘愛琴,王雷,王閃.at89系列單片機(jī)原理與接口技術(shù)m.北京航空航天大學(xué)出版社,2003:20-26.5 吳炳勝,80c51單片機(jī)原理與應(yīng)用技術(shù),貽金工業(yè)

47、出版社,2003:53-54.6 張俊謨,單片機(jī)中級(jí)教程,北京航空航天大學(xué)出版社,2006,3:75-76.7 楊將新,李華軍,劉東駿.單片機(jī)程序設(shè)計(jì)以應(yīng)用m.電子工業(yè)出本社,2006,3:89-92.8 何立民.單片機(jī)應(yīng)用技術(shù)大全m.北京航空航天大學(xué)出版社,1994:35-37.附錄a 控制程序清單 以下是電子萬年歷匯編源程序:* 萬年歷程序 *從1302中讀出的數(shù)據(jù)放在67h(高2位年)、66h(低2位年)、65h(月)64h(星期)、63h(日)、62h(時(shí))、61h(分)、60h(秒)、57h(農(nóng)歷月)、56h(農(nóng)歷日)顯示緩沖單元7ch7bh(4ch4bh)(年低位)、7ah79h(4ah49h)(月)、78h(48h)(星期)、77h76h(47h46h)(日)、75h74h(45h44h)(時(shí))、73h72h(43h42h)(分)、71h70h(41h40h)(秒)、5eh5dh(55h54h)(農(nóng)歷年)、5ch5bh(53h52h)(農(nóng)歷月)、5ah59h(51h50h)(農(nóng)歷日)閏月標(biāo)志為f0,定時(shí)器t1為調(diào)整時(shí)閃爍用slcr equ p3.2io equ p3.3rst equ p3.4

溫馨提示

  • 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. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論