基于STC89C52的可調電子鐘設計_第1頁
基于STC89C52的可調電子鐘設計_第2頁
基于STC89C52的可調電子鐘設計_第3頁
基于STC89C52的可調電子鐘設計_第4頁
基于STC89C52的可調電子鐘設計_第5頁
已閱讀5頁,還剩24頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、濱江學院畢業(yè)論文(設計) 題 目 學生姓名 學 號 院 系 專 業(yè) 指導教師 職 稱 目 錄第一章 概述31.1 背景31.2 研究目的3第二章 設計要求與方案論證42.1 設計要求42.2 系統(tǒng)基本方案選擇與論證42.2.1 單片機芯片的選擇與論證42.2.2 顯示模塊選擇和論證42.2.3 時鐘芯片的選擇和論證52.3 電路實際最終方案決定5第三章 主要原件介紹53.1 stc89c52介紹53.1.1 stc89c52主要功能53.1.2 stc89c52引腳介紹53.1.3 stc89c52的pdip封裝圖63.2ds1302時鐘芯片介紹73.2.1ds1302 簡介:73.2.2 d

2、s1302引腳介紹73.2.3 ds1302讀寫時序說明73.3 mt05643dr數碼管介紹83.4 語音芯片介紹8第四章 系統(tǒng)硬件設計94.1 電路設計框架94.2 stc89c52最小系統(tǒng)104.3 按鍵控制電路104.4 ds1302時鐘模塊104.5 電路仿真圖11第五章 系統(tǒng)的軟件設計125.1 系統(tǒng)軟件設計流程圖125.3 對ds1302讀寫操作函數135.6 按鍵函數21設計總結21參考文獻21致 謝22abstract23附錄24附錄一源程序代碼25附錄二原件清單31基于stc89c52的可調電子鐘設計摘要:隨著單片機技術飛速發(fā)展,它有力的推動了現代電子產品性能的增加。時間就

3、是金錢,時間就是生命,時間就是勝利,準確掌握時間并且分配時間對人們來說十分重要,時鐘是我們生活中必不可少的工具之一。本設計則是利用了stc89c52單片機對 ds1302時鐘芯片進行讀寫操作,并通過時鐘數碼管來顯示時鐘信息,這樣便構成了一個單片機電子時鐘。關鍵詞:單片機,電子時鐘,stc89c52第一章 概述1.1 背景近年來伴隨著計算機在社會上的應用以及大規(guī)模集成電路應用的發(fā)展,單片機的應用正不斷的深入,由于單片機具有、體積小、功能強、價格便宜、功耗低、使用方便等特點,所以特別適合與控制有關的系統(tǒng),越來越廣泛的自動控制,智能化的儀器,儀表,數據采集,軍工產品和家用電氣的各個領域。單片機往往是

4、作為一個核心部件來使用的,再根據其具體硬件結構以及針對具體應用對象特點的軟件結合,加以完善。時間對于人們來說是非常寶貴的,準備掌握和分配時間對人們來說更是至關重要。隨著時代推進和科學技術的不斷發(fā)展,人們對時間計量的精確度越來越高,時間計量的應用也越來越廣泛,這就促使了人們不斷的設計和研發(fā)出新時鐘。時鐘電路在計算機系統(tǒng)中起著至關重要的作用,它是保證系統(tǒng)正常工作的基礎。在單片機的應用系統(tǒng)中,時鐘有兩個方面的含義:一是指為保證系統(tǒng)正常工作的基準振蕩定時信號,主要是由晶振以及外圍電路組成,晶振頻率大小決定了單片機系統(tǒng)工作速度的快慢;二是指系統(tǒng)標準定時時鐘,即定時時間,它通常具有兩種實現方法:一種是利用

5、軟件實現,即利用單片機內部可編程定時器或者計數器來實現;另一種是用專門的時鐘芯片來實現。1.2 研究目的本設計通過利用stc89c52單片機,ds1302芯片,外圍按鍵和時鐘數碼管等部件,設計一個基于單片機的可調電子時鐘。設計的電子鐘通過數碼管現實,能通過按鍵對時間進行設置,并且有報時的功能。第二章 設計要求與方案論證2.1 設計要求具有時、分、秒的顯示功能具備時、分、秒的校準功能具有語音報時功能2.2 系統(tǒng)基本方案選擇與論證2.2.1 單片機芯片的選擇與論證方案一 :采用stc89c52芯片作為硬件核心。stc89c52的內部具有8kb rom存儲空間,512字節(jié)數據存儲空間,帶有2k字節(jié)e

