單片機(jī)萬年歷實(shí)訓(xùn)報(bào)告_第1頁
單片機(jī)萬年歷實(shí)訓(xùn)報(bào)告_第2頁
單片機(jī)萬年歷實(shí)訓(xùn)報(bào)告_第3頁
單片機(jī)萬年歷實(shí)訓(xùn)報(bào)告_第4頁
單片機(jī)萬年歷實(shí)訓(xùn)報(bào)告_第5頁
已閱讀5頁,還剩34頁未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、桂林電子科技大學(xué)實(shí)訓(xùn)說明書用紙 編號: 單片機(jī)綜合設(shè)計(jì)實(shí)訓(xùn)論文說明書題 目: 基于DS1302的萬年歷 院 (系): 信息與通信學(xué)院 專 業(yè): 電子信息工程 學(xué)生姓名: 學(xué) 號: 指導(dǎo)教師: 2013年 12月29日摘 要電子萬年歷是一種應(yīng)用非常廣泛日常計(jì)時(shí)工具,數(shù)字顯示的萬年歷時(shí)鐘越來越流行,特別適合在家庭居室、辦公室、大廳、會議室、車站和廣場等使用。掛壁式LED數(shù)碼管顯示的日歷中逐漸受到人們歡迎。此萬年歷以單片機(jī)作為設(shè)計(jì)核心,由DS1302時(shí)鐘芯片提供時(shí)鐘、8位數(shù)碼管作為顯示。DS1302時(shí)鐘芯片是美國DALLAS公司推出的低功耗實(shí)時(shí)時(shí)鐘芯片,它可以對年、月、日、星期、時(shí)、分、秒進(jìn)行計(jì)時(shí),

2、還具有閏年補(bǔ)償?shù)榷喾N功能,而且DS1302的使用壽命長,誤差??;對于數(shù)字電子萬年歷采用直觀的數(shù)字顯示,數(shù)字顯示是采用數(shù)碼管來顯示,可以顯示年、月、日、星期、時(shí)、分、秒等信息。此外,該萬年歷還具備鬧鈴功能和跳電保護(hù)功能。 關(guān)鍵詞:DS1302芯片;數(shù)碼管;單片機(jī)1AbstractElectronic calendar is a kind of widely used daily timing tool, digital display calendar clock is becoming more and more popular, especially suitable for us

3、ein the family room, office, conference room, hall, station and square etc. Wall hanging LED digital tube display calendar gradually welcomed by the people. This calendar with single-chip microcomputer as the core of design, provided by the DS1302 clock chip clock, 8 digital tube as display. DS1302

4、clock chip is a low-power real-time clock chip USA launched by DALLAS company, it can on the year, month, day, week, time, minutes and seconds for time, also has a leap year compensation and other functions, and the DS1302's long life, small error; visual digital display digital electronic calen

5、dar using for thousands of years, digital display is the use of digital tube display, can display year,month, day, week, time, minutes and seconds, and other information. In addition, the calendar also has alarm function and jump power protection function. Key Words: DS1302 chip;Digital tube;Single

6、chip microcomputer2桂林電子科技大學(xué)實(shí)訓(xùn)說明書用紙目錄1緒 論41.1設(shè)計(jì)要求41.2方案論證41.2.1技術(shù)可行性41.2.2單片機(jī)的選擇51.2.3 顯示模塊的選擇51.2.4 鍵盤模塊的選擇51.2.5總體方案論證與選擇52系統(tǒng)硬件電路設(shè)計(jì)62.1系統(tǒng)硬件概述62.1.1主控制器AT89S5262.1.2時(shí)鐘電路DS130262.2主要單元電路的設(shè)計(jì)82.2.1顯示電路82.2.2鍵盤接口82.2.3按鍵開關(guān)去抖動問題82.2.4查詢式按鍵及其接口92.3 DS1302工作方式簡介及數(shù)據(jù)操作原理93系統(tǒng)的軟件設(shè)計(jì)113.1程序設(shè)計(jì)11謝 辭12參考文獻(xiàn)13附錄一14仿真

7、圖35PCB圖361緒 論1.1設(shè)計(jì)要求本實(shí)訓(xùn)為時(shí)兩周,做出基于DS1302的萬年歷的實(shí)物。要求實(shí)現(xiàn):采用DS1302實(shí)現(xiàn)數(shù)字鐘功能;具備掉電時(shí)鐘保持功能;8位數(shù)碼管動態(tài)顯示,顯示功能交替顯示;能顯示時(shí)、分、秒、年、月、日;帶鬧鈴和鬧鈴設(shè)置功能等基本功能。發(fā)揮功能為:可以根據(jù)時(shí)間設(shè)定,進(jìn)行特定的控制;實(shí)現(xiàn)外部設(shè)備時(shí)鐘信息訪問功能。1.2方案論證1.2.1技術(shù)可行性 隨著國內(nèi)超大規(guī)模集成電路的出現(xiàn),微處理器及其外圍芯片有了迅速的發(fā)展。集成技術(shù)的最新發(fā)展之一是將CPU和外圍芯片,如程序存儲器、數(shù)據(jù)存儲器、并行I/O口、串行I/O口、定時(shí)/計(jì)數(shù)器、中斷控制器及其他控制部件集成在一個(gè)芯片之中,制成單片

