電子萬年歷畢業(yè)設(shè)計(jì)(基于AT89C51單片機(jī)和DS1302時(shí)鐘芯片)_第1頁
電子萬年歷畢業(yè)設(shè)計(jì)(基于AT89C51單片機(jī)和DS1302時(shí)鐘芯片)_第2頁
電子萬年歷畢業(yè)設(shè)計(jì)(基于AT89C51單片機(jī)和DS1302時(shí)鐘芯片)_第3頁
電子萬年歷畢業(yè)設(shè)計(jì)(基于AT89C51單片機(jī)和DS1302時(shí)鐘芯片)_第4頁
電子萬年歷畢業(yè)設(shè)計(jì)(基于AT89C51單片機(jī)和DS1302時(shí)鐘芯片)_第5頁
已閱讀5頁,還剩45頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、鶴壁職業(yè)技術(shù)學(xué)院畢業(yè)設(shè)計(jì)論文論文題目:電子時(shí)鐘學(xué) 院: 機(jī)電工程學(xué)院 專    業(yè):電氣自動(dòng)化  班    級(jí): 2009級(jí)01班 學(xué)生姓名:       賈貫可 學(xué)    號(hào): 0902511005 指導(dǎo)教師: 司新生       2011年10月 18 日目 錄 摘要 .3緒論 .5第1章 設(shè)計(jì)要求與方案論證.71.1 引言.71.2 功能要求.71.3方案論證.7第2章

2、系統(tǒng)硬件電路設(shè)計(jì) .112.1 電路設(shè)計(jì).112.2 系統(tǒng)硬件概述.152.3主要單元電路的設(shè)計(jì).15第3章 系統(tǒng)的軟件設(shè)計(jì).223.1程序設(shè)計(jì).223.2程序設(shè)計(jì)流程圖.22第4章 結(jié)束語.24附錄一(電路原理圖) . 附錄二(程序清單).27摘要隨著社會(huì)、科技的發(fā)展,人類得知時(shí)間,從觀太陽、擺鐘到現(xiàn)在電子鐘,不斷研究、創(chuàng)新。為了在觀測(cè)時(shí)間,能夠了解與人類密切相關(guān)的信息,比如星期、日期等,電子時(shí)鐘誕生了,它集時(shí)間、日期、星期等功能于一身,具有讀取方便、顯示直觀、功能多樣、電路簡潔等諸多優(yōu)點(diǎn),符合電子儀器儀表的發(fā)展趨勢(shì),具有廣闊的市場(chǎng)前景。該電子時(shí)鐘主要采用STC89C52RC單片機(jī)作為主控核

3、心,由DS1302時(shí)鐘芯片提供時(shí)鐘、LED動(dòng)態(tài)掃描顯示屏顯示。STC89C52RC單片機(jī)是由Atmel公司推出的,功耗小,電壓可選用46V電壓供電;DS1302時(shí)鐘芯片是美國DALLAS公司推出的具有涓細(xì)電流充電功能的低功耗實(shí)時(shí)時(shí)鐘芯片,它可以對(duì)年、月、日、星期、時(shí)、分、秒進(jìn)行計(jì)時(shí),還具有閏年補(bǔ)償?shù)榷喾N功能,而且DS1302的使用壽命長,誤差??;數(shù)字顯示是采用的LED顯示屏來顯示,可以同時(shí)顯示年、月、日、星期、時(shí)、分、秒和溫度等信息。此外,該電子時(shí)鐘還具有時(shí)間校準(zhǔn)等功能。關(guān)鍵詞:時(shí)鐘電路; 時(shí)鐘芯片DS1302;LED動(dòng)態(tài)掃描; 單片機(jī)STC89C52RC;緒論 隨著人們生活水平的提高和生活節(jié)