6、eprom存儲空間,可與mcs-51系列的單片機完全兼容,并且它可以通過串口下載。方案二:采用at89s52芯片。at89s52的內部具有8k字節(jié)程序存儲空間,256字節(jié)的數據存儲空間,其沒有eeprom存儲空間,也可與mcs-51系列單片機完全兼容,具有在線編程可擦除技術。兩種單片機都能夠完全滿足設計的需要,但是stc89c52抗干擾能力強,并且價格相對比較便宜。因此選擇stc89c52芯片。2.2.2 顯示模塊選擇和論證方案一 :采用點陣式數碼管來現實。點陣式數碼管是由八行八列的發(fā)光二極管組成,可用來顯示數據。方案二:采用mt05643dr 四位數碼管顯示。 兩種顯示模塊都能滿足設計需要,

7、但是點陣式數碼管體積比較大,并且價格也相對較高,從便攜實用以及成本因素考慮,采用mt05643d數碼管顯示。2.2.3 時鐘芯片的選擇和論證方案一:采用單片機定時計數器提供秒信號,試用程序實現時、分、秒的計數。采用這種方案雖然能減少芯片的使用,能夠節(jié)約成本,但是實現的時間誤差會較大。方案二:采用ds1302時鐘芯片實現時鐘,ds1302芯片是一種高性能時鐘芯片,可自動對時分秒來進行計算,并且其精確度高。因此選擇ds1302時鐘芯片實現時鐘。2.3 電路實際最終方案決定 采用stc89c52單片機作為主控制系統(tǒng),采用ds1302作為時鐘芯片;采用mt05643dr數碼管作為顯示器件。第三章 主要

8、原件介紹3.1 stc89c52介紹3.1.1 stc89c52主要功能stc89c52是一種帶8k字節(jié) 閃爍可編程 可檫除 只讀存儲器(fperom-flash programable and erasable read only memory )的低電壓,高性能comos8的微處理器,俗稱單片機。該器件是采用atmel高密度非易失存儲器的制造技術制造,其與工業(yè)標準的mcs-51指令集和輸出管腳相兼容。stc89c5的內部具有一個用來構成振蕩器的高增益反相放大器,其引腳rxd和txd分別是該放大器輸入端以及輸出端。時鐘可以通過內部方式或者外部方式產生。內部方式產生的時鐘電路在rxd和txd引

9、腳外接定時元件時,內部振蕩器就會產生自激振蕩。定時元件常采用石英晶體及由電容組成的并聯諧振回路。晶體振蕩的頻率可在1.212mhz之間選擇,電容值可以在530pf間選擇,電容值大小可以對頻率起微調作用。外部方式產生的時鐘電路rxd接地,而txd則接外部振蕩器。對 外部振蕩信號沒有特殊要求,僅僅要求保證脈沖的寬度,通常采用其頻率低于12mhz的方波信號。片內時鐘發(fā)生器可把振蕩頻率兩分頻,產生一個兩相時鐘p1和p2,供給單片機使用。stc89c52主要功能如表3.1所示表3.1 stc89c52主要功能主要功能特性兼容mcs51指令系統(tǒng)8k可反復擦寫flash rom32個雙向i/o口256x8b