8、計(jì)算機(jī)(Single-Chip Microcomputer)。而近年來推出的一些高檔單片機(jī)還包括有許多特殊功能單元,如A/D、D/A轉(zhuǎn)換器、調(diào)制解調(diào)器、通信控制器、鎖相環(huán)、DMA、浮點(diǎn)運(yùn)算單元、PWM控制輸出單元、PWM輸出時(shí)的死區(qū)可編程控制功能等。因此,只要外加一些擴(kuò)展電路及必要的通道接口就可以構(gòu)成各種計(jì)算機(jī)應(yīng)用系統(tǒng),如工業(yè)流水線控制系統(tǒng)、作為家用電器的主控制器、分布式控制系統(tǒng)的終端節(jié)點(diǎn)或作為其主控制節(jié)點(diǎn)起中繼的作用、數(shù)據(jù)采集系統(tǒng)、自動測試系統(tǒng)等。單片機(jī)的出現(xiàn),并在各技術(shù)領(lǐng)域中得到如此迅猛的發(fā)展,與單片機(jī)構(gòu)成計(jì)算機(jī)應(yīng)用系統(tǒng)所形成的下述特點(diǎn)有關(guān): 1、單片機(jī)構(gòu)成的應(yīng)用系統(tǒng)有較大的可靠性。這些可

9、靠性的獲得除了依靠單片機(jī)芯片本身的高可靠性以及應(yīng)用有最少的聯(lián)接外,還可以方便地采用軟、硬件技術(shù)。2、系統(tǒng)擴(kuò)展、系統(tǒng)配置較典型、規(guī)范,容易構(gòu)成各種規(guī)模的應(yīng)用系統(tǒng),應(yīng)用系統(tǒng)有較高的軟、硬件利用系數(shù)。 3、由于構(gòu)成的應(yīng)用系統(tǒng)是一個(gè)計(jì)算機(jī)系統(tǒng),相當(dāng)多的測、控功能由軟件實(shí)現(xiàn),故具有柔性特征,不須改變硬件系統(tǒng)就能適當(dāng)?shù)馗淖兿到y(tǒng)功能。4、有優(yōu)異的性能、價(jià)格比。1.2.2單片機(jī)的選擇方案一:采用傳統(tǒng)的AT89S52作為電機(jī)的控制核心。單片機(jī)算術(shù)運(yùn)算功能強(qiáng),軟件編程靈活、自由度大,可用軟件編程實(shí)現(xiàn)各種算法和邏輯控制,并且由于其功耗低、體積小、技術(shù)成熟和成本低等優(yōu)點(diǎn),使其在各個(gè)領(lǐng)域應(yīng)用廣泛。方案二:采用FTC10

10、F04單片機(jī),還帶有非易失性Flash程序存儲器。它是一種高性能、低功耗的8位CMOS微處理芯片,市場應(yīng)用最多。其主要特點(diǎn)如下:8KB Flash ROM,可以擦除1000次以上,數(shù)據(jù)保存10年。由于本系統(tǒng)對CPU運(yùn)算速度要求很高,需要執(zhí)行很復(fù)雜的運(yùn)算,方案一成本比較低,適合做設(shè)計(jì),方案二運(yùn)算速度高,性能好,所以兩種方案都有可取之處。選用方案一作為主方案,方案二作為備用方案。1.2.3 顯示模塊的選擇 方案一:使用液晶顯示屏顯示時(shí)間數(shù)字。 LCD具有輕薄短小、低耗電量、無輻射,平面直角顯示以及影象穩(wěn)定不閃爍等優(yōu)勢,可視面積大,畫面效果好,分辨率高,抗干擾能力強(qiáng)等特點(diǎn)。但由于液晶是以點(diǎn)陣的模式顯

11、示各種符號,編程工作量大,控制器的資源占用較多,其成本也偏高。在使用時(shí),不易維護(hù)。方案二:使用傳統(tǒng)的LED數(shù)碼管顯示。 數(shù)碼管具有:低能耗、低損耗、低壓、壽命長、耐老化、防曬、防潮、防火、防高(低)溫,對外界環(huán)境要求低,易于維護(hù),同時(shí)其精度比較高,稱重輕,精確可靠,操作簡單。 根據(jù)以上論述,在本系統(tǒng)中,我們采用了八段四位一體數(shù)碼管的動態(tài)顯示。1.2.4 鍵盤模塊的選擇 在對日期和時(shí)間進(jìn)行切換,對日期和時(shí)間進(jìn)行調(diào)節(jié)校準(zhǔn)過程中,系統(tǒng)需要產(chǎn)生激勵電流,因此需要用按鍵。 方案一:使用獨(dú)立式鍵盤。獨(dú)立式鍵盤是指直接用I/O口線構(gòu)成的單個(gè)按鍵電路。獨(dú)立式按鍵電路配置靈活,軟件結(jié)構(gòu)簡單。 方案二:使用矩陣式

