




版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、課程設(shè)計(jì)說(shuō)明書(shū)課程名稱(chēng):2011級(jí)機(jī)電專(zhuān)業(yè)課程設(shè)計(jì)題 目 智能電子鐘(LCD顯示)學(xué) 院:機(jī)電工程學(xué)院系:機(jī)電專(zhuān)業(yè):機(jī)械設(shè)計(jì)制造及其自動(dòng)化班級(jí):機(jī)制XXX班學(xué)號(hào):XXXXXXXXX學(xué)生姓名: XXXXX起訖日期:指導(dǎo)教師: xxxxxx 職稱(chēng): 系分管主任:審核日期:摘要電子時(shí)鐘主要是利用電子技術(shù)將時(shí)鐘電子化、數(shù)字化,擁有時(shí)鐘精確、體積小、 界面友好、可擴(kuò)展性能強(qiáng)等特點(diǎn),被廣泛應(yīng)用于生活和工作當(dāng)中。另外,在生活和 工農(nóng)業(yè)生產(chǎn)中,也常常需要溫度,這就需要電子時(shí)鐘具有多功能性。本設(shè)計(jì)主要為 實(shí)現(xiàn)一款可正常顯示時(shí)鐘 / 日歷、帶有定時(shí)鬧鈴的多功能電子時(shí)鐘。本文對(duì)當(dāng)前電子鐘開(kāi)發(fā)手段進(jìn)行了比較和分析,最
2、終確定了采用單片機(jī)技術(shù)實(shí)現(xiàn) 多功能電子時(shí)鐘。本設(shè)計(jì)應(yīng)用 AT89C51芯片作為核心,使用 DS1302實(shí)時(shí)時(shí)鐘日歷 芯片完成時(shí)鐘 / 日歷的基本功能。這種實(shí)現(xiàn)方法的優(yōu)點(diǎn)是電路簡(jiǎn)單,性能可靠,實(shí)時(shí) 性好,時(shí)間精確,操作簡(jiǎn)單,編程容易。該電子時(shí)鐘可以應(yīng)用于一般的生活和工作中,也可通過(guò)改裝,提高性能,增加 新功能,從而給人們的生活和工作帶來(lái)更多的方便。關(guān)鍵詞:電子時(shí)鐘;多功能; AT89C51;DS1302第 1章 總體設(shè)計(jì)方案1.1 方案設(shè)計(jì)實(shí)時(shí)時(shí)鐘芯片具備年、月、日、時(shí)、分、秒計(jì)時(shí)功能和多點(diǎn)計(jì)時(shí)功能,計(jì)時(shí)數(shù)據(jù)的更 新每秒自動(dòng)進(jìn)行一次,不需程序干預(yù)。計(jì)算機(jī)可通過(guò)中斷或查詢(xún)方式讀取計(jì)時(shí)數(shù)據(jù)進(jìn)行顯 示
3、,因此計(jì)時(shí)功能的實(shí)現(xiàn)無(wú)需占用 CPU 的時(shí)間,程序簡(jiǎn)單。此外,實(shí)時(shí)時(shí)鐘芯片多數(shù)帶有 鋰電池做后備電源,具備永不停止的計(jì)時(shí)功能;具有可編程方波輸出功能,可用做實(shí)時(shí)測(cè) 控系統(tǒng)的采樣信號(hào)等;有的實(shí)時(shí)時(shí)鐘芯片內(nèi)部還帶有非易失性 RAM ,可用來(lái)存放需長(zhǎng)期 保存但有時(shí)也需變更的數(shù)據(jù),由于功能完善,精度高,軟件程序設(shè)計(jì)相對(duì)簡(jiǎn)單,且計(jì)時(shí)不 占用 CPU 時(shí)間,因此,在工業(yè)實(shí)時(shí)測(cè)控系統(tǒng)中多采用這一類(lèi)專(zhuān)用芯片來(lái)實(shí)現(xiàn)實(shí)時(shí)時(shí)鐘功能。利用單片機(jī)內(nèi)部的定時(shí) / 計(jì)數(shù)器進(jìn)行中斷定時(shí),配合軟件延時(shí)實(shí)現(xiàn)時(shí)、分、秒的計(jì)時(shí) 及秒表計(jì)時(shí)。 該方案節(jié)省硬件成本, 且能使設(shè)計(jì)者對(duì)單片機(jī)的指令系統(tǒng)能有更深入的了解, 從而掌握單片機(jī)應(yīng)用技
4、術(shù) MCS-51 匯編語(yǔ)言程序設(shè)計(jì)方法,因此,本系統(tǒng)設(shè)計(jì)采用此種軟 件控制方法來(lái)實(shí)現(xiàn)計(jì)時(shí)。 而由于 Atmel 公司的 AT89C51 是一種自帶 4KB Flash 存儲(chǔ)器的 低電壓、高性能的 CMOS 8 位微處理器。該器件采用 Atmel 高密度非易失存儲(chǔ)器制造 技術(shù)制造,與工業(yè)標(biāo)準(zhǔn)的 MCS-51 指令集和輸出引腳相兼容。它的功能強(qiáng)大,而且也比 較容易購(gòu)買(mǎi),故本設(shè)計(jì)中所選的單片機(jī)為 AT89C51 單片機(jī)。1.2 系統(tǒng)框圖按照系統(tǒng)設(shè)計(jì)功能的要求,初步確定系統(tǒng)由主控模塊、時(shí)控模塊、及顯示模塊和鍵盤(pán) 接口模塊共 4 個(gè)模塊組成。主控芯片使用 51 系列 AT89C51 單片機(jī),時(shí)鐘芯片使用
5、美國(guó) DALLAS公司推出的一種高性能、低功耗、帶 RAM的實(shí)時(shí)時(shí)鐘DS1302。采用DS1302作 為計(jì)時(shí)芯片,可以做到計(jì)時(shí)準(zhǔn)確。更重要的是,DS1302可以在很小電流的后備電源(2.5 5.5V電源,再2.5V時(shí)耗電小于300nA),而且DS1302可以編程選擇多種充電電流來(lái)為后 備電源進(jìn)行慢速充電,可以保證后備電源基本不耗電。顯示模塊采用普通的液晶顯示屏(LCD),設(shè)計(jì)框圖如圖1所示圖1 設(shè)計(jì)方案框圖第2章核心芯片簡(jiǎn)介2.1 DS1302 簡(jiǎn)介DS1302是美國(guó)DALLAS公司推出的一種高性能、低功耗、帶 RAM的實(shí)時(shí)時(shí)鐘芯片, 它可以對(duì)年、月、日、周日、時(shí)、分、秒進(jìn)行計(jì)時(shí),且具有閏年補(bǔ)
6、償功能,工作電壓寬達(dá) 2.55.5V。時(shí)鐘可工作在24小時(shí)格式或12小時(shí)(AM/PM )格式。DS1302與單片機(jī)的接口 使用同步串行通信,僅用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í)提供了對(duì)后背電源進(jìn)行涓細(xì)電流充電的能力。2.1.1 DS1302引腳功能與內(nèi)部結(jié)構(gòu)DS1302的引腳功能如表1所示,外形及內(nèi)部結(jié)構(gòu)如圖2所示:表1 DS1302引腳功能表引腳號(hào)引腳名稱(chēng)功能1VCC
7、2主電源2、3X1、X2振蕩源,外接32768Hz晶振4GND地線5RST復(fù)位/片選線6I/O串行數(shù)據(jù)輸入/輸出端(雙向)7SCLK串行時(shí)鐘輸入端8VCC1后備電源 M電源控制k 一VcVcG1/SCRSV18J VcCCX27 scX匚36J I/2G4532X2X1振蕩器與分頻器實(shí)時(shí)時(shí)鐘31x8RAMAD命令與控 制邏輯輸入移位寄 存器圖2 DS1302管腳圖及內(nèi)部結(jié)構(gòu)圖2.1.2 DS1302 控制字DS1302的控制字節(jié)如表2所示:表2 DS1302控制字節(jié)的含義765432101ram/ CKA4A3A2A1A0控制字節(jié)的最高有效位(位7)必須是邏輯1,如果它為0,則不能把數(shù)據(jù)寫(xiě)入到
8、DS1302 中。位6如果為0,則表示存取日歷時(shí)鐘數(shù)據(jù),為1表示存取RAM數(shù)據(jù);位5至位1指示操 作單元的地址;最低有效位(位0)如為0表示要進(jìn)行寫(xiě)操作,為1表示進(jìn)行讀操作,控制 字節(jié)總是從最低位開(kāi)始輸出。2.1.3 DS1302復(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引腳變 為高阻態(tài)。上電運(yùn)行時(shí),在 V
9、cc2.5V之前,RST必須保持低電平。只有在 SCLK為低電 平時(shí),才能將RST置為高電平。2.1.4 DS1302數(shù)據(jù)的輸入與輸出在控制指令字輸入后的下一個(gè)SCLK時(shí)鐘的上升沿時(shí)數(shù)據(jù)被寫(xiě)入DS1302,數(shù)據(jù)輸入從低位即位0開(kāi)始。同樣,在緊跟8位的控制指令字后的下一個(gè)SCLK脈沖的下降沿讀出DS1302 的數(shù)據(jù),讀出數(shù)據(jù)時(shí)從低位0位至高位7,數(shù)據(jù)讀寫(xiě)時(shí)序如圖3所示:SCLKRSTI/Onnnnnnnnnnnnnntzz1101234567014567R/WA0A1A2A3A4R/C1DATA I/O BYTE1DATA I/O BYTE2圖3數(shù)據(jù)讀寫(xiě)時(shí)序2.1.5 DS1302 寄存器DS1
10、302共有12個(gè)寄存器,其中有7個(gè)寄存器與日歷、時(shí)鐘相關(guān),存放的數(shù)據(jù)位為BCD 碼形式。其日歷、時(shí)間寄存器及其控制字見(jiàn)表 3。此外,DS1302還有年份寄存器、控制寄存器、充電寄存器、時(shí)鐘突發(fā)寄存器及與RAM相關(guān)的寄存器等。時(shí)鐘突發(fā)寄存器可一次性順序讀寫(xiě)除充電寄存器外的所有寄存器的內(nèi) 容。DS1302與RAM相關(guān)的寄存器分為兩類(lèi),一類(lèi)是單個(gè) RAM單元,共31個(gè),每個(gè)單 元組態(tài)為一個(gè)8位的字節(jié),其命令控制字為 C0H-FDH,其中奇數(shù)為讀操作,偶數(shù)為寫(xiě)操 作;再一類(lèi)為突發(fā)方式下的RAM寄存器,此方式下可一次性讀寫(xiě)所有的 RAM的31個(gè)字 節(jié),命令控制字為FEH (寫(xiě))、FFH (讀)。表3 D
11、S1302的日歷、時(shí)鐘寄存器及其控制字寄存器名命令字取值范圍各位內(nèi)容寫(xiě)操作讀操作765432 1 0秒寄存器80H81H00-59CH10SECSEC分寄存器82H83H00-59010MINMIN時(shí)寄存器84H85H01-12 或00-2312/24010HRHR日寄存器86H87H01-28,29,30,310010DATEDATE月寄存器88H89H01-1200010MMONTH周寄存器8AH8BH01-0700000DAY年寄存器8CH8DH00-9910YEARYEAR2.2AT89C51 簡(jiǎn)介AT89C51 是一種帶 4K 字節(jié) FLASH 存儲(chǔ)器(FPEROM Flash Pr
12、ogrammable andErasable Read Only Memory)的低電壓、高性能 CMOS 8位微處理器,俗稱(chēng)單片機(jī)。AT89C2051是一種帶2K字節(jié)閃存可編程可擦除只讀存儲(chǔ)器的單片機(jī)。單片機(jī)的可擦除只 讀存儲(chǔ)器可以反復(fù)擦除1000次。該器件采用ATMEL高密度非易失存儲(chǔ)器制造技術(shù)制造, 與工業(yè)標(biāo)準(zhǔn)的MCS-51指令集和輸出管腳相兼容。由于將多功能8位CPU和閃爍存儲(chǔ)器組 合在單個(gè)芯片中,ATMEL的AT89C51是一種高效微控制器,AT89C2051是它的一種精簡(jiǎn) 版本。AT89C51單片機(jī)為很多嵌入式控制系統(tǒng)提供了一種靈活性高且價(jià)廉的方案。2.2.1 AT89C51芯片引
13、腳及特點(diǎn)AT89S51芯片的引腳結(jié)構(gòu)如圖4所示:345678廠 910111213141516171819201P1.0VCCPL1POOP1.2P0.1P1.3P0.2P1.4P1 5P0.4P1.6P0.5P1.7P0.6RESAPDP0.7P3.0RXDEA-TODP3.1TXDALETROGP3.2 INTOPSENP3.3.NfTP2.7P2.6P3.5/TIP2,5P3.6WRP2.4P3.7.TOP2.3XTALlP2,2XTAL2P2.1GNDP2.0STCS9C?!393373635別3332j302726252423222140圖4 AT89C51芯片的引腳結(jié)構(gòu)圖(1)功能
14、特性概括:AT89C51提供以下標(biāo)準(zhǔn)功能:40個(gè)引腳、4K Bytes Flash片內(nèi)程序存儲(chǔ)器、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è)全雙工串行通信口、 看門(mén)狗(WDT)電路、片內(nèi)振蕩器及時(shí)鐘電路。此外, AT89C51可降至0Hz的靜態(tài)邏輯 操作,并支持兩種軟件可選的節(jié)電工作模式??臻e模式下,CPU暫停工作,而RAM、定時(shí)/計(jì)數(shù)器、串行通信口、外中斷系統(tǒng)可繼續(xù)工作。掉電模式凍結(jié)振蕩器而保存 RAM的數(shù)據(jù), 停止芯片其它功能直至外中斷激活或硬件復(fù)位。同時(shí)
15、該芯片還具有PDIP、TQFP和PLCC等三種封裝形式,以適應(yīng)不同產(chǎn)品的需求。(2)管腳說(shuō)明:VCC :供電電壓。GND :接地。P0 口: P0 口為一個(gè)8位漏級(jí)開(kāi)路雙向I/O 口,也即地址/數(shù)據(jù)總線復(fù)用口。作為輸出 口用時(shí),能驅(qū)動(dòng)8個(gè)TTL邏輯門(mén)電路。對(duì)端口寫(xiě)“ 1”時(shí),被定義為高阻輸入在訪問(wèn)外部數(shù)據(jù)存儲(chǔ)器或程序存儲(chǔ)器時(shí),這組口線分時(shí)轉(zhuǎn)換地址(低8位)和數(shù)據(jù)總線復(fù)用,在訪問(wèn)期間激活內(nèi)部上拉電阻。在Flash編程時(shí),P0 口接收指令字節(jié),而在程序校驗(yàn)時(shí),輸出指令字節(jié),校驗(yàn)時(shí),要 求外接上拉電阻。P1 口 :P1 口是一個(gè)帶內(nèi)部上拉電阻的 8位雙向I/O 口 ,P1 口的輸出緩沖級(jí)可驅(qū)動(dòng)(吸收
16、 或輸出電流)4個(gè)TTL邏輯門(mén)電路。對(duì)端口寫(xiě)“T ,通過(guò)內(nèi)部的上拉電阻把端口拉到高電平, 此時(shí)可作輸入口。作輸入口使用時(shí),因?yàn)閮?nèi)部存在上拉電阻,某個(gè)引腳被外部信號(hào)拉低時(shí)會(huì) 輸出一個(gè)電流(I)。在Flash編程和程序校驗(yàn)期間,P1接收低8位地址。部分端口還有第二功能,如表4所示表4 P1 口部分引腳第二功能端口引腳第二功能P1.5MOSI(用于ISP編程)P1.6MISO(用于ISP編程)P1.7SCK (用于ISP編程)P2 口 :P2 口是一個(gè)帶有內(nèi)部上拉電阻的8位雙向I/O 口 , P2 口的輸出緩沖級(jí)可驅(qū)動(dòng)(吸 收或輸出電流)4個(gè)TTL邏輯門(mén)電路。對(duì)端口寫(xiě)“ 1”,通過(guò)內(nèi)部的上拉電阻把端
17、口拉到高電 平此時(shí)可作輸入口。作輸入口使用時(shí),因?yàn)閮?nèi)部存在上拉電阻,某個(gè)引腳被外部信號(hào)拉低時(shí) 會(huì)輸出一個(gè)電流(I il )。在訪問(wèn)外部程序存儲(chǔ)器或16位地址的外部數(shù)據(jù)存儲(chǔ)器(例如執(zhí)行MOVXDPTR指令) 時(shí),P2 口送出高8位地址數(shù)據(jù)。在訪問(wèn)8位地址的外部數(shù)據(jù)寄存器(例如執(zhí)行MOVXRi 指令)時(shí),P2 口線上的內(nèi)容(也即特殊功能寄存器(SFR)區(qū)中P2寄存器的內(nèi)容),在整個(gè)訪問(wèn)期 間不改變。在Flash編程或校驗(yàn)時(shí),P2亦接收高位地址和其它控制信號(hào)。P3 口 : P3 口是一個(gè)帶有內(nèi)部上拉電阻的雙向 8位I/O 口 , P3 口的輸出緩沖級(jí)可驅(qū)動(dòng)(吸 收或輸出電流)4個(gè)TTL邏輯門(mén)電路。對(duì)
18、P3 口寫(xiě)“ 1”時(shí),它們被內(nèi)部的上拉電阻拉高并可 作為輸入端口。作輸入口使用時(shí),被外部信號(hào)拉低的P3 口將用上拉電阻輸出電流(I)。P3 口除了作為一般的I/O 口線外,更重要的用途是它的第二功能,如表5所示: P3 口還接收一些用于Flash閃速存儲(chǔ)器編程和程序校驗(yàn)的控制信號(hào)。表5 P3 口引腳第二功能端口引腳第二功能P3.0RXD(串行輸入口)P3.1TXD(串行輸出口)P3.2INT 0(外中斷0)P3.3INT 1(外中斷1)P3.4T0(定時(shí)/計(jì)數(shù)器0)P3.5T1(定時(shí)/計(jì)數(shù)器1)P3.6WR (外部數(shù)據(jù)存儲(chǔ)器寫(xiě)選通)P3.7RD (外部數(shù)據(jù)存儲(chǔ)器讀選通)RST:復(fù)位輸入。當(dāng)振蕩
19、器工作時(shí),RST引腳出現(xiàn)兩個(gè)機(jī)器周期以上的高電平時(shí)間將 使單片機(jī)復(fù)位。WDT溢出將使該引腳輸出高電平,設(shè)置SFR AUXR的DISRTO位(地址8EH) 可打開(kāi)或關(guān)閉該功能。DISRTO位缺省為RESET輸出高電平打開(kāi)狀態(tài)。ALE/ PROG :當(dāng)訪問(wèn)外部存儲(chǔ)器或數(shù)據(jù)存儲(chǔ)器時(shí),ALE(地址鎖存允許)輸出脈沖用于鎖 存地址的低8位字節(jié)。即使不訪問(wèn)外部寄存器,ALE仍以時(shí)鐘振蕩頻率的1/6輸出固定的正 脈沖信號(hào),因此它可對(duì)外輸出時(shí)鐘或用于定時(shí)目的。值得注意的是:每當(dāng)訪問(wèn)外部數(shù)據(jù)存儲(chǔ)器時(shí)將跳過(guò)一個(gè)ALE脈沖。對(duì)Flash存儲(chǔ)器編程期間,該引腳還用于輸入編程脈沖 (PROG)o如有必要,可通過(guò)對(duì)特殊功
20、能寄存器(SFR)區(qū)中的8EH單元的DO位置位,可禁止ALE 操作。該位置位后,只要一條MOVX和MOVC指令才會(huì)激活A(yù)LE。此外,該引腳會(huì)被微弱 拉高,單片機(jī)執(zhí)行外部程序時(shí),應(yīng)設(shè)置ALE無(wú)效。PSEN :程序存儲(chǔ)允許(PSEN)輸出是外部程序存儲(chǔ)器的讀選通信號(hào),當(dāng)AT89S51由外 部程序存儲(chǔ)器取指令(或數(shù)據(jù))時(shí),每個(gè)機(jī)器周期兩次PSEN有效,即輸出兩個(gè)脈沖。當(dāng)訪問(wèn)外 部數(shù)據(jù)存儲(chǔ)器時(shí),沒(méi)有兩次有效的PSEN信號(hào)。EA/VPP:外部訪問(wèn)允許。欲使CPU僅訪問(wèn)外部程序存儲(chǔ)器(地址為0000H-FFFFH), EA端必須保持低電平(接地)。需要注意的是:如果加密位LB1被編程,復(fù)位時(shí)內(nèi)部會(huì)鎖存EA
21、 端狀態(tài)。如EA端保持高電平(接VCC端),CPU則執(zhí)行內(nèi)部程序存儲(chǔ)器中的指令。Flash存儲(chǔ)器編程期間,該引腳用于施加 +12V編程電壓(VPP)。XTAL1 :反向振蕩放大器的輸入及內(nèi)部時(shí)鐘工作電路的輸入端。XTAL2 :反向振蕩放大器器的輸出端。(3)晶體振蕩器特性:AT89C51中有一個(gè)用于構(gòu)成內(nèi)部振蕩器的高增益反相放大器,引腳XTAL1和XTAL2分別為該反向放大器的輸入端和輸出端。這個(gè)反向放大器與作為反饋元件的片外石英晶體或 陶瓷諧振器一起構(gòu)成自激振蕩器。外接石英晶體(或陶瓷諧振器)及電容C1、C2接在放大器的反饋回路中構(gòu)成并聯(lián)振蕩電 路。對(duì)外接電容C1、C2雖然沒(méi)有十分嚴(yán)格的要求
22、,但電容容量的大小會(huì)輕微影響振蕩頻率 的高低、振蕩器工作的穩(wěn)定性、起振的難易程度及溫度穩(wěn)定性。如果使用石英晶體,電容應(yīng)該使用 30pF_10pF。還可以使用外部時(shí)鐘。這種情況下,外部時(shí)鐘脈沖接X(jué)TAL1端,即內(nèi)部時(shí)鐘發(fā)生器的輸 入端,XTAL2應(yīng)懸空。由于外部時(shí)鐘信號(hào)是通過(guò)一個(gè)2分頻觸發(fā)器后作為內(nèi)部時(shí)鐘信號(hào)的,所以外部時(shí)鐘信號(hào) 的占空比沒(méi)有特殊要求,但最小高電平持續(xù)時(shí)間和最大低電平持續(xù)時(shí)間應(yīng)符合產(chǎn)品技術(shù)條 件的要求。2.2.2 AT89C51的主要性能參數(shù):(1)與MCS-51產(chǎn)品指令系統(tǒng)完全兼容。(2)4K字節(jié)在系統(tǒng)可編程(ISP)Flash閃速存儲(chǔ)器。(3)1000次擦寫(xiě)周期。(4)4.0
23、 5.5V的工作電壓范圍。(5)全靜態(tài)工作模式:0Hz-33Hz。(6)三級(jí)程序加密。(7)128x8字節(jié)的內(nèi)部RAM。(8)32個(gè)雙向可編程I/O 口線。(9)2個(gè)16位可編程定時(shí)/計(jì)數(shù)器。(10)6個(gè)中斷源。(11)全雙工UART串行通道。(12)低功耗空閑和掉電模式。(13)中斷可從空閑模式喚醒系統(tǒng)。(14)看門(mén)狗(WDT )及雙數(shù)據(jù)指針。15)掉電標(biāo)識(shí)和快速編程特性。(16)靈活的在系統(tǒng)編程(ISP-字節(jié)或頁(yè)寫(xiě)模式)第3章 智能電子鐘軟硬件電路的設(shè)計(jì)3.1 時(shí)鐘電路使用串行接口時(shí)鐘芯片DS1302設(shè)計(jì)時(shí)鐘電路。該設(shè)計(jì)方案以單片機(jī) AT89S51為主控芯 片,以串行時(shí)鐘芯片DS1302為
24、核心計(jì)時(shí)芯片,組成數(shù)字時(shí)鐘電路。該電路不但能準(zhǔn)確地計(jì) 時(shí)、附加其它功能,而且,其三線接口可以節(jié)省接口資源,在斷電后不丟失時(shí)間和數(shù)據(jù)信 息。該設(shè)計(jì)方案的接口電路如圖5所示:21I-GXD圖5DS1302接口電路3.2硬件設(shè)計(jì)該設(shè)計(jì)的硬件電路由主控部分(單片機(jī)AT89C51)、計(jì)時(shí)部分(實(shí)時(shí)時(shí)鐘芯片DS1302)、D1602LCD、電源部分(三端穩(wěn)壓器7805)4個(gè)部分組成。各部分之間相互協(xié)作,構(gòu)成一個(gè)統(tǒng)一的有機(jī)整體,實(shí)現(xiàn)數(shù)字時(shí)鐘的功能。各部分的硬件電路設(shè)計(jì)如下。設(shè)計(jì)總電路圖見(jiàn)附3.2.1 單片機(jī)AT89C51外圍電路設(shè)計(jì)單片機(jī)AT89S51作為主控芯片,控制整個(gè)電路的運(yùn)行。單片機(jī)外圍需要一個(gè)復(fù)位
25、電路, 復(fù)位電路的功能是:系統(tǒng)上電時(shí)提供復(fù)位信號(hào),直至系統(tǒng)電源穩(wěn)定后,撤消復(fù)位信號(hào)。為 可靠起見(jiàn),電源穩(wěn)定后還要經(jīng)一定的延時(shí)才撤銷(xiāo)復(fù)位信號(hào),以防電源開(kāi)關(guān)或電源插頭分 合過(guò)程中引起的抖動(dòng)而影響復(fù)位。該設(shè)計(jì)采用含有二極管的復(fù)位電路,復(fù)位電路可以有效 的解決電源毛刺和電源緩慢下降(電池電壓不足)等引起的問(wèn)題,在電源電壓瞬間下降時(shí) 可以使電容迅速放電,一定寬度的電源毛刺也可令系統(tǒng)可靠復(fù)位。復(fù)位電路的設(shè)計(jì)圖如圖 6所示:VCC0ChOKM-“Sm414SR110K圖6單片機(jī)復(fù)位電路圖AT89S51具有在系統(tǒng)可編程功能,可以很方便的改寫(xiě)單片機(jī)存儲(chǔ)器內(nèi)的程序不需要把 芯片中從工作環(huán)境中剝離,把AT89S I
26、SP下載口接入電路,可使電路實(shí)現(xiàn)該功能。AT89S51 需要接入一個(gè)普通12MHz晶振,為其提供穩(wěn)定的時(shí)鐘脈沖。該設(shè)計(jì)中有6個(gè)八段數(shù)碼顯示管LED,所以,在單片機(jī)AT89S51外圍需要接入6個(gè)三極管來(lái)驅(qū)動(dòng)數(shù)碼顯示管。此外, 單片機(jī)外圍需要接入3個(gè)開(kāi)關(guān),用來(lái)調(diào)整時(shí)鐘。單片機(jī)外圍電路的設(shè)計(jì)圖如圖7示:3.2.2 DS1302 與單片機(jī)的接口設(shè)計(jì)時(shí)鐘芯片DS1302與單片機(jī)AT89S51的接口是由3條線來(lái)完成的,單片機(jī) AT89S51 的P1.0與時(shí)鐘芯片的數(shù)據(jù)傳輸端相連,P1.1用來(lái)作為DS1302輸入時(shí)鐘SCLK控制端,P1.2 控制DS1302的復(fù)位輸入端。DS1302接標(biāo)準(zhǔn)32.768KHZ
27、石英晶振。DS1302與單片機(jī)的接 口電路如圖8所示:vcc|*DS1302 與 AT89C51 連接圖EC1R3円円plAT89S53.2.4電源設(shè)計(jì)VCCl VCC2XSCLKX2I/OGNDRSTDS 202時(shí)鐘芯片DS1302有很寬的工作電壓范圍,其工作電壓為 2.55.5V。單片機(jī)AT89S51 的工作電壓范圍相對(duì)較窄,為4.05.5V,所以本設(shè)計(jì)中,給電路接入三端穩(wěn)壓器 7805,禾U 用它的穩(wěn)壓功能給電路提供穩(wěn)定的+5V電壓,使電路的工作保持很高的可靠性。在電路中 接入一個(gè)發(fā)光二極管作為指示燈,可以很方便地指示電源與電路是否接通。該設(shè)計(jì)的電源 部分如圖10所示:QiJ1尹2+刃|
28、 VinVoul+ ci個(gè)m1000*1041000104104圖10電源電路圖IK325按鍵開(kāi)關(guān)去抖設(shè)計(jì)前誥畀動(dòng)定岸沿再動(dòng)b) 捷動(dòng)按鍵開(kāi)關(guān)在電路中的連接如圖所示。 按鍵未按下時(shí),A點(diǎn)電位為高電平5V;按鍵按下 時(shí),A點(diǎn)電位為低電平。A點(diǎn)電位就用于向CPU傳遞按鍵的開(kāi)關(guān)狀態(tài)。但是由于按鍵的結(jié) 構(gòu)為機(jī)械彈性開(kāi)關(guān),在按鍵按下和斷開(kāi)時(shí),觸點(diǎn)在閉合和斷開(kāi)瞬間還會(huì)接觸不穩(wěn)定,引起 A點(diǎn)電平不穩(wěn)定,如圖11所示,鍵盤(pán)的抖動(dòng)時(shí)間一般為 510ms,抖動(dòng)現(xiàn)象會(huì)引起CPU 對(duì)一次鍵操作進(jìn)行多次處理,從而可能產(chǎn)生錯(cuò)誤。因此必須設(shè)法消除抖動(dòng)的不良后果。+5V RPo I I 才%圖11鍵操作和鍵抖動(dòng)消除抖動(dòng)的不良
29、后果的方法有硬、軟件兩種。為了節(jié)省硬件,通常在單片機(jī)系統(tǒng)中,一般不采用硬件方法消除鍵的抖動(dòng),而是用軟 件消除抖動(dòng)的方法。根據(jù)抖動(dòng)特性,在第一次檢測(cè)到按鍵按下后,執(zhí)行一段延時(shí)510ms讓前延抖動(dòng)消失后再一次檢測(cè)鍵的狀態(tài),如果仍保持閉合狀態(tài)電平,則確認(rèn)真正有鍵按下。當(dāng)檢測(cè)到按鍵釋放后,也要給 510ms的延時(shí),待后延抖動(dòng)消失后才轉(zhuǎn)入該鍵處理程序。3.3軟件設(shè)計(jì)電子時(shí)鐘的程序主要包括3個(gè)方面的內(nèi)容:一是DS1302從單片機(jī)中讀取數(shù)據(jù)進(jìn)行計(jì) 數(shù),二是利用按鍵進(jìn)行時(shí)間的調(diào)整, 三是單片機(jī)中讀取DS1302中的數(shù)據(jù)驅(qū)動(dòng)LED數(shù)碼管 顯示時(shí)間。STC89C52RC單片機(jī)主要I/O 口的分配:P10、P11、
30、P12分別接時(shí)鐘芯片的 SCLK、 I/O、RST引腳,P13、P14接兩個(gè)獨(dú)立按鍵。圖12時(shí)間調(diào)整程序流程圖4.1總原理圖第4章protues仿真與調(diào)試?yán)胟eil軟件編寫(xiě)源程序。在protues中畫(huà)好其電路圖如下圖14所示:C1I1U1G 1Q18丄 C6-C2卜10kC3DIlOuC7|xivcci VCC2JystalrstSCLK X21/D&S13027J76a6RP1St1D*XTAL1PO.CWAM ro.1/A01A A Lirwru.O/jR.KJnjIP2.0/P2.2M10PS EHP2.3JA11ALEP2.4I加2FTP2.5dfAl3EJM1IP2.&/A14P2
31、.7/A15尸T .P1.1rj.Q/lMAlJrJ.l/| AUP1.2P3 SHINTOP1.3rj.JrllN 11Pl.4F1.SP34/T0F3.4/T1r 1 it?P1.7rjiWllVnP3.7/RF1213AT購(gòu)國(guó)XICRYSTAL圖13 電路板的原理圖4.2電路板的仿真Time: 17-03-37Date? 29-12-14DSliO? Clock-U1回XTAL1XTAL2PO.O/ADOR0.1/AD1R0.2/AD2R0.3/AD3PQ.4/AD4P0.5/AD5PQ.EWADBFiO.7/AD7LMD1BL2914/12/29 Meek2趕善m SZSS1SRSTF
32、SEN ALE EA亦3B范22RP1XI VCC1VCC2824B57JSe8fSTALR$T SCLK X2 1/D門(mén).0P1.1P1J:P1.3P1.4P1j5P-1.0PI.7F2.Q/A0P2.1WP2.2/A10P2.3/A11P2.4/A12P2.5/A13P2JB/A.14F27/A15P3.CMRXD P3.1/IXD P3.2/HT0 P3.3/IMT1F34T0P3.5TT1 PG.BjWR- P3.7/RLTZ1茁二.2728 10211*13個(gè)追ATS0C5-1RES PACK-6源程序#include #include #include lcd.h#include
33、1302.h#define uint unsigned int #define uchar unsigned charsbit Set = P3A0;sbit Up =卩3人3;sbit Down = P3A6;sbit out = P3A1;/模式切換鍵/加法按鈕/減法按鈕/立刻跳出調(diào)整模式按鈕char done,count,temp,flag,up_flag,down_flag; void show_time();/液晶顯示程序void Delay1ms(unsigned int count)unsigned int i,j;for(i=0;icount;i+) for(j=0;j0;de
34、lay-) for(i=0;i0x59)up_flag=1; / 數(shù)據(jù)調(diào)整后更新標(biāo)志 /超過(guò) 59 秒 ,清零temp=0;break;case 2:temp=temp+1;/分?jǐn)?shù)加if(temp0x59)temp=0; break;case 3:temp=Read1302(DS1302_MINUTE);1up_flag=1;/超過(guò) 59 分,清零/讀取分?jǐn)?shù)temp=temp+1;if(temp0x23)temp=0; break;case 4:temp=Read1302(DS1302_HOUR);/小時(shí)數(shù)加 1up_flag=1;/超過(guò) 23小時(shí) ,清零/讀取小時(shí)數(shù)temp=temp+1;/
35、星期數(shù)加temp=Read1302(DS1302_WEEK);1/讀取星期數(shù)up_flag=1;if(temp0x7)temp=1; break;case 5:temp=Read1302(DS1302_DAY);/讀取日數(shù)temp=temp+1;/日數(shù)加 1up_flag=1;if(temp0x31)temp=1; break;case 6:temp=Read1302(DS1302_MONTH); / 讀取月數(shù)temp=temp+1;/月數(shù)加 1up_flag=1;if(temp0x12)temp=1;break;case 7: temp=Read1302(DS1302_YEAR); / 讀取
36、年數(shù) temp=temp+1; /年數(shù)加 1up_flag=1;if(temp0x85)temp=0;break; default:break;while(Up=0);/void Downkey()/ 降序按鍵Down=1;if(Down=0)mdelay(8); switch(count)case 1: temp=Read1302(DS1302_SECOND); / 讀取秒數(shù) temp=temp-1;/ 秒數(shù)減 1down_flag=1; /數(shù)據(jù)調(diào)整后更新標(biāo)志 if(temp=0x7f)/小于 0 秒,返回 59 秒temp=0x59;break;case 2: temp=Read1302(
37、DS1302_MINUTE); / 讀取分?jǐn)?shù) temp=temp-1; /分?jǐn)?shù)減 1down_flag=1;if(temp=-1)temp=0x59;/小于 0 秒 ,返回 59 秒break;case 3: temp=Read1302(DS1302_HOUR); / 讀取小時(shí)數(shù) temp=temp-1; /小時(shí)數(shù)減 1down_flag=1;if(temp=-1) temp=0x23;break;case 4:temp=Read1302(DS1302_WEEK); / 讀取星期數(shù) temp=temp-1; /星期數(shù)減 1down_flag=1;if(temp=0)temp=0x7;break
38、;case 5:temp=Read1302(DS1302_DAY); / 讀取日數(shù)temp=temp-1; /日數(shù)減 1 down_flag=1;if(temp=0)temp=31;break;case 6:temp=Read1302(DS1302_MONTH); / 讀取月數(shù)temp=temp-1; /月數(shù)減 1 down_flag=1;if(temp=0)temp=12;break;case 7:temp=Read1302(DS1302_YEAR); / 讀取年數(shù)temp=temp-1; /年數(shù)減 1 down_flag=1;if(temp=-1)temp=0x85;break; defa
39、ult:break;while(Down=0);void Setkey()/ 模式選擇按鍵Set=1;if(Set=0) mdelay(8);count=count+1; /Setkey 按一次 ,count 就加 1 done=1;/進(jìn)入調(diào)整模式while(Set=0);void keydone()/ 按鍵功能執(zhí)行 uchar Second;if(flag=0)/關(guān)閉時(shí)鐘 ,停止計(jì)時(shí) Write1302(0x8e,0x00); / 寫(xiě)入允許 temp=Read1302(0x80); Write1302(0x80,temp|0x80);Write1302(0x8e,0x80); / 禁止寫(xiě)入f
40、lag=1;Setkey();/掃描模式切換按鍵switch(count)case 1:do /count=1, 調(diào)整秒outkey();/掃描跳出按鈕Upkey();/掃描加按鈕Downkey();/掃描減按鈕if(up_flag=1|down_flag=1) / 數(shù)據(jù)更新,重新寫(xiě)入新的數(shù)據(jù) Write1302(0x8e,0x00); / 寫(xiě)入允許 Write1302(0x80,temp|0x80); / 寫(xiě)入新的秒數(shù) Write1302(0x8e,0x80); / 禁止寫(xiě)入 up_flag=0;down_flag=0; hide_sec+;/位閃計(jì)數(shù)if(hide_sec3)hide_se
41、c=0; show_time(); /液晶顯示數(shù)據(jù) while(count=2);break;case 2:do /count=2, 調(diào)整分 hide_sec=0; outkey(); Upkey(); Downkey(); if(temp0x60) temp=0;if(up_flag=1|down_flag=1)Write1302(0x8e,0x00); / 寫(xiě)入允許Write1302(0x82,temp); / 寫(xiě)入新的分?jǐn)?shù)Write1302(0x8e,0x80); / 禁止寫(xiě)入 up_flag=0;down_flag=0;hide_min+;if(hide_min3)hide_min=0
42、;show_time();while(count=3);break;case 3:do/count=3, 調(diào)整小時(shí)hide_min=0;outkey();Upkey();Downkey();if(up_flag=1|down_flag=1)Write1302(0x8e,0x00); / 寫(xiě)入允許Write1302(0x84,temp); / 寫(xiě)入新的小時(shí)數(shù)Write1302(0x8e,0x80); / 禁止寫(xiě)入 up_flag=0;down_flag=0;hide_hour+;if(hide_hour3)hide_hour=0;show_time();while(count=4);break;
43、case 4:do/count=4, 調(diào)整星期hide_hour=0;outkey();Upkey();Downkey();if(up_flag=1|down_flag=1)Write1302(0x8e,0x00); / 寫(xiě)入允許Write1302(0x8a,temp); / 寫(xiě)入新的星期數(shù)Write1302(0x8e,0x80); / 禁止寫(xiě)入 up_flag=0;down_flag=0;hide_week+;if(hide_week3)hide_week=0;show_time();while(count=5);break;case 5:do/count=5, 調(diào)整日hide_week=0
44、;outkey();Upkey();Downkey(); if(up_flag=1|down_flag=1) Write1302(0x8e,0x00); / 寫(xiě)入允許Write1302(0x86,temp); / 寫(xiě)入新的日數(shù)Write1302(0x8e,0x80); / 禁止寫(xiě)入 up_flag=0;down_flag=0;hide_day+;if(hide_day3)hide_day=0;show_time();while(count=6);break;case 6:do/count=6, 調(diào)整月hide_day=0;outkey();Upkey();Downkey(); if(up_fl
45、ag=1|down_flag=1) Write1302(0x8e,0x00); / 寫(xiě)入允許Write1302(0x88,temp); / 寫(xiě)入新的月數(shù)Write1302(0x8e,0x80); / 禁止寫(xiě)入 up_flag=0;down_flag=0;hide_month+;if(hide_month3)hide_month=0;show_time();while(count=7);break;case 7:do/count=7, 調(diào)整年hide_month=0;outkey();Upkey();Downkey();if(up_flag=1|down_flag=1)Write1302(0x8
46、e,0x00); / 寫(xiě)入允許Write1302(0x8c,temp); / 寫(xiě)入新的年數(shù)Write1302(0x8e,0x80); / 禁止寫(xiě)入up_flag=0;down_flag=0;hide_year+;if(hide_year3)hide_year=0;show_time();while(count=8);break;case 8: count=0;hide_year=0; /count8, 跳出調(diào)整模式 ,返回默認(rèn)顯示狀態(tài)Second=Read1302(DS1302_SECOND);Write1302(0x8e,0x00); / 寫(xiě)入允許Write1302(0x80,Second&
47、0x7f);Write1302(0x8E,0x80);/ 禁止寫(xiě)入done=0;break; /count=7, 開(kāi)啟中斷 ,標(biāo)志位置 0 并退出default:break;void show_time()/ 液晶顯示程序DS1302_GetTime(&CurrentTime); /獲取時(shí)鐘芯片的時(shí)間數(shù)據(jù)TimeToStr(&CurrentTime);/ 時(shí)間數(shù)據(jù)轉(zhuǎn)換液晶字符DateToStr(&CurrentTime);/ 日期數(shù)據(jù)轉(zhuǎn)換液晶字符GotoXY(0,1);Print(CurrentTime.TimeString); / 顯示時(shí)間GotoXY(0,0);Print(CurrentTime.DateString); / 顯示日期GotoXY(15,0);Print(week_value);/顯示星期GotoXY(1
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年新規(guī)定:實(shí)習(xí)生也需簽訂勞動(dòng)合同
- 2025【范本】房屋租賃合同協(xié)議
- 2025簡(jiǎn)易個(gè)人借款合同書(shū)范本下載
- 2025體育賽事組委會(huì)責(zé)任保險(xiǎn)合同樣本
- 2025墓地使用權(quán)轉(zhuǎn)讓合同
- 2025項(xiàng)目環(huán)境監(jiān)測(cè)評(píng)估驗(yàn)收技術(shù)服務(wù)合同
- 2025房屋買(mǎi)賣(mài)合同模板2
- 2025交通運(yùn)輸合同協(xié)議
- 2025解除租賃合同協(xié)議書(shū)
- 西北狼聯(lián)盟2025屆高三仿真模擬(二)歷史試題試卷含解析
- 2024年職業(yè)病防治考試題庫(kù)附答案(版)
- GB/T 4706.53-2024家用和類(lèi)似用途電器的安全第53部分:坐便器的特殊要求
- 《智能網(wǎng)聯(lián)汽車(chē)用攝像頭硬件性能要求及試驗(yàn)方法》編制說(shuō)明
- 2024年3月ITSMS信息技術(shù)服務(wù)管理體系基礎(chǔ)(真題卷)
- 節(jié)能評(píng)審和節(jié)能評(píng)估文件編制費(fèi)用收費(fèi)標(biāo)準(zhǔn)
- 2023-2024年《勞務(wù)勞動(dòng)合同樣本范本書(shū)電子版模板》
- 中國(guó)居民口腔健康狀況第四次中國(guó)口腔健康流行病學(xué)調(diào)查報(bào)告
- MOOC 數(shù)據(jù)挖掘-國(guó)防科技大學(xué) 中國(guó)大學(xué)慕課答案
- 中藥注射劑合理使用培訓(xùn)
- 第13課+清前中期的興盛與危機(jī)【中職專(zhuān)用】《中國(guó)歷史》(高教版2023基礎(chǔ)模塊)
- 2024年國(guó)家糧食和物資儲(chǔ)備局直屬事業(yè)單位招聘筆試參考題庫(kù)附帶答案詳解
評(píng)論
0/150
提交評(píng)論