基于單片機的實時時鐘系統(tǒng)設計畢業(yè)設計論文(C語言編程、含PCB圖)_第1頁
基于單片機的實時時鐘系統(tǒng)設計畢業(yè)設計論文(C語言編程、含PCB圖)_第2頁
基于單片機的實時時鐘系統(tǒng)設計畢業(yè)設計論文(C語言編程、含PCB圖)_第3頁
基于單片機的實時時鐘系統(tǒng)設計畢業(yè)設計論文(C語言編程、含PCB圖)_第4頁
基于單片機的實時時鐘系統(tǒng)設計畢業(yè)設計論文(C語言編程、含PCB圖)_第5頁
已閱讀5頁,還剩42頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、- 1 -畢業(yè)設計畢業(yè)設計(論論文)文)任任務書務書題目:題目: 基于基于12cr887 的實時時鐘系統(tǒng)設計的實時時鐘系統(tǒng)設計任務與要求:任務與要求:時鐘功能:該時鐘最少可以準確走時幾十年,在掉電后時鐘芯片12cr887 由內部集成鋰離子電池供電,之所以在不需要看時鐘信息時可以將主電源拔掉,當需要看時鐘信息時插上主電源即可正常顯示。日期功能:能夠準確的顯示當前日期,具有閏年,平年日期自動調整功能。鬧鐘功能:能夠按規(guī)定的定時時間報時。要求:1、確定單片機的 i/o 口,選擇單片機的型號,選擇外圍設備,所須電源參數。2、單片機外圍 i/o 接線圖3、設計控制程序1) 、選擇 stc89c52 單片

2、機設計2) 、選擇 ds12cr887 作為時鐘源3) 、選擇 74ls273 作為地址鎖存器4) 、選擇 tda2822 作為鬧鐘功率放大器4、程序與說明畢業(yè)設計畢業(yè)設計( (論文論文) )進度計劃表進度計劃表日日 期期工工 作作 內內 容容執(zhí)執(zhí) 行行 情情 況況指指導導教教師師簽簽 字字2 0 0 9年4月2 0日2009 年 4 月 30 日認識課題:圍繞要求掌握的內容,查閱書籍、資料確定設計方案。方法:書店購買書籍、利用工作之余努力學習單片機編程、在網上申請 ds12cr887 免費樣品,在電子城買其他外圍元器件。- 2 -2009 年 5 月 5 日2009 年 5 月 10 日讀圖

3、:查閱 ds12cr887 時鐘芯片內部結構相關資料、利用所學的知識重點對單片機如何讀取 ds12cr887 內部數據信息進行分析,確定時鐘顯示電路、調時輕觸按鈕、地址鎖存器 74ls273、鬧鐘蜂鳴器、stc51 單片機的選取。2009 年 5 月 12 日2009 年 5 月 18 日基于 ds12cr887 實時日歷時鐘的硬件連接,stc51 單片機編程器的制作。并畫出原理圖及其 pcb 板準備外發(fā) pcb 公司打板!2009 年 5 月 20 日2009 年 5 月 25 日編寫程序,調試程序,并用軟件仿真!將調試成功的程序下載到單片機中!2009 年 5 月 26 日時鐘制作成功,并

4、觀察走時的準確性,為編寫畢業(yè)論文做準備!2009 年 5 月 27 日2009 年 6 月 5 日整理編寫畢業(yè)設計論文,準備答辯。指導教師對進度計劃實施情況總評簽名: 年 月 日- 3 -目目 錄錄摘要摘要 第第 1 1 章章 緒論緒論 .11.1 實時時鐘研究的背景和意義.11.2 本論文研究的主要內容.1本章小結本章小結 .第第 2 2 章章 系統(tǒng)概述系統(tǒng)概述 .32.1 實時時鐘的特點.32.2 實時時鐘芯片 ds12cr887 工作原理.32.3 實時時鐘芯片 ds12cr887 主要性能參數.32.4 七段數碼管構成的顯示電路工作原理.3第第 3 3 章章 硬件設計硬件設計 .53.