12、鍵盤。矩陣式鍵盤是由行線和列線組成,按鍵位于行、列的交叉點(diǎn)上,行線、列線分別連接到按鍵開關(guān)的兩端。其特點(diǎn)是簡單且不增加成本,這種鍵盤適合按鍵數(shù)量較多的場合。根據(jù)以上的論述,因本系統(tǒng)需要的按鍵不多, 板子上共有四個(gè)按鍵:Set鍵(調(diào)整鍵),加鍵,減鍵,out鍵(跳出鍵)。所以采用方案一。1.2.5總體方案論證與選擇按照系統(tǒng)設(shè)計(jì)功能的要求,確定系統(tǒng)由主控模塊、時(shí)鐘模塊、及顯示模塊和鍵盤接口模塊共4個(gè)模塊組成。主控芯片使用51系列AT89S52單片機(jī),時(shí)鐘芯片使用DALLAS公司推出的高性能、低功耗、帶RAM的實(shí)時(shí)時(shí)鐘DS1302。DS1302作為計(jì)時(shí)芯片,可以做到計(jì)時(shí)準(zhǔn)確。DS1302在很小電流的

13、后備電源(2.55.5V電源,再2.5V時(shí)耗電小于300nA),DS1302可以編程選擇多種充電電流來為后備電源進(jìn)行慢速充電,可以保證后備電源基本不耗電。顯示模塊采用普通的共陰極四位一體八段LED數(shù)碼管。 2系統(tǒng)硬件電路設(shè)計(jì)2.1系統(tǒng)硬件概述2.1.1主控制器AT89S52 AT89S52單片機(jī)是宏晶科技推出的新一代高速、低功耗、超強(qiáng)抗干擾的單片機(jī),指令代碼完全兼容傳統(tǒng)8051單片機(jī),12時(shí)鐘、機(jī)器周期和6時(shí)鐘、機(jī)器周期可以任意選擇。主要特性如下: 增強(qiáng)型8051單片機(jī),6時(shí)鐘、機(jī)器周期和12時(shí)鐘、機(jī)器周期可以任意選擇,指令代碼完全兼容傳統(tǒng)8051單片機(jī)。 工作電壓:5.5V3.3V 工作頻率

14、范圍:044MHz。 用戶應(yīng)用程序空間為8K字節(jié) 片上集成512字節(jié)RAM 通用I/O口32個(gè),復(fù)位后為:P1/P2/P3/P4是準(zhǔn)雙向口/弱上位,P0口是漏極開路輸出,總線擴(kuò)展用時(shí),不用加上拉電阻,作為I/O口用時(shí),需加上拉電阻。 ISP(在系統(tǒng)可編程)/IAP(再應(yīng)用可編程),無需專用編程器,無需專用仿真器,可通過串口(RXD/P3.0,TXD/P3.1 )直接下載用戶程序,數(shù)秒即可完成一片。 具有EEPROM功能 具有看門狗功能 共3個(gè)16位定時(shí)器/計(jì)數(shù)器。及定時(shí)器T0、T1、T2 通用異步串行口(UART),還可用定時(shí)器實(shí)現(xiàn)多個(gè)UART 工作溫度范圍:-40+85度(工業(yè)級)/075度

15、(商業(yè)級)2.1.2時(shí)鐘電路DS1302DS1302的性能特性: 實(shí)時(shí)時(shí)鐘,可對秒、分、時(shí)、日、周、月以及帶閏年補(bǔ)償?shù)哪赀M(jìn)行比較; 用于高速數(shù)據(jù)暫存的31*8位RAM; 最少引腳的串行I/O; 2.55.5V電壓工作范圍; 2.5V時(shí)耗小于300nA; 用于時(shí)鐘或RAM數(shù)據(jù)讀/寫的單字節(jié)或多字節(jié)(脈沖方式)數(shù)據(jù)傳送方式; 簡單的三線接口; 可選的慢速充電(至Vcc1)的能力。DS1302在任何數(shù)據(jù)傳送時(shí)必須先初始化,把RST腳置為高電平,然后把8位地址和命令字裝入移位寄存器,數(shù)據(jù)在SCLK的上升沿被訪問到。在開始8個(gè)時(shí)鐘周期,把命令字節(jié)裝入移位寄存器后,另外的時(shí)鐘周期在讀操作時(shí)輸出數(shù)據(jù),在寫操

16、作時(shí)寫入數(shù)據(jù)。時(shí)鐘脈沖的個(gè)數(shù)在單字節(jié)方式下為8+8,在多字節(jié)方式下為8+字節(jié)數(shù),最大可達(dá)248字節(jié)數(shù)。如果在傳送過程中置RST腳為低電平,則會終止本次數(shù)據(jù)傳送,并且I/O引腳變?yōu)楦咦钁B(tài)。上電運(yùn)行時(shí),在Vcc2.5V之前,RST腳必須保持低電平。只有在SCLK為低電平時(shí),才能將RST置為高電平。DS1302的控制字如表所示??刂谱止?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é)總是從最低

