基于DS1302和51單片機的電子時鐘設計_第1頁
基于DS1302和51單片機的電子時鐘設計_第2頁
基于DS1302和51單片機的電子時鐘設計_第3頁
基于DS1302和51單片機的電子時鐘設計_第4頁
基于DS1302和51單片機的電子時鐘設計_第5頁
已閱讀5頁,還剩17頁未讀, 繼續(xù)免費閱讀

下載本文檔

版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領

文檔簡介

1、精選優(yōu)質文檔-傾情為你奉上目 錄第一章 系統(tǒng)介紹1.1 電子鐘介紹電子鐘已成為人們日常生活中的必需品,廣泛應用于家庭、車站、辦公室等場所。鐘表數(shù)字化給人們生產生活帶來了極大地方便而且大大地擴展了鐘表原先的報時功能諸如定時自動報警、按時自動打鈴、時間程序自動控制、通斷動力設備、甚至各種定時電氣的自動啟用,因此研究數(shù)字鐘及擴大其應用有著非?,F(xiàn)實的意義。數(shù)字電子鐘設計與制作可采用數(shù)字電路實現(xiàn),也可以采用單片機來完成。若用數(shù)字電路完成,所設計的電路相當復雜,大概需要十幾片數(shù)字集成塊,其功能也主要依賴于數(shù)字電路的各功能模塊的組合來實現(xiàn),焊接的過程比較復雜,成本也非常高。若用單片機來設計制作完成,由于其功

2、能的實現(xiàn)主要通過軟件編程來完成,那么就降低了硬件電路的復雜性,而且其成本也有所降低。截止今日,單片機應用技術飛速發(fā)展,縱觀現(xiàn)在各個領域,從導彈的導航裝置,到飛機上各種儀表的控制,從計算機的網(wǎng)絡通訊與數(shù)據(jù)傳輸,到工業(yè)自動化過程的實時控制和數(shù)據(jù)處理,以及我們生活中廣泛使用的各種智能IC卡、電子寵物等,這些都離不開單片機。單片機即單片微型計算機(Single-Chip Microcomputer ),是集CPU ,RAM ,ROM ,定時,計數(shù)和多種接口于一體的微控制器。它體積小,成本低,功能強,廣泛應用于智能產業(yè)和工業(yè)自動化上。同時,若采用單片機計時,一方面需要采用計數(shù)器,占用硬件資源,另一方面需

3、要設置中斷、查詢等,同樣耗費單片機的資源,而且,某些測控系統(tǒng)可能不允許。但是,如果在系統(tǒng)中采用時鐘芯片,則能很好地解決這個問題。現(xiàn)在流行的串行時鐘電路很多,如DS1302、DS1307、PCF8485等。這些電路的接口簡單、價格低廉、使用方便,被廣泛地采用。美國Dallas公司生產的串行實時時鐘芯片 DS1302是一種具有涓細電流充電能力的實時時鐘芯片,采用普通32.768KHZ晶振,具有實時時鐘和 31 字節(jié)的靜態(tài)RAM。主要特點是采用串行數(shù)據(jù)傳輸,可方便地與單片機接口,可為掉電保護電源提供可編程的充電功能,并且可以關閉充電功能。本設計要求利用51單片機和DS1302設計制作一個LED電子鐘

4、,用8個LED顯示時間,當按下相應按鍵時,修改當前時間或鬧鈴時間,若當前時間與鬧鈴時間相同,蜂鳴器發(fā)音1分鐘。1.2 單片機AT89C51介紹AT89C51是一個低功耗,高性能CMOS 8位單片機,片內含8k Bytes ISP(In-system programmable)的可反復擦寫1000次的Flash只讀程序存儲器,器件采用ATMEL公司的高密度、非易失性存儲技術制造,兼容標準 MCS-51指令系統(tǒng)及80C51引腳結構,芯片內集成了通用8位中央處理器和ISP Flash存儲單元,功能強大的微型計算機的AT89C51可為許多嵌入式控制應用系統(tǒng)提供高性價比的解決方案。AT89C51具有如下