4、奏的加快,對(duì)時(shí)間的要求越來越高,精準(zhǔn)數(shù)字計(jì)時(shí)的消費(fèi)需求也是越來越多。二十一世紀(jì)的今天,最具代表性的計(jì)時(shí)產(chǎn)品就是電子時(shí)鐘,它是近代世界鐘表業(yè)界的第三次革命。第一次是擺和擺輪游絲的發(fā)明,相對(duì)穩(wěn)定的機(jī)械振蕩頻率源使鐘表的走時(shí)差從分級(jí)縮小到秒級(jí),代表性的產(chǎn)品就是帶有擺或擺輪游絲的機(jī)械鐘或表。第二次革命是石英晶體振蕩器的應(yīng)用,發(fā)明了走時(shí)精度更高的石英電子鐘表,使鐘表的走時(shí)月差從分級(jí)縮小到秒級(jí)。第三次革命就是單片機(jī)數(shù)碼計(jì)時(shí)技術(shù)的應(yīng)用,使計(jì)時(shí)產(chǎn)品的走時(shí)日差從分級(jí)縮小到1/600萬秒,從原有傳統(tǒng)指針計(jì)時(shí)的方式發(fā)展為人們?nèi)粘8鼮槭煜さ囊构鈹?shù)字顯示方式,直觀明了,并增加了全自動(dòng)日期、星期的顯示功能,它更符合消費(fèi)者

5、的生活需求!因此,電子時(shí)鐘的出現(xiàn)帶來了鐘表計(jì)時(shí)業(yè)界跨躍性的進(jìn)步我國生產(chǎn)的電子時(shí)鐘有很多種,總體上來說以研究多功能電子時(shí)鐘為主,使萬年歷除了原有的顯示時(shí)間,日期等基本功能外,還具有鬧鈴,報(bào)警等功能。商家生產(chǎn)的電子萬年歷更從質(zhì)量,價(jià)格,實(shí)用上考慮,不斷的改進(jìn)電子時(shí)鐘的設(shè)計(jì),使其更加的具有市場(chǎng)。本設(shè)計(jì)為軟件,硬件相結(jié)合的一組設(shè)計(jì)。在軟件設(shè)計(jì)過程中,應(yīng)對(duì)硬件部分有相關(guān)了解,這樣有助于對(duì)設(shè)計(jì)題目的更深了解,有助于軟件設(shè)計(jì)?;镜囊私庖恍┲饕骷幕竟δ芎妥饔?。除了采用集成化的時(shí)鐘芯片外,還有采用MCU的方案,利用STC89系列單片微機(jī)制成電子電路,采用軟件和硬件結(jié)合的方法,控制LED數(shù)碼管輸出,分別

6、用來顯示年、月、日、時(shí)、分、秒,其最大特點(diǎn)是:硬件電路簡單,安裝方便易于實(shí)現(xiàn),軟件設(shè)計(jì)獨(dú)特,可靠。STC89C52RC是由ATMEL公司推出的一種小型單片機(jī)。95年出現(xiàn)在中國市場(chǎng)。其主要特點(diǎn)為采用Flash存貯器技術(shù),降低了制造成本,其軟件、硬件與MCS-51完全兼容,可以很快被中國廣大用戶接受。 本文介紹了基于STC89C52RC單片機(jī)設(shè)計(jì)的電子時(shí)鐘。首先我們?cè)诰w論中簡單介紹了單片機(jī)的發(fā)展與其在中低端領(lǐng)域中的優(yōu)勢(shì)以及課題的開發(fā)意義;接著介紹了STC89C52RC單片機(jī)的硬件結(jié)構(gòu)和本畢業(yè)設(shè)計(jì)所要外擴(kuò)的LED顯示及其驅(qū)動(dòng)方法,并在此基礎(chǔ)上實(shí)現(xiàn)了時(shí)鐘基本電路的設(shè)計(jì);然后使用單片機(jī)C語言進(jìn)行時(shí)鐘程序

7、的設(shè)計(jì),程序采用模塊化結(jié)構(gòu),使得邏輯關(guān)系簡單明了,維護(hù)方便。 第1章 設(shè)計(jì)要求與方案論證1.1 引言 本文提出了一種基于STC89C52RC單片機(jī)的時(shí)鐘設(shè)計(jì)方案,本方案以STC89C52RC單片機(jī)作為主控核心,與時(shí)鐘芯片DS1302、按鍵、LED顯示等模塊組成硬件系統(tǒng)。在硬件系統(tǒng)中設(shè)有獨(dú)立按鍵和LED顯示器,能顯示豐富的信息,根據(jù)使用者的需要可以隨時(shí)對(duì)時(shí)間進(jìn)行校準(zhǔn)、選擇時(shí)間等,綜上所述此電子時(shí)鐘具有讀取方便、顯示直觀、功能多樣、電路簡潔、成本低廉等諸多優(yōu)點(diǎn),符合電子儀器儀表的發(fā)展趨勢(shì),具有廣闊的市場(chǎng)前景。1.2功能要求本電子時(shí)鐘能動(dòng)態(tài)顯示年、月、日、星期、小時(shí)、分鐘、秒1.3方案論證1.3.1