10、it內部ram3個16位可編程定時/計數器中斷時鐘頻率0-24mhz2個串行中斷可編程uart串行通道2個外部中斷源共6個中斷源2個讀寫中斷口線3級加密位低功耗空閑和掉電模式軟件設置睡眠和喚醒功能3.1.2 stc89c52的引腳介紹(1) 主電源引腳(2根)vcc (pin40):電源的輸入,接5v電源;gnd (pin20):接地線;(2)外接晶振引腳(2根)xtal1 (pin19):片內振蕩電路輸入端;xtal2 (pin20):片內振蕩電路輸出端;(3)控制引腳(4根)rst/vpp (pin9):復位引腳。引腳上,出現2個機器周期高電平將使單片機復位;ale/prog (pin30

11、):地址鎖存允許信號;psen (pin29):外部存儲器讀選通信號;ea/vpp (pin31):程序存儲器的內外部選通,接低電平從外部程序的存儲器讀指令,如果接高電平則是從內部程序的存儲器讀指令。(4)可編程輸入/輸出引腳(32根)stc89c52單片機有4組8位的可編程i/o口,其分別位p0、p1、p2、p3口,每個口有8位(8根引腳),一共32根。po口(pin39pin32):8位雙向i/o口線,名稱為p0.0p0.7;p1口(pin1pin8):8位準雙向i/o口線,名稱為p1.0p1.7 ;p2口(pin21pin28):8位準雙向i/o口線,名稱為p2.0p2.7 ;p3口(p

12、in10pin17):8位準雙向i/o口線,名稱為p3.0p3.7;3.1.3 stc89c52的pdip封裝圖stc89c52的pdip封裝圖如圖3.1:圖3.1 stc89c52的pdip封裝圖3.2 ds1302時鐘芯片介紹3.2.1 ds1302 簡介: ds1302是由美國的dallas公司推出的一種高性能低功耗的實時時鐘芯片,附加31字節(jié)靜態(tài)ram,采用了spi三線接口和cpu進行同步通信,并且可采用突發(fā)方式 一次傳送多個字節(jié)時鐘信號以及ram數據。實時時鐘可以提供時分秒年月日以及星期,一個月小于31天可以自動進行調整,并且具有閏年的補償功能。工作電壓則寬達2.55.5v。其采用雙

13、電源的供電(主電源和備用電源),可以設置備用電源的充電方式,提供對后背電源進行涓細電流充電的能力。 ds1302用于數據的記錄,尤其是對某些具有特殊意義的數據點的記錄,能實現數據與出現此數據的時間同時記錄,因此廣泛的應用于測量系統(tǒng)中。ds1302 時鐘芯片存在時鐘精度不高,易受環(huán)境影響,出現時鐘混亂等一些缺點。ds1302可以用于數據的記錄,特別是對具有特殊意義數據點的記錄,能夠實現數據和出現此數據時間同時的記錄。這種記錄對長時間連續(xù)測控系統(tǒng)結果的分析和對異常數據出現原因的查找具有重要的意義。傳統(tǒng)數據記錄方式分別是隔時采樣或是定時采樣,沒有具體的時間記錄,因此,只能記錄數據卻不能準確的記錄出現

14、的時間。如果采用單片機計時,一方面需要采用計數器,占用了硬件資源,而另一方面則需要設置中斷、查詢等,同樣耗費了單片機資源。并且某些測控系統(tǒng)會不允許。但如果在系統(tǒng)中采用時鐘芯片ds1302,則可以很好地解決這個問題。 ds1302的工作原理:ds1302工作時為了能對任何數據傳送進行初始化,需要將復位腳(rst)置為高電平并且將8位地址以及命令信息裝入移位的寄存器。數據在時鐘(sclk)上升沿串行輸入,前8位指定訪問地址,命令字裝入移位的寄存器后,在之后的時鐘周期中,讀寫操作時分別輸入數據和輸出數據。時鐘脈沖的個數在單字節(jié)的方式下是8+8(8位地址+8位數據),在多字節(jié)的方式下是8加最多可達24

15、8的數據。ds1302寄存器以及控制命令:對 ds1302的操作就是對它內部寄存器的操作,ds1302內部一共具有12個寄存器,其中有七個寄存器與日歷和時鐘相關,存放的數據位是bcd碼形式。另外,ds1302還有年份寄存器、充電寄存器、控制寄存器、時鐘突發(fā)寄存器以及與 ram 相關的寄存器等。時鐘突發(fā)寄存器可以一次性順序讀寫除充電寄存器以外的寄存器。3.2.2 ds1302引腳介紹ds1302外部引腳分配如圖3.3圖3.3 dsi302外部引腳分配各個引腳的功能為: vcc1:是備用電源;vcc2是主電源。當vcc2vcc1+0.2v時,由vcc2向ds1302供電,當vcc2 vcc1時,則