5、特點:40個引腳,8k Bytes Flash片內程序存儲器,256 bytes的隨機存取數(shù)據(jù)存儲器(RAM),32個外部雙向輸入/輸出(I/O)口,5個中斷優(yōu)先級2層中斷嵌套中斷,2個16位可編程定時計數(shù)器,2個全雙工串行通信口,看門狗(WDT)電路,片內時鐘振蕩器。另外,AT89C51 可降至0Hz 靜態(tài)邏輯操作,支持2種軟件可選擇節(jié)電模式??臻e模式下,CPU 停止工作,允許RAM、定時器/計數(shù)器、串口、中斷繼續(xù)工作。掉電保護方式下,RAM內容被保存,振蕩器被凍結, 單片機一切工作停止,直到下一個中斷或硬件復位為止。芯片引腳功能AT89C51芯片DIP雙列直插式封裝引腳如圖1-1所示。圖1

6、-1 AT89C51引腳排列P0 口:P0口是一個8位漏極開路的雙向I/O口。作為輸出口,每位能驅動8個TTL邏輯電平。對P0端口寫“1”時,引腳用作高阻抗輸入。當訪問外部程序和數(shù)據(jù)存儲器時,P0口也被作為低8位地址/數(shù)據(jù)復用。在這種模式下,P0具有內部上拉電阻。 P1 口:P1 口是一個具有內部上拉電阻的8 位雙向I/O 口,P1 輸出緩沖器能驅動4 個 TTL 邏輯電平。對P1 端口寫“1”時,內部上拉電阻把端口拉高,此時可以作為輸入口使用。作為輸入使用時,被外部拉低的引腳由于內部電阻的原因,將輸出電流(IIL)。 引腳口第二功能如下: P1.0/T2(定時器/計數(shù)器T2的外部計數(shù)輸入),

7、時鐘輸出 P1.1/T2EX(定時器/計數(shù)器T2的捕捉/重載觸發(fā)信號和方向控制) P1.5/MOSI(在系統(tǒng)編程用) P1.6/MISO(在系統(tǒng)編程用) P1.7/SCK(在系統(tǒng)編程用) P2 口:P2口是一個具有內部上拉電阻的8 位雙向I/O 口,P2 輸出緩沖器能驅動4 個TTL邏輯電平。對P2 端口寫“1”時,內部上拉電阻把端口拉高,此時可以作為輸入口使用。作為輸入使用時,被外部拉低的引腳由于內部電阻的原因,將輸出電流(IIL)。 在訪問外部程序存儲器或用16位地址讀取外部數(shù)據(jù)存儲器(例如執(zhí)行MOVX DPTR)時,P2 口送出高八位地址。在這種應用中,P2 口使用很強的內部上拉發(fā)送1。

8、在使用8位地址(如MOVX RI)訪問外部數(shù)據(jù)存儲器時,P2口輸出P2鎖存器的內容。 P3 口:P3 口是一個具有內部上拉電阻的8 位雙向I/O 口,P2 輸出緩沖器能驅動4 個TTL邏輯電平。對P3 端口寫“1”時,內部上拉電阻把端口拉高,此時可以作為輸入口使用。作為輸入使用時,被外部拉低的引腳由于內部電阻的原因,將輸出電流(IIL)。 P3口亦作為AT89C51特殊功能(第二功能)使用。 引腳口第二功能如下:P3.0/RXD(串行輸入口)P3.1/TXD(串行輸出口)P3.2/INTO(外中斷0)P3.3/INT1(外中斷1)P3.4/TO(定時/計數(shù)器0)P3.5/T1(定時/計數(shù)器1)

