基于單片機的電子時鐘設計_第1頁
基于單片機的電子時鐘設計_第2頁
基于單片機的電子時鐘設計_第3頁
基于單片機的電子時鐘設計_第4頁
基于單片機的電子時鐘設計_第5頁
已閱讀5頁,還剩40頁未讀, 繼續免費閱讀

下載本文檔

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

文檔簡介

緒論1.1研究意義20年代末期,電子技術得到了迅猛的發展。在它的驅動下,現代的電子設備已經深入到了社會的每一個角落,極大地促進和促進了社會的發展和信息化,并促進了現代化的電子設備的功能。產品的更新速度也在不斷加快。時鐘是人類最偉大的發明之一,早期人們就是通過太陽的位置來粗略的判斷一天的時間,日晷的出現,使得人們對時間有了一定的了解和掌握,雖然日晷的精確度不是很高,但只是引導人們的日常生活已遠遠足夠。古時候人們為了計時,通常用燒香的方式來判斷,但是香燃燒的速度受很多因素的影響,時間的判斷很不準確,沙漏的出現,在很大程度上避免了外界因素的影響,雖然也不是很準確,但相比燒香來說已經好很多了。數碼時鐘已經被大量地應用在人們的生活、學習、工作和娛樂活動中。隨著電子IC技術的發展,加上石英工藝的進步,使得其走時準確,性能穩定,便于攜帶,同時也可用于計時、報時、自動控制等方面,所以對其進行電子時鐘的研究十分重要。雖然市面上已經有一些價格低廉,使用方便的電子時鐘IC芯片,但是由于MCU定時裝置也可以實現電子時鐘的電路,所以進行電子時鐘的設計是切實可行的。在此,我們將所學習到的一些較為散亂的電路知識與MCU知識有機地聯系起來,組織起來,運用到實踐中去,以訓練我們的電路、電路、程序的綜合分析與編程能力。近代以后,鐘表的出現表明了人們對時間的概念已經有很深的理解,最初的鐘表都是機械式結構,需要經常轉動發條給鐘表提供動力,且只具有時間顯示的功能,隨著人們的不斷研究,鐘表也在不斷的改變,直至出現了電子時鐘,這是人們對時間掌握的一個很大的轉折。電子時鐘不僅走時精確,而且還可以進行鬧鈴,以此便可以看出人類的智慧是無窮的。直至今日,電子時鐘的種類數不勝數,各種各樣的電子時鐘出現在人們的眼前,相比以前功能也有了極大的改善,不僅能夠顯示時間,還能夠計時、顯示溫度等功能,在一定程度上大大提高了實用性,不僅方便人們在各種場合使用,而且還可以應用到各種設備上,在時代的推動,以及市場的需求下,電子時鐘功能的拓展和豐富是必不可少的。1.2設計目標由于其優良的功能、可靠性和低廉的價格,已廣泛地用于各種技術。在某些特定的應用中,不僅需要由微處理器來進行相關的數據收集和處理,還要了解生成的時間,以便更好地了解具體的工作環境。因此,在微處理器上增加數字時鐘將成為一種必不可少的技術。在現代經濟飛速發展的今天,關于數碼時鐘的研究和開發工作已取得了很好的成績,其中采用單芯片的數碼時鐘具有更好的性能和更好的接口。更好地適應了電子時鐘智能化的需求??v觀近十年來,微處理器的功能、高性能、速度、電壓、功耗、價格低廉、外圍電路內置式、芯片內存、Flash內存等方面的發展趨勢。但是它的數字并不會一直增長下去,雖然目前有32比特的微處理器,但是仍然很少被采用??梢灶A見,未來的微處理器將具有更強的功能、更高的集成度和更高的可靠性、更少的功率消耗和更便捷的應用。該系統的主要部件是AT89C51。配以電子表、定時調節、定時定時等多種技術。這個時鐘是用來在人體的感官中呈現“時”,“分”和“秒”的時間。以60秒為1分,60分為1個鐘點,構成秒、分、時的計數,從而達到定時的作用。并且能清晰直觀地顯示數字的標志。由于數碼時鐘存在著錯誤,所以就有了定時校正的作用。利用AT89C51微處理器實現了數字式時鐘的軟體和軟體的設計,并編制了匯編語言的源碼。這個時鐘是用來在人體的感官中呈現“時”,“分”和“秒”的時間。該儀器具有24個鐘表時間,24小時內的滿刻度,24-00分00秒,并具有校正時間的作用。該系統包括時鐘脈沖發生器、時鐘計數器、解碼驅動、數碼顯示器、時鐘調節等部分。利用晶振來生成標準的時序,此處使用了石英晶片。以60秒為1分、60分為一小時、24小時為一日的計數器構成了兩個60進制(秒、分)和24進制(時)。LED八級數字管用在顯示器上。由解碼顯示回路的輸出,顯示出清晰直觀的數字信號。由于鐘會造成走時的錯誤,所以在線路中采用了具有定時校正的電路。本課題設計主要分為四個部分,其中以AT89C51單片機為核心樞紐,通過其向外部發送時鐘信號;以石英振蕩器為主要計時部件,通過石英振蕩器分頻后得到一個穩定的方波信號,從而確保數字電子鐘的計時準確以及穩定[2];以LED燈為核心顯示部件,通過輸入相應的命令或數據便可顯示所需要的時間;以蜂鳴器為主要的定時鬧鈴部件,當輸出的為低電平時,蜂鳴器不發出聲音,當輸出為高電平時,蜂鳴器發出聲音。根據硬件電路設計編寫C語言程序并載入到單片機內,完成對外接電路的控制,以此來實現能夠顯示時、分、秒,并且可以校時和鬧鈴的電子時鐘。1.3相關研究如今的社會,電子版的鬧鈴早已變得非常流行,到處都能看到。這種電子鬧鈴既方便又省錢。我們現在還不能安于現狀,要走高端化的路子。比如在高溫、壓力、海底探索之類的地方。其應用前景十分廣泛,并與智能技術相融合,成為企業的重要組成部分?,F在,在各種行業都使用了微處理器,其在儀器設備上的運用就更有優勢了。利用微處理器制作的電子鐘具有計時準確、功耗低等特點,因而被廣泛地用于各種行業。當前,微處理器已經進入了一個完整的發展時期,各種廠商的產品都是向速度快、運算能力強、地址覆蓋廣、價格低廉的方向發展。隨著微處理器的不斷發展,應用程序的不斷發展,對微處理器的需求也越來越大。從而推動了微處理器的發展。目前,國內和國際上的微處理器都在朝著功能更強、速度更快、功耗更低、輻射更小等方向發展。而且,由于芯片的集成化程度越來越高,芯片內部集成了大量的周邊設備,這也是未來的發展方向。由于微處理器等級的不斷提升(為了適應更高的檢測和控制功能),使得微處理器除常規的ROM、RAM、時器、計數器、中斷系統外,芯片內部的設備往往需要有功率監測和重置、WDT、A/D變換、DMA控制、中斷控制、鎖相環等。頻率合成、CRT控制等。時鐘有機械和電子式兩種,其中,機械式采用同步電機計時,成本低,精度差。而電子式精度高,成本也相對高些??茖W家惠更斯發現可以根據單擺的頻率來計時,于是出現了單擺時鐘。國外最早投入到電子時鐘的研究當中,其普及度和應用程度遠遠超過國內,其中第一個關于電子時鐘的產品就誕生于美國,起到了舉足輕重的作用,開啟了電子時鐘系統結合電子技術的新里程,具有劃時代的意義,整套系統在性能上相比于傳統產品有了極大的提升[4]。此后,更多的歐美國家參與到該項技術的研究當中,這其中,日本和德國的專家率先將這些技術落地,多名該領域的學者發表了重要的言論。未來,電子時鐘系統將朝著更加多樣化、智能化、無線化方向發展。國內現階段在電子時鐘系統的應用普及程度還比不上國外發達國家,技術研究水平雖然還處于滯后階段,但近些年,隨著國內互聯網企業的崛起和重大資金投入,國內的研究成果已逐步趕超國外平均水平,甚至達到一流發達國家的水平。另一層面,國家政策開始為該行業提供充足的資金,特別是對于芯片行業的大力支持,使得該領域獲得很好的前景,使得電子時鐘系統處于一個高速發展的紅利窗口期,眾多的高新技術企業更加愿意花費巨大的人力和財力投入到智能電子時鐘系統的研究當中,取得了非常顯著的效果。隨著國內5G通訊技術、自動控制技術的高速發展,未來相信能夠看到國內企業發布的該領域更加前沿的技術,使得電子時鐘系統的功能更加的完善,給我國帶來更好的經濟效應,也可以側面反映我國的經濟綜合實力正在不斷的增強。經過調查,基于單片機技術開發的電子時鐘系統將成為未來市面上的主流產品,傳統檢測方式已無法適應現階段快速測量需求,單片機技術的發展賦予了數據遠距離傳輸的實現機理,特別是在全球疫情嚴重的前提下,需要盡量減少面對面的溝通,這就需要依托單片機技術來實現。單片機技術將成為電子時鐘系統數據傳輸的橋梁,只要搭建必要的通信接口,即可實現檢測數據上傳與控制指令下達的目的。