16、是由vcc1向ds1302供電。sclk:串行時鐘輸入; i/o:三線接口時雙向數據線;ce:輸入信號,在讀、寫數據時,必須為高。此引腳具有兩個功能:一ce開始控制字訪問移位寄存器的控制邏輯;其次ce提供結束單字節(jié)或者多字節(jié)數據傳輸的方法。3.2.3 ds1302讀寫時序說明 ds1302是spi總線的驅動方式。它不僅需要向寄存器寫入控制字還需要讀取相應寄的存器的數據。 要與ds1302通信,需要了解ds1302的控制字。ds1302的控制字如圖3.4。圖3.4ds1302的控制字控制字最高有效位(位7)必須是邏輯1,如果為0,就不能把數據寫入到ds1302中。位6:如果為0,表示存取日歷時鐘

17、的數據,為1表示存取ram數據;位5至位1(a4a0):指示操作單元地址;位0(最低有效位):如為0,表示進行寫操作,為1表示進行讀操作??刂谱挚偸菑淖畹臀婚_始輸出的。在控制字指令輸入后下一個sclk時鐘的上升沿時,數據寫入ds1302,數據輸入從最低位(0位)開始。同樣,在緊跟8位控制字指令后的下一個sclk脈沖的下降沿,讀出ds1302的數據,讀出的數據也是從最低位到最高位。數據讀寫時序如圖3.5。圖3.5數據讀寫時序3.3 mt05643dr數碼管介紹mt05643dr是一個四位共陽極數碼管,四位數碼管是半導體的發(fā)光器件,它的基本單元為發(fā)光二極管,能顯示4個數碼管叫四位數碼管。數碼管按段

18、數可分為七段數碼管以及八段數碼管,八段數碼管則比七段數碼管多了一個發(fā)光二極管的單元(多一個小數點顯示)。按照發(fā)光二極管單元的連接方式分為共陽極和共陰極數碼管。共陽極數碼管指將所有的發(fā)光二極管陽極接到一起形成公共陽極(com)數碼管。共陽極數碼管應用時則是將公共極com接到+5v,當某一字段的發(fā)光二極管陰極為低電平時,相應字段則點亮。當某一字段陰極為高電平時,相應字段則不亮。共陰極數碼管是指將所有的發(fā)光二極管的陰極接到一起從而形成公共陰極(com)的數碼管。共陰極數碼管在應用時應將公共極com接到地線gnd上,當某一字段的發(fā)光二極管的陽極為高電平時,相應字段就點亮。當某一字段的陽極為低電平時,相

19、應字段則不亮。數碼管的動態(tài)顯示接口是單片機中應用最為廣泛的顯示方式之一,動態(tài)驅動是將所有數碼管的8個顯示筆劃a,b,c,d,e,f,g,d,p的同名端連在一起,另外為每個數碼管公共極com增加位選通控制電路,位選通是由各自獨立的i/o線控制。當單片機輸出字形碼時,所有數碼管都接收到相同的字形碼,但究竟是哪一個數碼管會顯示出字形,取決于單片機所對位選通com端電路的控制,所以只要將需要顯示的數碼管的選通控制打開,該位就能顯示出字形,沒有選通的數碼管就不會亮。通過時分輪流控制各個數碼管的com端,就使各個數碼管輪流受控顯示,這就是動態(tài)驅動。在輪流顯示的過程中,每位數碼管點亮時間為1-2ms,由于人

20、的視覺暫留現象以及發(fā)光二極管的余輝效應,盡管實際上各位數碼管并不是同時點亮,但是只要掃描的速度足夠快,給人的印象就是一組穩(wěn)定的顯示數據,不會有閃爍感,動態(tài)顯示的效果和靜態(tài)顯示是一樣的,能節(jié)省大量的i/o端口,并且功耗更低。mt05643dr數碼管電路圖如下圖圖3.3數碼管示意圖圖3.4數碼管內部結構3.4 語音芯片介紹語音芯片是將語音信號通過采樣轉化為數字,存儲在ic的rom中,并且再通過電路將rom中的數字還原成語音信號。根據語音芯片的輸出方式可分為兩大類,一類是pwm輸出方式,一類是dac輸出方式。pwm輸出音量不能連續(xù)可調,不能接普通功放;而dac經內部eq放大,該語音芯片聲音能連續(xù)可調