17、位開始輸入/輸出。為了提高對32個(gè)地址尋址能力(地址/命令位15=邏輯1),可以把時(shí)鐘/日歷或RAM寄存器規(guī)定為多字節(jié)(burst)方式。位6規(guī)定時(shí)鐘或RAM,而位0規(guī)定讀或?qū)憽T跁r(shí)鐘/日歷寄存器中的地址931或RAM寄存器中的地址31不能存儲數(shù)據(jù)。在多字節(jié)方式下,讀或?qū)憦牡刂?的位0開始。必須按數(shù)據(jù)傳送的次序?qū)懽钕鹊?個(gè)寄存器。但是,當(dāng)以多字節(jié)方式寫RAM時(shí),為了傳送數(shù)據(jù)不必寫所有的31字節(jié),不管是否謝了全部31字節(jié),所寫的每一字節(jié)都將傳送至RAM。表一 DS1302控制字 DS1302共有12個(gè)寄存器,其中有7個(gè)寄存器與日歷、時(shí)鐘相關(guān),存放的數(shù)據(jù)位為BCD碼形式。其日歷、時(shí)間寄存器及其控制

18、字如上表所示,其中奇數(shù)為讀操作,偶數(shù)為寫操作。時(shí)鐘暫停:秒寄存器的位7定義位時(shí)鐘暫停位。當(dāng)它為1時(shí),DS1302停止振蕩,進(jìn)入低功耗的備份方式,通常在對DS1302進(jìn)行寫操作時(shí)(如進(jìn)入時(shí)鐘調(diào)整程序),停止振蕩。當(dāng)它為0時(shí),時(shí)鐘將開始啟動。 AM-PM/12-24小時(shí)方式:小時(shí)寄存器的位7定義為12或24小時(shí)方式選擇位。它為高電平時(shí),選擇12小時(shí)方式。在此方式下,位5為第二個(gè)10小時(shí)位(2023h)。 DS1302的晶振選用32768Hz,電容推薦值為6pF。因?yàn)檎袷庮l率較低,也可以不接電容,對計(jì)時(shí)精度影響不大。2.2主要單元電路的設(shè)計(jì)2.2.1顯示電路顯示部分采用普通的共陽數(shù)碼管顯示,采用動態(tài)

19、掃描,以減少硬件電路。年月日、時(shí)分秒、鬧鐘共需要24位數(shù)碼顯示,用8位數(shù)碼管以按鍵切換的方式來顯示。考慮到一次掃描24位數(shù)碼管顯示時(shí)會出現(xiàn)閃爍情況,故采用動態(tài)掃描,可將數(shù)碼管數(shù)量減少至8位,顯示時(shí)采用串行口輸出段碼。2.2.2鍵盤接口鍵盤在單片機(jī)系統(tǒng)中是一個(gè)很重要的部件。為了輸入數(shù)據(jù)、查詢和控制系統(tǒng)的工作狀態(tài),都要用到鍵盤,鍵盤是人工干預(yù)計(jì)算機(jī)的主要手段。鍵盤可分為編碼和非編碼鍵盤兩種。編碼鍵盤采用硬件線線路來實(shí)現(xiàn)鍵盤編碼,每按下一個(gè)鍵,鍵盤能自動生成按鍵代碼,鍵數(shù)較多,而且還具有去抖動功能。這種鍵盤使用方便,但硬件較復(fù)雜,PC機(jī)所用的鍵盤就屬于這種。非編碼鍵盤僅提供按鍵開關(guān)工作狀態(tài),其他工作

20、由軟件完成,這種鍵盤鍵數(shù)較少,硬件簡單,一般在單片機(jī)應(yīng)用系統(tǒng)中廣泛使用。此處主要介紹該類非編碼鍵盤及其與MCS51型單片機(jī)的接口。2.2.3按鍵開關(guān)去抖動問題按鍵開關(guān)在電路中的連接如圖所示。按鍵未按下時(shí),A點(diǎn)電位為高電平5V;按鍵按下時(shí),A點(diǎn)電位為低電平。A點(diǎn)電位就用于向CPU傳遞按鍵的開關(guān)狀態(tài)。但是由于按鍵的結(jié)構(gòu)為機(jī)械彈性開關(guān),在按鍵按下和斷開時(shí),觸點(diǎn)在閉合和斷開瞬間還會接觸不穩(wěn)定,引起A點(diǎn)電平不穩(wěn)定,如圖2-11b所示,鍵盤的抖動時(shí)間一般為510ms,抖動現(xiàn)象會引起CPU對一次鍵操作進(jìn)行多次處理,從而可能產(chǎn)生錯誤。因此必須設(shè)法消除抖動的不良后果。消除抖動的不良后果的方法有硬、軟件兩種。圖一