9、P3.6/WR(外部數(shù)據(jù)存儲器寫選通)P3.7/RD(外部數(shù)據(jù)存儲器讀選通)此外,P3口還接收一些用于FLASH閃存編程和程序校驗的控制信號。RST復位輸入。當振蕩器工作時,RST引腳出現(xiàn)兩個機器周期以上高電平將是單片機復位。ALE/PROG當訪問外部程序存儲器或數(shù)據(jù)存儲器時,ALE(地址鎖存允許)輸出脈沖用于鎖存地址的低8位字節(jié)。一般情況下,ALE仍以時鐘振蕩頻率的1/6輸出固定的脈沖信號,因此它可對外輸出時鐘或用于定時目的。要注意的是:每當訪問外部數(shù)據(jù)存儲器時將跳過一個ALE脈沖。如有必要,可通過對特殊功能寄存器(SFR)區(qū)中的8EH單元的D0位置位,可禁止ALE操作。該位置位后,只有一條

10、MOVX和MOVC指令才能將ALE激活。此外,該引腳會被微弱拉高,單片機執(zhí)行外部程序時,應設置ALE禁止位無效。PSEN程序儲存允許(PSEN)輸出是外部程序存儲器的讀選通信號,當AT89C52由外部程序存儲器取指令(或數(shù)據(jù))時,每個機器周期兩次PSEN有效,即輸出兩個脈沖,在此期間,當訪問外部數(shù)據(jù)存儲器,將跳過兩次PSEN信號。EA/VPP外部訪問允許,欲使CPU僅訪問外部程序存儲器(地址為0000H-FFFFH),EA端必須保持低電平(接地)。需注意的是:如果加密位LB1被編程,復位時內部會鎖存EA端狀態(tài)。如EA端為高電平(接Vcc端),CPU則執(zhí)行內部程序存儲器的指令。1.3 時鐘芯片D

11、S1302簡介1.3.1 主要功能DS1302 是美國DALLAS公司推出的一種高性能、低功耗、帶RAM的實時時鐘電路,它可以對年、月、日、周日、時、分、秒進行計時,具有閏年補償功能,工作電壓為2.5V5.5V。采用三線接口與CPU進行同步通信,并可采用突發(fā)方式一次傳送多個字節(jié)的或RAM數(shù)據(jù)。DS1302內部有一個318的用于臨時性存放數(shù)據(jù)的RAM寄存器。DS1302是DS1202的升級產品,與DS1202兼容,但增加了主電源/后備電源雙電源引腳,同時提供了對后備電源進行涓細電流充電的能力。特性: 實時時鐘,可對秒、分、時、日、周、月以及帶閏年補償?shù)哪赀M行計數(shù) 用于高速數(shù)據(jù)暫存的 318 RA

12、M 2引腳的串行 I/O 2.5-5.5V滿度工作范圍 用于時鐘或RAM數(shù)據(jù)讀寫的單字節(jié)或 多字節(jié)數(shù)據(jù)傳送 雙電源引腳 可選慢速充電至VCC11.3.2 內部結構及引腳功能DS1302內部主要包括實時時鐘(real time clock)、輸入移位寄存器(input shift registers)、31字節(jié)靜態(tài)RAM、電源控制部分(power control)、命令控制邏輯(command and control logic)、振蕩器和分頻器(oscillator and divider)等部分。DS1302內部結構如圖1-2所示。圖1-2 DS1302內部結構圖1-3 DS1302引腳排列

13、DS1302具有8腳DIP引腳排列如圖1-3所示。Vcc1:后備電源,在主電源關閉的情況下,也能保持時鐘的連續(xù)運行;當Vcc2大于Vcc10.2V時,Vcc2給DS1302供電。Vcc2:主電源,當Vcc2小于Vcc1時,DS1302由Vcc1供電。X1、X2:振蕩源,外接32.768kHz晶振。GND:接地端SCLK:串行時鐘輸入端I/O:串行數(shù)據(jù)輸入輸出端(雙向)。RST:復位/片選線,通過把RST輸入驅動置高電平來啟動所有的數(shù)據(jù)傳送。RST輸入有兩種功能:首先,RST接通控制邏輯,允許地址/命令序列送入移位寄存器;其次,RST提供終止單字節(jié)或多字節(jié)數(shù)據(jù)的傳送手段。1.3.3 工作原理DS