21、,可以數字控制調節(jié),可外接功放。普通語音芯片放音功能實質上是一個dac過程,而adc過程資料則是由電腦完成,其中包括了對語音信號的采樣、壓縮、eq等處理。錄音芯片則包括adc和dac兩個過程,都是由芯片本身來完成的,包括了語音數據的采集、分析、壓縮、存儲、播放等步驟。音質的優(yōu)劣則是取決于adc和dac位數的多少。例如:20秒到 340秒,最低從10秒到340秒.語音芯片直觀地從名稱上看,就是與語音有關的芯片,語音就是存儲電子聲音,凡是能發(fā)出聲音的芯片就是語音芯片,俗稱聲音芯片;英文準確些來說應該是voice ic。 在語音芯片中,根據聲音類型的不同可分為(speech ic)和(music i

22、c)兩種。單片語音錄放電路是由語音存儲單元、增益控制電路、輸出放大器所組成的。一個最小的語音系統(tǒng)僅由一個喇叭、一個電源、少數電阻電容組成。利用它語音和音頻信號被直接存儲,在相應預設定的時間段里可以實現報時功能。本設計采用的語音芯片的控制原理圖,如圖3.4.1。任何時候需要播放的那一段都是先發(fā)送一個ret信號,再發(fā)送相對應的段碼就可以了,任何時候發(fā)送一個ret信號(不接著發(fā)送段落選擇脈沖)都會使芯片停止工作,同時播放指針則指向第一段。圖3.4.1控制原理圖第四章 系統(tǒng)硬件設計4.1 電路設計框架顯示模塊主控模塊復位模塊時鐘模塊按鍵模塊語音模塊圖4.1電路設計框架4.2 stc89c52最小系統(tǒng)最

23、小系統(tǒng)指能進行正常工作的最簡單的電路。stc89c52的最小應用系統(tǒng)電路如圖3.2所示。它包含了五個電路部分:電源電路,時鐘電路,復位電路,片內外程序存儲選擇電路以及輸入/輸出接口電路。其中電源電路、時鐘電路和復位電路是保證單片機系統(tǒng)能正常工作的最基本的三部分電路。電源電路:其芯片引腳vcc一般接上直流穩(wěn)壓電源+5v;引腳gnd接電源+5v負極,電源的電壓范圍在4-5.5之間,可保證單片機系統(tǒng)的正常工作。為了提高電路的抗干擾性,通常在引腳vcc與gnd間街上10uf的電解電容和一個0.1uf的陶片電容,這樣可以抑制雜波的干擾,進而有效的保證電路的穩(wěn)定性能。時鐘電路:單片機的引腳18,19外接晶

24、振以及電容,stc89c52芯片工作頻率則是在2-33mhz范圍之間選擇,單片機工作頻率由晶振xt頻率所取決的。復位電路:一般在引腳rst上保持24個工作的主頻周期高電平,單片機則可以完成復位,但是為了保證系統(tǒng)的可靠復位,復位電路應該使用引腳rst保持10ms以上的高電平。如圖4.2為stc89c52的最小系統(tǒng)。圖4.2最小系統(tǒng)4.3 按鍵控制電路本設計需要校對時間,所以用三個按鍵來實現。通過按k1實現時分秒的切換,在任意數碼管閃爍是按k2,k3分別是對該閃爍值增1和減1,在任意調節(jié)狀態(tài)按k1,正常顯示時間。k4則是對當時時間的報時。下圖4.3為按鍵控制電路:圖4.3按鍵控制電路圖4.4 ds

25、1302時鐘模塊ds1302時鐘模塊的電路圖 如圖4.4圖4.4 ds1302時鐘模塊4.5 電路仿真圖如圖4.5第五章 系統(tǒng)的軟件設計系統(tǒng)的軟件設計也是對工具系統(tǒng)功能的設計。單片機軟件設計主要包括執(zhí)行軟件(完成各種實質性功能)的設計以及監(jiān)控軟件的設計。單片機軟件設計通常要考慮以下幾個方面的問題:(1)根據軟件功能的要求,將系統(tǒng)軟件劃分為若干個相對獨立的部分,從而設計出合理的總體結構,使軟件開發(fā)清晰簡潔和流程合理;(2)需要培養(yǎng)良好的編程風格,比如考慮結構化程序的設計、實行模塊化、子程序化。不進便于調試、鏈接,而且便于移植和修改;(3)建立正確的數學模型,通過仿真提高系統(tǒng)性能,并且選擇合適的參

