電子鐘課程設(shè)計多功能電子鐘_第1頁
電子鐘課程設(shè)計多功能電子鐘_第2頁
電子鐘課程設(shè)計多功能電子鐘_第3頁
電子鐘課程設(shè)計多功能電子鐘_第4頁
電子鐘課程設(shè)計多功能電子鐘_第5頁
已閱讀5頁,還剩26頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、內(nèi)蒙古科技大學(xué)智能儀表綜合訓(xùn)練設(shè)計說明書題 目:多功能電子鐘學(xué)生姓名:趙曉紅學(xué) 號:0967112235專 業(yè):測控技術(shù)與儀器班 級:2009-2指導(dǎo)教師:肖俊生摘要隨著電子科學(xué)技術(shù)的不斷發(fā)展,許多電子產(chǎn)品給人們的生活帶來了根本性改變,多功能電子鐘是人們生活中必不可少的產(chǎn)品,為人們的生活帶來極大的方便。本次設(shè)計是根據(jù)多功能數(shù)字電子鐘的特點(diǎn),使用STC89C52單片機(jī)芯片控制電路以及DS1302時鐘芯片產(chǎn)生實時時鐘/日歷,利用4位LED數(shù)碼管顯示時間信息,通過4個獨(dú)立按鍵實現(xiàn)時間信息的切換和調(diào)整功能。設(shè)計的軟件程序利用Keil編輯實現(xiàn)、電子鐘的系統(tǒng)的仿真通過proteus和protelDXP繪制

2、電路原理圖及PCB電路板,軟件硬件實物的調(diào)試。關(guān)鍵詞:電子鐘;STC89C52;DS1302;74LS164;LED顯示;目錄第一章前言3第二章總體方案設(shè)計42.1總體設(shè)計思路42.2系統(tǒng)基本方案設(shè)計和論證4單片機(jī)STC89C524時鐘芯片DS130242.2.3 LED數(shù)碼管顯示方案確定42.3設(shè)計最終方案5第三章硬件設(shè)計63.1電子鐘總體硬件框圖63.2 STC89C5263.2.1 STC89C52芯片介紹63.2.2 STC89C52單片機(jī)的復(fù)位電路73.2.3 STC89C52單片機(jī)的晶振電路73.3 DS1302時鐘電路83.3.1 DS1302芯片介紹83.3.2 DS1302工

3、作原理83.3.3 DS1302 連接電路圖93.4 74LS164共陰極數(shù)碼管驅(qū)動芯片93.4.1 74LS164芯片功能及工作原理93.4.2 74LS164驅(qū)動數(shù)碼管103.5時鐘顯示校正電路103.6蜂鳴電路11第四章軟件設(shè)計124.1編譯語言的選擇124.2語言編輯軟件Keil簡介124.3程序設(shè)計12主程序模塊124.3.2 DS1302時鐘模塊13按鍵調(diào)整模塊144.3.4 74LS164驅(qū)動數(shù)碼管顯示模塊14第五章總結(jié)15參考文獻(xiàn)16附錄1 多功能電子鐘硬件原理圖及PCB電路板17附錄2 多功能電子鐘C程序18第一章 前言單片機(jī)技術(shù)已經(jīng)廣泛應(yīng)用于工業(yè)控制、智能化儀器儀表、家用電

4、器,甚至電子玩具等各個領(lǐng)域。它具有體積小、功能多可靠性高、價格低廉、使用方便、系統(tǒng)設(shè)計靈活等優(yōu)點(diǎn),不僅成為工業(yè)測控領(lǐng)域普遍采用的智能化控制工具,而且已滲入到人們工作和生活的各個角落,有力地推動了各行業(yè)的技術(shù)改革和產(chǎn)品的更新?lián)Q代,應(yīng)用前景廣闊。在單片機(jī)模塊中最常見的就是電子鐘,它采用數(shù)字電路實現(xiàn)對時、分、秒數(shù)字顯示的計時裝置,與機(jī)械時鐘相比具有更高的準(zhǔn)確性和直觀性?,F(xiàn)在市面上還有各種時鐘芯片通過簡單的串行通信與單片機(jī)進(jìn)行通信能夠?qū)崟r提供時間信息,使電子鐘被廣泛應(yīng)用于社會的各個領(lǐng)域,給人們的生活、學(xué)習(xí)、工作、娛樂帶來極大的方便。多功能數(shù)字電子鐘可以設(shè)置定時自動報警、定時自動鬧鈴、測試溫度、時間程序