8、 技術(shù)可行性 隨著國內(nèi)超大規(guī)模集成電路的出現(xiàn),微處理器及其外圍芯片有了迅速的發(fā)展。集成技術(shù)的最新發(fā)展之一是將CPU和外圍芯片,如程序存儲(chǔ)器、數(shù)據(jù)存儲(chǔ)器、并行I/O口、串行I/O口、定時(shí)/計(jì)數(shù)器、中斷控制器及其他控制部件集成在一個(gè)芯片之中,制成單片計(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)、作為家用電

9、器的主控制器、分布式控制系統(tǒng)的終端節(jié)點(diǎn)或作為其主控制節(jié)點(diǎn)起中繼的作用、數(shù)據(jù)采集系統(tǒng)、自動(dòng)測(cè)試系統(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)有較大的可靠性。這些可靠性的獲得除了依靠單片機(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)多的測(cè)、控功能由軟件實(shí)現(xiàn),故具有柔性特征,不須改變硬件系統(tǒng)就能適當(dāng)?shù)馗淖兿到y(tǒng)功能。4、有優(yōu)異的性能、價(jià)格比。1.3

10、.2 單片機(jī)的選擇方案一:采用傳統(tǒng)的STC89C52RC作為電機(jī)的控制核心。單片機(jī)算術(shù)運(yùn)算功能強(qiáng),軟件編程靈活、自由度大,可用軟件編程實(shí)現(xiàn)各種算法和邏輯控制,并且由于其功耗低、體積小、技術(shù)成熟和成本低等優(yōu)點(diǎn),使其在各個(gè)領(lǐng)域應(yīng)用廣泛。方案二:采用FTC10F04單片機(jī),還帶有非易失性Flash程序存儲(chǔ)器。它是一種高性能、低功耗的8位CMOS微處理芯片,市場(chǎng)應(yīng)用最多。其主要特點(diǎn)如下:8KB Flash ROM,可以擦除1000次以上,數(shù)據(jù)保存10年。由于本系統(tǒng)對(duì)CPU運(yùn)算速度要求很高,需要執(zhí)行很復(fù)雜的運(yùn)算,方案一成本比較低,適合做設(shè)計(jì),方案二運(yùn)算速度高,性能好,所以兩種方案都有可取之處。選用方案一

11、作為主方案,方案二作為備用方案。1.3.3 顯示模塊的選擇 方案一:使用液晶顯示屏顯示時(shí)間數(shù)字。 液晶顯示屏(LCD)具有輕薄短小、低耗電量、無輻射危險(xiǎn),平面直角顯示以及影象穩(wěn)定不閃爍等優(yōu)勢(shì),可視面積大,畫面效果好,分辨率高,抗干擾能力強(qiáng)等特點(diǎn)。但由于液晶是以點(diǎn)陣的模式顯示各種符號(hào),需要利用控制芯片創(chuàng)建字符庫,編程工作量大,控制器的資源占用較多,其成本也偏高。在使用時(shí),不能有靜電干擾,否則易燒壞液晶的顯示芯片,不易維護(hù)。方案二:使用傳統(tǒng)的LED數(shù)碼管顯示。 數(shù)碼管具有:低能耗、低損耗、低壓、壽命長、耐老化、防曬、防潮、防火、防高(低)溫,對(duì)外界環(huán)境要求低,易于維護(hù),同時(shí)其精度比較高,稱重輕,精

12、確可靠,操作簡單。數(shù)碼管采用BCD編碼顯示數(shù)字,程序編譯容易,資源占用較少。 根據(jù)以上的論述,采用方案二。在本系統(tǒng)中,我們采用了八段四位一體數(shù)碼管串口的動(dòng)態(tài)顯示。1.3.4 鍵盤模塊的選擇在對(duì)日期和時(shí)間進(jìn)行切換,對(duì)日期和時(shí)間進(jìn)行調(diào)節(jié)校準(zhǔn)過程中,系統(tǒng)需要產(chǎn)生激勵(lì)電流,因此需要用按鍵。 方案一:使用獨(dú)立式鍵盤。獨(dú)立式鍵盤是指直接用I/O口線構(gòu)成的單個(gè)按鍵電路。獨(dú)立式按鍵電路配置靈活,軟件結(jié)構(gòu)簡單。 方案二:使用矩陣式鍵盤。矩陣式鍵盤是由行線和列線組成,按鍵位于行、列的交叉點(diǎn)上,行線、列線分別連接到按鍵開關(guān)的兩端。其特點(diǎn)是簡單且不增加成本,這種鍵盤適合按鍵數(shù)量較多的場(chǎng)合。 根據(jù)以上的論述,因本系統(tǒng)需