21、 鍵操作和鍵抖動為了節(jié)省硬件,在單片機(jī)系統(tǒng)中,一般不采用硬件方法消除鍵的抖動,而是用軟件消除抖動的方法。根據(jù)抖動特性,第一次檢測到按鍵按下后,執(zhí)行一段延時(shí)510ms讓前延抖動消失后再一次檢測鍵的狀態(tài),如果仍保持閉合狀態(tài)電平,則確認(rèn)真正有鍵按下。當(dāng)檢測到按鍵釋放后,也要給510ms的延時(shí),待后延抖動消失后轉(zhuǎn)入該鍵處理程序。2.2.4查詢式按鍵及其接口按照鍵盤與CPU的連接方式可以分為查詢按鍵和矩陣式鍵盤。查詢式按鍵是各按鍵相互獨(dú)立,每個(gè)按鍵占用一根I/O口線,每根I/O口線上的按鍵工作狀態(tài)不會影響其他I/O口線上按鍵的工作狀態(tài)。查詢式按鍵電路配置靈活,軟件結(jié)構(gòu)簡單,但每個(gè)按鍵必須占用一根I/O口

22、線,在按鍵數(shù)量較多時(shí),I/O口線浪費(fèi)較大,且電路結(jié)構(gòu)顯得繁雜。故這種形式適用于按鍵數(shù)量較少的場合,因本設(shè)計(jì)按鍵較少,故使用查詢方式。2.3 DS1302工作方式簡介及數(shù)據(jù)操作原理DS1302可以對年、月、日、星期、時(shí)、分、秒進(jìn)行計(jì)時(shí), 且具有閏年補(bǔ)償功能, 工作電壓寬達(dá)2.55.5V。采用三線接口與CPU進(jìn)行同步通信, 并可采用突發(fā)方式一次傳送多個(gè)字節(jié)的時(shí)鐘信號或RAM數(shù)據(jù)。DS1302內(nèi)部有一個(gè)33x8的用于臨時(shí)性存放數(shù)據(jù)的RAM寄存器。DS1302是的DS1202升級產(chǎn)品, 與DS1202兼容, 但增加了主電源/后背電源雙電源引腳, 同時(shí)提供了對后背電源進(jìn)行涓細(xì)電流充電的能力。DS1302

23、時(shí)鐘芯片包括實(shí)時(shí)時(shí)鐘/日歷和31字節(jié)的靜態(tài)RAM。它經(jīng)過一個(gè)簡單的串行接口與微處理器通信。實(shí)時(shí)時(shí)鐘/日歷提供秒、分、時(shí)、日、周、月和年等信息。對于小于31天的月和月末的日期自動進(jìn)行調(diào)整,還包括閏年校正的功能。時(shí)鐘的運(yùn)行可以采用24<小>時(shí)或帶AM/PM的12小時(shí)格式。采用三線接口與CPU進(jìn)行同步通信,并可采用突發(fā)方式一次傳送多字節(jié)的時(shí)鐘信號或RAM數(shù)據(jù)。DS1302有主電源/后備電源雙電源引腳:Vcc1在單電源與電池供電的系統(tǒng)中提供低電源,并提供低功率的電磁備份;Vcc1在雙電池系統(tǒng)中提供主電源。在這種運(yùn)行方式中,Vcc1里連接到后備電源,以便在沒有主電源的情況下能保存時(shí)間信息以及

24、數(shù)據(jù)。DS1302由Vcc1或Vcc2中較打大者供電。當(dāng)Vcc2(Vcc1+0.2V)時(shí),Vcc2給DS1302供電;當(dāng)Vcc2Vcc1時(shí),DS1302由Vcc1供電。 圖二 DS1302DS1302在任何數(shù)據(jù)傳送時(shí)必須先初始化,把RST腳置為高電平,然后把8位地址和命令字裝入移位寄存器,數(shù)據(jù)在SCLK的上升沿被訪問到。在開始8個(gè)時(shí)鐘周期,把命令字節(jié)裝入移位寄存器后,另外的時(shí)鐘周期在讀操作時(shí)輸出數(shù)據(jù),在寫操作時(shí)寫入數(shù)據(jù)。時(shí)鐘脈沖的個(gè)數(shù)在單字節(jié)方式下為8+8,在多字節(jié)方式下為8+字節(jié)數(shù),最大可達(dá)248字節(jié)數(shù)。如果在傳送過程中置RST腳為低電平,則會終止本次數(shù)據(jù)傳送,并且I/O引腳變?yōu)楦咦钁B(tài)。上電

25、運(yùn)行時(shí),在Vcc2.5V之前,RST腳必須保持低電平。只有在SCLK為低電平時(shí),才能將RST置為高電平。DS1302的控制字如圖所示??刂谱止?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é)總是從最低位開始輸入/輸出。為了提高對32個(gè)地址尋址能力(地址/命令位15=邏輯1),可以把時(shí)鐘/日歷或RAM寄存器規(guī)定為多字節(jié)(burst)方式。位6規(guī)定時(shí)鐘或RAM,而位0規(guī)定讀或?qū)?。在時(shí)鐘/日歷