14、1302工作時為了對任何數(shù)據(jù)傳送進行初始化,需要將復位腳(RST)置為高電平且將8位地址和命令信息裝入移位寄存器。數(shù)據(jù)在時鐘(SCLK)的上升沿串行輸入,前8位指定訪問地址。命令字裝入移位寄存器后,在之后的時鐘周期,讀操作時輸出數(shù)據(jù),寫操作時輸入數(shù)據(jù)。時鐘脈沖的個數(shù)在單字節(jié)方式下為8+8(8位地址+8位數(shù)據(jù)),在多字節(jié)方式下最多可達8+248。1.3.4 控制字節(jié)及寄存器DS1302的一次數(shù)據(jù)傳送是從發(fā)送控制字節(jié)開始的??刂谱止?jié)的最高有效位(位7)必須是邏輯1,如果該位為0,則無法把數(shù)據(jù)寫入到DS1302中;位6表示要讀寫的數(shù)據(jù)類型,為0表示存取日歷時鐘數(shù)據(jù),為1表示存取 RAM數(shù)據(jù);位5至位

15、1指示要操作單元的地址;最低有效位(位 0)表示命令類型,為0表示要進行寫操作,為 1 表示要進行讀操作??刂谱止?jié)總是從最低位開始輸出。其控制字節(jié)格式如圖1-4所示。圖1-4 控制字節(jié)格式1.3.5 時鐘/日歷存儲區(qū)(時分秒)1.3.6 數(shù)據(jù)的傳送向 DS1302 寫入數(shù)據(jù)時,數(shù)據(jù)在控制字節(jié)輸入后的下一個 SCLK周期的上升沿被寫入,多余的 SCLK將被忽略。數(shù)據(jù)寫入時從低位(位0)開始;同樣,從DS1302 讀取數(shù)據(jù)時,數(shù)據(jù)在緊跟控制字節(jié)后的下一個 SCLK的下降沿讀出,讀出數(shù)據(jù)時也是從低位(0位)到高位(7 位),只要RST保持高電平,額外的 SCLK將導致數(shù)據(jù)字節(jié)的持續(xù)讀出,這個特性用于

16、實現(xiàn)該芯片的突發(fā)讀模式。對DS1302 的每一次讀寫需 16個時鐘脈沖,前 8 個脈沖輸入操作地址和讀寫命令,后8個脈沖寫入或讀出數(shù)據(jù)。數(shù)據(jù)傳送時序如圖1-5。圖1-5 數(shù)據(jù)讀寫時序圖第二章 硬件設計2.1 系統(tǒng)結構及總流程圖單片機AT89S52數(shù)碼管顯示實時時鐘芯片DS1302電源電路蜂鳴電 路時 間鬧 鐘設 置電 路圖3-1 系統(tǒng)總體結構根據(jù)軟件功能要求,將系統(tǒng)軟件劃分為若干個相對獨立的部分,設計出合理的總體結構:時鐘顯示是一個循環(huán)過程,系統(tǒng)以單片機AT89S52為主控制器,不斷讀取實時時鐘芯片DS1302提供的時間送LED顯示,時間采用24小時模式;當達到鬧鐘所設定時間時,控制蜂鳴器發(fā)聲

17、一分鐘;當需要調整時間或鬧鐘時,按下相應按鍵進入中斷處理。整個系統(tǒng)的電源可由電池提供或者用USB電源線由電腦提供。系統(tǒng)總體結構如圖3-1所示。2.2 系統(tǒng)硬件電路設計圖2.2.1整體電路設計將DS1302時鐘芯片與單片機的P1口連接構成系統(tǒng)的實時時鐘電路的部分;將鍵盤與單片機的P1.4-P1.7接口連接組成系統(tǒng)的按鍵電路,用來對顯示器的控制;LED的段選端與單片機的P0口連接構成系統(tǒng)的顯示段選控制系統(tǒng);將位選與P2口連接使系統(tǒng)的位選較好。2.2.2 DS1302電路設計DS1302部分電路設計圖將DS1302的X1、X2引腳分別與晶振相連,并通過兩個分立電容相連然后接地;將VCC1、VCC2相