5、自動控制、甚至各種電氣設(shè)備的自動啟用等功能,這樣的多功能數(shù)字電子鐘會使我們的生活更加方便,所以對多功能數(shù)字電子鐘的研究有很重要的現(xiàn)實意義。在這次電子鐘的設(shè)計過程中將已學(xué)過的比較零散的數(shù)字電路的知識有機(jī)的、系統(tǒng)的聯(lián)系起來用于實際,培養(yǎng)了綜合分析和設(shè)計電路,寫程序、調(diào)試硬件電路的能力。第二章 總體方案設(shè)計2.1總體設(shè)計思路本設(shè)計就是應(yīng)用單片機(jī)強(qiáng)大的控制功能制作而成的多功能數(shù)字電子鐘,該多功能數(shù)字電子鐘通過4位LED數(shù)碼管和4位獨(dú)立按鍵實現(xiàn)年、月、日、時和分的顯示以及時間顯示的切換、時間修改調(diào)整。本設(shè)計采用的是STC89C52單片機(jī)。計時芯片采用時鐘芯片DS1302,該芯片通過簡單的串行通信與單片機(jī)

6、進(jìn)行通信,時鐘/日歷電路能夠?qū)崟r提供年、月、日、時、分、秒信息,采用雙電源供電,當(dāng)外部電源掉電時能夠利用后備電池準(zhǔn)確計時。顯示采用LED靜態(tài)顯示,顯示驅(qū)動芯片74LS164為8位串入并出的移位寄存器。2.2系統(tǒng)基本方案設(shè)計和論證單片機(jī)STC89C52STC89C52是一個低電壓,高性能CMOS8位單片機(jī),片內(nèi)含8k bytes的可反復(fù)擦寫的Flash只讀程序存儲器和256 bytes的隨機(jī)存取數(shù)據(jù)存儲器(RAM)。主要性能有:兼容MCS51指令系統(tǒng)、32個雙向I/O口、256x8bit內(nèi)部RAM、3個16位可編程定時/計數(shù)器中斷、時鐘頻率0-24MHz、2個串行中斷、可編程UART串行通道、2

7、個外部中斷源、6個中斷源、2個讀寫中斷口線、3級加密位、低功耗空閑和掉電模式、軟件設(shè)置睡眠和喚醒功能。時鐘芯片DS1302采用DS1302時鐘芯片實現(xiàn)時鐘,DS1302芯片是一種高性能的時鐘芯片,可自動對秒、分、時、日、周、月、年以及閏年補(bǔ)償?shù)哪赀M(jìn)行計數(shù),而且精度高。計算機(jī)可通過中斷或查詢方式讀取計時數(shù)據(jù)并進(jìn)行顯示,因此計時功能的實現(xiàn)無需占用CPU的時間。LED數(shù)碼管顯示方案確定方案一:靜態(tài)顯示。靜態(tài)顯示,即當(dāng)顯示器顯示某一字符時,相應(yīng)的發(fā)光二極管恒定導(dǎo)通或截止。在靜態(tài)顯示系統(tǒng)中,每位顯示器都應(yīng)有各自的鎖存器、譯碼器與驅(qū)動器,顯示驅(qū)動電路具有輸出鎖存功能,用以鎖存各自待顯示數(shù)字的BCD碼或反碼

8、。因此,靜態(tài)顯示系統(tǒng)在每一次顯示輸出后能夠保持顯示不變,僅在待顯數(shù)字需要改變時,才更新其數(shù)字顯示器中鎖存的內(nèi)容。這種顯示占用很少的CPU時間,顯示數(shù)據(jù)穩(wěn)定可靠。方案二:動態(tài)顯示。動態(tài)顯示,即各位數(shù)碼管輪流點(diǎn)亮,對于顯示器各位數(shù)碼管,每隔一段延時時間循環(huán)點(diǎn)亮一次。在動態(tài)顯示系統(tǒng)中,微處理器或控制器應(yīng)定時地對各個顯示器進(jìn)行掃描,顯示器件分時輪流工作,每次只能使一個器件顯示,但由于人的視覺暫留現(xiàn)象,仍感覺所有的器件都在同時顯示。在LED數(shù)碼管輪流工作時,為了防止出現(xiàn)閃爍現(xiàn)象,LED數(shù)碼管刷新頻率必須大于25Hz,即同一LED數(shù)碼管相臨兩次點(diǎn)亮?xí)r間間隔要小于40ms。顯示器的亮度與導(dǎo)通電流、點(diǎn)亮?xí)r間及