26、寄存器中的地址931或RAM寄存器中的地址31不能存儲數(shù)據(jù)。在多字節(jié)方式下,讀或?qū)憦牡刂?的位0開始。必須按數(shù)據(jù)傳送的次序?qū)懽钕鹊?個(gè)寄存器。但是,當(dāng)以多字節(jié)方式寫RAM時(shí),為了傳送數(shù)據(jù)不必寫所有的31字節(jié),不管是否謝了全部31字節(jié),所寫的每一字節(jié)都將傳送至RAM。DS1302共有12個(gè)寄存器,其中有7個(gè)寄存器與日歷、時(shí)鐘相關(guān),存放的數(shù)據(jù)位為BCD碼形式。其日歷、時(shí)間寄存器及其控制字如下表所示,其中奇數(shù)為讀操作,偶數(shù)為寫操作。 表二DS1302控制字時(shí)鐘暫停:秒寄存器的位7定義位時(shí)鐘暫停位。當(dāng)它為1時(shí),DS1302停止振蕩,進(jìn)入低功耗的備份方式,通常在對DS1302進(jìn)行寫操作時(shí)(如進(jìn)入時(shí)鐘調(diào)整

27、程序),停止振蕩。當(dāng)它為0時(shí),時(shí)鐘將開始啟動。AM-PM/12-24小時(shí)方式:小時(shí)寄存器的位7定義為12或24小時(shí)方式選擇位。它為高電平時(shí),選擇12小時(shí)方式。在此方式下,位5為第二個(gè)10小時(shí)位(2023h)。DS1302的晶振選用32768Hz,電容推薦值為6pF。因?yàn)檎袷庮l率較低,也可以不接電容,對計(jì)時(shí)精度影響不大。3系統(tǒng)的軟件設(shè)計(jì)3.1程序設(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ū)動LED數(shù)碼管顯示時(shí)間。AT89S52單片機(jī)主要I/O口的分配:P10、P11、P12分別接時(shí)鐘芯片的

28、SCLK、I/O、RST引腳,P34、P35、P36、P37接四個(gè)獨(dú)立按鍵,P0口接數(shù)碼管的段碼,P2口接數(shù)碼管的位選端。程序流程圖如下:開始 DS1302初始化 N done = 1?正常模式顯示Y 停止時(shí)鐘進(jìn)時(shí)間調(diào)整 Y setkey()函數(shù)Nset鍵按下? setkey()設(shè)置鍵被按下次數(shù),依據(jù)count值進(jìn)入相應(yīng)的調(diào)整模式 掃描跳出建按下? Out鍵按下 Y 進(jìn)入Outkey(); 掃描加鍵按下? 跳出調(diào)整模式 掃描減鍵按下? 返回正常顯示模式 加鍵按下 Y 減鍵按下 Y 進(jìn)入U(xiǎn)pkey()進(jìn)入Downkey()按下一次加一 按下一次減1 調(diào)整結(jié)束,返回 謝 辭2013年12月,在為時(shí)

29、兩個(gè)周的單片機(jī)實(shí)訓(xùn)從最初的茫然,到慢慢的進(jìn)入狀態(tài),再到對思路逐漸的清晰,整個(gè)寫作過程難以用語言來表達(dá)。這次實(shí)訓(xùn)終于落下了帷幕。在這次課程設(shè)計(jì)的過程中,我擁有了無數(shù)難忘的回憶和收獲。這次實(shí)訓(xùn)的制作過程是我的一次再學(xué)習(xí),再提高的過程。在論文中我充分地運(yùn)用了大學(xué)期間所學(xué)到的知識。腳踏實(shí)地,認(rèn)真嚴(yán)謹(jǐn),實(shí)事求是的學(xué)習(xí)態(tài)度,不怕困難、堅(jiān)持不懈、吃苦耐勞的精神是我在這次設(shè)計(jì)中最大的收益。我想這是一次意志的磨練,是對我實(shí)際能力的一次提升,也會對我未來的學(xué)習(xí)和工作有很大的幫助。在這次實(shí)訓(xùn)中也使我們的同學(xué)關(guān)系更進(jìn)一步了,同學(xué)之間互相幫助,聽聽不同的看法對我們更好的理解知識,所以在這里非常感謝幫助我的同學(xué)。在此更要

30、感謝我的指導(dǎo)老師和專業(yè)老師,是你們的細(xì)心指導(dǎo)和關(guān)懷,使我能夠順利的完成此次實(shí)訓(xùn)。在此我要向老師致以最衷心的感謝和敬意。參考文獻(xiàn)1 李群芳,肖看,張世軍.單片微型計(jì)算機(jī)與接口技術(shù):電子工業(yè)出版社,2013.2 何利民.單片機(jī)應(yīng)用技術(shù)選編.北京航空航天大學(xué)出版社,20003 劉文濤等.MCS-51單片機(jī)培訓(xùn)教程.電子工業(yè)出版社,20054李光飛等.單片機(jī)C語言程序設(shè)計(jì)實(shí)例指導(dǎo).北京航空航天大學(xué)出版社,20055黃遵熹.單片機(jī)原理接口與應(yīng)用.西北工業(yè)大學(xué)出版社,1997.056李華.MCS-51系類單片機(jī)實(shí)用接口技術(shù).北京航空航天大學(xué)出版社,2004附錄一程序:#include<reg52.h