5、1 stc89s52 單片機編程器電路.53.2 電源和顯示時間控制電路.53.3 按鍵調時控制電路 .53.4 鬧鐘電路.5第第 4 4 章章 片機軟件設計4.1 實時時鐘芯片 ds12cr887 編程基礎.74.2 時間調整,鬧鐘調整,年、月、日調整卻換子程序設計 .74.3 時間調整子程序設計.74.4 鬧鐘定時調整子程序設計.74.5 年、月、日顯示子程序設計.74.6 年、月、日調整子程序設計.74.7 數碼管顯示子程序設計.7第第 5 5 章章 結論結論 .27謝辭謝辭參考文獻參考文獻- 4 -附錄附錄 a:基于:基于 12cr887 實時時鐘實時時鐘 pcb 板板- 5 -摘要摘

6、要隨著我國經濟的飛速發(fā)展,城市人口日益增多,人們在忙碌的日常生活中都少不了一個穩(wěn)定可靠的時鐘!當我們在火車站候車時總是時不時盯著電子顯示屏的時間來預知車次的到來,當我們在工廠里面工作時,一個工人工資的多少往往都是以時間來計算的!由此看來一個穩(wěn)定可靠的時鐘在我們的日常生活中具有很實際的意義。本課題是基于 ds12cr887 時鐘芯片為時鐘源,單片機為主控制系統(tǒng)開發(fā)的一個實時時鐘。該時鐘走時準確,并且在掉電的狀態(tài)下最少也能準時間工作 10年,它不但具有走時準確的功能,而且還能夠準確的顯示年,月,日,星期。在本設計中充分利用了單片機內部資源,涉及到了鍵盤控制、數碼管顯示、中斷系統(tǒng)、定時/計數器、串口

7、通信等,這既是對所學知識的總結也是對自己動手能力的最好鍛煉。通過本次設計,我成功的制作出了屬于自己的產品,并對單片機有了更深層次的了解。通過本次設計,要想真正的學好單片機就要找時間去多“玩”單片機,也就是說多練習,多想,按照自己的想法去開發(fā)產品,這樣才能真正的掌握單片機。 單片機“入門既不難,深造也是辦得到的”,只要有恒心、有決心,跟隨“連載”一步步走下去,將來就一定能在單片機世界里遨游。關鍵詞關鍵詞:實時時鐘 單片機 stc89c52 ds12cr887- 6 -第第 1 1 章章 緒緒 論論1.1 實時時鐘研究的背景和意義實時時鐘研究的背景和意義 在我們的現實生活中可能每個人都擁有自己的時

8、鐘,因為有了時鐘我們就可以按著時間去工作,按著時間有計劃的去處理某些事情。但是有沒有人想過你的時鐘走時不準的時候,你是多么的煩惱呢。因為在生活中大多數時鐘多是非實時的,只要把電池取下來時鐘就將停止工作,或者當你的時鐘電池耗盡時它將也停止工作。就連人們常帶的電子手表也要定期更換電池,否則將停止工作。然而又有沒有人想過在更換電池上所話費金錢的多少呢?我們就以電子鐘一個月更換一次電池來計算吧,換一次電池大概需要 3 元錢,一年下來將要花費 36 元錢,十年下來將要花費 360 元,還不算電池漲價的情況與時鐘維修的錢!而本次設計的實時時鐘不但時間是連續(xù)的,而且在掉電的情況下也能工作幾十年,并且制作成本