18、連然后接地,此部分構成了DS1302芯片的供電電路。將DS1302的RST引腳接單片機P1.1引腳作為DS1302的復位引腳電路;將DS1302的SLK引腳單片機的P1.2引腳相連組成DS1302的時鐘端電路;將DS1302的I/O引腳與單片機的P1.3相連構成DS1302的I/O端口的電路連接圖。2.2.3 按鍵電路按鍵部分電路設計圖將四個按鍵分別與單片機的P1.4-P.7相連組成系統(tǒng)的按鍵電路部分,P1.4用來接key1,此按鍵作為切換鍵,P1.5接口接key2,此鍵作為加,P1.6接口接key3,此鍵最為系統(tǒng)減位,2.2.4 顯示電路系統(tǒng)顯示部分電路設計圖將LED數(shù)碼顯示管的段選端與單片

19、機的P0口相連,由于數(shù)碼管采用的是動態(tài)顯示,所以通過對P0的8位二進制數(shù)據(jù)的不斷改變使數(shù)碼顯示管不斷的動態(tài)顯示;將LED的位選端與單片機的P2口連接使LED數(shù)碼顯示管不斷的到位選信號在與數(shù)選信號不斷的配合下顯示數(shù)時間數(shù)據(jù)。第三章、程序源代碼3.1程序流程圖圖為系統(tǒng)軟件系統(tǒng)流程圖,通過不斷的切換與循環(huán)實現(xiàn)系統(tǒng)循環(huán)計時此圖為按鍵掃描軟件流程圖,通過軟件的不斷掃描信號,確認按鍵的掃描情況。3.1源程序專心-專注-專業(yè)#include#define uchar unsigned char#define uint unsigned intsbit beep = P33 ;sbit RST = P11 ;

20、sbit SCK = P12 ;sbit SDA = P13 ; sbit key1 = P14 ;sbit key2 = P15 ;sbit key3 = P16 ;sbit key4 = P17 ;uchar i,j,mod,flag,flag1=1 ;/uchar code write_addr7=0x80,0x82,0x84,0x86,0x88,0x8a,0x8c; /uchar code read_addr7=0x81,0x83,0x85,0x87,0x89,0x8b,0x8d; /共陽數(shù)碼管碼表,表示0-9和-。-表示時分秒的間隔.uchar code LED11 = 0xC0,0

21、xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,;uchar disbuf8 = 0x62,0xa2,0xf7,0x7a,0x28,0xf7,0x7e,0x7e ;/定義時間日期的結構類型struct time uchar second ; uchar minute ; uchar hour ; uchar week ; uchar day ; uchar month ; uchar year ;current_time ;#define ctime current_time/定義鬧鐘的時分秒變量uchar asec,amin,ahour ;void d

22、elay(uint ms) uchar i ; while(ms-) for(i=135;i0;i-);/滴一聲,用來按鍵伴音void di() uchar i ; for(i=0;i0; i-) di(); delay(140); /DS1302的寫驅動,傳入?yún)?shù)為一個地址和數(shù)據(jù)void write(uchar addr,uchar dat) uchar i ; RST = 0 ; SCK = 0 ; RST = 1 ; for(i=0;i=1 ; SCK = 1 ; for(i=0;i= 1 ; SCK = 1 ; RST = 0 ;/DS1302的讀驅動,傳入?yún)?shù)為一個地址,返回參數(shù)為讀