2系統整體設計隨著人類科技文明的發展,人們對于時鐘的質量要求都將持續不斷地提高。時鐘已變得不僅僅只被用來看成作為一種專門用來顯示時間信息的工具,在以后很多的實際工程應用系統中,往往還需要他實現更多其他方面的功能。高精度、多功能、小尺寸體積、低功耗,是今后現代智能時鐘科技發展方向的主流趨勢。在未來這種新趨勢的驅動下,時鐘技術的高數字化、多功能化也已經日益成為當今現代工業時鐘研發生產設計方面的一大主導設計方向。2.1主要芯片選型2.1.1微控制器選型單片機誕生于1971年,它的研發標志著微機時代的開始,由于單片機具有良好的性價比,單片機的發展也是極為的迅速。單片機的發展主要分為SCM、MCU、SoC三大階段,每一階段都使單片機有了全新的突破。單片機的發展無形之中使得嵌入式系統一步步邁向MCU階段,就是為了能夠讓應用系統盡可能的更多的集中在芯片上。也正是這一原因,單片機變得逐漸的SoC化。自單片機誕生以來,到現在為止單片機的種類越來越多,其中51單片機、AVR單片機、PIC單片機、STC單片機和STM32單片機性能相比其他類型的單片機性能相對較為出眾,能夠提供給使用者一個良好的使用環境,且使用起來也相對較為方便,從而被人們廣泛的應用?;诒驹O計而言,AVR單片機沒有位操作,而且AVR單片機C語言的撰寫與51單片機撰寫的方法有很大的差別;PIC單片機在程序編寫的全過程都需要一直不斷的進行存儲體的選擇;STC單片機內部結構缺少乘法器,乘除法運算都是通過一個4周期的指令來完成的;STM32單片機不管是在性能,還是結構上完全能夠實現本設計所需要的功能,但是由于其I/O端口過多,這樣就顯得有點大材小用;51單片機能對片內某些特殊功能寄存器的某位進行處理,這是很多單片機不具有的功能,而且它能通過一條指令就能完成乘除法運算。雖然51單片機的運行速度相比其他單片機的運行速度要慢一點,很多功能需要擴展,但是對本設計的實現沒有任何的影響。AT89C51單片機是51系列單片機中很典型也是非常具有代表性的一款芯片,它不僅具有51系列單片機的所有特點,最重要的是它內部具有閃爍存儲器,可反復的的寫入或清除1000次,這樣一來其使用的靈活性就大大的增加,也使得后期對功能的開發變得便捷。方案一:AT89C51單片機AT89C51開發歷史悠久,早期應用最為廣泛。AT89C51單片機共有42個引腳,多個I/O口支持復用,能夠滿足串口通訊、I2C通訊等功能需求,但不適用于對于處理器接口數量要求較多的系統中。軟件編程方面支持C語言編程,編程難度較低。雖然相比于嵌入式處理器,AT89C51單片機在處理器性能和封裝尺寸上處于下風,但仍然能夠憑借著低成本、高通用性的優勢,成為小型控制系統的首選。方案二:STM32單片機STM32單片機一直處于領頭羊的地位,其擁有豐富的端口數量和強大的處理器性能,能夠滿足多種場景下的開發需求,芯片內部集成了A/D轉換模塊,外圍電路無需再搭配A/D轉換芯片,即可實現模擬量和數字量的轉換。STM32單片機在智能控制、無線數據傳輸領域應用非常廣泛,在工業、農業環境監測、智能家居等行業也有廣泛的應用,深受廣大開發者喜愛。相比于傳統的51單片機,STM32具備更加豐富的管腳資源和更快的處理器速率,芯片的價格也更貴,程序編程復雜度較高[8]。方案三:使用ArduinoArduino屬于新興主控芯片,正在逐步取代傳統單片機,市場占有率也在逐步擴大,在各類新興領域中得到了應用,Arduino開發板集成度較高,具備小型電腦主機的主體功能,滿足多種開發需求。Arduino誕生的比較晚,覆蓋面沒有STM32廣,成本相比于51單片機要貴一些。考慮到本設計的代碼編程工作量不大,從降低系統整體成本的方向考慮,優先選擇方案一和方案二。AT89C51單片機和STM32單片機兩者的尺寸都不大,功耗也相當,甚至STM32單片機的封裝還更小,處理器的性能更優,但編程難度較大。本系統數據采集端輸入的數據并不多,對處理器的性能要求不高,從節約成本角度出發,方案一更具有優勢。2.1.2顯示方案選型顯示部件其作用就是將通過處理的數據或者是信號的結果進行輸出。它的出現和應用讓人們在日常生活和工作中都十分的受益?,F在最常見的顯示部件主要為LED和LCD兩種,也就是因為它們的性能十分的優異,使其應用在各種公共場合以及電子設備上。LED作為一個顯示部件具有很多的優點,它不僅顯示反應速度很快,屏幕的刷新速率也很高等,良好的實用性,以至于LED使用的范圍更加的廣泛。相比之下,LCD雖然具有在使用時能夠調節亮度以及使用的時間較長等優點。但是,在同等環境進行顯示的情況下,LCD在使用的過程中屏幕的拐角會出現明暗不均的現象,而且LCD在運行的過程中,耗電量還是很高的,顯示出來的效果也不是很好,因而選用LED數碼管作為本設計的顯示部件。LED數碼管是通過它內部的多個發光二極管的經過亮暗的組合來完成輸出顯示的,數碼管的顯示分為靜態和動態兩種類型。動態顯示是將數碼管的所有碼段相同的一端連接在一起,并接到同一個輸出端口上,其他的位端分別與對應的輸出端口相連接,兩個端口輸出的信號在彼此的作用下,從而達到顯示的效果;靜態顯示的數碼管,它的任意一個碼段都需要連接一個單獨的能夠鎖存數據輸出端口,處理器將顯示的內容送到輸出端口上,就能出現需要顯示的字符,只有到下一個字符送出,前一個字符才會消失。雖然靜態顯示能夠保持顯示的穩定,但是它所需要的端口較多,在一定程度上也增加了耗電量。方案一:LCD1602顯示屏LCD1602市場占有率較高,屬于字符型液晶顯示屏,能夠最多顯示32個字符,顯示內容相對有限,只能支持顯示內容不多的系統,在實際開發應用中,需要先查看規格書,設置讀時序和寫時序,以及控制指令集。LCD1602的代碼編程相對成熟,容易上手,在價格方面也更加實惠[9]。方案二:LCD12864顯示屏LCD顯示技術已逐步成為市面上主流的顯示技術,能夠實現自身發光,具有對比度高、低功耗的先天優勢,廣泛應用在各類顯示器、電視機、一體機產品中。LCD12864屏幕分辨率可以達到128*64,能夠滿足中文顯示需求,人機交互方面體驗更優。LCD顯示屏相比于LCD1602的尺寸更小,市面上主要有1.3寸和0.96寸兩種版本,可以優化整個系統的體積,編程難度也更復雜點。方案三:數碼管的顯示數碼管只能展示字母或者數字,對于顯示內容較多的系統,該方案存在明顯的短板,優勢在于整體成本較低。由于本系統需要顯示系統時間及鬧鐘定時時間,使用LCD1602更有助于編程,故選擇方案一作為顯示方案。2.1.3時鐘方案選型方案一:采用DS12C887DS12C887的時鐘精度高,但是整體尺寸較大,價格也比較貴,不適合便攜式產品設計。方案二:DS1302DS1302是DALLAS公司推出的一種具有涓流充電能力的時鐘芯片,通過串行數據傳輸數據,DS1302作為時鐘芯片使用非常頻繁,其在特殊高溫高濕的環境下,也能穩定工作,而且時鐘走時精度高,偏差范圍可以控制在毫秒級別,能夠穩定輸出[10]??紤]到本系統對于時間精度沒有很高的要求,從節省成本考慮,顯然應該選擇方案二。2.2總體設計方案但是電子鐘表雖然也具有報時,定時,顯示日期的功能。但是電子鐘由于它本身材料性能和結構設計因素的選擇,受到了當時機械結構、動力強度和機械體積尺寸的巨大限制,考慮到電子鐘在設計功能、性能、造價范圍和安裝方便性等等因素的不足之處上,也都暫時沒辦法可以與二戰后新出現的電子時鐘相比。諸如定時系統的自動報警、通斷各種機械動力設備、自動開起啟關閉路燈、定時系統廣播、定時開關烘箱、時間程序的自動控制功能甚至是包括了各種特殊場合定時用電氣信號設備的定時自動啟用的功能等,所有以上這些新功能,都是以鐘表數字化為基礎而實現的。數字鐘就是指這樣一種完全的以現代計算機數字電路系統技術為其計算分析基礎,綜合的采用結合了國內外各種現代模擬及數值電路原理基礎和各種計算機電路基礎知識技術后所設計與生產研發出來的一種時間數字圖形的電子顯示及記錄的裝置。正因為本身具有的產品結構設計較為簡單、設計安裝施工操作方便、穩定性能力更強更可靠等一系列獨特優點,已逐漸被人們應用于世界上各種大、中小型場所。成為了當今人們日常生活領域里不可缺少的一件必需品,給人們的生活工作中帶來極大的便利。本系統的總體框圖如圖2-1所示:圖2-1系統總體框圖本設計,通過DS1302實時讀取時間信息,由單片機負責數據的收集,將時鐘數據輸入到顯示屏中去顯現出來,LCD1602實時展示年、月、日、周、時、分、秒、星期及設定鬧鐘時間,實現萬年歷功能。當系統時間走時到鬧鈴設置的時間,蜂鳴器會響起,實現鬧鐘提醒功能。單片機接收按鍵指令完成手動設置系統時間、鬧鐘時間。