9、也才 20 來塊錢。本時鐘還具有環(huán)保、走時無噪音、低功耗等非實時時鐘不具有的功能。該實時時鐘不但可以作為家用,而且更可以在公共場合使用,如車站、碼頭、商場等場所。1.2 本論文研究的主要內容本論文研究的主要內容本文是以實時時鐘芯片 ds12cr887 和 stc89c52 單片機為主要研究對象,著重進行 51 單片機控制系統(tǒng)的設計研究和如何讀取 ds12cr887 內部時鐘信息的研究。主要內容包括:1、時間顯示系統(tǒng)的設計;2、調整時間系統(tǒng)的設計;3、年、月、日顯示系統(tǒng)的設計;4、年、月、日調整系統(tǒng)的設計;5、鬧鐘定時系統(tǒng)的設計;6、鬧鐘定時響應系統(tǒng)的設計;7、如何讀取 ds12cr887 內部

10、時鐘信息; 本章小結本章小結本章介紹了基于 ds12cr887 實時時鐘在現實生活中的重要性,總結了本論文研究的目的、意義及要完成主要工作的任務。- 7 -第第 2 2 章章 系統(tǒng)概述系統(tǒng)概述2.1 實時時鐘的特點實時時鐘的特點 1、走時準確無誤,配置靈活,設用于工廠,車站,家庭等領域使用。 2、價格較低,外圍設備較簡單易于制作。 3、低功耗,能夠掉電工作幾十年。 4、工作無噪音,不影響他人休息。 5、鬧鐘報時準確,不會誤報錯報。 6、外表美觀,實用,實用價值高。2.2 實時時鐘工作原理實時時鐘工作原理本時鐘在上電工作時首先顯示當前時間時、分、秒,然后延時一段時間后顯示當前年、月、日,并在設定

11、的鬧鈴時間鬧鐘響應。當用戶需要調整年、月、日、時、分、秒鬧鈴時可以按輕觸按鈕進行調節(jié)。在掉電的情況下,顯示屏上面沒有顯示,但在時鐘芯片 ds12cr887 內部已經集成了可充電鋰離子電池,其內部任然在不間斷的工作中,即時在掉電的情況下 ds12cr887 至少也能工作十年,所以當給單片機再次供電時,單片機對 ds12cr887 進行讀數據,然后通過顯示屏顯示準確無誤的時間!2.3 實時時鐘芯片實時時鐘芯片 ds12cr887 主要性能參數主要性能參數 1,時鐘芯片,時鐘芯片 ds12cr887,其引腳分布圖如下所示其引腳分布圖如下所示mot (1 腳) :總線時序模式選擇腳。接高電平,選擇 m

12、otorola 總線時;序;接低電平或懸空,擇選擇 intel 總線時序。nc (2,3,16,20,21,22 腳):懸空腳。ad0ad7(411 腳):地址/地址數據復用總線引腳。cs(13 腳):片選腳,低電平有效。- 8 -as(14 腳):地址鎖存輸入腳。下降沿時,地址被鎖存,緊接著的上升沿來時地址被清除。r/w(15 腳):讀/寫輸入腳。在選擇 motorola 總線時序模式時,此引腳用于指示當前的讀寫周期,高電平指示當前為讀周期,低電平指示當前為寫周期;選擇 intel 中線時序模式時,此引腳為低電平有效的輸入腳,相當于通用 ram 的寫使能信號(/we)ds(17 腳):選擇

13、motorola 總線時序模式時,此引腳為數據鎖存腳;選擇 intel 總線時序模式時,此引腳為讀輸入腳,低電平有效,相當于典型的內存的輸出使能信號(/oe)reset(18 腳):復位腳,低電平有效,復位不會影響到時鐘、日歷和ram。irq(19 腳):中斷申請輸出腳,低電平有效,可作為微處理器的中斷輸入。sqw(23 腳):方波信號輸出腳??赏ㄟ^設置寄存器位 sqwe 關斷此信號輸出,此信號的輸出頻率也可通過對芯片內部的寄存器編程予以改變。vcc(24 腳):+5v 電源端。2,時鐘芯片,時鐘芯片 ds12cr887,其內存空間如下所示其內存空間如下所示 01314495051 127地址