9、間隔時間的比例有關(guān),調(diào)整參數(shù)可以實現(xiàn)較高穩(wěn)定度的顯示。動態(tài)顯示節(jié)省了I/O口,降低了能耗。在本次設(shè)計中,我們只用了4位LED數(shù)碼管,所需I/O口不多,整體電路不是很復(fù)雜,從占用CPU時間少和顯示穩(wěn)定的角度出發(fā),選擇方案一。2.3設(shè)計最終方案本次設(shè)計采用STC89C52作為主控制系統(tǒng), DS1302提供時鐘,利用74LS164驅(qū)動4位數(shù)碼管靜態(tài)顯示,4位獨(dú)立按鍵對時間顯示功能進(jìn)行切換和調(diào)整。該設(shè)計包括硬件電路原理的實現(xiàn)方案設(shè)計、軟件程序編輯的實現(xiàn)、電子鐘正常工作的流程圖及原理圖、硬件實物的調(diào)試和系統(tǒng)的仿真。第三章 硬件設(shè)計3.1電子鐘總體硬件框圖該電子鐘的設(shè)計采用STC89C52作為主控制系統(tǒng),

10、 DS1302提供時鐘,利用74LS164驅(qū)動4位數(shù)碼管靜態(tài)顯示,4位獨(dú)立按鍵對時間顯示功能進(jìn)行切換和調(diào)整,蜂鳴電路實現(xiàn)鬧鐘功能,整體硬件框圖如圖3.1所示。圖3.1多功能電子鐘系統(tǒng)硬件電路組成框圖3.2 STC89C52 STC89C52芯片介紹STC89C52是一種低功耗、高性能CMOS8位微控制器,具有8K 在系統(tǒng)可編程Flash存儲器。芯片擁有靈巧的8 位CPU和在系統(tǒng)可編程Flash,使得STC89C52為眾多嵌入式控制應(yīng)用系統(tǒng)提供高靈活、超有效的解決方案。具有以下標(biāo)準(zhǔn)功能:8k字節(jié)Flash,512字節(jié)RAM, 32位I/O 口線,看門狗定時器,內(nèi)置4KB EEPROM,MAX81

11、0復(fù)位電路,三個16位定時器/計數(shù)器,一個6向量2級中斷結(jié)構(gòu),全雙工串行口。另外 STC89X52 可降至0Hz 靜態(tài)邏輯操作,支持2種軟件可選擇節(jié)電模式??臻e模式下,CPU 停止工作,允許RAM、定時器/計數(shù)器、串口、中斷繼續(xù)工作。掉電保護(hù)方式下,RAM內(nèi)容被保存,振蕩器被凍結(jié),單片機(jī)一切工作停止,直到下一個中斷或硬件復(fù)位為止。最高運(yùn)作頻率35MHz。圖3.2為STC89C52的引腳功能圖。圖3.2STC89C52引腳功能圖STC89C52單片機(jī)的復(fù)位電路任何單片機(jī)在開始工作前,都必須進(jìn)行一次復(fù)位過程,使單片機(jī)處于一種確定的狀態(tài)。當(dāng)在STC89C52單片機(jī)的RST引腳引入高電平并保持2個機(jī)器

12、周期時,單片機(jī)內(nèi)部就執(zhí)行復(fù)位操作(若該引腳持續(xù)保持高電平,單片機(jī)就處于循環(huán)復(fù)位狀態(tài))。按鍵手動復(fù)位電路,RST端通過電阻與VCC電源接通,通過電阻的分壓就可以實現(xiàn)單片機(jī)的復(fù)位,如圖3.3所示。圖3.3復(fù)位電路3.2.3 STC89C52單片機(jī)的晶振電路單片機(jī)工作的過程中各指令的微操作在時間上有嚴(yán)格的次序,這種微操作的時間次序稱作時序,單片機(jī)的時鐘信號用來為單片機(jī)芯片內(nèi)部各種微操作提供時間基準(zhǔn),89C52的時鐘產(chǎn)生方式有兩種,一種是內(nèi)部時鐘方式,一種是外部時鐘方式。外部時鐘方式是把外部已有的時鐘信號引入到單片機(jī)內(nèi),此方式常用于多片89C52單片機(jī)同時工作,以便于各單片機(jī)的同步,這種方式適宜用來使