26、數;(4)繪制程序流程圖;(5)合理的分配系統(tǒng)資源;(6)為程序加入注釋,提高程序的可讀性,實施軟件工程;(7)注意軟件的抗干擾性的設計,提高系統(tǒng)可靠性。5.1 系統(tǒng)軟件設計流程圖 主程序是先開始,然后初始化地址參數,定時器啟動后進行按鍵檢測,檢測完之后就可以顯示時間。ds1302時鐘芯片具有通電自動計算時間的功能,采用ds13o2時鐘芯片單片機時鐘,實質上就是讀取時鐘芯片里的時鐘信息并顯示出來。只要時間初值正確,時鐘就能夠一直準確的走下去。如圖5.1開始初始化地址參數是否有鍵按下調用子函數修改時間是 否讀取時間 將時間轉換為字符型顯示圖5.1主函數流程圖5.2 對ds1302讀寫操作函數在對

27、ds1302時鐘芯片操作前,應對其操作時序有所了解,參看前文對ds1302的介紹。ds1302是采用串行方式與單片機進行通信,一個機器周期只能讀寫一個字節(jié)的一位,因此在單片機與ds1302芯片間傳輸一字節(jié)(8位)數據,要分8次進行,并且先從低位開始傳輸。如圖5.2.1,5.2.2為寫ds1302流程圖,讀ds1302流程圖。開始開始復位端變高啟動一次數據傳送工作復位端變高啟動一次數據傳送工作寫命令字節(jié)一位 y n y n寫命令字節(jié)一位sclk發(fā)脈沖sclk發(fā)脈沖夠八次嗎夠八次嗎 n n讀數據字節(jié)一位寫數據字節(jié)一位 y y sclk發(fā)脈沖sclk發(fā)脈沖夠八次嗎夠八次嗎復位端變低復位端變低結束結束

28、5.3 按鍵函數此電子時鐘共有4個按鍵,k1、k2、k3與調試有關,按鍵k4為報時按鍵k1 功能鍵:在24小時顯示模式下,該鍵被第一次按下后進入秒調整,數碼管顯示器上的時間停止走動。模式,再次按下后進入分調整模式,接著是時調整模式k當第四次按下該鍵后退出。k2 調整鍵:在調整模式下,該鍵每按下一次,相應時間k加1k3 確定鍵:在調整模式下,該鍵被按下后,退出調整模式,并將調整后的時間寫入ds1302k4 為報時按鍵,按下則由語音芯片報出對應的時間。每按下k1鍵,狀態(tài)改變一次,標記狀態(tài)從1改變到3如圖5.3.1為按鍵狀態(tài)處理工程設置時間:秒狀態(tài)1設置時間:分狀態(tài)2設置時間:時狀態(tài)3圖5.3.1按

29、鍵狀態(tài)處理每按一次鍵,相應的時間加1,但是時間是以bcd碼的形式存放在ds1302時鐘芯片上的,如果直接對其進行操作,如秒、假如秒的初試時間是00,它在ds1302芯片中存放的值為00000000,它的后4位則代表秒的個位,在時鐘芯片自動計時的時侯,10秒后它的后四位為10時,它能自動進位變?yōu)?0010000。但是在調秒的狀態(tài)下按10次s2鍵,我們希望秒變成00010000,實際上其值變?yōu)?0001010,因此我們引入參數分別代表秒的十位和個位。設計總結通過本次論文的設計,使我加深了對單片機知識的認識,并且熟悉了單片機系統(tǒng)的設計流程。本次設計功能上基本達標:時鐘的顯示,調時功能,語音報時功能。