14、 0x000x09 共十個寄存器,分別存放秒、秒鬧鐘、分、分鬧鐘、時、時鬧鐘、小時、時鬧鐘、星期、日、月、年和年信息,地址 0x32 為世紀信息寄存器(解決了千年問題);地址 0x0a0x0dh 共 4 個寄存器,分別為寄存器 a、b、c、d,它們用于控制和寄存某些狀態(tài)信息;其余的113 字節(jié)地址空間是留給用戶使用的普通地址空間。在所有的 128 字節(jié)中,寄存器 c 和 d 為只讀寄存器,寄存器 a 的第7 位屬于只讀位,秒字節(jié)的高階位也是只讀的,其余字節(jié)均為可直接讀寫0秒1 秒鬧鐘14 字節(jié)2 分鐘3 分鬧鐘 4 時鐘5 時鬧鐘6 星期7 日8 月9 年10 寄存器 a11 寄存器 b12

15、寄存器 c13 寄存器 d000d0e3132337f50 世紀- 9 -字節(jié)。時鐘,日歷信息可以通過讀取合適的內存字節(jié)獲得:時鐘、日歷和鬧鐘可以寫合適的內存字節(jié)設置和初始化。對應時鐘、日歷和鬧鐘的 10 個寄存器字節(jié)可以是二進制形式或者 bcd 碼形式,在寫這些寄存器時,寄存器b 的 set 位必須置 1。寄存器 a 字節(jié)的內容如下。msb lsbuip: 更新標志位。為只讀位且不受復位操作的影響,為 1 時,表示即將發(fā)生的數據更新;為 0 時,表示至少 244us 不會更新數據。當 uip 為 0 時,可以獲得所有時鐘、日歷、鬧鐘信息。將寄存器 b 中的 set 位置 1 可以限制任何數據

16、更新操作,并且清除 uip 位。dv2、dv1、dv0:此 3 位為 010 時將打開晶振,并開始計時。res3、res2、res1、res0:用于設置周期性中斷產生的時間周期和輸出方波的頻率。寄存器 b 字節(jié)的內容如下。 msb lsbset:設置位,可讀寫,不受復位操作影響。為 0 時,不處于設置狀態(tài),芯片進行正常時間數據更新;為 1 時,抑制數據更新,可以通過程序設定時間和日歷信息。pie:周期性中斷使能位,可讀寫,復位時清除此位。為 1 時,允許寄存器 c 中的周期中斷標志位 pf,驅動/irq 引腳為低產生中斷信號輸出,中斷信號產生的周期由 rs3re0 決定。aie:鬧鐘中斷使能位

17、,可讀寫。為 1 時,允許寄存器 c 中的鬧鐘中斷標志位 af、鬧鐘發(fā)生時就會通過/irq 引腳產生中斷輸出。uie:數據更新結束中斷使能位,可讀寫。復位或者 set 位為 1 時清除此位。為 1 時允許寄存器 c 中的更新結束標志 uf,更新結束時就會通過/irq 引腳產生中斷輸出。sqwe:方波使能位,可讀寫,復位時清除此位。為 0 時,sqw 引腳保持低電平;為 1 時,sqw 引腳輸出方波信號,其頻率由 rs3rs0 決定。dm:數據模式位,可讀寫,不受復位操作影響。為 0 時,設置時間、日歷信息為二進制數據;為 1 時,設置為 bcd 碼數據。24/12:時間模式設置為,可讀寫,不受

18、復位操作影響。為 0 時,設置為12 小時模式;為 1 時,設置為 24 小時模式。dse:為 1 時,會引起兩次特殊的時間更新;4 月的第一個星期日凌晨1:59:59 會直接更新到 3:00:00,10 月的最后一個星期日凌晨 1:59:59會直接更新到 1:00:00;為 0 時,時間信息正常更新,此位可讀寫,不受復位操作影響。寄存器 c 字節(jié)內容如下。 msb lsbiqrf:中斷申請標志位。為 1 時,/irq 引腳為低,產生中斷申請。當 uip dv2 dv1 dv0 rs3 rs2 rs1 rs0 set pie aie uie sqwe dm24/12 dse irqf pf a