13、單片機(jī)的時鐘與外部信號保持同步。一般要求外部信號高電平的持續(xù)時間大于20ns.且為頻率低于12MHz的方波。為了盡量降低功耗,所以采用內(nèi)部時鐘方式,連接方式如圖3.4所示。圖3.4晶振電路在89C52單片機(jī)的內(nèi)部有一個震蕩電路,只要在單片機(jī)的XTAL1和XTAL2引腳外接石英晶體(簡稱晶振)就構(gòu)成了自激振蕩器并在單片機(jī)內(nèi)部產(chǎn)生時鐘脈沖信號,圖中電容C1和C2的作用是穩(wěn)定頻率,電容值一般為30pF,晶振選擇的是11.0592MHz。3.3 DS1302時鐘電路 DS1302芯片介紹DS1302時鐘芯片可以工作于24小時模式或AM/PM的12小時模式。其內(nèi)部包含了10個時鐘寄存器和31字節(jié)RAM,

14、這些寄存器和RAM用來存放各種時間數(shù)據(jù)。在使用時,可以對芯片的當(dāng)前時間進(jìn)行設(shè)定。DS1302能在非常低的功耗下工作。DS1302時鐘芯片的主要性能有實時時鐘記錄計秒、分鐘、小時、日、月和年;31字節(jié)RAM存儲時間數(shù)據(jù);2.05.0V供電;采用三線接口與CPU進(jìn)行同步通信,并可采用突發(fā)方式一次傳送多個字節(jié)的時鐘信號或RAM數(shù)據(jù);8針DIP封裝和SOIC封裝;兼容TTL電平。 DS1302工作原理DS1302的引腳排列,其中Vcc1為后備電源,Vcc2為主電源。在主電源關(guān)閉的情況下,也能保持時鐘的連續(xù)運(yùn)行。DS1302由Vcc1或Vcc2兩者中的較大者供電。當(dāng)Vcc2大于Vcc10.2V時,Vcc

15、2給DS1302供電。當(dāng)Vcc2小于Vcc1時,DS1302由Vcc1供電。X1和X2是振蕩源,外接32.768kHz晶振。RST是復(fù)位/片選線,通過把RST輸入驅(qū)動置高電平來啟動所有的數(shù)據(jù)傳送。RST輸入有兩種功能:首先,RST接通控制邏輯,允許地址/命令序列送入移位寄存器;其次,RST提供終止單字節(jié)或多字節(jié)數(shù)據(jù)的傳送手段。當(dāng)RST為高電平時,所有的數(shù)據(jù)傳送被初始化,允許對DS1302進(jìn)行操作。如果在傳送過程中RST置為低電平,則會終止此次數(shù)據(jù)傳送,I/O引腳變?yōu)楦咦钁B(tài)。上電運(yùn)行時,在Vcc2.0V之前,RST必須保持低電平。只有在SCLK為低電平時,才能將RST置為高電平。I/O為串行數(shù)據(jù)

16、輸入輸出端(雙向),SCLK為時鐘輸入端。圖3.5為DS1302引腳圖。圖3.5 DS1302引腳封裝圖 DS1302 連接電路圖DS1302外部連接電路如下圖所示。圖3.6 DS1302連接圖3.4 74LS164共陰極數(shù)碼管驅(qū)動芯片3.4.1 74LS164芯片功能及工作原理74LS164是高速硅門CMOS器件,與低功耗肖特基型TTL(LSTTL)器件的引腳兼容。74LS164是8位邊沿觸發(fā)式移位寄存器,串行輸入數(shù)據(jù),然后并行輸出。數(shù)據(jù)通過兩個輸入端(DSA或DSB)之一串行輸入;任一輸入端可以用作高電平使能端,控制另一輸入端的數(shù)據(jù)輸入。兩個輸入端或者連接在一起,或者把不用的輸入端接高電平

17、,一定不要懸空。 時鐘(CP)每次由低變高時,數(shù)據(jù)右移一位,輸入到 Q0,Q0是兩個數(shù)據(jù)輸入端(DSA和DSB)的邏輯與,它將上升時鐘沿之前保持一個建立時間的長度。主復(fù)位 (MR) 輸入端上的一個低電平將使其它所有輸入端都無效,同時非同步地清除寄存器,強(qiáng)制所有的輸出為低電平。圖3.7為74LS164引腳圖。圖3.7 74LS164引腳功能圖3.4.2 74LS164驅(qū)動數(shù)碼管靜態(tài)數(shù)碼管顯示電路由四只74LS164、四只共陰極LED數(shù)碼管組成。輸入只有兩個信號,它們是串行數(shù)據(jù)線DIN和移位信號CLK。 其中第1、2腳為串行數(shù)據(jù)輸入端,2個引腳按邏輯與運(yùn)算規(guī)律輸入信號,共一個輸入信號時可并接。第8