31、>#define uchar unsigned char#define uint unsigned int unsigned char code LED_d11=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x40; /定義字符數(shù)組顯示數(shù)字unsigned char code LED_w8 = 0x7f,0xbf,0xfb,0xef,0xf7,0xdf,0xfd,0xfe;char temp,temp1,temp2,temp3,temp4,temp5,temp6,temp7,temp8;char count,up_flag,down

32、_flag,flag,done;sbit Beep=P31;sbit Set= P34;sbit Up = P35;sbit Down= P36;sbit out= P37;sbit SCLK=P10;sbit DATA=P11;sbit RST=P12;void show_time();void show_time1();void show_time2();void show_minute();void show_hour();void DisplayMinute(unsigned char x);void DisplayHour(unsigned char x);void DisplayS

33、econd(unsigned char x);void DisplayKang1();void DisplayKang2();char time10; void delaynus(unsigned char n) unsigned char i; for(i=0;i<n;i+);void delay1ms() unsigned char i,j; for(i=0;i<10;i+) for(j=0;j<33;j+); void delaynms(unsigned char n) unsigned char i;for(i=0;i<n;i+) delay1ms(); /*函

34、數(shù)功能:向1302寫一個(gè)字節(jié)數(shù)據(jù)*/void Write1302(unsigned char dat) unsigned char i; SCLK=0; /拉低SCLK,為脈沖上升沿寫入數(shù)據(jù)做好準(zhǔn)備 delaynus(2); for(i=0;i<8;i+) /連續(xù)寫8個(gè)二進(jìn)制位數(shù)據(jù) DATA=dat&0x01; delaynus(2); /稍微等待,使硬件做好準(zhǔn)備 SCLK=1; /上升沿寫入數(shù)據(jù) delaynus(2); /稍微等待,使硬件做好準(zhǔn)備 SCLK=0; /重新拉低SCLK,形成脈沖 dat>>=1; /*函數(shù)功能:根據(jù)命令字,向1302寫一個(gè)字節(jié)數(shù)據(jù)*/

35、void WriteSet1302(unsigned char Cmd,unsigned char dat) RST=0; /禁止數(shù)據(jù)傳遞 SCLK=0; /確保寫數(shù)居前SCLK被拉低 RST=1; /啟動數(shù)據(jù)傳輸 delaynus(2); /稍微等待,使硬件做好準(zhǔn)備 Write1302(Cmd); /寫入命令字 Write1302(dat); /寫數(shù)據(jù) SCLK=1; /將時(shí)鐘電平置于高電平狀態(tài) RST=0; /禁止數(shù)據(jù)傳遞 /*函數(shù)功能:從1302讀一個(gè)字節(jié)數(shù)據(jù)*/ unsigned char Read1302(void) unsigned char i,dat;delaynus(2);

36、/稍微等待,使硬件做好準(zhǔn)備for(i=0;i<8;i+) /連續(xù)讀8個(gè)二進(jìn)制位數(shù)據(jù) dat>>=1; if(DATA=1) /如果讀出的數(shù)據(jù)是1 dat|=0x80; /將1取出,寫在dat的最高位 SCLK=1; /將SCLK置于高電平,為下降沿讀出 delaynus(2); /稍微等待 SCLK=0; /拉低SCLK,形成脈沖下降沿 delaynus(2); /稍微等待 return dat; /將讀出的數(shù)據(jù)返回 /*函數(shù)功能:根據(jù)命令字,從1302讀取一個(gè)字節(jié)數(shù)據(jù)*/unsigned char ReadSet1302(unsigned char Cmd) unsigne

37、d char dat; RST=0; /拉低RST SCLK=0; /確保寫數(shù)居前SCLK被拉低 RST=1; /啟動數(shù)據(jù)傳輸 Write1302(Cmd); /寫入命令字 dat=Read1302(); /讀出數(shù)據(jù) SCLK=1; /將時(shí)鐘電平置于已知狀態(tài) RST=0; /禁止數(shù)據(jù)傳遞 return dat; /將讀出的數(shù)據(jù)返回/*函數(shù)功能: 1302進(jìn)行初始化設(shè)置*/ void Init_DS1302(void) unsigned char flag_on; flag_on= ReadSet1302(0x81);if(flag_on & 0x80) /判斷時(shí)鐘芯片是否關(guān)閉 Writ