19、f uf 0 0 0 0- 10 -pf、pie 為 1 時或者 af、ate 為 1 或者 uf、uie 為 1 時,此位為 1,否則置 0.pf:中期中斷標志位。為 1 時,它是只讀位,和 pie 位狀態(tài)無關,由復位操作或者寄存器 c 操作清除。af:鬧鐘中斷標志位。為 1 時,表示當前時間和鬧鐘設定時間一至,由復位操作或讀寄存器 c 操作清除。uf:數據更新結束中斷標志位。每個更新周期后此位都會置 1,當 uie位位置 1 時,uf 若為 1 就會引起 irqf 置 1,將驅動/irq 引腳為低電平,申請中斷。此位由復位操作或讀寄存器 c 操作清除。寄存器 d 字節(jié)的內容如下。 msb

20、lsbvrt;ram 和時間有效位。用于指示和 vbat 引腳連接的電池狀態(tài)。此位不可寫,也不受操作為影響,正常情況下讀取時總去為 1,如果出現讀取為0 的情況,則表示電池耗盡,時間數據和 ram 中的數據就會出現問題。芯片 ds12cr887 的 113 字節(jié)普通 ram 空間為非易失性 ram 空間,他不專門用于某些特別功能,而是可以在未處理器程序中作為非易失性內存空間使用。3,74ls273 其引腳分布圖如下圖所示其引腳分布圖如下圖所示 rd(1 腳):復位腳。低電平有效,當 1 腳是低電平時,輸出腳 2(1q)、5(2q)、6(3q)、9(4q)、12(5q)、15(6q)、16(7q

21、)、 19(8q)。 全部輸出 0,即全部復位。t(11 腳):鎖存控制端。上升沿觸發(fā),當 1 腳為高電平時,且 11 腳有上升沿時,立即鎖存輸入腳 3(1d)、4(2d)、7(3d)、8(4d)、13(5d)、14(6d)、17(7d)、18(8d)上的電平狀態(tài),并呈現在輸出腳 2(1q)、5(2q)、6(3q)、9(4q)、12(5q)、15(6q)、16(7q)、 19(8q)上。4,七段數碼管構成的顯示電路工作原理。,七段數碼管構成的顯示電路工作原理。 本設計顯示電路部分由六個共陽極數碼構成。其中共陽極公共端用三級管進行驅動, 段碼由 74ls273 地址鎖存器控制,并采用數碼管總線動

22、態(tài)掃描方 0 0 0 0 0 0 0 0- 11 -式進行時間,年、月、日的顯示。具體硬件電路在后面的硬件設計中有提供!第第 3 章章 硬件設計硬件設計3.1 stc89c52 單片機編程器結構單片機編程器結構由于 stc89c52 單片機只支持串口下載,加上手中沒有現成的編程器,故只能自己動手做個簡單的編程。該編程器主要由 max232 電平轉換芯片和單片機最小系統(tǒng)構成,利用 rs-232 接口實現單片機和計算機通信,并由單片機專用燒錄軟件將程序寫在單片機中。由于 stc89c52 單片機在寫程序進去時,具有冷啟動過程,所以在編程之前必去將主電源復位一次,本電路中復位按鈕為s1。其單片機燒錄

23、軟件為 stcispv31,編程器電路如下圖所示。stc89c52 單片機編程器電路如下所示:- 12 -3.2 電源和顯示控制結構電路電源和顯示控制結構電路 電源部分由一片 lm7805 構成 5v 的穩(wěn)壓電源,為整個電路提供電能。 由兩片 74ls273,六個共陽極數碼管,六個 npn 型三極管等元器件構成了完整的時間、年、月、日、顯示電路。其中 u2 控制六個數碼管的段碼,u3控制三極管的基極再由三極管放大電流后驅動數碼管的公共端!采用總線掃描方式,利用人眼視覺暫留現象,在程序的控制下在數碼管上面顯示出所需要的數值! 電源和顯示控制電路如下所示: - 13 -3.3 按鍵調時控制電路按鍵