3硬件電路設計3.1硬件電路的設計方案本設計的硬件電路設計框圖如圖3.1所示:圖3.1硬件電路框圖本設計的硬件電路主要分為振蕩電路、復位電路、按鍵模塊、發聲模塊和時間顯示模塊五個部分。振蕩電路的主要任務就是不斷地給單片機提供周期性的時鐘信號;復位電路的作用就是在通電以后是整個電路復位,或者通過按鍵的形式手動將電路復位;電路通電后,在單片機和動態顯示函數的作用下,LED數碼管上便會自動的出現時、分、秒的顯示;同時,按鍵的引腳會在掃描函數的作用下,一直處于檢測狀態,一旦某一個按鍵被按下,與之對應的函數功能便會總動啟用;假如到達了定時設定的時間,蜂鳴器便會發出聲音進行提示。3.2各功能模塊電路設計3.2.1振蕩電路AT89C51單片機內部有一個高增益反相放大器,它是構成振蕩器必不可少的結構,但要形成時鐘,還需要附加一些電路。AT89C51單片機的時鐘產生主要分為內部時鐘模式和外部時鐘模式兩種。內部時鐘的方式是利用單片機內部振蕩器,然后將晶振連接在XTAL1和XTAL2兩個引腳上;而外部時鐘方式主要是利用外部振蕩脈沖接入XTAL1和XTAL2[1]。如圖3.2所示。本設計選用的是內部時鐘的方式,將振蕩頻率為12MHZ的晶振與單片機連接,外接的晶振輸出的時鐘信號會立刻被送進單片機內部的時鐘電路,為了能夠對晶振輸出端的時鐘信號的頻率進行一定幅度的調整,該電路中在晶振的兩端連接了兩個30PF的電容,通過振蕩電路和單片機內部的定時器協同作用下,便能夠精確的完成計時。圖3.2振蕩電路3.2.2復位電路剛通上電源的那一刻,單片機處于一種雜亂的、無序的狀態,這時就很可能導致單片機無法正常工作。單片機中的復位就是清除所有的設置從最初的狀態重新開始工作,也就相當于手機中的返回操作。單片機通電后,軟件系統便會自動覺此復位后從哪里開始實行第一條命令。常用的復位電路有按鍵脈沖復位電路、上電復位電路和按鍵電平復位電路。本設計中采用的是按鍵電平復位電路[3],如圖3.3所示。圖3.3按鍵電平復位電路該電路是將按鍵、電容和下拉電阻連接并與51單片機的復位引腳相連接所構成,本電路中下拉電阻為10k,電容為10uF。在通電的那一剎那,電阻兩端的電勢差逐漸減小,電容兩端的電勢差逐漸增大,RESET引腳在那短暫的一刻呈現為高電平,系統便會自動對整個電路進行復位操作;當復位按鍵被手動按下,此時的按鍵就相當于導線,就會把電容短路,電容在此時便會釋放初始的電能,電容兩端的電勢差減小,電阻兩端的電勢差增大,此時RESET接收到高平信號,整個電路便會被再次復位,回到通電后的狀態。3.2.3按鍵模塊如圖3.4所示的模塊中,四個按鍵K0、K1、K2、K3分別與單片機的引腳P1.0、P1.1、Pl.2、P1.3相連接,且四個按鍵的一端接地,四個按鍵的功能分別為校時、鬧鐘、加和減,根據按鍵便可完成對時鐘的時間設置和定時作用。一旦按下某一按鍵被按下,那么該按鍵的引腳就會被拉低,通過該按鍵輸出的數據信號,軟件系統便會啟用相應的程序來實現該按鍵所需要實現的功能。當需要進行時間的校對時,按下“校時”按鍵K0,隨后按下K2和K3鍵,便可進行“時”的校對;再次按下K0鍵,則切換到“分”的校對;重復上述操作,便可對“秒”進行校對;校對完成后,只需再次按下K0按鍵,便可顯示以校對完成的時間。當需要使用鬧鐘定時功能時,只需按下按鍵K1,并通過按鍵K2和K3,重復時間校對的相同步驟,便可設置定時的時間。圖3.4操作按鍵模塊ucharkey_can;//按鍵值voidkey()//獨立按鍵程序{staticucharkey_new;key_can=20;//按鍵值還原P3|=0x0f;//對應的按鍵IO口輸出為1if((P3&0x0f)!=0x0f)//按鍵按下{delay_1ms(1);//按鍵消抖動if(((P3&0x0f)!=0x0f)&&(key_new==1)){//確認是按鍵按下key_new=0;switch(P3&0x0f){case0x07:key_can=4;break;//得到按鍵值case0x0B:key_can=3;break;//得到按鍵值case0x0D:key_can=2;break;//得到按鍵值case0x0E:key_can=1;break;//得到按鍵值}}}elsekey_new=1;}3.2.4時間顯示模塊LED數碼管分為7段數碼管和8段數碼管。7段數碼管由7個發光二極管組成,而8段數碼管是由7段發光二極管和一個圓點型發光二極管組成,圓點型發光二極管用來顯示小數點。為了使發光二極管在使用的時候能夠獲得足夠的驅動電壓,通常會采用共陽極或共陰極兩種接法連接發光二極管[5]。共陽極接法是將所有發光二極管的陽極連在一起,在使用的過程中將陽極的公共引腳增設高電平,陰極的引腳增設為低電平,發光二極管即能夠導通點亮,反之,陰極的引腳增設為高電平,發光二極管則不能導通點亮[11],如圖3.5所示。圖3.5共陽極接法共陰極接法則是將所有發光二極管的陰極連接在一起,在使用的過程中將陰極公共引腳增設為低電平或者接地,這樣陽極引腳上增設高電平的發光二極管就導通點亮,而增設低電平的則無法導通點亮[11],如圖3.6所示。圖3.6共陰極接法本設計中的LED數碼管顯示器采用的是共陽極接法,如圖3.7所示:圖3.7時間顯示模塊3.2.5發聲模塊本設計中的發聲模塊是由蜂鳴器、偏置電阻和NPN型三極管組成,偏置電阻的一端與單片機的P3.5引腳相連,另一端與三極管的基極連接,三極管的發射極接地,集電極與蜂鳴器連接,同時蜂鳴器加上高電平[4]。在正常的情況下,蜂鳴器不發聲;當正常顯示的時間與鬧鐘設置的時間相一致時,在偏置電阻和NPN型三極管的協同作用下,會放大電流,從而使得蜂鳴器發出聲,且通過此電路進行驅動,蜂鳴器會發出較大的聲響。發聲模塊如圖3.8所示。圖3.8發聲模塊voidmenu_dis(){staticucharmm,value;if(flag_100ms==1)//100ms執行一次{flag_100ms=0;if(open1==1)//如果鬧鐘打開{//if((miao==0)&&(fen==fen1)&&(shi==shi1))if(((miao==0)&&(fen==0))||//鬧鐘或者正點到則報警((miao==0)&&(fen==fen1)&&(shi==shi1))){flag_beep_en=1;//有報警打開蜂鳴器響的標志位}if(flag_beep_en==1)//鬧鐘以被打開{clock_value++;if(clock_value<=30)beep=~beep;//蜂鳴器叫3秒elseif(clock_value>30){beep=1;//蜂鳴器停1秒if(clock_value>40){clock_value=0;}}//1分鐘后自動關閉鬧鐘value++;if(value>=10){value=0;mm++;if(mm>=60){mm=0;flag_beep_en=0;beep=1;}}}}}}