18、腳為時鐘輸入端,每一個時鐘信號的上升沿加到S端時,移位寄存器移一位,8個時鐘脈沖過后,8位二進(jìn)制數(shù)全部移入74LS164中。R(第9腳)為復(fù)位端,當(dāng)R=0時,移位寄存器各位復(fù)0,只有當(dāng)R=1時,時鐘脈沖才起作用。Q1Q8(第3-6和10-13引腳)并行輸出端分別接LED顯示器的hga各段對應(yīng)的引腳上。在給出了8個脈沖后,最先進(jìn)入74LS164的第一個數(shù)據(jù)到達(dá)了最高位,再來一個脈沖,第一個脈沖就會從最高位移出。四只74LS164首尾相連,每只74LS164的并行輸出作為LED數(shù)碼管顯示的段碼。具體的連接如圖3.8所示。圖3.8 74LS164驅(qū)動數(shù)碼管靜態(tài)顯示接線圖3.5時鐘顯示校正電路利用按鍵

19、開關(guān)來校正時鐘顯示的數(shù)字。當(dāng)按鈕按下時,將在相應(yīng)的端口輸入一個低電平,通過相應(yīng)的程序來改變時鐘顯示。其中K1按鍵開關(guān)用來選擇要修改的數(shù)字;K2按鍵用來增加所選數(shù)字的數(shù)值;K3按鍵用來減少所選數(shù)字的數(shù)值,K4按鍵用來切換顯示時間。圖3.9為按鍵電路。圖3.9 按鍵電路3.6蜂鳴電路單片機(jī)在復(fù)位后的個I/O口是高電平,此時三極管是截止的,編寫程序使選定的I/O為低電平,此時三極管導(dǎo)通,導(dǎo)通后蜂鳴器與電源正極連通,構(gòu)成一個工作回路,從而發(fā)出滴滴的響聲實現(xiàn)鬧鐘功能。電路連接如圖3.10所示。圖3.10 蜂鳴電路連接圖第四章 軟件設(shè)計在硬件電路設(shè)計的基礎(chǔ)上,本設(shè)計中的軟件主要采用Keil編譯器進(jìn)行編寫,

20、該程序主要包括三個方面的內(nèi)容:一是DS1302從單片機(jī)中讀取數(shù)據(jù)進(jìn)行計數(shù),二是利用按鍵對時間進(jìn)行調(diào)整,三是74LS164驅(qū)動LED數(shù)碼管顯示時間。軟件總體設(shè)計主要包括主程序設(shè)計和各個子程序的設(shè)計。畫出主程序及每一子程序的流程圖,編寫程序。軟件編寫的主體思路是將系統(tǒng)按功能模塊化劃分,然后根據(jù)模塊要實現(xiàn)的功能寫各個子程序。最后,將各程序模塊連接成一個完整的程序。4.1編譯語言的選擇對于單片機(jī)的開發(fā)應(yīng)用中,C語言編寫的程序比用匯編編寫的程序更符合人們的思考習(xí)慣。還有很多處理器都支持C編譯器,這樣意味著處理器也能很快上手。且具有良好的模塊化、容易閱讀、維護(hù)等優(yōu)點(diǎn),且編寫的模塊程序易于移植?;贑語言和

21、匯編語言的優(yōu)缺點(diǎn),采用C語言編寫。4.2語言編輯軟件Keil簡介Keil C51軟件是針對51系列兼容單片機(jī)的C語言軟件開發(fā)系統(tǒng),其集成開發(fā)環(huán)境為Keil C Version。Keil C Version提供了包括C51編譯器、宏匯編、連接器、庫管理和一個功能強(qiáng)大的仿真調(diào)試器等在內(nèi)的完整開發(fā)方案。Keil與Proteus有聯(lián)合調(diào)試的功能,構(gòu)建一個智能儀器儀表的虛擬開發(fā)平臺。4.3程序設(shè)計4.3.1主程序模塊主程序?qū)崿F(xiàn)的功能:與硬件相結(jié)合實現(xiàn)顯示時間,調(diào)整時間的各個功能。在主程序的軟件設(shè)計中,首先對定時器T0、74LS164等進(jìn)行初始化,對定時時間及中斷方式的進(jìn)行設(shè)置,然后調(diào)用按鍵瀏覽函數(shù),對按