23、到的數(shù)據(jù)uchar read(uchar addr) uchar i,dat ; RST = 0 ; SCK = 0 ; RST = 1 ; for(i=0;i=1 ; SCK = 1 ; for(i=0;i=1 ; if(SDA) dat|=0x80 ; SCK=1 ; RST=0 ; dat=(dat/16*10)+(dat&0x0f); return dat ;/讀取DS1302的時間和日期void read_time() ctime.second = read(0x81); ctime.minute = read(0x83); ctime.hour = read(0x85); ctim

24、e.day = read(0x87); ctime.month = read(0x89); ctime.week = read(0x8b); ctime.year = read(0x8d);/設定時間和日期void set_time() if(!flag) write(0x8e,0x00); write(0x80,(ctime.second/10)4|(ctime.second%10); write(0x82,(ctime.minute/10)4|(ctime.minute%10); write(0x84,(ctime.hour/10)4|(ctime.hour%10); write(0x8e

25、,0x80); else write(0x8e,0x00); write(0x86,(ctime.day/10)4|(ctime.day%10); write(0x88,(ctime.month/10)4|(ctime.month%10); write(0x8a,(ctime.week/10)4|(ctime.week%10); write(0x8c,(ctime.year/10)i); P0=disbufi; i+; /3msx8x20,大約480ms從DS1302芯片讀取一下時間 if(j=20) j=0 ; refbuf(); if(mod=0) read_time(); 第四章 Pro

26、teus軟件仿真仿真顯示用Keil軟件編譯程序生成可執(zhí)行文件.hex文件后,在Proteus文件中在單片機里加入Keil軟件中生成的hex文件,然后仿真測試3-1-1 顯示時分秒Hex文件燒入到單片機中后看到數(shù)碼管顯示的效果為 時時分分秒秒的樣式,剛開始時數(shù)碼管顯示有亂碼的現(xiàn)象,此現(xiàn)象為系統(tǒng)剛上電后系統(tǒng)初始化閃動的現(xiàn)象,大約過了1秒鐘后系統(tǒng)便正常工作,顯示格式為課程設計要求的格式。對于系統(tǒng)的按鍵部分,當調節(jié)各個按鍵,數(shù)碼顯示管對應的數(shù)碼位處于閃爍狀態(tài),然后進入可調整階段,可以對系統(tǒng)的時間顯示部分進行調整。系統(tǒng)的電路及顯示效果均到達設計要求總 結 本設計利用單片機AT89C51控制串行實時時鐘芯

27、DS1302構成數(shù)字時鐘電路,實現(xiàn)計時功能。該電路使用簡單的三線接口,為單片機節(jié)省大量的接口資源,時鐘芯片帶有后備電池。該時鐘功能強大,性能優(yōu)越,能為很多領域,特別是對時鐘工作的準確性和可靠性有較高要求。軟件完成后,把偉福編譯后的文件通過燒錄器下載到AT89S52芯片,加上電源就可以進行調試。各程序模塊具有一定的獨立性,因此可以先調試模塊,在模塊功能都能實現(xiàn)的前提下,再調試總程序,這樣能快捷地檢查判斷硬件或軟件上的問題。調試結果及解決辦法如下:測試顯示模塊時,數(shù)碼顯示管全亮顯示“8.8.8.8.8.8.8.8.”而不是預設的初值。利用Proteus軟件仿真,發(fā)現(xiàn)仿真時顯示正常,再檢查硬件,發(fā)現(xiàn)段碼位選線與P0口接線錯誤。按原理圖重新焊接后,能正常顯示。測試DS讀寫模塊時,從LED顯示表明能正確寫入與讀取當前時間,但DS1302的工作情況不太理想,主要表現(xiàn)在實時時間稍微偏快。DS1302 時鐘的產生基于外接的晶體振蕩器,振蕩器的頻率為32768HZ,該晶振通過引腳X1、X2 直接連接至DS1302,即DS1302 是依靠外部晶振與其內部的電容配合來產生時鐘脈沖,由于DS1302

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 4. 未經(jīng)權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
  • 6. 下載文件中如有侵權或不適當內容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論