摘要
近幾年,單片機在各個領域得到廣泛的應用。從工業到人們的日常生活,大部分的科技產品都是通過單片機來控制。在它問世之前,自動控制設備得不到廣泛的應用,這是因為控制設備的體積龐大,耗電量大,價格昂貴。在第一臺微處理器成功研制不久,第一個單片機就問世了。因為其小巧的體積,低功耗,以及高效的性能,單片機受到了大家的歡迎。
本設計利用Atmel公司的AT89C52單片機對電子時鐘進行開發,設計了實現所需功能的硬件電路,應用C語言進行軟件編程,并用Proteus軟件進行演示、驗證。主要介紹用單片機內部的定時/計數器來實現電子時鐘的方法,本設計由單片機80C51芯片和LED數碼管為核心,輔以必要的電路,構成了一個單片機的數字電子時鐘。它的計時周期為24小時,顯滿刻度為“23時59分59秒”,且配有4個獨立鍵盤,可以靈活地調節時間和日期,并具有一定的擴展性。
1 緒論
1.1 數字時鐘設計的背景單片機自從1976年由Intel公司推出MCS-48開始,迄今已有二十多年之久了。由于單片機集成度高、功能強、可靠性高、體積小、功耗低、使用方便、價格低廉等一系列優點,目前已經滲入到人們工作和生活的方方面面,單片機應用領域已經從面向工業控制、通訊、交通、智能儀表等方面迅速發展到家用消費產品、辦公自動化、汽車電子、PC機外圍以及網絡通訊等廣大領域。
本文討論的單片機數字電子時鐘系統的核心是目前應用極為廣泛的51系列單片機,配置了外圍設備,構成了一個可編程的計時定時系統,具有體積小,可靠性高,功能多等多種特點。不僅能滿足所需要求而且還有很多功能可供擴展,有著廣泛的應用實踐領域。
2 設計方案通常通過單片機設計電子時鐘有2種方法:一是通過單片機內部的定時器計數器。采用軟件編程實現時鐘計數,一般稱為軟時鐘,這種方法硬件線路簡單,程序比較復雜。系統的功能一般與軟件相關。通常用于對時間精度要求不搞的場合。二是采用時鐘芯片 他的功能強大,功能不見集成在芯片內需,自動產生時鐘等相關功能。硬件成本較高,軟件編程仙丹。通常對時鐘精確度要求較高的場合。
電子時鐘的系統軟件程序有、由主程序和子程序組成,主程序包含初始化參數設置,按鍵處理,數碼管顯示模塊等。在設計時候、各個模塊都采用子程序結構設計。在主程序種調用。由于定時器,計數器采用中斷方式處理,應此還用辨析定時器,中斷服務子程序,在定時器,計數器中斷服務子程序種對時鐘進行調整。
2.1 主程序
主程序先對顯示單元和定時器計數器初始化,然后重復調用數碼管顯示模塊和按鍵處理模塊,當有建按下,則轉入相應的功能程序。
2.2 數碼管顯示模塊
本設計的顯示模塊采用8位一體共陽極數碼管,顯示分為時鐘顯示和日期星期兩種模式,當為顯示時鐘模式時,從右到左依次顯示秒個位,秒十位,橫線,分個位,分十位,橫線,時個位,時十位;當為顯示日期和星期模式時,從右到左一次顯示星期,不顯示,橫線,日個位,日十位,月個月,月十位。數碼管顯示的信息用8個內存單元存放,這8個內存單元為顯示緩沖區,其中秒個位和秒十位,分個位和分十位,時個位和時十位分別由秒數據,分數據和小時數據分拆得到。在本系統種數碼管顯示采用軟件譯碼動態顯示。在存儲器中首先建立一張顯示信息字段碼表,顯示的時候,先從顯示緩沖區中取出顯示的信息,然后通過查表程序在字段碼表中查出的所顯示的字段碼。從P0口輸出,同時在P2口將對應的位選碼輸出,選中顯示的數碼管,就能在相應的數碼管上顯示顯示緩沖區的內容。
2.3 定時器計數器T0中斷服務程序
定時器計數器T0用于時間計時,選擇方式1,重復定時,定時時間設為100MS,定時時間到則溢出中斷,在中斷服務程序中用一個計數器對100MS計數,計10次則對秒單元加1,秒單元加到60則對分單元加1,同時秒單元清零。分單元加到60的時候,則對時單元加1,同時分單元清零,時單元加到24的時候則對時單元清零,標志一天時間計滿,此時所以單元清零。在對各單元計數的同時,把它們的值放到存儲器單元的制定位置
2.4按鍵處理模塊
按鍵處理設置為:如果沒有按鍵,則為時鐘模式,時鐘正常走時,當按下shijia按鍵的時候,時單元每次加1,當加到24后跳為00,當按下shijian按鍵的時候,時單元每次減1,當減到00的時候跳到23;當按下fenjia按鍵的時候,分單元每次加1,當加到60的時候跳為00,按下fenjian按鍵的時候,分單元每次減1,當減到00的時候跳為59;當xianshiqih建按下時,為顯示日期模式,此時數碼管顯示日期和星期,當同時按下shijia按鍵的時候,月單元每次加1,當加到13后跳為00,當同時按下shijian按鍵的時候,日單元每次加1,如果月份為:1月、3月、5月、7月、8月、10月、12月的時候,當日加到32的時候跳到1;如果月份為4月、6月、9月、11月的時候,當日加到31的時候跳到1,如果月份為2月的時候,當日加到29時跳到1。當同時按下fenjia按鍵的時候,星期單元每次加1,當加到6的時候跳為0,“0”表示星期日。
3 硬件電路設計
3.1 復位電路
MCS-51單片機的復位是由外部的復位電路來實現的。復位引腳RST通過一個斯密特觸發器與復位電路相連,斯密特觸發器用來抑制噪聲,在每個機器周期的S5P2,斯密特觸發器的輸出電平由復位電路采樣一次,然后才能得到內部復位操作所需要的信號。
上電復位:上電復位電路是—種簡單的復位電路,只要在RST復位引腳接一個電容到VCC,接一個電阻到地就可以了。上電復位是指在給系統上電時,復位電路通過電容加到RST復位引腳一個短暫的高電平信號,這個復位信號隨著VCC對電容的充電過程而回落,所以RST引腳復位的高電平維持時間取決于電容的充電時間。為了保證系統安全可靠的復位,RST引腳的高電平信號必須維持足夠長的時間。
上電自動復位是通過外部復位電路的電容充電來實現的。只要Vcc的上升時間不超過1ms,就可以實現自動上電復位。
按鍵復位:電路在運行過程中,也可以通過按鍵進行復位。當按下復位按鍵,復位引腳RST通過按鍵與地相接,得到低電平,從而實現復位。
電路圖如圖2所示:

圖2 復位電路
3.2 時鐘電路
時鐘是單片機的心臟,單片機各功能部件的運行都是以時鐘頻率為基準,有條不紊的一拍一拍地工作。因此,時鐘頻率直接影響單片機的速度,時鐘電路的質量也直接影響單片機系統的穩定性。常用的時鐘電路有兩種方式:一種是內部時鐘方式,另一種為外部時鐘方式。本文用的是內部時鐘方式。
電路圖如圖3所示:

圖3 時鐘震蕩電路
MCS-51單片機內部有一個用于構成振蕩器的高增益反相放大器,該高增益反向放大器的輸入端為芯片引腳XTAL1,輸出端為引腳XTAL2。這兩個引腳跨接石英晶體振蕩器和微調電容,就構成一個穩定的自激振蕩器。
3.3 按鍵電路
按鍵的開關狀態通過一定的電路轉換為高、低電平狀態。按鍵閉合過程在相應的I/O端口形成一個負脈沖。閉合和釋放過程都要經過一定的過程才能達到穩定,這一過程是處于高、低電平之間的一種不穩定狀態,稱為抖動。抖動持續時間的常長短與開關的機械特性有關,一般在5-10ms之間。為了避免CPU多次處理按鍵的一次閉合,應采用措施消除抖動。本文采用的是獨立式按鍵,直接用I/O口線構成單個按鍵電路,每個按鍵占用一條I/O口線,每個按鍵的工作狀態不會產生互相影響。
電路圖如圖4所示:
圖4 按鍵電路
P1.4口為SP5所接的按鍵為模式切換按鍵,當不按下此按鍵時為時鐘顯示模式,當按下此按鍵時為日期和星期顯示模式。
當為時鐘顯示模式的時候,P1.0到P1.3分別表示如下:
P1.0口為SP1表示調整小時“+”,按一下則時加1,當加到23后再加一次為0;
P1.1口為SP2表示調整小時“-”,按一下則時減1,當減到0后再減一次為23;
P1.2口為SP3表示調整分“+”,按一下則分加1,當加到59后再加一次為0;
P1.3口為SP4表示調整分“-”,按一下則分減1,當減到0后再加一次為59。
當為日期和星期模式的時候,P1.0到P1.3分別表示如下:
P1.0口為SP1表示調整月份“+”,按一下則月份加1,當加到12月后再加一次為1月;
P1.1口為SP2表示調整日“+”,按一下則日加1,當加到31后再加一次為1;
P1.2口為SP3表示調整星期“+”,按一下則星期加1,當加到6后再加一次為0,0表示星期一;
P1.3口為SP4無定義,按下此按鍵無任何動作。
3.4 數碼管顯示電路
數碼管顯示器成本低,配置靈活,與單片機接口簡單,在單片機應用系統中廣泛應用。
數碼管是由8個發光二極管構成的顯示器件。在數碼管中,若將二極管的陽極連在一起,稱為共陽極數碼管;若將二極管的陰極連在一起,稱為共陰極數碼管。本設計用到的8個數碼管均是共陽極的。當發光二極管導通時,它就會發光。每個二極管就是一個筆劃,若干個二極管發光時,就構成了一個顯示字符。將單片機的I/O口控制相應的芯片與數碼管的a-g相連,低電平的位對應的發光二極管亮,這樣,由I/O口輸出不同的代碼,就可以控制數碼管顯示不同的字符。
本設計的8個數碼管均采用動態顯示方式,系統采用動態顯示方式,用P0口來控制LED數碼管的段控線,而用P2口來控制其位控線。動態顯示通常都是采用動態掃描的方法進行顯示,即循環點亮每一個數碼管,這樣雖然在任何時刻都只有一位數碼管被點亮,但由于人眼存在視覺殘留效應,只要每位數碼管間隔時間足夠短,就可以給人以同時顯示的感覺。
本顯示電路的設計采用了一個74HC573,74HC573是我們常用的芯片,作用是用來驅動驅動數碼管工作。
電路圖如圖5所示:

圖5 數碼管顯示電路
3.5 電源電路設計
電源電路的設計,采用了4只1N4007整流二極管,它的作用除了將交流變為脈動直流外,還能將直流變為直流,也就是當電源輸入為上正下負是,輸出也為上正下負;當輸入為上負下正是,輸出還是為上正下負,這能有效的防止在操作過程中不小心將電源接反,燒壞電路及CPU;采用了一個LM7805三端集成穩壓器,由于單片機的供電電源為5伏,采用LM7805可以保證單片機所需電源的穩定,在使用時,如果沒有5V直流電源,就可以使用5V到30V不等的直流電源或5V到24V不等的交流電源,這時輸出都可以得到5V穩定的直流電源。電路中幾個電容的作用是當輸入電源為交流時,可以慮出通過4只二極管后得到的脈動直流電的波形,以保證得到5V穩定的直流電源。本電源電路的設計在使用過程中安全,方便,穩定和可靠。
4 軟件設計與程序代碼
4.1 軟件選擇與介紹
4.1.1 軟件介紹Proteus7.8的ISIS是一款Labcenter出品的電路分析實物仿真系統,可仿真各種電路和IC,并支持單片機,元件庫齊全,使用方便,是不可多得的專業的單片機軟件仿真系統。
Proteus軟件是來自英國Labcenter electronics公司的EDA工具軟件,Proteus軟件有十多年的歷史,在全球廣泛使用,除了其具有和其它EDA工具一樣的原理布圖、PCB自動或人工布線及電路仿真的功能外,其革命性的功能是,他的電路仿真是互動的,針對微處理器的應用,還可以直接在基于原理圖的虛擬原型上編程,并實現軟件源碼級的實時調試,如有顯示及輸出,還能看到運行后輸入輸出的效果,配合系統配置的虛擬儀器如示波器、邏輯分析儀等,您不需要別的,Proteus為您建立了完備的電子設計開發環境!尤其重要的是Proteus Lite可以完全免費,也可以花微不足道的費用注冊達到更好的效果;功能最強的Proteus專業版也非常便宜,人人用得起,對高校還有更多優惠。
Proteus組合了高級原理布圖、混合模式SPICE仿真,PCB設計以及自動布線來實現一個完整的電子設計系統。此系統受益于15年來的持續開發,被《電子世界》在其對PCB設計系統的比較文章中評為最好產品—“The Route to PCB CAD”。Proteus 產品系列也包含了我們革命性的VSM技術,用戶可以對基于微控制器的設計連同所有的周圍電子器件一起仿真。用戶甚至可以實時采用諸如LED/LCD、鍵盤、RS232終端等動態外設模型來對設計進行交互仿真
4.1.2 Proteus7.8的特點
① 全部滿足我們提出的單片機軟件仿真系統的標準,并在同類產品中具有明顯的優勢。
②具有模擬電路仿真、數字電路仿真、單片機及其外圍電路組成的系統的仿真、RS一232動態仿真、1 C調試器、SPI調試器、鍵盤和LCD系統仿真的功能;有各種虛擬儀器,如示波器、邏輯分析儀、信號發生器等。③ 目前支持的單片機類型有:68000系列、8051系列、AVR系列、PIC12系列、PIC16系列、PIC18系列、Z80系列、HC11系列以及各種外圍芯片。④ 支持大量的存儲器和外圍芯片。總之該軟件是一款集單片機和SPICE分析于一身的仿真軟件,功能極其強大 ,可仿真51、AVR、PIC等。
4.2 軟件仿真電路全圖