22、鍵進(jìn)行檢測,再對相應(yīng)的按鍵操作寫入和讀出DS1302的值并且調(diào)用不同的顯示函數(shù),最后調(diào)用鈴聲函數(shù)如此循環(huán)往復(fù)。圖4.1為主程序的流程圖。圖4.1主程序流程圖4.3.2 DS1302時鐘模塊圖4.2顯示DS1302的實時時間流程。根據(jù)此流程框圖,不難采集實時時間。圖4.2 DS1302子程序流程圖4.3.3按鍵調(diào)整模塊判斷有無鍵按下,沒有繼續(xù)等待,有鍵信號是延時等待去抖,如果仍有按鍵信號,則進(jìn)行按鍵處理,實現(xiàn)顯示或調(diào)整功能,沒有的話等待,再判斷。按鍵檢測程序流程圖如圖4.3所示。圖4.3 按鍵檢測程序流程圖4.3.4 74LS164驅(qū)動數(shù)碼管顯示模塊單片機(jī)向74LS164傳送數(shù)據(jù),由74LS16

23、4按串入并出方式接受和發(fā)送數(shù)據(jù)。164向LED發(fā)送數(shù)據(jù),發(fā)送了LED就顯示,否則就繼續(xù)等待。接著判斷LED是否顯示完全,如果顯示完全就返回等待下一次數(shù)據(jù)發(fā)送,否則等待164送入新數(shù)據(jù)。74LS164驅(qū)動LED顯示子程序如圖4.4所示。圖4.4顯示子程序流程圖第五章 總結(jié)該多功能電子鐘通過單片機(jī)STC89C52做CPU進(jìn)行核心控制,基于時鐘芯片DS1302產(chǎn)生時間,利用74LS164驅(qū)動的LED進(jìn)行靜態(tài)顯示、鍵盤來修改時間的一個多功能的電子鐘。LED能夠?qū)δ?、月、日、時、分進(jìn)行計時、顯示及調(diào)整。通過本次設(shè)計使我對STC89C52、時鐘芯片DS1302、74LS164的各個引腳及功能都有所了解。在

24、本次課程設(shè)計中,使我們學(xué)到了很多很多,不僅鞏固了以前學(xué)過的很多課本知識,如數(shù)電、模電、智能儀器、單片機(jī)和C語言等,而且學(xué)習(xí)使用了很多專業(yè)軟件,如:protelDXP、Keil、proteus等軟件的使用。在實踐過程中,培養(yǎng)了思考問題、解決問題的能力。總之,這次智能儀器課程設(shè)計過程中艱難帶著喜悅,讓我有了很大的收獲,讓自己清晰地認(rèn)識到自己有哪些不足,哪些地方需要去彌補(bǔ),也讓自己學(xué)到了很多新的知識。它讓我們把理論設(shè)計和工程實踐相結(jié)合、鞏固了我們的基礎(chǔ)知識和培養(yǎng)了我們的創(chuàng)新意識等方面,這次課程設(shè)計全面的培養(yǎng)了學(xué)生的整體素質(zhì)。這次課程設(shè)計所學(xué)到的東西在我們今后的學(xué)習(xí)和工作當(dāng)中都會有很大的幫助!參考文獻(xiàn)

25、1張友德,涂時亮,趙志英.單片微型機(jī)原理、應(yīng)用與實驗(C51版)M.上海:復(fù)旦大學(xué)出版社,20102潘永雄.新編單片機(jī)原理與應(yīng)用M西安:西安電子科技大學(xué)出版社,20073 李廣弟.單片機(jī)基礎(chǔ)M.北京:北京航空航天大學(xué)出版社,20014 譚浩強(qiáng).C程序設(shè)計(第二版)M.北京:清華大學(xué)出版社,19995 尹勇.Vision2單片機(jī)應(yīng)用程序開發(fā)指南M.北京:科學(xué)出版社,20056 賈振國,許琳.智能化儀器儀表原理及應(yīng)用:基于Proteus及C51程序設(shè)計語言M.北京:中國水利水電出版社,20117 沙占友.單片機(jī)外圍電路設(shè)計M.北京:電子工業(yè)出版社,20048 張元良.智能儀表設(shè)計實用技術(shù)及實例M.