13、要的按鍵不多,日期加1鍵,月數(shù)加1鍵,年數(shù)加1鍵,分?jǐn)?shù)加1鍵,時(shí)數(shù)加1鍵,時(shí)間/日期切換鍵,要求簡單。所以采用方案一獨(dú)立式鍵盤。1.3.5總體方案論證與選擇按照系統(tǒng)設(shè)計(jì)功能的要求,初步確定系統(tǒng)由主控模塊、時(shí)控模塊、及顯示模塊和鍵盤接口模塊共4個(gè)模塊組成。主控芯片使用51系列STC89C52RC單片機(jī),時(shí)鐘芯片使用美國DALLAS公司推出的一種高性能、低功耗、帶RAM的實(shí)時(shí)時(shí)鐘DS1302。采用DS1302作為計(jì)時(shí)芯片,可以做到計(jì)時(shí)準(zhǔn)確。更重要的是,DS1302可以在很小電流的后備電源(2.55.5V電源,再2.5V時(shí)耗電小于300nA),而且DS1302可以編程選擇多種充電電流來為后備電源進(jìn)行

14、慢速充電,可以保證后備電源基本不耗電。顯示模塊采用普通的共陽極四位一體八段LED數(shù)碼管。第二章 系統(tǒng)硬件電路設(shè)計(jì)2.2系統(tǒng)硬件概述2.2.1 主控制器STC89C52RC STC89C52RC單片機(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 工作頻率范圍:044MHz。 用戶應(yīng)用程序空間為8K字節(jié) 片上集成512字節(jié)RAM 通用I/O口32個(gè),

15、復(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 外部中斷4路,下降沿中斷或低電平觸發(fā)電路,Power Down模式可由外部中斷低電平觸發(fā)中斷方式喚醒 通用異步串行口(UART),還可用定時(shí)器實(shí)現(xiàn)多個(gè)UART 工作溫度范圍:-40+85度(工業(yè)級(jí))

16、/075度(商業(yè)級(jí)) PDIP封裝2.2.2時(shí)鐘電路DS1302 DS1302的性能特性: 實(shí)時(shí)時(shí)鐘,可對(duì)秒、分、時(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í)鐘周期

17、在讀操作時(shí)輸出數(shù)據(jù),在寫操作時(shí)寫入數(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的控制字如表所示??刂谱止?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)行

18、讀操作。控制字節(jié)總是從最低位開始輸入/輸出。為了提高對(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。表2.1 DS1302控制字 DS1302共有12個(gè)寄存器,其中有7個(gè)寄存器與日歷、時(shí)鐘相關(guān),存放的數(shù)據(jù)位為BCD碼形

19、式。其日歷、時(shí)間寄存器及其控制字如上表所示,其中奇數(shù)為讀操作,偶數(shù)為寫操作。時(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為第二個(gè)10小時(shí)位(2023h)。 DS1302的晶振選用32768Hz,電容推薦值為6pF。因?yàn)檎袷庮l率較低,也可以不接電容,對(duì)計(jì)時(shí)精度影響不大。2.3主要單元電路的設(shè)計(jì)2.3.1顯示電路顯示部分采用

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

21、僅提供按鍵開關(guān)工作狀態(tài),其他工作由軟件完成,這種鍵盤鍵數(shù)較少,硬件簡單,一般在單片機(jī)應(yīng)用系統(tǒng)中廣泛使用。此處主要介紹該類非編碼鍵盤及其與MCS51型單片機(jī)的接口。2.3.2.1按鍵開關(guān)去抖動(dòng)問題按鍵開關(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)在閉合和斷開瞬間還會(huì)接觸不穩(wěn)定,引起A點(diǎn)電平不穩(wěn)定,如圖2-11b所示,鍵盤的抖動(dòng)時(shí)間一般為510ms,抖動(dòng)現(xiàn)象會(huì)引起CPU對(duì)一次鍵操作進(jìn)行多次處理,從而可能產(chǎn)生錯(cuò)誤。因此必須設(shè)法消除抖動(dòng)的不良后果。圖2.3

22、 鍵操作和鍵抖動(dòng)消除抖動(dòng)的不良后果的方法有硬、軟件兩種。為了節(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)入該鍵處理程序。2.3.2.2查詢式按鍵及其接口按照鍵盤與CPU的連接方式可以分為查詢按鍵和矩陣式鍵盤。查詢式按鍵是各按鍵相互獨(dú)立,每個(gè)按鍵占用一根I/O口線,每根I/O口線上的按鍵工作狀態(tài)不會(huì)影響其他I/O口線上按鍵的工作狀態(tài)。查詢式按鍵電路配

23、置靈活,軟件結(jié)構(gòu)簡單,但每個(gè)按鍵必須占用一根I/O口線,在按鍵數(shù)量較多時(shí),I/O口線浪費(fèi)較大,且電路結(jié)構(gòu)顯得繁雜。故這種形式適用于按鍵數(shù)量較少的場(chǎng)合。2.3.2.3矩陣式鍵盤及其接口矩陣式鍵盤又稱行列式鍵盤,有n個(gè)行線和m個(gè)列線,經(jīng)限流電阻接+5V電源上,按鍵跨接在行線和列線上,n×m行列結(jié)構(gòu)可構(gòu)成mn個(gè)按鍵,組成一個(gè)鍵盤。與獨(dú)立式按鍵相比,mn個(gè)按鍵只占用m+n根I/O口線,因此適用于按鍵較多的場(chǎng)合。當(dāng)無鍵閉合時(shí),相應(yīng)的I/O之間開路。當(dāng)有鍵閉合時(shí),與閉合鍵相連接的兩條I/O口線之間短路。判斷有無鍵按下的方法是:第一步,置列線相關(guān)I/O口為輸入態(tài),從行線相對(duì)應(yīng)的I/O口輸出低電平,

24、讀入列線數(shù)據(jù),若某一列線為低電平,則該列線上有鍵閉合。第二步,置行線相關(guān)I/O口輸出低電平,讀入列線數(shù)據(jù),若某一列線為低電平,則該列線上有鍵閉合。綜合一二兩步的結(jié)果,可確定按鍵編號(hào)。但是鍵閉合一次只能進(jìn)行一次鍵功能操作,因此須等待近按鍵釋放后,再進(jìn)行鍵功能操作,否則按一次鍵,有可能會(huì)連續(xù)多次進(jìn)行同樣的鍵操作。2.3.2.4鍵盤掃描控制方式在單片機(jī)應(yīng)用系統(tǒng)中,對(duì)鍵盤的處理工作僅是CPU工作內(nèi)容的一部分,CPU還要進(jìn)行數(shù)據(jù)處理、顯示和其他輸入輸出操作,因此鍵盤處理工作既不能占用CPU太多時(shí)間,又需要CPU對(duì)鍵盤操作及時(shí)作出響應(yīng)。CPU對(duì)鍵盤處理控制的工作方式有以下幾種:1. 程序控制掃描方式程序控

25、制掃描方式是在CPU工作空余,調(diào)用鍵盤掃描子程序,響應(yīng)鍵輸入信號(hào)要求。2. 定時(shí)控制掃描方式定時(shí)控制掃描方式是利用定時(shí)/計(jì)數(shù)器每隔一段時(shí)間產(chǎn)生定時(shí)中斷,CPU響應(yīng)中斷后對(duì)鍵盤進(jìn)行掃描,并在有鍵閉合時(shí)轉(zhuǎn)入該鍵的功能子程序。3. 中斷控制掃描方式中斷控制掃描方式是利用外部中斷源,響應(yīng)輸入信號(hào)。當(dāng)無按鍵按下時(shí),CPU執(zhí)行正常工作程序。當(dāng)有按鍵按下時(shí),CPU立即產(chǎn)生中斷。在中斷服務(wù)子程序中掃描鍵盤,判斷是哪一個(gè)鍵被按下,然后執(zhí)行該鍵的功能子程序。這種控制方式克服了前兩種控制方式可能產(chǎn)生的空掃描和不能及時(shí)響應(yīng)鍵輸入的缺點(diǎn),既能及時(shí)處理鍵輸入,又能提高CPU運(yùn)行效率,但要占用一個(gè)寶貴的中斷資源。圖即工作于

26、中斷方式的矩陣式鍵盤接口電路。在初始化時(shí)P1.4P1.7置輸出0,P1.0P1.3置為輸入態(tài),P1.0P1.3分別接至與門各輸入端。當(dāng)有鍵閉合時(shí)=0,CPU中斷后,在中斷服務(wù)子程序中,再完成鍵識(shí)別和鍵功能處理。 圖2.4 工作于中斷方式的矩陣式鍵盤接口電路2.3.3時(shí)鐘電路2.3.3.1 DS1302工作方式簡介及數(shù)據(jù)操作原理DS1302可以對(duì)年、月、日、星期、時(shí)、分、秒進(jìn)行計(jì)時(shí), 且具有閏年補(bǔ)償功能, 工作電壓寬達(dá)2.55.5V。采用三線接口與CPU進(jìn)行同步通信, 并可采用突發(fā)方式一次傳送多個(gè)字節(jié)的時(shí)鐘信號(hào)或RAM數(shù)據(jù)。DS1302內(nèi)部有一個(gè)33x8的用于臨時(shí)性存放數(shù)據(jù)的RAM寄存器。DS1

27、302是的DS1202升級(jí)產(chǎn)品, 與DS1202兼容, 但增加了主電源/后背電源雙電源引腳, 同時(shí)提供了對(duì)后背電源進(jìn)行涓細(xì)電流充電的能力。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ā)方式一次傳送多字節(jié)的時(shí)鐘信號(hào)或RAM數(shù)據(jù)。DS1302有主電源/后備電源雙電源引腳:Vcc1在單電源與電池供電的系統(tǒng)中提供低

28、電源,并提供低功率的電磁備份;Vcc1在雙電池系統(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供電。 圖2.5 DS1302DS1302在任何數(shù)據(jù)傳送時(shí)必須先初始化,把RST腳置為高電平,然后把8位地址和命令字裝入移位寄存器,數(shù)據(jù)在SCLK的上升沿被訪問到。在開始8個(gè)時(shí)鐘周期,把命令字節(jié)裝入移位寄存器后,另外的時(shí)鐘周期在讀操作時(shí)輸出數(shù)據(jù),在寫操作時(shí)寫入數(shù)據(jù)。時(shí)鐘脈沖的個(gè)數(shù)在單字節(jié)

29、方式下為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的控制字如圖所示??刂谱止?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é)總是從最低位開始輸入/輸出。為了提高對(duì)32個(gè)地

30、址尋址能力(地址/命令位15=邏輯1),可以把時(shí)鐘/日歷或RAM寄存器規(guī)定為多字節(jié)(burst)方式。位6規(guī)定時(shí)鐘或RAM,而位0規(guī)定讀或?qū)憽T跁r(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共有12個(gè)寄存器,其中有7個(gè)寄存器與日歷、時(shí)鐘相關(guān),存放的數(shù)據(jù)位為BCD碼形式。其日歷、時(shí)間寄存器及其控制字如下表所示,其中奇數(shù)為讀操作,偶數(shù)為寫操作。表2.3 DS1

31、302控制字 時(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為第二個(gè)10小時(shí)位(2023h)。 DS1302的晶振選用32768Hz,電容推薦值為6pF。因?yàn)檎袷庮l率較低,也可以不接電容,對(duì)計(jì)時(shí)精度影響不大。第3章 系統(tǒng)的軟件設(shè)計(jì)(3.1 程序設(shè)計(jì))電子時(shí)鐘的程序主要包括3個(gè)方面的內(nèi)容:一是DS1302從單片機(jī)中讀取數(shù)據(jù)進(jìn)

32、行計(jì)數(shù),二是利用按鍵進(jìn)行時(shí)間的調(diào)整,三是單片機(jī)中讀取DS1302中的數(shù)據(jù)驅(qū)動(dòng)LED數(shù)碼管顯示時(shí)間。STC89C52RC單片機(jī)主要I/O口的分配:P10、P11、P12分別接時(shí)鐘芯片的SCLK、I/O、RST引腳,P13、P14、P15、P16接四個(gè)獨(dú)立按鍵。主程序流程圖時(shí)間調(diào)整程序流程圖第4章 結(jié)束語2010年3月,我開始了我的畢業(yè)論文工作,時(shí)至今日,論文基本完成。從最初的茫然,到慢慢的進(jìn)入狀態(tài),再到對(duì)思路逐漸的清晰,整個(gè)寫作過程難以用語言來表達(dá)。歷經(jīng)了一個(gè)多月的奮戰(zhàn),緊張而又充實(shí)的畢業(yè)設(shè)計(jì)終于落下了帷幕?;叵脒@段日子的經(jīng)歷和感受,我感慨萬千,在這次畢業(yè)設(shè)計(jì)的過程中,我擁有了無數(shù)難忘的回憶和收

33、獲。當(dāng)我終于完成了所有打字、繪圖、排版、校對(duì)的任務(wù)后整個(gè)人都很累,但同時(shí)看著電腦熒屏上的畢業(yè)設(shè)計(jì)稿件我的心里是甜的,我覺得這一切都值了。這次畢業(yè)論文的制作過程是我的一次再學(xué)習(xí),再提高的過程。在論文中我充分地運(yùn)用了大學(xué)期間所學(xué)到的知識(shí)。我不會(huì)忘記這難忘的幾個(gè)月的時(shí)間。畢業(yè)論文的制作給了我難忘的回憶。在我徜徉書海查找資料的日子里,面對(duì)無數(shù)書本的羅列,最難忘的是每次找到資料時(shí)的激動(dòng)和興奮;親手用protel 99設(shè)計(jì)電路圖的時(shí)間里,記憶最深的是每一步小小思路實(shí)現(xiàn)時(shí)那幸福的心情;為了論文我曾趕稿到深夜,但看著親手打出的一字一句,心里滿滿的只有喜悅毫無疲憊。這段旅程看似荊棘密布,實(shí)則蘊(yùn)藏著無盡的寶藏。我

34、從資料的收集中,掌握了很多單片機(jī)及其接口應(yīng)用的知識(shí),讓我對(duì)我所學(xué)過的知識(shí)有所鞏固和提高,并且讓我對(duì)當(dāng)今單片機(jī)的最新發(fā)展技術(shù)有所了解。在整個(gè)過程中,我學(xué)到了新知識(shí),增長了見識(shí)。在今后的日子里,我仍然要不斷地充實(shí)自己,爭取在所學(xué)領(lǐng)域有所作為。腳踏實(shí)地,認(rèn)真嚴(yán)謹(jǐn),實(shí)事求是的學(xué)習(xí)態(tài)度,不怕困難、堅(jiān)持不懈、吃苦耐勞的精神是我在這次設(shè)計(jì)中最大的收益。我想這是一次意志的磨練,是對(duì)我實(shí)際能力的一次提升,也會(huì)對(duì)我未來的學(xué)習(xí)和工作有很大的幫助。在這次畢業(yè)設(shè)計(jì)中也使我們的同學(xué)關(guān)系更進(jìn)一步了,同學(xué)之間互相幫助,有什么不懂的大家在一起商量,聽聽不同的看法對(duì)我們更好的理解知識(shí),所以在這里非常感謝幫助我的同學(xué)。在此更要感謝

35、我的指導(dǎo)老師和專業(yè)老師,是你們的細(xì)心指導(dǎo)和關(guān)懷,使我能夠順利的完成畢業(yè)論文。在此我要向司老師致以最衷心的感謝和敬意。程序/main.c/#include<reg51.h>#define uint unsigned int#include"ds1302.h"#include"key.h"#include"bell.h"sbit k4=P13;char k=0;char shi,fen,miao,nian,yue,ri;char baojingshi=0x00,baojingfen=0x06,baojingmiao=0x00;

36、void sjdisplay();void rqdisplay();void baojingdisplay();void delay(uint ms);void display(char shu,char wei);char table=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e;void main() ds1302_write(0x80,0x55);ds1302_write(0x82,0x45);ds1302_write(0x84,0x00); ds1302_write(0x8

37、c,0x11);ds1302_write(0x88,0x10);ds1302_write(0x86,0x07); while(1) if(k4=0) delay(5); if(k4=0) while(k4=0); k+; if(k=3) k=0; if(k=0)sjdisplay(); if(k=1) rqdisplay(); if(k=2) baojingdisplay(); if(shi=baojingshi)&&(fen=baojingfen)&(miao=baojingmiao)didi(10);key();void sjdisplay() shi=ds1302

38、_read(0x85);/hourfen=ds1302_read(0x83);/minitesmiao=ds1302_read(0x81);/seconddisplay(shi>>4)&0x07,0);display(shi&0x0f,1);display(fen>>4)&0x07,3);display(fen&0x0f,4);display(miao>>4)&0x07,6);display(miao&0x0f,7);void rqdisplay() nian=ds1302_read(0x8d);/nian y