24、調時控制電路 該電路主要由 stc89c52 單片機最小系統(tǒng),ds12cr887,調時按鈕 s1s3及其外為元器件所構成。通過編寫程序讓單片機讀取 ds12cr887 里面的信息,然后由 ds12cr887 控制地址鎖存器 74ls273 進而控制數碼管的顯示。當按下按鈕時單片機都會由走時狀態(tài)轉到調時狀態(tài)進入時間調整、年、月、日、鬧鐘調整狀態(tài)。當調整結束后又回到新的走時狀態(tài)。 按鍵調時控制電路如下所示:- 14 -3.4 鬧鐘電路鬧鐘電路該電路主要由 tda2822 功率放大模塊將單片機發(fā)出的鬧鐘信號進行放大,進而推動一個 3w 喇叭。供電部分與單片機共用 5v 的電源,該設計的最大特點就是能

25、夠清脆的聽出鬧鐘時發(fā)出的音樂曲調。鬧鐘電路如下所示:- 15 - 第第 4 章章單片機軟件設計單片機軟件設計4.1 實時時鐘芯片實時時鐘芯片 ds12cr887 編程基礎編程基礎 1,在本設計中,ds12cr887 采用 intel 總線模式進行與單片機進行數據讀也寫操作。當 1 腳(mot)為低電平時,ds12cr887 為 motorola 總線模式,在此不做詳述。當 1 腳(mot)為高電平或懸空時,ds12cr887 為intel 總線模式,本設計中將 1 腳(mot)懸空。在編寫程序的過程中首先應將 ds12cr887 按 intel 總線模式初始化,在 intel 總線模式下將數據

26、寫在指定的地址,在 intel 總線模式下將指定的地址讀出數據。 2,intel 總線寫時序時序圖如下:3,intel 總線讀時序時序圖如下:- 16 - 4,根據 intel 總線寫時序時序圖寫數據程序: void write_12cr887(uchar add,uchar date)/在指定地址寫入數據 cs=0; ds=1; rw=1; as=1; p0=add; as=0; rw=0; p0=date; rw=1; as=1;cs=1; 5,根據 intel 總線讀時序時序圖讀數據程序: uchar read_12c887(uchar add)/在指定的地址讀出數據 uchar rea

27、d_data; ds=1; rw=1; as=1; cs=0; p0=add; as=0; ds=0; p0=0xff; read_data=p0;ds=1; as=1; cs=1; return(read_data);4.24.2 時間調整,鬧鐘調整,年、月、日調整切換子程序設計時間調整,鬧鐘調整,年、月、日調整切換子程序設計當按下按鈕 sw1 時,中間標志位 i 會自動進行加操作。當 i 等于 1 時,時間調整標志位置 1,進入時間調整狀態(tài)。當 i 等于 2 時,鬧鐘調整標志位置 1,進入鬧鐘調整狀態(tài)。當i 等于 3 時,年、月、日調整標志位置 1,進入年、月、日調整狀態(tài)。1,時間調整,鬧