4控制系統的軟件設計系統的軟件設計非常重要,它主要就是控制著整個硬件電路實現所需的功能,在設計的過程中必須有清晰的思路,如果程序設計的不合理,或是語法錯誤,使得硬件電路與程序不匹配,這樣整個硬件電路就會處于一種癱瘓狀態,無法運行。然而需要實現的功能越多,程序的編寫也就越繁瑣,因此,程序的設計一般要做到以下幾點:(1)根據硬件電路所實現的功能,將軟件分為各個部分,設計出合理的框架結構;(2)根據總體的設計選擇適當的參數;(3)制作出程序流程圖;(4)在程序中添加注釋,便于后期閱讀和修改程序;(5)注意程序的抗干擾設計,保證程序在運行中的有效、可靠。本系統采用C語言程序而成,其結構簡單清晰,很容易讓人讀懂,語句連貫緊密。它聚集了高級語言和匯編語言的多種特點,并且在編寫的過程中還能加入其他語言的子程序,由此可以看出,其使用的靈活性是很多語言不可相比的。因其良好的性能,不僅應用于各類系統的拓展和開發,同時還應用于各種科研項目中。4.1主程序設計上電之后,系統便會自動對電路進行初始化操作。單片機依次開始調用按鍵子程序、顯示子程序、中斷子程序,隨后返回初始化之后,并循環運行。主程序流程圖如圖4.1所示。圖4.1主程序流程圖voidwrite_week(ucharhang,ucharadd,ucharweek)//寫星期函數{if(hang==1)write_com(0x80+add);elsewrite_com(0x80+0x40+add);switch(week){case1:write_data('M');//星期數為1時,顯示write_data('O');write_data('N');break;case2:write_data('T');//星期數據為2時顯示write_data('U');write_data('E');break;case3:write_data('W');//星期數據為3時顯示write_data('E');write_data('D');break;case4:write_data('T');//星期數據為4是顯示write_data('H');write_data('U');break;case5:write_data('F');//星期數據為5時顯示write_data('R');write_data('I');break;case6:write_data('S');//星期數據為6時顯示write_data('T');write_data('A');break;case7:write_data('S');//星期數據為7時顯示write_data('U');write_data('N');break;}}/*************時鐘顯示***************/voidinit_1602_ds1302(){write_sfm2_ds1302(1,1,shi);//顯示時write_sfm2_ds1302(1,4,fen);//顯示分write_sfm2_ds1302(1,7,miao);//顯示秒write_week(2,12,week);//write_sfm1(1,14,week);//顯示星期if(flag_nl==0)//顯示時間{write_sfm2_ds1302(2,2,nian);//顯示年write_sfm2_ds1302(2,5,yue);//顯示月write_sfm2_ds1302(2,8,ri);//顯示日}}/*************定時器0初始化程序***************/voidinit_time0(){EA=1;//開總中斷TMOD=0X01;//定時器0、工作方式1ET0=1;//開定時器0中斷TR0=1;//允許定時器0定時}4.2子程序設計4.2.1按鍵子程序按鍵子程序流程圖如圖4.2所示。上電之后,單片機會自動掃描是否按鍵被按下,若沒有按鍵被按下,時鐘則會正常走時顯示時間,且此時按鍵K2和按鍵K3起不到調節時間的作用,一旦K0或K1按鍵被按下,則會進入校時或鬧鈴的調時狀態,這個時候再按下K2和K3鍵,便能夠調節時單元的加減;第二次按下K0或K1鍵,則可進行調分狀態;如此反復,再次按下便可對秒單元進行調節。圖4.2按鍵子程序流程圖4.2.2顯示子程序通過定義數碼管顯示函數,分別可以對秒的個位和十位、分的個位和十位以及時的個位和十位進行計算顯示[10]。顯示子程序流程圖如圖4.3所示。圖4.3顯示子程序流程圖voidkey_with(){if(key_can==1){menu_1++;if(menu_1==1){menu_2=1;write_string(1,0,"::W:");write_string(2,0,"20--");}if(menu_1==2){menu_2=1;write_string(1,0,"setclock");write_string(2,0,"Y00:00");}if(menu_1>2){menu_1=0;write_guanbiao(1,2,0);init_1602_dis_csf();//初始化液晶顯示}}if(key_can==2){flag_200ms=1;if(menu_1==1){menu_2++;if(menu_2>7)menu_2=1;}if(menu_1==2)//鬧鐘的設置{menu_2++;if(menu_2>3)//if(menu_2>5)menu_2=1;}}if(menu_1==1){if(menu_2==1){if(key_can==3){shi+=0x01;if((shi&0x0f)>=0x0a)shi=(shi&0xf0)+0x10;///***shi&0xf0低四位清零,(shi&0xf0)+0x10向高位進1(高四位加1)***///if(shi>=0x24)if(shi>=0x24)shi=0;}if(key_can==4){if(shi==0x00)shi=0x24;if((shi&0x0f)==0x00)shi=(shi|0x0a)-0x10;///***如果個位為0,高四位減1***///shi--;}}if(menu_2==2){if(key_can==3){fen+=0x01;if((fen&0x0f)>=0x0a)fen=(fen&0xf0)+0x10;if(fen>=0x60)fen=0;}if(key_can==4){if(fen==0x00)fen=0x5a;if((fen&0x0f)==0x00)fen=(fen|0x0a)-0x10;fen--;}}if(menu_2==3){if(key_can==3){miao+=0x01;if((miao&0x0f)>=0x0a)miao=(miao&0xf0)+0x10;if(miao>=0x60)miao=0;}if(key_can==4){if(miao==0x00)miao=0x5a;if((miao&0x0f)==0x00)miao=(miao|0x0a)-0x10;miao--;}}if(menu_2==4){if(key_can==3){week+=0x01;if((week&0x0f)>=0x0a)week=(week&0xf0)+0x10;if(week>=0x08)week=1;}if(key_can==4){if(week==0x01)week=0x08;if((week&0x0f)==0x00)week=(week|0x0a)-0x10;week--;}}if(menu_2==5){if(key_can==3){nian+=0x01;if((nian&0x0f)>=0x0a)nian=(nian&0xf0)+0x10;if(nian>=0x9a)nian=1;}if(key_can==4){if(nian==0x01)nian=0x9a;if((nian&0x0f)==0x00)nian=(nian|0x0a)-0x10;nian--;}}if(menu_2==6){if(key_can==3){yue+=0x01;if((yue&0x0f)>=0x0a)yue=(yue&0xf0)+0x10;if(yue>=0x13)yue=1;}if(key_can==4){if(yue==0x01)yue=0x13;if((yue&0x0f)==0x00)yue=(yue|0x0a)-0x10;yue--;}}if(menu_2==7){if(key_can==3){ri+=0x01;if((ri&0x0f)>=0x0a)ri=(ri&0xf0)+0x10;if(ri>=0x32)ri=0;}if(key_can==4){if(ri==0x01)ri=0x32;if((ri&0x0f)==0x00)ri=(ri|0x0a)-0x10;ri--;}}write_sfm2_ds1302(1,2,shi);write_sfm2_ds1302(1,5,fen);write_sfm2_ds1302(1,8,miao);write_sfm1(1,14,week);write_sfm2_ds1302(2,3,nian);write_sfm2_ds1302(2,6,yue);write_sfm2_ds1302(2,9,ri);///***write_sfm3_18B20(2,12,temperature);switch(menu_2)//光標顯示{case1:write_guanbiao(1,2,1);break;case2:write_guanbiao(1,5,1);break;case3:write_guanbiao(1,8,1);break;case4:write_guanbiao(1,14,1);break;case5:write_guanbiao(2,3,1);break;case6:write_guanbiao(2,6,1);break;case7:write_guanbiao(2,9,1);break;}write_time();//把時間寫進去}4.2.3中斷子程序通上電以后,定時器中斷會自動判斷此刻的時間是不是到了1秒,時間到了1秒,秒單元相應的就會自動進行加1操作;接著就會判斷是不是到了1分鐘,時間到了1分鐘,分單元相應的就會自動進行加1操作[9];然后就會判斷是不是到了1小時,時間到了1小時,時單元相應的就會自動進行加1操作;當時間到了24小時,時單元就會清零。中斷子程序流程圖如圖4.4所示。圖4.4中斷子程序流程圖voidtime0()interrupt1{staticucharvalue;TH0=0X3C;TL0=0XB0;//50msvalue++;if((value%2)==0)//100msflag_100ms=1;if(value>=6)//200ms{value=0;flag_200ms=1;}}

