版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
1、唐 山 學(xué) 院單片微機(jī)原理與應(yīng)用課 程 設(shè) 計(jì) 題 目 數(shù)字電子鐘 系 (部) 機(jī)電工程系 班 級(jí) 11測控2班 姓 名 孟凡濤 學(xué) 號(hào) 4110107216 指導(dǎo)教師 田紅霞 王墨琦 2014 年 2 月 24 日至 3 月 7 日 共 2 周2014年 3 月 7 日目 錄1 引 言12 核心芯片簡介22.1 DS1302簡介22.1.1 DS1302引腳功能與內(nèi)部結(jié)構(gòu)22.1.2 DS1302的控制字32.1.3 DS1302的復(fù)位引腳32.1.4 DS1302的數(shù)據(jù)輸入輸出42.1.5 DS1302的寄存器42.2 AT89C52簡介42.2.1 AT89C52芯片的引腳及特點(diǎn)52.2
2、.2 AT89S51的主要性能參數(shù):72.3 74LS245簡介83 方案設(shè)計(jì)與論證94 軟硬件設(shè)計(jì)104.1 硬件電路設(shè)計(jì)104.1.1 單片機(jī)AT89C52外圍電路設(shè)計(jì)104.1.2 DS1302與單片機(jī)的接口設(shè)計(jì)114.1.3 顯示設(shè)計(jì)114.2 軟件實(shí)現(xiàn)124.2.1 程序流程124.2.2 DS1302流程125 結(jié) 論146 參 考 文 獻(xiàn)157 附 錄16附錄一:設(shè)計(jì)電路仿真圖:16附錄二:源程序16附錄三:DS1302.H25 課程設(shè)計(jì)說明書 1 引 言從古代的滴漏更鼓到近代的機(jī)械鐘,從電子表到目前的數(shù)字時(shí)鐘,為了準(zhǔn)確的測量和記錄時(shí)間,人們一直在努力改進(jìn)著計(jì)時(shí)工具。鐘表的數(shù)字化
3、,大力推動(dòng)了計(jì)時(shí)的精確性和可靠性。在單片機(jī)構(gòu)成的裝置中,實(shí)時(shí)時(shí)鐘是必不可少的部件。目前常用的實(shí)時(shí)時(shí)鐘,很多采用單片機(jī)的中斷服務(wù)來實(shí)現(xiàn),這種方式一方面需要采用計(jì)數(shù)器,占用硬件資源,另一方面需要設(shè)置中斷、查詢等,同樣耗費(fèi)單片機(jī)的資源,而且某些測控系統(tǒng)可能不允許;有的則使用并行接口的時(shí)鐘芯片,如MC146818、DS12887等,它們雖然能滿足單片機(jī)系統(tǒng)對實(shí)時(shí)時(shí)鐘的要求,但是這些芯片與單片機(jī)接口復(fù)雜,占用地址、數(shù)據(jù)總線多,芯片體積大,占用空間多,給其它設(shè)計(jì)帶來諸多不便。本設(shè)計(jì)選取串行接口時(shí)鐘芯片DS1302與單片機(jī)同步通信構(gòu)成數(shù)字時(shí)鐘電路。其簡單的三線接口能為單片機(jī)節(jié)省大量資源,DS1302的后背電
4、源及對后背電源進(jìn)行涓細(xì)電流充電的能力保證電路斷電后仍能保存時(shí)間和數(shù)據(jù)信息等。這些優(yōu)點(diǎn)解決了目前常用的實(shí)時(shí)時(shí)鐘所無法解決的問題。該時(shí)鐘電路強(qiáng)大的功能和優(yōu)越的性能,在很多領(lǐng)域的應(yīng)用中,尤其是某些自動(dòng)化控制、長時(shí)間無人看守的測控系統(tǒng)等對時(shí)鐘精確性和可靠性有較高要求的場合,具有很高的使用價(jià)值。2 核心芯片簡介2.1 DS1302簡介DS13021是美國DALLAS公司推出的一種高性能、低功耗、帶RAM的實(shí)時(shí)時(shí)鐘芯片,它可以對年、月、日、周日、時(shí)、分、秒進(jìn)行計(jì)時(shí),且具有閏年補(bǔ)償功能,工作電壓寬達(dá)2.55.5V。時(shí)鐘可工作在24小時(shí)格式或12小時(shí)(AM/PM)格式。 DS1302與單片機(jī)的接口使用同步串行
5、通信,僅用3條線與之相連接??刹捎靡淮蝹魉鸵粋€(gè)字節(jié)或突發(fā)方式一次傳送多個(gè)字節(jié)的時(shí)鐘信號(hào)或RAM數(shù)據(jù)。DS1302內(nèi)部有一個(gè)31×8的用于臨時(shí)性存放數(shù)據(jù)的RAM寄存器。DS1302是DS1202的升級(jí)產(chǎn)品,與DS1202兼容,但增加了主電源后背電源雙電源引腳,同時(shí)提供了對后背電源進(jìn)行涓細(xì)電流充電的能力。2.1.1 DS1302引腳功能與內(nèi)部結(jié)構(gòu) DS1302的引腳功能如表1所示,外形及內(nèi)部結(jié)構(gòu)如圖1所示:表1 DS1302引腳功能表引腳號(hào)引腳名稱功能1VCC2主電源2、3X1、X2振蕩源,外接32768Hz晶振4GND地線5RST復(fù)位/片選線6I/O串行數(shù)據(jù)輸入/輸出端(雙向)7SCL
6、K串行時(shí)鐘輸入端8VCC1后備電源 圖1 DS1302管腳圖及內(nèi)部結(jié)構(gòu)圖2.1.2 DS1302的控制字DS1302的控制字節(jié)如圖2所示: 7 6 5 4 3 2 1 01RAMA4A3A2A1A0RD W圖2 DS1302控制字節(jié)的含義控制字節(jié)的最高有效位(位7)必須是邏輯1,如果它為0,則不能把數(shù)據(jù)寫入到DS1302中。位6如果為0,則表示存取日歷時(shí)鐘數(shù)據(jù),為1表示存取RAM數(shù)據(jù);位5至位1指示操作單元的地址;最低有效位(位0)如為0表示要進(jìn)行寫操作,為1表示進(jìn)行讀操作,控制字節(jié)總是從最低位開始輸出。2.1.3 DS1302的復(fù)位引腳通過把RST從低電平變成高電平啟動(dòng)一次數(shù)據(jù)傳輸過程。 輸
7、入有兩種功能:首先, 接通控制邏輯,允許地址命令序列送入移位寄存器;其次, 提供了終止單字節(jié)或多字節(jié)數(shù)據(jù)的傳送手段。當(dāng) 為高電平時(shí),所有的數(shù)據(jù)傳送被初始化,允許對DS1302進(jìn)行操作。如果在傳送過程中置 為低電平,則會(huì)終止此次數(shù)據(jù)傳送,并且I/O引腳變?yōu)楦咦钁B(tài)。上電運(yùn)行時(shí),在Vcc2.5V之前, 必須保持低電平。只有在SCLK為低電平時(shí),才能將RST置為高電平。2.1.4 DS1302的數(shù)據(jù)輸入輸出在控制指令字輸入后的下一個(gè)SCLK時(shí)鐘的上升沿時(shí)數(shù)據(jù)被寫入DS1302,數(shù)據(jù)輸入從低位即位0開始。同樣,在緊跟8位的控制指令字后的下一個(gè)SCLK脈沖的下降沿讀出DS1302的數(shù)據(jù),讀出數(shù)據(jù)時(shí)從低位0
8、位至高位7,數(shù)據(jù)讀寫時(shí)序如圖3所示:圖3 數(shù)據(jù)讀寫時(shí)序2.1.5 DS1302的寄存器DS1302共有12個(gè)寄存器,其中有7個(gè)寄存器與日歷、時(shí)鐘相關(guān),存放的數(shù)據(jù)位為BCD碼形式。其日歷、時(shí)間寄存器及其控制字見表2。此外,DS1302還有年份寄存器、控制寄存器、充電寄存器、時(shí)鐘突發(fā)寄存器及與RAM相關(guān)的寄存器等。時(shí)鐘突發(fā)寄存器可一次性順序讀寫除充電寄存器外的所有寄存器的內(nèi)容。 DS1302與RAM相關(guān)的寄存器分為兩類,一類是單個(gè)RAM單元,共31個(gè),每個(gè)單元組態(tài)為一個(gè)8位的字節(jié),其命令控制字為C0H-FDH,其中奇數(shù)為讀操作,偶數(shù)為寫操作;再一類為突發(fā)方式下的RAM寄存器,此方式下可一次性讀寫所
9、有的RAM的31個(gè)字節(jié),命令控制字為FEH(寫)、FFH(讀)。表2 DS1302的日歷、時(shí)鐘寄存器及其控制字寄存器名命令字取值范圍各位內(nèi)容寫操作讀操作76543210秒寄存器 80H81H00-59CH10SECSEC3時(shí)寄存器84H85H01-12或00-2312/24010HRHR日寄存器86H87H01-28,29,30,310010DATEDATE月寄存器88H89H01-1200010MMONTH27周寄存器8AH8BH01-0700000DAY年寄存器8CH8DH00-9910YEARYEAR2.2 AT89C52簡介AT89C52是美國Atmel公司生產(chǎn)的低電壓、高性能CMOS
10、 8位單片機(jī),片內(nèi)含8KB的可反復(fù)檫寫的程序存儲(chǔ)器和12B的隨機(jī)存取數(shù)據(jù)存儲(chǔ)器(RAM),器件采用Atmel公司的高密度、非易失性存儲(chǔ)技術(shù)生產(chǎn),兼容標(biāo)準(zhǔn)MCS-51指令系統(tǒng),片內(nèi)配置通用8位中央處理器(CPU)和Flash存儲(chǔ)單元,功能強(qiáng)大的AT89C52單片機(jī)可靈活應(yīng)用于各種控制領(lǐng)域。AT89C52單片機(jī)屬于AT89C51單片機(jī)的增強(qiáng)型,與Intel公司的80C52在引腳排列、硬件組成、工作特點(diǎn)和指令系統(tǒng)等方面兼容。2.2.1 AT89C52芯片的引腳及特點(diǎn) 圖4 AT89S51引腳圖(1)功能特性概括:AT89S51提供以下標(biāo)準(zhǔn)功能:40個(gè)引腳、4K Bytes Flash片內(nèi)程序存儲(chǔ)器、
11、128 Bytes的隨機(jī)存取數(shù)據(jù)存儲(chǔ)器(RAM)、32個(gè)外部雙向輸入/輸出(I/O)口、5個(gè)中斷優(yōu)先級(jí)2層中斷嵌套中斷、2個(gè)數(shù)據(jù)指針、2個(gè)16位可編程定時(shí)/計(jì)數(shù)器、2個(gè)全雙工串行通信口、看門狗(WDT)電路、片內(nèi)振蕩器及時(shí)鐘電路。此外,AT89S51可降至0Hz的靜態(tài)邏輯操作,并支持兩種軟件可選的節(jié)電工作模式??臻e模式下,CPU暫停工作,而RAM、定時(shí)/計(jì)數(shù)器、串行通信口、外中斷系統(tǒng)可繼續(xù)工作。掉電模式凍結(jié)振蕩器而保存RAM的數(shù)據(jù),停止芯片其它功能直至外中斷激活或硬件復(fù)位。同時(shí)該芯片還具有PDIP、TQFP和PLCC等三種封裝形式,以適應(yīng)不同產(chǎn)品的需求。(2)管腳說明:VCC:供電電壓。GND
12、:接地。P0口:P0口為一個(gè)8位漏級(jí)開路雙向I/O口,也即地址/數(shù)據(jù)總線復(fù)用口。作為輸出口用時(shí),能驅(qū)動(dòng)8個(gè)TTL邏輯門電路。對端口寫“1”時(shí),被定義為高阻輸入。在訪問外部數(shù)據(jù)存儲(chǔ)器或程序存儲(chǔ)器時(shí),這組口線分時(shí)轉(zhuǎn)換地址(低8位)和數(shù)據(jù)總線復(fù)用,在訪問期間激活內(nèi)部上拉電阻。P1口:P1口是一個(gè)帶內(nèi)部上拉電阻的8位雙向I/O口,P1口的輸出緩沖級(jí)可驅(qū)動(dòng)(吸收或輸出電流)4個(gè)TTL邏輯門電路。對端口寫“1”,通過內(nèi)部的上拉電阻把端口拉到高電平,此時(shí)可作輸入口。作輸入口使用時(shí),因?yàn)閮?nèi)部存在上拉電阻,某個(gè)引腳被外部信號(hào)拉低時(shí)會(huì)輸出一個(gè)電流(I )。P2 口:P2 是一個(gè)帶有內(nèi)部上拉電阻的8 位雙向I/O
13、口,P2 的輸出緩沖級(jí)可驅(qū)動(dòng)(吸收或輸出電流)4 個(gè)TTL 邏輯門電路。對端口P2 寫“1”,通過內(nèi)部的上拉電阻把端口拉到高電平,此時(shí)可作輸入口,作輸入口使用時(shí),因?yàn)閮?nèi)部存在上拉電阻,某個(gè)引腳被外部信號(hào)拉低時(shí)會(huì)輸出一個(gè)電流(IIL)。在訪問外部程序存儲(chǔ)器或16 位地址的外部數(shù)據(jù)存儲(chǔ)器(例如執(zhí)行MOVX DPTR 指令)時(shí),P2 口送出高8 位地址數(shù)據(jù)。在訪問8 位地址的外部數(shù)據(jù)存儲(chǔ)器(如執(zhí)行MOVX RI 指令)時(shí),P2 口輸出P2 鎖存器的內(nèi)容。P3口: P3口是一個(gè)帶有內(nèi)部上拉電阻的雙向8位I/O口, P3口的輸出緩沖級(jí)可驅(qū)動(dòng)(吸收或輸出電流)4個(gè)TTL邏輯門電路。對P3口寫“1”時(shí),它們
14、被內(nèi)部的上拉電阻拉高并可作為輸入端口。作輸入口使用時(shí),被外部信號(hào)拉低的P3口將用上拉電阻輸出電流(I )。P3口除了作為一般的I/O口線外,更重要的用途是它的第二功能,如表3所示:P3口還接收一些用于Flash閃速存儲(chǔ)器編程和程序校驗(yàn)的控制信號(hào)。表3 P3口引腳第二功能端口引腳第二功能P3.0RXD (串行輸入口)P3.1TXD (串行輸出口)P3.2 (外中斷0)P3.3 (外中斷1)P3.4 T0 (定時(shí)/計(jì)數(shù)器0)P3.5 T1 (定時(shí)/計(jì)數(shù)器1)P3.6 (外部數(shù)據(jù)存儲(chǔ)器寫選通)P3.7 (外部數(shù)據(jù)存儲(chǔ)器讀選通)RST:復(fù)位輸入。當(dāng)振蕩器工作時(shí),RST引腳出現(xiàn)兩個(gè)機(jī)器周期以上的高電平時(shí)
15、間將使單片機(jī)復(fù)位。WDT溢出將使該引腳輸出高電平,設(shè)置SFR AUXR的DISRTO位(地址8EH)可打開或關(guān)閉該功能。 DISRTO位缺省為RESET輸出高電平打開狀態(tài)。ALE/ :當(dāng)訪問外部存儲(chǔ)器或數(shù)據(jù)存儲(chǔ)器時(shí),ALE(地址鎖存允許)輸出脈沖用于鎖存地址的低8位字節(jié)。即使不訪問外部寄存器,ALE仍以時(shí)鐘振蕩頻率的1/6輸出固定的正脈沖信號(hào),因此它可對外輸出時(shí)鐘或用于定時(shí)目的。值得注意的是:每當(dāng)訪問外部數(shù)據(jù)存儲(chǔ)器時(shí)將跳過一個(gè)ALE脈沖。對Flash存儲(chǔ)器編程期間,該引腳還用于輸入編程脈沖( )。如有必要,可通過對特殊功能寄存器(SFR)區(qū)中的8EH單元的D0位置位,可禁止ALE操作。該位置位
16、后,只要一條MOVX和MOVC指令才會(huì)激活A(yù)LE。此外,該引腳會(huì)被微弱拉高,單片機(jī)執(zhí)行外部程序時(shí),應(yīng)設(shè)置ALE無效:程序存儲(chǔ)允許( )輸出是外部程序存儲(chǔ)器的讀選通信號(hào),當(dāng)AT89S51由外部程序存儲(chǔ)器取指令(或數(shù)據(jù))時(shí),每個(gè)機(jī)器周期兩次 有效,即輸出兩個(gè)脈沖。當(dāng)訪問外部數(shù)據(jù)存儲(chǔ)器時(shí),沒有兩次有效的 信號(hào)。EA/VPP:外部訪問允許。欲使CPU僅訪問外部程序存儲(chǔ)器(地址為0000H-FFFFH),EA端必須保持低電平(接地)。需要注意的是:如果加密位LB1被編程,復(fù)位時(shí)內(nèi)部會(huì)鎖存EA端狀態(tài)。如EA端保持高電平(接VCC端),CPU則執(zhí)行內(nèi)部程序存儲(chǔ)器中的指令。Flash存儲(chǔ)器編程期間,該引腳用于
17、施加+12V編程電壓(VPP)。XTAL1:反向振蕩放大器的輸入及內(nèi)部時(shí)鐘工作電路的輸入端。XTAL2:反向振蕩放大器器的輸出端。(3)晶體振蕩器特性: AT89C52中有一個(gè)用于構(gòu)成內(nèi)部振蕩器的高增益反相放大器,引腳XTAL1和XTAL2分別為該反向放大器的輸入端和輸出端。這個(gè)反向放大器與作為反饋元件的片外石英晶體或陶瓷諧振器一起構(gòu)成自激振蕩器。 外接石英晶體(或陶瓷諧振器)及電容C1、C2接在放大器的反饋回路中構(gòu)成并聯(lián)振蕩電路。對外接電容C1、C2雖然沒有十分嚴(yán)格的要求,但電容容量的大小會(huì)輕微影響振蕩頻率的高低、振蕩器工作的穩(wěn)定性、起振的難易程度及溫度穩(wěn)定性。如果使用石英晶體,電容應(yīng)該使用
18、30pF10pF。 還可以使用外部時(shí)鐘。這種情況下,外部時(shí)鐘脈沖接XTAL1端,即內(nèi)部時(shí)鐘發(fā)生器的輸入端, XTAL2應(yīng)懸空。 由于外部時(shí)鐘信號(hào)是通過一個(gè)2分頻觸發(fā)器后作為內(nèi)部時(shí)鐘信號(hào)的,所以外部時(shí)鐘信號(hào)的占空比沒有特殊要求,但最小高電平持續(xù)時(shí)間和最大低電平持續(xù)時(shí)間應(yīng)符合產(chǎn)品技術(shù)條件的要求。2.2.2 AT89S51的主要性能參數(shù):1) 與Mcs-51產(chǎn)品指令和引腳完全兼容。2) 8字節(jié)可重擦寫FLASH閃速存儲(chǔ)器3) 1000 次擦寫周期4) 全靜態(tài)操作:0HZ-24MHZ5) 三級(jí)加密程序存儲(chǔ)器6) 256X8字節(jié)內(nèi)部RAM7) 32個(gè)可編程I/0口線8) 3個(gè)16 位定時(shí)計(jì)數(shù)器9) 8個(gè)
19、中斷源10) 可編程串行UART通道11) 低功耗空閑和掉電模式2.3 74LS245簡介74LS245是我們常用的芯片,用來驅(qū)動(dòng)LED或者其他的設(shè)備,它是8路同相三態(tài)雙向總線收發(fā)器,可雙向傳輸數(shù)據(jù)。74LS245還具有雙向三態(tài)功能,既可以輸出,也可以輸入數(shù)據(jù)。當(dāng)89C52單片機(jī)的P0口總線負(fù)載達(dá)到或超過P0最大負(fù)載能力時(shí),必須接入74LS245等總線驅(qū)動(dòng)器。當(dāng)片選端/CE低電平有效時(shí),DIR=“0”,信號(hào)由 B 向 A 傳輸;(接收)DIR=“1”,信號(hào)由 A 向 B 傳輸;(發(fā)送)當(dāng)/CE為高電平時(shí),A、B均為高阻態(tài)。由于P2口始終輸出地址的高8位,接口時(shí)74LS245的三態(tài)控制端/1G和
20、/2G接地,P2口與驅(qū)動(dòng)器輸入線對應(yīng)相連。P0口與74LS245輸入端相連,/E端接地,保證數(shù)據(jù)現(xiàn)暢通。8051的/RD和/PSEN相與后接DIR,使得/RD或/PSEN有效時(shí),74LS245輸入(P0.iDi),其它時(shí)間處于輸出(P0.iDi)。圖5 74LS245引腳圖3 方案設(shè)計(jì)與論證該設(shè)計(jì)雖然能完成所要求的任務(wù),綜合性能也較好,但其并行接口方式占用大量接口資源,給其它設(shè)計(jì)帶來諸多不便。使用串行接口時(shí)鐘芯片DS1302設(shè)計(jì)時(shí)鐘電路。該設(shè)計(jì)方案以單片機(jī)AT89S51為主控芯片,以串行時(shí)鐘芯片DS1302為核心計(jì)時(shí)芯片,組成數(shù)字時(shí)鐘電路。該電路不但能準(zhǔn)確地計(jì)時(shí)、附加其它功能,而且,其三線接口
21、可以節(jié)省接口資源,在斷電后不丟失時(shí)間和數(shù)據(jù)信息。該設(shè)計(jì)方案的接口電路如圖6所示: 圖6 DS1302與CPU接口通過以上兩種設(shè)計(jì)方案的比較,我們可以看到,設(shè)計(jì)方案二接口簡單,計(jì)時(shí)可靠,綜合性能良好。4 軟硬件設(shè)計(jì)4.1 硬件電路設(shè)計(jì)該設(shè)計(jì)的硬件電路由主控部分(單片機(jī)AT89C52)、計(jì)時(shí)部分(實(shí)時(shí)時(shí)鐘芯片DS1302)、顯示部分(七段數(shù)碼管)3個(gè)部分組成。各部分之間相互協(xié)作,構(gòu)成一個(gè)統(tǒng)一的有機(jī)整體,實(shí)現(xiàn)數(shù)字時(shí)鐘的功能。各部分的硬件電路設(shè)計(jì)如下。設(shè)計(jì)總電路圖見附錄一。4.1.1 單片機(jī)AT89C52外圍電路設(shè)計(jì)單片機(jī)AT89C52作為主控芯片,控制整個(gè)電路的運(yùn)行。單片機(jī)外圍需要一個(gè)復(fù)位電路,復(fù)位
22、電路的功能是:系統(tǒng)上電時(shí)提供復(fù)位信號(hào),直至系統(tǒng)電源穩(wěn)定后,撤消復(fù)位信號(hào)。為可靠起見,電源穩(wěn)定后還要經(jīng)一定的延時(shí)才撤銷復(fù)位信號(hào),以防電源開關(guān)或電源插頭分-合過程中引起的抖動(dòng)而影響復(fù)位。該設(shè)計(jì)采用含有二極管的復(fù)位電路,復(fù)位電路可以有效的解決電源毛刺和電源緩慢下降(電池電壓不足)等引起的問題,在電源電壓瞬間下降時(shí)可以使電容迅速放電,一定寬度的電源毛刺也可令系統(tǒng)可靠復(fù)位。復(fù)位電路的設(shè)計(jì)圖如圖7示: 圖7 單片機(jī)復(fù)位電路圖AT89S51具有在系統(tǒng)可編程功能,可以很方便的改寫單片機(jī)存儲(chǔ)器內(nèi)的程序不需要把芯片中從工作環(huán)境中剝離,把AT89S ISP下載口接入電路,可使電路實(shí)現(xiàn)該功能。AT89S51需要接入一
23、個(gè)普通12MHz晶振,為其提供穩(wěn)定的時(shí)鐘脈沖。該設(shè)計(jì)中有6個(gè)八段數(shù)碼顯示管LED,所以,在單片機(jī)AT89S51外圍需要接入6個(gè)三極管來驅(qū)動(dòng)數(shù)碼顯示管。此外,單片機(jī)外圍需要接入3個(gè)開關(guān),用來調(diào)整時(shí)鐘。單片機(jī)外圍電路的設(shè)計(jì)圖如圖8示:圖8 AT89S52外圍電路圖4.1.2 DS1302與單片機(jī)的接口設(shè)計(jì)時(shí)鐘芯片DS1302與單片機(jī)AT89S51的接口是由3條線來完成的,單片機(jī)AT89S51的P1.0與時(shí)鐘芯片的數(shù)據(jù)傳輸端相連,P1.1用來作為DS1302輸入時(shí)鐘SCLK控制端,P1.2控制DS1302的復(fù)位輸入端。DS1302接標(biāo)準(zhǔn)32.768KHz石英晶振。DS1302與單片機(jī)的接口電路如圖9
24、所示:圖9 DS1302與AT89c52連接圖4.1.3 顯示設(shè)計(jì)八段數(shù)碼顯示管有兩種,一種是共陽數(shù)碼管,其內(nèi)部是由八個(gè)陽極相連接的發(fā)光二極管組成;另一種是共陰數(shù)碼管,其內(nèi)部是由八個(gè)陰極相連接的發(fā)光二極管組成。二者原理不同但功能相同。本設(shè)計(jì)的時(shí)間顯示選用6個(gè)共陰八段數(shù)碼管LED,其外形和內(nèi)部結(jié)構(gòu)如圖10所示: 圖10 八段共陰數(shù)碼管LED4.2 軟件實(shí)現(xiàn)4.2.1 程序流程圖11 主程序流程圖4.2.2 DS1302流程單片機(jī)AT89C52對時(shí)鐘芯片DS1302的控制需要通過程序驅(qū)動(dòng)來實(shí)現(xiàn),程序主要完成兩個(gè)方面的任務(wù):利用單片機(jī)實(shí)現(xiàn)對DS1302寄存器的地址定義和控制字的寫入,實(shí)現(xiàn)對DS130
25、2的數(shù)據(jù)讀取。初始化DS1302要求 為低電平,SCLK為低電平。 被設(shè)置為高電平就啟動(dòng)了一個(gè)數(shù)據(jù)傳送的過程。SCLK的16個(gè)方波完成一次數(shù)據(jù)傳送,前8個(gè)方波用于輸入命令字節(jié),后8個(gè)方波用于數(shù)據(jù)的輸出(讀DS1302)或數(shù)據(jù)的輸入(寫DS1302)。在SCLK的上升沿,I/O線上的數(shù)據(jù)被送入DS1302;在SCLK的下降沿,DS1302輸出數(shù)據(jù)在I/O線上。寫和讀各需要一個(gè)程序,寫DS1302程序流程圖如圖12所示,讀DS1302程序流程圖如圖12所示??偝绦蛞姼戒浂?dòng)讀數(shù)據(jù)字節(jié)一位復(fù)位端變高啟動(dòng)一次數(shù)據(jù)傳送工作結(jié)束SCLK發(fā)脈沖復(fù)位端變低SCLK發(fā)脈沖寫命令字節(jié)一位夠8次嗎?夠8次嗎?NY
26、YN啟動(dòng)寫數(shù)據(jù)字節(jié)一位復(fù)位端變高啟動(dòng)一次數(shù)據(jù)傳送工作結(jié)束SCLK發(fā)脈沖復(fù)位端變低SCLK發(fā)脈沖寫命令字節(jié)一位夠8次嗎?夠8次嗎?NYYN 寫DS1302流程圖 讀DS1302流程圖圖12 DS1302時(shí)間流程圖5 結(jié) 論通過本次設(shè)計(jì),使我們對單片機(jī)的了解有了更加深一步,我發(fā)現(xiàn)只有動(dòng)手做才會(huì)孰能技巧,還有對材料的整理和理解。這次設(shè)計(jì)運(yùn)用到的知識(shí)很多方面,尤其是單片機(jī),像AT89C52,引腳多,硬件內(nèi)部線路接通,所以用起來很方便,還有ds1302芯片與單片機(jī)之間的連接,以及如入使用ds1302芯片。當(dāng)然也要對這些元器件作相應(yīng)調(diào)查。主要就是電路原理圖,還有對引腳的作用熟悉。對于軟件方面則是靈活運(yùn)用單
27、片機(jī)有關(guān)的程序語言,還有很多擴(kuò)展功能,由于知識(shí)匱乏,但是理論知識(shí)還是比較詳細(xì)的。我們最大的成功之處是在這整個(gè)過程,動(dòng)腦尋求解決一個(gè)一個(gè)問題的辦法,對程序是不斷思索,務(wù)必寫出很簡單的程序來,使得電子時(shí)鐘能做成功。本設(shè)計(jì)是在指導(dǎo)老師田紅霞的悉心指導(dǎo)下完成的。從設(shè)計(jì)的選題,相關(guān)資料的查尋,到論文的撰寫這一整個(gè)過程中,田老師以其廣博的知識(shí)、豐富的經(jīng)驗(yàn) 、清晰的思路,自始至終給我以指導(dǎo),使我能夠順利完成設(shè)計(jì),他嚴(yán)謹(jǐn)?shù)闹螌W(xué)態(tài)度,精益求精的工作作風(fēng)和孜孜不倦的求學(xué)精神令我受益匪淺。在此設(shè)計(jì)完成之際,對田老師表示衷心的感謝!6 參 考 文 獻(xiàn)1.李群芳,肖看.單片機(jī)原理、接口及應(yīng)用.清華大學(xué)出版社,2005.
28、32.丁元杰.單片微機(jī)原理及應(yīng)用(第二版).機(jī)械工業(yè)出版社,2005.3.張有德,趙志英.單片微型機(jī)原理、應(yīng)用于實(shí)驗(yàn).復(fù)旦大學(xué)出版社,2000.7 附 錄附錄一:設(shè)計(jì)電路仿真圖:圖13 總電路圖附錄二:源程序 #include<reg52.h>#include<intrins.h>unsigned char a,miao,shi,shi1,shi2,fen,fen1,fen2,x,key1n,temp,j=0,mmiao=0,mfen=0;#include<DS1302.h>unsigned char code dispcode=0xc0,0xf9,0xa4
29、,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0xff;unsigned char code point=0x40,0x79,0x24,0x30,0x19,0x12,0x02,0x78,0x00,0x10; /帶小數(shù)點(diǎn)數(shù)的代碼sbit qiehuan=P30;sbit key1=P31;sbit key2=P32;sbit key3=P33;sbit SD=P34;sbit LED1=P20;sbit LED2=P21;sbit LED3=P22;sbit LED4=P23;sbit LED5=P24;sbit LED6=P25;sbit POT =P07;void
30、display(uchar x);void miaobiaoxianshi();void shengdian();uchar m=0,m1=0,m2=0,m3=0,m4=0;void delayms(uint x) uchar j;while(x-) for(j=0;j<123;j+);void ReadTime() miao = BCD_Decimal(read_1302(0x81); fen = BCD_Decimal(read_1302(0x83); shi = BCD_Decimal(read_1302(0x85); / ri = BCD_Decimal(read_1302(0x
31、87);/ yue = BCD_Decimal(read_1302(0x89);/ nian=BCD_Decimal(read_1302(0x8d); / week=BCD_Decimal(read_1302(0x8b)-1;uchar key1scan()if(key1=0)/-key1為功能鍵(設(shè)置鍵)- delayms(10);/延時(shí),用于消抖動(dòng) if(key1=0)/延時(shí)后再次確認(rèn)按鍵按下 m+; if(m=5)m=0; while(1) display(m);if(key1=1)break; return m;void key2scan(uchar n)if(n!=0)/當(dāng)key1按
32、下以下。再按以下鍵才有效(按鍵次數(shù)不等于零) if(key2=0) /上調(diào)鍵 delayms(10); if(key2=0) while(1)display(m);if(key2=1)break; switch(n) case 1:shi1=shi/10; shi1+; if(shi1=3)shi1=0; temp=shi1*16+(shi)%10;/十進(jìn)制轉(zhuǎn)換成DS1302要求的DCB碼 write_1302(0x8e,0x00);/允許寫,禁止寫保護(hù) write_1302(0x84,temp);/向DS1302內(nèi)寫小時(shí)寄存器84H寫入調(diào)整后的小時(shí)數(shù)據(jù)BCD碼 write_1302(0x8e
33、,0x80);/打開寫保護(hù) break; case 2:shi2=shi%10; shi2+; if(shi/10=2) if(shi2=5)shi2=0; else if(shi2=10)shi2=0; temp=shi/10*16+shi2;/十進(jìn)制轉(zhuǎn)換成DS1302要求的DCB碼 write_1302(0x8e,0x00);/允許寫,禁止寫保護(hù) write_1302(0x84,temp);/向DS1302內(nèi)寫小時(shí)寄存器84H寫入調(diào)整后的小時(shí)數(shù)據(jù)BCD碼 write_1302(0x8e,0x80);/打開寫保護(hù) break; case 3:fen1=fen/10; fen1+;if(fen
34、1=6)fen1=0; temp=fen1*16+(fen)%10;/十進(jìn)制轉(zhuǎn)換成DS1302要求的DCB碼 write_1302(0x8e,0x00);/允許寫,禁止寫保護(hù) write_1302(0x82,temp);/向DS1302內(nèi)寫分寄存器82H寫入調(diào)整后的分?jǐn)?shù)據(jù)BCD碼 write_1302(0x8e,0x80);/打開寫保護(hù) break; case 4:fen2=fen%10; fen2+; if(fen2=10) fen2=0; temp=fen/10*16+fen2;/十進(jìn)制轉(zhuǎn)換成DS1302要求的DCB碼 write_1302(0x8e,0x00);/允許寫,禁止寫保護(hù) wr
35、ite_1302(0x82,temp);/向DS1302內(nèi)寫分寄存器82H寫入調(diào)整后的分?jǐn)?shù)據(jù)BCD碼 write_1302(0x8e,0x80);/打開寫保護(hù) break; void key3scan(uchar n)if(n!=0)/當(dāng)key1按下以下。再按以下鍵才有效(按鍵次數(shù)不等于零) if(key3=0) /上調(diào)鍵 delayms(10); if(key3=0) while(1)display(m);if(key3=1)break; switch(n) case 1:shi1=shi/10; shi1-; if(shi1=(0-1)shi1=2; temp=shi1*16+(shi)%
36、10;/十進(jìn)制轉(zhuǎn)換成DS1302要求的DCB碼 write_1302(0x8e,0x00);/允許寫,禁止寫保護(hù) write_1302(0x84,temp);/向DS1302內(nèi)寫小時(shí)寄存器84H寫入調(diào)整后的小時(shí)數(shù)據(jù)BCD碼 write_1302(0x8e,0x80);/打開寫保護(hù) break; case 2:shi2=shi%10; shi2-; if(shi/10=2) if(shi2=(0-1)shi2=4; else if(shi2=(0-1)shi2=9; temp=shi/10*16+shi2;/十進(jìn)制轉(zhuǎn)換成DS1302要求的DCB碼 write_1302(0x8e,0x00);/允
37、許寫,禁止寫保護(hù) write_1302(0x84,temp);/向DS1302內(nèi)寫小時(shí)寄存器84H寫入調(diào)整后的小時(shí)數(shù)據(jù)BCD碼 write_1302(0x8e,0x80);/打開寫保護(hù) break; case 3:fen1=fen/10; fen1-;if(fen1=(0-1)fen1=5; temp=fen1*16+(fen)%10;/十進(jìn)制轉(zhuǎn)換成DS1302要求的DCB碼 write_1302(0x8e,0x00);/允許寫,禁止寫保護(hù) write_1302(0x82,temp);/向DS1302內(nèi)寫分寄存器82H寫入調(diào)整后的分?jǐn)?shù)據(jù)BCD碼 write_1302(0x8e,0x80);/打
38、開寫保護(hù) break; case 4:fen2=fen%10; fen2-; if(fen2=(0-1) fen2=9; temp=fen/10*16+fen2;/十進(jìn)制轉(zhuǎn)換成DS1302要求的DCB碼 write_1302(0x8e,0x00);/允許寫,禁止寫保護(hù) write_1302(0x82,temp);/向DS1302內(nèi)寫分寄存器82H寫入調(diào)整后的分?jǐn)?shù)據(jù)BCD碼 write_1302(0x8e,0x80);/打開寫保護(hù) break; void display(uchar x) ReadTime(); P0=0xff; P0=dispcodeshi/10; if(x=1)m1+;if(
39、m1=200)m1=0;if(x!=1)m1=0;LED1=1;LED2=0;LED3=0;LED4=0;LED5=0;LED6=0;if(m1%40=0)delayms(1); P0=0xff; P0=dispcodeshi%10; if(x=2)m2+;if(m2=200)m2=0;if(x!=2)m2=0;LED1=0;LED2=1;LED3=0;LED4=0;LED5=0;LED6=0;POT=0;if(m2%40=0)delayms(1); P0=0xff; P0=dispcodefen/10; if(x=3)m3+;if(m3=200)m3=0;if(x!=3)m3=0;LED1=
40、0;LED2=0;LED3=1;LED4=0;LED5=0;LED6=0;if(m3%40=0)delayms(1); P0=0xff; P0=dispcodefen%10; if(x=4)m4+;if(m4=200)m4=0;if(x!=4)m4=0;LED1=0;LED2=0;LED3=0;LED4=1;LED5=0;LED6=0;POT=0;if(m4%40=0)delayms(1); P0=0xff; P0=dispcodemiao/10; LED1=0;LED2=0;LED3=0;LED4=0;LED5=1;LED6=0;delayms(1); P0=0xff; P0=dispcod
41、emiao%10; LED1=0;LED2=0;LED3=0;LED4=0;LED5=0;LED6=1;delayms(1); void miaobiao() if(qiehuan=0) delayms(10);if(qiehuan=0) while(!qiehuan);L02:while(1) P0=0xff; P0=dispcode0; LED1=1;LED2=0;LED3=0;LED4=0;LED5=0;LED6=0;delayms(1); P0=0xff; P0=dispcode0; LED1=0;LED2=1;LED3=0;LED4=0;LED5=0;LED6=0;POT=0;del
42、ayms(1); P0=0xff; P0=dispcode0; LED1=0;LED2=0;LED3=1;LED4=0;LED5=0;LED6=0;delayms(1); P0=0xff; P0=dispcode0; LED1=0;LED2=0;LED3=0;LED4=1;LED5=0;LED6=0;POT=0;delayms(1); P0=0xff; P0=dispcode0; LED1=0;LED2=0;LED3=0;LED4=0;LED5=1;LED6=0;delayms(1); P0=0xff; P0=dispcode0; LED1=0;LED2=0;LED3=0;LED4=0;LED
43、5=0;LED6=1;delayms(1); shengdian(); if(qiehuan=0) delayms(10); if(qiehuan=0)while(!qiehuan);goto L01; if(key2=0) delayms(10); if(key2=0) break; L00: while(1) delayms(10); j+; if(j=100)j=0;mmiao+;if(mmiao=60)mmiao=0;mfen+;miaobiaoxianshi();if(key3=0) delayms(10);if(key3=0) while(1) miaobiaoxianshi();
44、if(key2=0) delayms(10); if(key2=0)goto L00; if(qiehuan=0) delayms(10); if(qiehuan=0) while(!qiehuan); goto L01; if(key1=0) delayms(10); if(key1=0) j=0;mfen=0;mmiao=0; goto L02;if(qiehuan=0) delayms(10); if(qiehuan=0) while(!qiehuan); goto L01; L01: _nop_(); void miaobiaoxianshi() P0=0xff; P0=dispcod
45、emfen/10; if(x=1)m1+;if(m1=200)m1=0;if(x!=1)m1=0;LED1=1;LED2=0;LED3=0;LED4=0;LED5=0;LED6=0;if(m1%40=0)delayms(1);P0=0xff; P0=dispcodemfen%10; if(x=2)m2+;if(m2=200)m2=0;if(x!=2)m2=0;LED1=0;LED2=1;LED3=0;LED4=0;LED5=0;LED6=0;POT=0;if(m2%40=0)delayms(1);P0=0xff; P0=dispcodemmiao/10; if(x=3)m3+;if(m3=200)m3=0;if(x!=3)m3=0;LED1=0;LED2=0;LED3=1;LED4=0;LED5=0;LED6=0;if(m3%40=0)delayms(1
溫馨提示
- 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ǔ)空間,僅對用戶上傳內(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025公司之間無息借款合同模板
- 2025品牌策劃合同
- 2025商鋪買賣定金合同的范本
- 2025工廠物業(yè)管理的合同
- 科技創(chuàng)業(yè)挑戰(zhàn)與機(jī)遇并存
- 職場新人的季節(jié)性胃腸保健指南
- 科學(xué)與工程教育的融合與創(chuàng)新人才培養(yǎng)
- 種植技術(shù)的新時(shí)代農(nóng)業(yè)科技園區(qū)的建設(shè)路徑
- 跨文化背景下的學(xué)生德育評(píng)價(jià)策略
- 二零二五年度床上三件套抗菌技術(shù)研發(fā)合同2篇
- 鉗工考試題及參考答案
- 移動(dòng)商務(wù)內(nèi)容運(yùn)營(吳洪貴)任務(wù)五 引發(fā)用戶共鳴外部條件的把控
- 工程造價(jià)專業(yè)職業(yè)能力分析
- 醫(yī)藥高等數(shù)學(xué)知到章節(jié)答案智慧樹2023年浙江中醫(yī)藥大學(xué)
- 沖渣池施工方案
- 人教版初中英語八年級(jí)下冊 單詞默寫表 漢譯英
- 學(xué)校網(wǎng)絡(luò)信息安全管理辦法
- 中國古代文學(xué)史 馬工程課件(下)21第九編晚清文學(xué) 緒論
- 2023年鐵嶺衛(wèi)生職業(yè)學(xué)院高職單招(語文)試題庫含答案解析
- 2205雙相不銹鋼的焊接工藝
- 2023年全國高中數(shù)學(xué)聯(lián)賽江西省預(yù)賽試題及答案
評(píng)論
0/150
提交評(píng)論