26、北京:機(jī)械工業(yè)出版社,20089 霍亮生.電子技術(shù)基礎(chǔ)M.北京:清華大學(xué)出版社,200610 夏寬理.程序設(shè)計M.上海:復(fù)旦大學(xué)出版社,200011 周潤景.Proteus在MCS-51&ARM7系統(tǒng)中的應(yīng)用百例M.北京:電子工業(yè)出版社,2007附錄1 多功能電子鐘硬件原理圖及PCB電路板ProtelDXP原理圖:ProtelDXP繪制的PCB板:附錄2 多功能電子鐘C程序#include#define uint unsigned int#define uchar unsigned charsbit DAT=P10;sbit CLK=P11;sbit io=P33;sbit sclk=P34;

27、sbit rst=P35;sbit k1=P14;sbit k2=P15;sbit k3=P16;sbit k4=P17;sbit key_out=P17; uchar miao,fen,shi,nian,shiji=0x20,yue,ri,week,s1num,flag,shu;uchar naos=0x07,naof=0x30,naom=0x00,qw=0;uchar time7;/uchar code led_tab16=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,/ 0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71; /

28、led段碼uchar code led_tab16=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0;uchar showbuf04=0x3f,0x3f,0x3f,0x3f; /時間 顯示緩存uchar showbuf14=0x3f,0x3f,0x3f,0x3f; /日期 顯示緩存uchar showbuf24=0x3f,0x3f,0x3f,0x3f; uchar showbuf34=0x3f,0x3f,0x3f,0x3f; uchar disflag=0; /顯示標(biāo)志,用于指示顯示日期或時間bit miaoshan;void delay_

29、ms(int z)int x,y; for(x=z;x0;x-) for(y=150;y0;y-); void write_byte(uchar dat)/寫1字節(jié)數(shù)據(jù)到1302,低位在前。uchar i;for(i=0;i1;sclk=0;sclk=1; sclk=0;uchar read_byte()/從DS1302中讀1字節(jié)數(shù)據(jù),讀出時高位在前。uchar i,dat;for(i=0;i1;if(io)dat=dat|0x80;sclk=1;sclk=0; sclk=0;return(dat);void write_ds1302(uchar add,uchar dat)/向DS1302的

30、add地址中寫入dat數(shù)據(jù)rst=0;sclk=0;rst=1;write_byte(add);write_byte(dat);sclk=0;rst=0;uchar read_ds1302(uchar add)/從DS1302的add地址中讀出數(shù)據(jù)uchar time;rst=0;sclk=0;rst=1;write_byte(add);time=read_byte();sclk=0;rst=0;/temp=time/16;/temp1=time%16;/由于DS1302中數(shù)據(jù)時BCD碼,因此需要數(shù)據(jù)的轉(zhuǎn)換/time=temp*10+temp1; /將數(shù)據(jù)轉(zhuǎn)換為十進(jìn)制數(shù)據(jù),便于在數(shù)碼管中顯示r

31、eturn(time);void init_1302()/時間初始化函數(shù),不進(jìn)行初始化DS1302不能正常工作write_ds1302(0x8e,0x00);write_ds1302(0x8c,time0);/寫入年數(shù)據(jù)write_ds1302(0x88,time1);/寫入月數(shù)據(jù)write_ds1302(0x86,time2);/寫入日數(shù)據(jù)write_ds1302(0x84,time3);/寫入時數(shù)據(jù)write_ds1302(0x82,time4);/寫入分?jǐn)?shù)據(jù)write_ds1302(0x80,time5);/寫入秒數(shù)據(jù)write_ds1302(0x8a,time6);/寫入星期數(shù)據(jù)wri

32、te_ds1302(0x90,0xab);/通過實驗證實只有在涓流充電寄存器中寫入0xabwrite_ds1302(0x8e,0x80);/既使能兩個二極管接入8K電阻才能正常使用后備電源。void read_time()/時間讀取函數(shù)miao=read_ds1302(0x81);fen=read_ds1302(0x83);shi=read_ds1302(0x85);week=read_ds1302(0x8b);ri=read_ds1302(0x87);yue=read_ds1302(0x89);nian=read_ds1302(0x8d);time0=nian;time1=yue;time2

33、=ri;time3=shi;time4=fen;time5=miao;time6=week; void write164_byte(uchar date)uchar i;for(i=0;i8;i+)CLK=0;DAT=date&0x80;CLK=1;date=1;CLK=0;void show(uchar *p) /刷新顯示uchar i;for(i=0;i4;i+) write164_byte(pi);void keyscan() /鍵盤檢測函數(shù),用于時間的調(diào)節(jié)uchar ys,yg,mou,rg,rs,tian,fg,fs,sg,ss,sf,ff,nig,nis,tempfen,temps