5仿真調試本設計的仿真調試采用的是Proteus軟件,它不但能夠實現同類仿真軟件的所有功能,而且他還可以對外部電路中的元器件仿真,其內含元器件庫十分的豐富,當你在電路布線的過程中出現錯誤,也可以直接更改,設計使用十分的靈活,這就使得Proteus軟件在眾多的仿真軟件中脫穎而出,尤其適合學生或對單片機感興趣以及從事與單片機有關工作的人。在Proteus下,將編寫好的C語言程序載入到單片機內,隨后點擊運行,便可進入調試環境,程序無誤,此時電路中的各個元器件連接點便會亮起紅藍指示燈(紅色代表高電平,藍色代表低電平),LED數碼管亮起,時間顯示開始正常的走時。初始運行狀態如圖5.1所示。圖5.1初始運行狀態5.1功能調試5.1.1校時調試在對校時功能進行調試時,按下按鍵K0,此時K0鍵兩端為低電平,與K0鍵相連接的P1.0引腳也為低電平,LED數碼管閃爍一下,便進入時單元的調試狀態,按下K2或K3鍵,時單元都會閃爍一次,對應的P1.2和P1.3引腳也會呈現為低電平狀態,且每次按鍵時單元都會加一或減一。時單元調試結果如圖5.2所示。圖5.2時單元調試結果分單元調試只需再次按下K0鍵,隨后通過按K2和K3鍵,即可對分單元進行調節。分單元調試結果如圖5.3所示。圖5.3分單元調試結果秒單元的調試與時單元和分單元調試步驟相同,調試結束后,需要再次按下K0鍵,此時校時結束,LED數碼管按照設定的時間開始走時。校時調試結果如圖6.4所示。圖5.4校時調試結果5.1.2鬧鈴調試在設定鬧鈴功能時,按照校時調試的步驟依次按下K1鍵,緊接著按下K2和K3鍵,便可以設置鬧鈴的時間,若是走時的時間到了鬧鈴設置的時間,這時候蜂鳴器便會發出聲響進行提示,同時蜂鳴器的指示燈亮起。5.1.3復位調試當需要將運行中的電路返回到初始值時,只需要按下復位按鍵,復位按鍵、電容和RESET引腳都顯示為高電平,下拉電阻的接地端保持低電平不變,與RESET引腳相連接的一端為高電平,LED數碼管閃爍一下便回到初始運行狀態。5.2仿真結果分析從仿真結果來看,本設計通過按鍵很好的實現了對LED數碼管時間顯示的調節,按鍵功能明確,且在復位按鍵的作用下,能夠強制性的將運行中的電子時鐘回到初始狀態,在一定程度上增加了對電子鐘調節的便捷性,而且在調節的過程中,每按鍵一次,數碼管緊跟著就變動顯示一次,非常的順暢,在正常顯示時間的走時中,不僅精確,還十分的平穩,非常符合實際應用中的要求。