28、鐘調整,年、月、日調整卻換子程序如下: void gongneng_quehuan()/功能卻換子程序if(sw1=0)- 17 -delay(5);if(sw1=0)while(sw1=0);display(read_12c887(seconds),read_12c887(minutes),read_12c887(hours);i+;if(i=1)flag_set_time=1;/將時間調整標志位置 1else if(i=2)flag_set_time=0;flag_set_alarm=1;/將鬧鐘調整標志位置 1else if(i=3)i=0;flag_set_century=1;/將年、

29、月、日調整標志位置 14.3 時間調整子程序設計時間調整子程序設計 由于本人想向單片機更高層次編程,本設計只用三個按鈕根據不同的組合狀態(tài)進行時間,鬧鐘,年,月,日的調整。所以程序相對來說是比較復雜的。具體時間調整過程是這樣的,首先進行小時調整,然后進行分鐘調整,最后進行秒鐘調整。在小時調整過程中,如果 sw2 按鈕每按下一次時將對小時當前值加 1 次,當加到 24 時小時清零;如果 sw3 按鈕每被按下一次時將對小時當前值減 1 次,當減到 0 后再按一次 sw3 時小時賦值到 23。小時調整完畢后將所調整好的小時值寫入小時寄存器中,然后又將寫入到小時寄存器的數值從ds12cr887 中讀取出

30、來并在顯示屏上顯示出來。在分鐘調整過程中,如果sw2 按鈕每按下一次時將對分鐘當前值加 1 次,當加到 60 時分鐘清零,小時加 1;如果 sw3 按鈕每被按下一次時將對分鐘當前值減 1 次,當減到 0 后再按一次 sw3 時分鐘賦值到 59。分鐘調整完畢后將所調整好的分鐘值寫入分鐘寄存器中,然后又將寫入到分鐘寄存器的數值從 ds12cr887 中讀取出來并在顯示屏上顯示出來。在秒鐘調整過程中,如果 sw2 按鈕每按下一次時將對秒鐘當前值加 1 次,當加到 60 時秒鐘清零,分鐘加 1;如果 sw3 按鈕每被按下一次時將對秒鐘當前值減 1 次,當減到 0 后再按一次 sw3 時秒鐘賦值到 59

31、。秒鐘調整完畢后將所調整好的秒鐘值寫入秒鐘寄存器中,然后又將寫入到秒鐘寄存器的數值從 ds12cr887 中讀取出來并在顯示屏上顯示出來。當小時、分鐘、- 18 -秒鐘都調整完畢后按下確認鍵(sw1 和 sw2 都被按下時)時間調整完成,并將當前所調整出來的數值在顯示屏上面顯示出來,進入時間顯示狀態(tài)。 1,時間調整子程序如下: void shijian_tiaozheng()char hours_timeset,timeset=0;if(flag_set_time=1)write_12c887(register_b,0xa6);flag_set_time=0;if(timeset=0)hour

32、s_timeset=read_12c887(hours);/讀取當前小時的值sw2=1;sw1=1;while(sw2=0)&(sw1=0)!=1)/如果確認鍵未按下,一直處于小時調整狀態(tài)if(sw2=0)delay(5);if(sw2=0)while(sw2=0)display(read_12c887(seconds),read_12c887(minutes),read_12c887(hours);hours_timeset+;/小時值加 1if(hours_timeset=24)hours_timeset=0;write_12c887(hours,hours_timeset);/將調整后的

33、小時的值寫入小時寄存器/led2=1;if(sw3=0)delay(5);if(sw3=0)while(sw3=0)display(read_12c887(seconds),read_12c887(minutes),read_12c887(hours);hours_timeset-;/小時值減 1if(hours_timeset=60)hours_timeset=0;write_12c887(minutes,hours_timeset);if(sw3=0)delay(5);if(sw3=0)while(sw3=0)display(read_12c887(seconds),read_12c887

34、(minutes),read_12c887(hours);- 20 -hours_timeset-;if(hours_timeset=60)hours_timeset=0;write_12c887(seconds,hours_timeset);if(sw3=0)delay(5);if(sw3=0)while(sw3=0)- 21 -display(read_12c887(seconds),read_12c887(minutes),read_12c887(hours);hours_timeset-;if(hours_timeset=24)alarmset=0;- 23 -write_12c887

35、(hours_alarm,alarmset);/將調整后的小時的值寫入小時寄存器if(sw3=0)delay(5);if(sw3=0)while(sw3=0)display(read_12c887(seconds_alarm),read_12c887(minutes_alarm),read_12c887(hours_alarm);alarmset-;/小時值減 1if(alarmset=60)alarmset=0;- 25 -write_12c887(minutes_alarm,alarmset);if(sw3=0)delay(5);if(sw3=0)while(sw3=0)display(r

36、ead_12c887(seconds_alarm),read_12c887(minutes_alarm),read_12c887(hours_alarm);alarmset-;if(alarmset=60)alarmset=0;write_12c887(seconds_alarm,alarmset);- 27 -if(sw3=0)delay(5);if(sw3=0)while(sw3=0)display(read_12c887(seconds_alarm),read_12c887(minutes_alarm),read_12c887(hours_alarm);alarmset-;if(alar

37、mset=99)century_set=0;write_12c887(year,century_set);/將調整后的年份寫入年寄存器- 31 -if(sw3=0)delay(5);if(sw3=0)while(sw3=0)display(read_12c887(day_of_month),read_12c887(month),read_12c887(year);century_set-;/年份減if(century_set12)month=1;write_12c887(month,month);if(sw3=0)delay(5);if(sw3=0)while(sw3=0)display(re

38、ad_12c887(day_of_month),read_12c887(month),read_12c887(year);month-;if(month31)century_set=1;break;case 3:if(century_set31)century_set=1;break;case 5:if(century_set31)century_set=1;break;case 7:if(century_set31)century_set=1;break;case 8:if(century_set31)century_set=1;break;case 10:if(century_set31)

39、century_set=1;break;case 12:- 36 -if(century_set31)century_set=1;break;case 4:if(century_set30)century_set=1;break;case 6:if(century_set30)century_set=1;break;case 9:if(century_set30)century_set=1;break;case 11:if(century_set30)century_set=1;break;case 2:if(flag_runnian=1)if(century_set29)century_se

40、t=1;- 37 -else if(century_set28)century_set=1;break;default: break;write_12c887(day_of_month,century_set);if(sw3=0)delay(5);if(sw3=0)while(sw3=0)display(read_12c887(day_of_month),read_12c887(month),read_12c887(year);century_set-;switch(month)case 1:if(century_set1)century_set=31;break;- 38 -case 3:i

41、f(century_set1)century_set=31;break;case 5:if(century_set1)century_set=31;break;case 7:if(century_set1)century_set=31;break;case 8:if(century_set1)century_set=31;break;case 10:if(century_set1)century_set=31;break;case 12:if(century_set1)century_set=31;break;- 39 -case 4:if(century_set1)century_set=3

42、0;break;case 6:if(century_set1)century_set=30;break;case 9:if(century_set1)century_set=30;break;case 11:if(century_set1)century_set=30;break;case 2:if(flag_runnian=1)if(century_set1)century_set=29;else if(century_set1)century_set=28;- 40 -break;default: break;write_12c887(day_of_month,century_set);d

43、isplay(read_12c887(day_of_month),read_12c887(month),read_12c887(year);centuryset=0;while(sw2&sw1)=0)display(read_12c887(day_of_month),read_12c887(month),read_12c887(year);4.6 數碼管顯示子程序設計數碼管顯示子程序設計 數碼管顯示部分主要由兩片 74ls273 地址鎖存器對數碼管進行控制。當控制段碼的 74ls273 鎖存端(11 腳)為 0 時,將所要顯示的段碼送入 74ls273的數據輸入端口,然后將所存端(11 腳)置

44、 1,使輸入的數據鎖存住并呈現在輸出數據端。然后將控制位碼的 74ls273 的鎖存端(11 腳)置 0,將要所顯示的位碼送入 74ls273 的數據輸入端口,然后將鎖存端(11 腳)置 1,使輸入的數據鎖存住并呈現在輸出數據端。就這樣利用數碼管動態(tài)掃描方式,所要顯示的數據通過數碼管顯示出來。 1,數碼管顯示子程序如下:void display(uchar second,uchar minute,uchar hour)- 41 -uchar seconds0,seconds1,minutes0,minutes1,hours0,hours1;seconds1=second/10; /秒鐘的十位求模 seconds0=second%10; /秒鐘的個位求余minutes1=minute/10;minutes0=minute%10;hours1=hour/10;hours0=hou

溫馨提示

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

評論

0/150

提交評論