圖7 軟件仿真電路全圖
此圖為時鐘顯示模式,顯示內容為6時16分3秒

圖8 軟件仿真電路全圖
此圖為日期和星期顯示模式,顯示內容為9月1日星期2
5 結論通過做這一次課程設計,感覺自己的收獲很多。課程設計是為了讓我們對平時學習的理論知識與實際操作相結合,在理論和實踐教學的基礎上進一步鞏固已學基本理論及應用知識并加以綜合提高,學會將知識應用于實際,提高分析和解決問題的能力。
本次設計主要涉及了單片機原理及接口技術的相關知識和C語言編程的諸多要領。設計中涉及到的許多問題,更是對以前所學的知識的回顧及在過去的三年中學到知識的總結,這次設計對我將來的工作有著重要的意義。
在此設計中,我積極查閱資料,細心鉆研各個細節,完成了數字電子時鐘與日歷的電路設計,也讓我明白了在設計中考慮問題應該全面。在設計中既鞏固了我的理論知識,又學會提煉需要的信息的方法。
這次對數字電子時鐘與日歷的設計,讓我了解了設計電路的步驟,也讓我了解了有關數字電子時鐘與日歷的原理與設計理念,要實現電路功能總要先設計,成功之后才實際接線的,F在還只停留在理想階段,也許在設計實際電路過程中會有困難但是我相信只要努力一定能真正設計出實際產品。
在做課程設計的過程中,我深深地感受到了自己所學到知識的有限,明白了只學好課本上的知識是不夠的,要通過圖書館和互聯網等各種渠道來擴充自己的知識面。
我并不在乎設計是否會成功,這不重要,最重要的是設計的過程。因為設計的過程在整個過程中所占時間最多,鍛煉我們的價值也是最大的。設計開始的時候我真的是毫無頭緒,手足無措,甚至有過放棄的想法,但終于堅持了下來。我明白了要設計一個成功的電路,除了有創新能力之外,必須要有扎實的知識基礎,要熟練地掌握課本上的知識,只有這樣才能對試驗中出現的問題進行分析解決。在整個電路的設計過程中,花費時間最多的就是那些屬于那想法很好但是要實現非常困難的設計并且超出了能力范圍的。開始的時候非常著急,但是當選好了方案后,我的干勁就起來了。
總體來說,通過這次畢業設計學習,讓我單片機的許多課外知識都有了大概的了解,也學會了Proteus軟件的使用,這對以后找工作也是一個優勢。也是對平時理論學習的一個檢驗。更重要的是培養了我對學習的興趣,開拓了自己的眼界,為以后的學習打下了良好的基礎,我受益匪淺。
由于本人水平有限,文中難免出現錯誤與不足之處,懇請各位老師批評指正。
致 謝通過本次設計,我在指導老師牛月蘭的精心指導和嚴格要求下,獲得了豐富的理論知識,極大地提高了實踐能力,并對當前電子領域的研究狀況和發展方向有了一定的了解,單片機領域這對我今后進一步學習計算機方面的知識有極大的幫助。在此,我忠心感謝各位老師的指導和支持。在未來的工作和學習中,我將以更好的成績來回報各位領導、老師和同學。
通過這次的設計使我認識到我對單片機編程方面的知識知道的太少了,對于書本上的很多知識還不能靈活運用,有很多我們需要掌握的知識在等著我去學習,我會在以后的學習生活中彌補我所缺少的知識。本次的設計使我從中學到了一些很重要的東西,那就是如何從理論到實踐的轉化,怎樣將所學到的知識運用到我以后的工作中去。在大學的課堂的學習只是在給我們灌輸專業知識,而我們應把所學的用到我們現實的生活中去,此次的電子時鐘設計給我奠定了一個實踐基礎,我會在以后的學習、生活中磨練自己,使自己適應于以后的競爭。