總結與展望電子時鐘具有長遠的發展歷史,使用單片機控制電子時鐘的技術早已成熟,也早已成為主流。本次設計的電子時鐘的整體工作主要分為硬件電路和軟件系統兩部分,首先是選擇所需要的元器件,再按照實現的功能將各個元器件整合到一起,完成設計的硬件電路,然后是設計軟件系統部分,通過程序控制硬件電路,從而實現時間的顯示、校時以及鬧鈴功能。本設計所需實現的功能,但是功能較為簡單,不足之處就是每次開始運行或是初始化電路,都需要對其進行校時,比如每次運行都需要重新進行校時,每次到達鬧鈴時間蜂鳴器只會響一聲,時間較短,提示作用有點不太明顯,在實際的生活中使用還是有所欠缺,實用性不強,還需對其進行完善。本次設計給了我一次很好的實踐的機會,但也讓我看到了自己的不足,雖然在課堂上我們已經學習了很多的理論知識,但要知道理論絕大部分是理想的,實際的使用和操作還是和理論有很大的差別,從被動的接受知識到主動的去學習,再通過實際的操作和應用,讓我真真切切的明白了什么叫學以致用,讓我對所學的知識有了進一步的認知和了解,也讓我知道了理論結合實踐的重要性,在今后的工作中仍需不斷學習,只有這樣才能夠不斷進步。本次設計完成基于單片機的電子時鐘設計,對電子時鐘系統有更深的認知,能夠很好地將單片機技術和時鐘技術運用到實物設計當中,使整個系統具備了智能化應用條件,進一步提升人們對于電子時鐘設備的操控感,提升用戶體驗,彌補傳統方式帶來的不足。本次的軟件設計實現了預期的功能,在軟件調試過程中,出現過時鐘模塊無法正常傳輸數據,液晶出現偶然性亂碼的現象,通過修訂程序BUG以及語句間的邏輯關系,解決了軟件問題,這期間也提升了代碼編程能力和分析能力,對軟件架構有了更加深入的了解??偨Y此次設計,總體上符合預期的目標,測試數據較為準確,無重大異常情況出現,后續針對此類系統的展望,功能上增加語音播報功能,當鬧鐘時間達到時進行語音播報提醒功能,為了使整個系統更具有實用性,更符合市場需求,可作為后續改進方向。

致謝行文至此,不知不覺到了論文的最后一步,致謝的開始就意味著大學三年生活的結束?;叵氪髮W三年的生活感覺又短暫又漫長?;厥走^往三年的歲月,有遺憾、有欣喜、有歡樂,也有淚水。這些代表著一生中最青春的時光即將成為回憶,成為只可以再閑暇時光回憶的往事,“天長地久有時盡

溫馨提示

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

評論

0/150

提交評論