38、eSet1302(0x8E,0x00); WriteSet1302(0x80,(10 / 10)<<4|(10 % 10); WriteSet1302(0x82,(30 / 10)<<4|(30 % 10); WriteSet1302(0x84,(12 / 10)<<4|(12 % 10); WriteSet1302(0x86,(21 / 10)<<4|(21 % 10); WriteSet1302(0x88,(12 / 10)<<4|(12 % 10); WriteSet1302(0x8c,(13 / 10)<<4|(1

39、3 % 10); WriteSet1302(0x90,0xa5); /打開充電功能 選擇2K電阻充電方式WriteSet1302(0x8E,0x80); /寫入保護(hù)指令void outkey()/跳出調(diào)整模式,返回默認(rèn)顯示 uchar Second;if(out=0) delaynms(8); count=0;Second=ReadSet1302(0x81);WriteSet1302(0x8e,0x00);/寫入允許WriteSet1302(0x80,Second & 0x7f);/走時(shí)WriteSet1302(0x8E,0x80);/禁止寫入done=0; while(out=0);

40、void Upkey()/升序按鍵 Up=1;if(Up=0)delaynms(8);switch(count)case 1: temp1=temp1+1;/miao數(shù)加1 up_flag=1; if(temp1 > 59) /超過59分,清零temp1=0; break;case 2: temp2=temp2+1; /分?jǐn)?shù)加1 up_flag=1; if(temp2 > 59) /超過59分清零temp2=0; break;case 3: temp3=temp3+1;/小時(shí)數(shù)加1 up_flag=1; if(temp3 > 23) /超過23小清零temp3=0; brea

41、k;case 4:temp7 = temp7 +1;up_flag=1;if (temp7 > 59)temp7 = 0;break;case 5:temp8 = temp8 +1;up_flag=1;if (temp8 > 59)temp8 = 0;break;case 6:temp4=temp4+1; /日 up_flag=1; if(temp4 > 31)temp4=1; break;case 7: temp5=temp5+1;/yue up_flag=1; if(temp5 > 12)temp5=1; break;case 8: temp6=temp6+1;/n

42、ian up_flag=1; if(temp6 > 99)temp6=13; break;default: break;while(Up=0);void DownKey()Down=1;if(Down=0)delaynms(8);switch(count)case 1:temp1=temp1-1;up_flag=1;if(temp1 < 0)temp1=0;break;case 2:temp2=temp2-1;up_flag=1;if(temp2 < 0)temp2=0;break;case 3:temp3=temp3-1;down_flag=1;if(temp3 <

43、0)temp3=23;break;case 4:temp7 = temp7-1;down_flag=1;if(temp7 < 0)temp7 = 0;break;case 5:temp8 = temp8-1;down_flag=1;if(temp8 < 0)temp8 = 23;break;case 6:temp4=temp4-1;down_flag=1;if(temp4 < 1)temp4=1;break;case 7:temp5=temp5-1;down_flag=1;if(temp5 < 1)temp5=1;break;case 8:temp6=temp6-1;d

44、own_flag=1;if(temp6 < 1)temp6=13;break;default:break;while(Down=0);void Setkey() /模式選擇按鍵Set=1;if(Set=0) delaynms(5); if(Set = 0) count=count+1; /Setkey按一次,count就加1done=1; /進(jìn)入調(diào)整模式 while(!Set);/松手檢測 delaynms(5); while(!Set); void keydone()/按鍵功能執(zhí)行 uchar Second; if(flag=0) /關(guān)閉時(shí)鐘,停止 WriteSet1302(0x8e,

45、0x00);temp=ReadSet1302(0x81);WriteSet1302(0x80,temp | 0x80);WriteSet1302(0x8e,0x80);flag=1; Setkey();/掃描模式切換按鍵,根據(jù)count次數(shù)進(jìn)入相應(yīng)的模式調(diào)整switch(count)case 1:/是BCD碼time0=ReadSet1302(0x81);temp1=(time0 & 0x70)>>4)*10 + (time0 & 0x0F); outkey(); Upkey(); DownKey(); if(up_flag=1|down_flag=1) temp1

46、 = (temp1 / 10) << 4 | (temp1 % 10); WriteSet1302(0x8e,0x00);/寫入允許 WriteSet1302(0x80,temp1 | 0x80); WriteSet1302(0x8e,0x80);/禁止寫入 up_flag=0; down_flag=0; show_time1(); break; case 2:/count=2,調(diào)整分,得到的數(shù)據(jù)是BCD碼 time1=ReadSet1302(0x83);/讀取分?jǐn)?shù) temp2=(time1 & 0x70)>>4)*10 + (time1 & 0x0F)

47、; outkey(); Upkey(); DownKey(); if(up_flag=1|down_flag=1) temp2 = (temp2/10) << 4 | (temp2 % 10); WriteSet1302(0x8e,0x00);/寫入允許 WriteSet1302(0x82,temp2);/寫入新的分?jǐn)?shù) WriteSet1302(0x8e,0x80);/禁止寫入 up_flag=0; down_flag=0; show_time1(); break;case 3:/count=3,調(diào)整小時(shí) time2=ReadSet1302(0x85);/讀取分?jǐn)?shù) temp3=(time2 & 0x70)>>4)*10 + (time2 & 0x0F); outkey(); Upkey(); DownKey(); if(up_flag=1|down_fl

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(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)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論