39、ue=ds1302_read(0x89);/yue ri=ds1302_read(0x87);/ri display(nian>>4)&0x07,0); display(nian&0x0f,1); display(yue>>4)&0x07,3); display(yue&0x0f,4); display(ri>>4)&0x07,6);/0000 0111 display(ri&0x0f,7);void baojingdisplay() display(baojingshi>>4)&0x07,

40、0); display(baojingshi&0x0f,1); display(baojingfen>>4)&0x07,3); display(baojingfen&0x0f,4); display(baojingmiao>>4)&0x07,6); display(baojingmiao&0x0f,7);void delay(uint ms)uint i,j;for(i=ms;i>0;i-)for(j=124;j>0;j-);void display(char shu,char wei)P0=tableshu;P2=(

41、1<<wei);delay(3);P2=0xff;/main.c/ / Ds1302.c/#include<reg51.h>#define uchar unsigned char#define uint unsigned intsbit rst=P12;sbit dat=P11;sbit clk=P10;void ds1302_write(char comm,char dat1)char temp,t;rst=0;clk=0;rst=1;temp=comm;for(t=0;t<8;t+)if(temp&0x01)dat=1;else dat=0;clk=1

42、;temp=(temp>>1);clk=0;temp=dat1;for(t=0;t<8;t+)if(temp&0x01)=1)/0000 0001dat=1;else dat=0;clk=1;temp=temp>>1;clk=0;rst=0;uchar ds1302_read(char comm)char temp,t;rst=0;clk=0;rst=1;temp=comm;for(t=0;t<8;t+)if(temp&0x01)dat=1;else dat=0;clk=1;temp=temp>>1;clk=0;temp=0;/0