34、hi,tempri,tempyue,tempnian;if(k1=0)delay_ms(1);if(k1=0)while(!k1);s1num+;flag=1;if(s1num=3)init_1302();flag=0;s1num=0;if(s1num!=0)if(k2=0)delay_ms(1);if(k2=0)while(!k2); switch(disflag) case 0: switch(s1num) case 1:tempfen=(fen/16)*10)+(fen%16); /BCD轉(zhuǎn)換成數(shù)字 tempfen+; if(tempfen=60) tempfen=0; fs=tempf

35、en/10; fg=tempfen%10; ff=(fs4)&0xf0)|(fg&0x0f); /轉(zhuǎn)換成BCD碼 time4=ff; time5=0; write_ds1302(0x8e,0x00); /使寄存器可寫 write_ds1302(0x82,ff); /寫入寄存器 write_ds1302(0x8e,0x80);/使寄存器不可寫 break; case 2: tempshi=(shi/16)*10)+(shi%16); tempshi+; if(tempshi=24) tempshi=0; ss=tempshi/10; sg=tempshi%10; sf=(ss4)&0xf0)|(

36、sg&0x0f); time3=sf; write_ds1302(0x8e,0x00); write_ds1302(0x84,sf); write_ds1302(0x8e,0x80);break; break; case 1: switch(s1num) case 1:tempri=(ri/16)*10)+(ri%16); tempri+; if(tempri=32) tempri=1; rs=tempri/10; rg=tempri%10; tian=(rs4)&0xf0)|(rg&0x0f); time2=tian; write_ds1302(0x8e,0x00); write_ds130

37、2(0x86,tian); write_ds1302(0x8e,0x80); break; case 2:tempyue=(yue/16)*10)+(yue%16); tempyue+; if(tempyue=13) tempyue=1; ys=tempyue/10; yg=tempyue%10; mou=(ys99) tempnian=0;nis=tempnian/10; nig=tempnian%10; tempnian=(nis99) tempnian=0;nis=tempnian/10; nig=tempnian%10; shiji=(nis4)&0xf0)|(nig&0x0f); b

38、reak;break; case 3 : switch(s1num) case 1:tempnian=(naof/16)*10)+(naof%16); tempnian+; if(tempnian=60) tempnian=0;nis=tempnian/10; nig=tempnian%10; naof=(nis4)&0xf0)|(nig&0x0f); break; case 2:tempnian=(naos/16)*10)+(naos%16); tempnian+; if(tempnian=24) tempnian=0;nis=tempnian/10; nig=tempnian%10; na

39、os=(nis4)&0xf0)|(nig&0x0f); break;break; if(k3=0)delay_ms(1);if(k3=0)while(!k3); switch(disflag) case 0: switch(s1num) case 1:tempfen=(fen/16)*10)+(fen%16); tempfen-; if(tempfen=-1) tempfen=59; fs=tempfen/10; fg=tempfen%10; ff=(fs4)&0xf0)|(fg&0x0f); time4=ff; time5=0; write_ds1302(0x8e,0x00); write_

40、ds1302(0x82,ff); write_ds1302(0x8e,0x80); break; case 2:tempshi=(shi/16)*10)+(shi%16); tempshi-; if(tempshi=-1) tempshi=23; ss=tempshi/10; sg=tempshi%10; sf=(ss4)&0xf0)|(sg&0x0f); time3=sf; write_ds1302(0x8e,0x00); write_ds1302(0x84,sf); write_ds1302(0x8e,0x80); break; case 1: switch(s1num) case 1:t

41、empri=(ri/16)*10)+(ri%16); tempri-; if(tempri=0) tempri=31; rs=tempri/10; rg=tempri%10; tian=(rs4)&0xf0)|(rg&0x0f); time2=tian; write_ds1302(0x8e,0x00); write_ds1302(0x86,tian); write_ds1302(0x8e,0x80); break; case 2:tempyue=(yue/16)*10)+(yue%16); tempyue-; if(tempyue=0) tempyue=12; ys=tempyue/10; y

42、g=tempyue%10; mou=(ys4)&0xf0)|(yg&0x0f); time1=mou; time0=0x10; time6=0x01; write_ds1302(0x8e,0x00); write_ds1302(0x88,mou); write_ds1302(0x8e,0x80);break;break; case 2: switch(s1num) case 1:tempnian=(nian/16)*10)+(nian%16); tempnian-; if(tempnian0) tempnian=99;nis=tempnian/10; nig=tempnian%10; tempnian=(nis4)&0xf0)|(nig&0x0f); time0=tempnian; write_

溫馨提示

  • 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)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論