30、技術在不斷進步,機械式的時鐘已經被淘汰,取而代之的是具有高度準確性、直觀性、無機械裝置并且具有更長的使用壽命等有點的電子時鐘。電子時鐘更加具有人性化,更能提高人們的生活質量,更受人們的歡迎。機械時代已經遠去,電子時代已經到來,作為新時代的我們,應該提高自身能力,適應新時代的發(fā)展。從這次的論文設計中,我真正的體會到知識的重要性,特別是要理論聯系實際,把我們所學的理論和知識運用到實際生活中。參考文獻1 楊家國單片機原理與應用及c51程序設計清華大學出版社2009-72 周向紅51單片機課程設計m 華中科技大學出版社2011-13 閻石數字電子線路m 高等教育出版社2009-74 周興華. 手把手教

31、你學單片機c語言程序設計m.北京:北京航空航天大學出版社,2007年5 張義和.例說51單片機m.北京:人民郵電出版社,2010年6 孫涵芳.單片機原理及應用m.北京航空航天大學出版社,19967 黃正謹.綜合電子設計與實踐m.東南大學出版社,20038 謝嘉奎.電子線路m.高等教育出版社,20039 lee jri.high-speed circuit designs for transmittersin broad-band data links. ieee journal of solid-state circuitsj. 2006 10 lim kyoohyun,park chanho

32、ng,kim dalsoo,et al.a low-noise phase-locked loop design by loop bandwidth optimization. ieee journal of solidstate circuits. 2000 11 george lee,karina ng,edmond kwang.design of ring oscillator based voltage controlled oscillator. project final reportr. 2005adjustable electric clock based on the stc

33、89c52chen pengnanjing university of information science & technology, binjiang college, information engineering specialty , nanjing 210044abstractwith the rapid development of microcomputer technology in its promotion ,it further improve the performance of modern electronic products. time is money,

34、time is life, time is victory. accurate grapes of time and allocation of time is crucial to people. the clock is necessary in our life tools. in this paper, through the use of stc89c52 microcontroller by ds1302 clock chips for reading and writing operation so that forming a single chip electronic cl

35、ock.key words: microcontroller, stc89c52, electronic clock.附錄附錄一:程序源代碼#include /包含單片機寄存器的頭文件#include /包含_nop_()函數定義的頭文件 #define uchar unsigned char #define uint unsigned int sbit sclk=p11; /位定義1302芯片的接口,時鐘輸出端口定義在p1.0引腳sbit data=p10; /位定義1302芯片的接口,數據輸出端定義在p1.1引腳sbit rst=p12; /位定義1302芯片的接口,復位端口定義在p1.2

36、引腳 sbit key1=p16; /調時 sbit key2=p17; /調分 啟動sbit key3=p30;sbit key4=p31; sbit busy=p13;/判忙端接8腳sbit sda=p14;/信號端接7腳sbit rst2=p15;/觸發(fā)端接6腳 void baoshi(unsigned char z);void yuyin(); uchar a,miao,shi,fen,ri,yue,nian,week,flag,key1n,temp; unsigned char m,n,p,t; unsigned char min,hour; /開始走秒 uchar code dua

37、n_code= 0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90;/共陽數碼管段碼表 uchar display_code= 0x00,0x00,0xbf,0x00,0x00,0xbf,0x00,0x00;/顯示格式,中間兩個橫杠 uchar bit_code= 0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f ;/數碼管位選 uchar current_time7; /所讀取的日期和時間 /調節(jié)標志 /*函數功能:延時若干微秒入口參數:n*/ void delaynus(unsigned char n) unsi