43、0000000 for(t=0;t<8;t+)temp=temp>>1;if(dat=1)temp=temp|0x80;else temp=temp&0x7f;clk=1;clk=0;rst=0;return temp;/Ds1302.c/Key.c/#include<reg51.h>#define char signed char#define uint unsigned intsbit mode=P14;sbit add=P15;sbit sub=P16;char mod=0;extern void delay(uint ms);extern char

44、 shi,fen,nian,yue,ri;extern char baojingshi,baojingfen;extern char ds1302_read(char);extern void ds1302_write(char,char);void key()shi=ds1302_read(0x85);fen=ds1302_read(0x83);if(mode=0)delay(5);if(mode=0)while(mode=0);mod+;if(mod=8)mod=0;if(add=0)delay(5);if(add=0)while(add=0);if(mod=1)shi=(shi>&

45、gt;4)&0x03)*10+(shi&0x0f)+1;if(shi=24)shi=0;ds1302_write(0x84,(shi/10)<<4)+(shi%10)&0x0f);/hourelse if(mod=2)fen=(fen>>4)&0x07)*10+(fen&0x0f)+1;if(fen=60)fen=0;ds1302_write(0x82,(fen/10)<<4)+(fen%10)&0x0f); else if(mod=3) nian=(nian>>4)&0x0f)*10+(n

46、ian&0x0f)+1;if(nian=99)nian=1;ds1302_write(0x8c,(nian/10)<<4)+(nian%10)&0x0f); else if(mod=4) yue=(yue>>4)&0x01)*10+(yue&0x0f)+1;if(yue=13)yue=1;ds1302_write(0x88,(yue/10)<<4)+(yue%10)&0x0f); else if(mod=5) if(yue=1)|(yue=3)|(yue=5)|(yue=7)|(yue=8)|(yue=10)|(yue

47、=12) ri=(ri>>4)&0x03)*10+(ri&0x0f)+1; if(ri>=32) ri=1; if(yue=4)|(yue=6)|(yue=9)|(yue=11) ri=(ri>>4)&0x03)*10+(ri&0x0f)+1; if(ri>=31) ri=1; if(yue=2) ri=(ri>>4)&0x03)*10+(ri&0x0f)+1; if(ri>=29) ri=1; ds1302_write(0x86,(ri/10)<<4)+(ri%10)&0

48、x0f); else if(mod=6) baojingshi=(baojingshi>>4)&0x01)*10+(baojingshi&0x0f)+1;if(baojingshi=24)baojingshi=0;ds1302_write(0x88,(baojingshi/10)<<4)+(baojingshi%10)&0x0f); else if(mod=7) baojingfen=(baojingfen>>4)&0x01)*10+(baojingfen&0x0f)+1;if(baojingfen=60)baojingfen=0;ds1302_write(0x88,(baojingfen/10)<<4)+(baojingfen%10)&0x0f); if(sub=0)delay(5

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(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)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論