38、gned char i; for(i=0;in;i+); void delayms(uint x) /延時函數ms級 uchar i; while(x-) for(i=0;i+;i120); /*函數功能:向1302寫一個字節(jié)數據入口參數:x*/ void write1302(unsigned char dat) unsigned char i; sclk=0; /拉低sclk,為脈沖上升沿寫入數據做好準備 delaynus(2); /稍微等待,使硬件做好準備 for(i=0;i=1; /將dat的各數據位右移1位,準備寫入下一個數據位 /*函數功能:根據命令字,向1302寫一個字節(jié)數據入口參

39、數:cmd,儲存命令字;dat,儲存待寫的數據*/ void writeset1302(unsigned char cmd,unsigned char dat) rst=0; /禁止數據傳遞 sclk=0; /確保寫數居前sclk被拉低 rst=1; /啟動數據傳輸 delaynus(2); /稍微等待,使硬件做好準備 write1302(cmd); /寫入命令字 write1302(dat); /寫數據 sclk=1; /將時鐘電平置于高電平狀態(tài) rst=0; /禁止數據傳遞 /*函數功能:從1302讀一個字節(jié)數據入口參數:x*/ unsigned char read1302(void) u

40、nsigned char i,dat;delaynus(2); /稍微等待,使硬件做好準備for(i=0;i=1; if(data=1) /如果讀出的數據是1 dat|=0x80; /將1取出,寫在dat的最高位 sclk=1; /將sclk置于高電平,為下降沿讀出 delaynus(2); /稍微等待 sclk=0; /拉低sclk,形成脈沖下降沿 delaynus(2); /稍微等待 return dat; /將讀出的數據返回 /*函數功能:根據命令字,從1302讀取一個字節(jié)數據入口參數:cmd*/ unsigned char readset1302(unsigned char cmd)

41、unsigned char dat; rst=0; /拉低rst sclk=0; /確保寫數居前sclk被拉低 rst=1; /啟動數據傳輸 write1302(cmd); /寫入命令字 dat=read1302(); /讀出數據 sclk=1; /將時鐘電平置于已知狀態(tài) rst=0; /禁止數據傳遞 return dat; /將讀出的數據返回/*函數功能: 1302進行初始化設置*/ void init_ds1302(void) writeset1302(0x8e,0x00); /根據寫狀態(tài)寄存器命令字,寫入不保護指令 writeset1302(0x82,(miao/104)|(miao%1

42、0); /根據寫秒寄存器命令字,寫入秒的初始值writeset1302(0x84,(fen/104)|(fen%10); /根據寫分寄存器命令字,寫入分的初始值writeset1302(0x80,(fen/104|(fen%10); writeset1302(0x8e,0x80); /根據寫狀態(tài)寄存器命令字,寫入保護指令 displaymiao() display_code0=duan_codemiao/10;/小時為的十位 display_code1=duan_codemiao%10;/小時位的個位 p2=bit_code0; p0=display_code0; p2=bit_code1;

43、p0=display_code1; displayfen() display_code3=duan_codefen/10;/分鐘位的十位 display_code4=duan_codefen%10; p2=bit_code3; p0=display_code3; delayms(5); /分鐘為的個位 /按動3次,shi /write_1602com(0x0f); p2=bit_code4; p0=display_code4; delayms(5); displayshi() display_code6=duan_codeshi/10;/秒位的十位 display_code7=duan_cod

44、eshi%10; p2=bit_code6; p0=display_code6; delayms(5); p2=bit_code7; p0=display_code7; delayms(5); void keyscan() if(key1=0)/-key1為功能鍵(設置鍵)- delayms(9);/延時,用于消抖動 if(key1=0)/延時后再次確認按鍵按下 delayms(20); while(!key1); key1n+; if(key1n=4) key1n=1;/設置按鍵共有秒、分、時、星期、日、月、年、返回,8個功能循環(huán) switch(key1n) case 1: tr0=0;/關

45、閉定時器 /tr1=0; temp=(miao)/10*16+(miao)%10;/秒數據寫入ds1302 writeset1302(0x8e,0x00); writeset1302(0x80,0x80|temp);/miao write_1302(0x8e,0x80); break; case 2: display_code0=duan_codemiao/10;/小時為的十位 display_code1=duan_codemiao%10;/小時位的個位 p2=bit_code0; p0=display_code0; p2=bit_code1; p0=display_code1; delaym

46、s(5); /write_1602com(0x0f); break; case 3: display_code3=duan_codefen/10;/分鐘位的十位 display_code4=duan_codefen%10; p2=bit_code3; p0=display_code3; delayms(5); /分鐘為的個位 /按動3次,shi /write_1602com(0x0f); p2=bit_code4; p0=display_code4; delayms(5); break; case 4: display_code6=duan_codeshi/10;/秒位的十位 display_code7=duan_codeshi%10; p2=bit_code6; p0=display_code6; delayms(5); p2=bit_code7; p0=display_code7; delayms(5); /秒位的個位 break; case 5: tr0=1;/打開定時器 temp=(miao)/10*16+(miao)%10; writeset1302(0x8e

溫馨提示

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

最新文檔

評論

0/150

提交評論