第一章 設計目的及要求
1.目的
通過對電子時鐘系統進行編程與Protues仿真,進一步掌握單片機的組成,P1、P0、P2、P3口的應用,蜂鳴器的應用,定時中斷程序的編寫及應用,對之前學習的單片機課程進行回顧與應用;初步掌握Protues仿真方法以及用keil軟件編寫程序的方法。
2.題目與要求
本次課程設計的題目為:電子時鐘的設計,其具體要求為:
(1)能實現時、分、秒的顯示;
(2)能實現12、24小時制的切換;
(3)能設定時間;
(4)能設定鬧鐘;
整個系統要設計鍵盤和顯示器,利用單片機內部時鐘完成定時器的定時設計。
第二章 理論基礎
1.AT89C52芯片
AT89C52芯片的引腳圖如圖1所示。
圖1 AT89C52芯片引腳
其中主要應用到的引腳口介紹:
(1)P0口的第一功能是作為一般I/O口使用,第二功能是在CPU訪問外部存儲器時,分時提供低8位地址和8位雙向數據。
(2)P1口是8位準雙向I/O口,51子系列中P1只能用作一般I/O口,52子系列中P1.0和P1.1引腳還具有第二功能。
(3)P2口是8位準雙向I/O口,第二功能是在CPU訪問外部存儲器時,作為高8位地址總線,輸出高8位地址。
(4)P3口是8位準雙向I/O口,其第一功能是用作一般I/O口,第二功能是作為中斷信號和外部數據存儲器的讀寫控制信號。
(5)RES,復位信號高電平有效。
2.Keil的簡單介紹
Keil C51是美國Keil Software公司出品的51系列兼容單片機C語言軟件開發系統。Keil提供了包括C編譯器、宏匯編、鏈接器、庫管理和一個功能強大的仿真調試器等在內的完整開發方案,通過一個集成開發環境(μVision)將這些部分組合在一起。此處簡單介紹一下Keil 工程的建立等,以Keil μVision2界面為例。
(1)建立一個工程,選擇菜單欄中的【Project】下的【New Project】,菜單欄如圖2所示。
圖2 菜單欄
(2)選擇工程要保存的路徑并且輸入工程名,以電子時鐘工程的建立為例,如圖3所示。
圖3 “保存新工程”對話框
(3)選擇系統要用的單片機如圖4(a)所示,選擇添加啟動文件如圖4(b)所示。
圖4(a)“選擇單片機”對話框
圖4(b)“添加啟動文件”對話框
(4)建立文件,選擇菜單【File】下的【New】,出現界面如圖5所示。
圖5 新建文件界面
(5)保存文件為“*.c”文件,并且添加文件到所建的工程下,保存文件截面圖如圖6所示,添加文件顯示界面如圖7所示,右鍵點擊SourceGroup添加。
圖6 保存文件界面
圖7 添加文件界面
3.Protues的簡單介紹
Proteus軟件是英國Lab Center Electronics公司出版的EDA工具軟件,它不僅具有其它EDA工具軟件的仿真功能,還能仿真單片機及外圍器件。它是目前比較好的仿真單片機及外圍器件的工具,可以仿真51系列、AVR、PIC、ARM、等常用主流單片機。在PROTEUS繪制好原理圖后,調入已編譯好的目標代碼文件:*.HEX,可以在PROTEUS的原理圖中看到模擬的實物運行狀態和過程。
(1)Keil中生成*.HEX的界面如圖8所示。
圖8 生成HEX文件界面
(2)Protues中加載HEX文件,在Protues界面中雙擊AT89C51芯片,所示界面如圖9所示。
圖9 加載HEX文件界面
第三章 設計原理以及方案
1.系統總體框圖
本電子時鐘主要由單片機、鍵盤、數碼管顯示接口電路、蜂鳴器電路和復位電路構成,設計的總體方案如圖10所示:
圖10 總體方案
2.硬件電路
2.1晶振電路
晶振電路如圖11所示。
圖11 晶振電路
2.2復位電路
復位電路如圖12所示。
圖12 復位電路
2.3蜂鳴器電路
蜂鳴器電路如圖13所示。
圖13 蜂鳴器電路
2.4數碼管顯示電路
數碼管顯示電路如圖14所示。
圖14 數碼管顯示電路
2.5鍵盤電路
鍵盤電路如圖15所示。
圖15 鍵盤電路
2.6總體電路
在Protues中仿真的總體電路圖如圖16所示。
圖16 總體電路
3.軟件系統設計
3.1單片機的使用情況
設計電子時鐘使用單片機資源的情況如下:
P0口輸出數碼管段選信號,P2口輸出數碼管位選信號;調整功能選擇鍵kgnxz:P3.0口,通過其選擇調整時鐘還是調整鬧鐘;調整秒 ksec:P3.1口,按一次使秒加1;調整分kmin:P3.2;按一次使分加1;調整小時khour:P3.3口,按一次使時加1;12與24小時制的轉換鍵kzh:P3.4,默認24小時制,按一次鍵之后轉換為12小時制。具體如下:
(1)實現基本的走時間和顯示時間的時、分、秒,上電自動顯示初始時間00-00-00。
(2)當第一次按下第一個彈性按鍵時進入時間的調節狀態,按下第二個按鍵時實現秒的加一調節,按下第三個按鍵時實現分的加一調節,按下第四個按鍵時實現小時的加一調節。
(3)當第二次按下第一個彈性按鍵時進入鬧鐘的調節狀態(鬧鐘初始值設定為01-00-30),按下第二個按鍵時實現秒的加一調節,按下第三個按鍵時實現分的加一調節,按下第四個按鍵時實現小時的加一調節。
(4)當第三次按下第一個彈性按鍵時進入原顯示時間的狀態。
(5)按下第五個按鍵時實現24到12小時制的轉換。
(6)當第五次按下第一個彈性按鍵時返回正常的顯示時間走時狀態。
3.2軟件系統的各個模塊
時鐘系統的軟件設計主要采用以下基本模塊來實現,主程序、定時中斷服務程序、鍵盤掃描程序模塊、時鐘顯示模塊、鬧鐘顯示模塊、轉換模塊、延時模塊和蜂鳴器模塊。
主程序:對中斷程序初值進行設定,在各種情況下對子函數的調用,保證整個程序的順序執行。
定時中斷服務程序:用于電子時鐘的準確運行。
鍵盤掃描程序模塊:用于確定按鍵并在按鍵按下時調用相應的程序進行顯示。
時鐘顯示模塊:用于顯示正常走表的時間。
鬧鐘顯示模塊:用于顯示設定鬧鐘的時間。
轉換模塊:用于將默認的24小時制轉換為12小時制。
延時模塊:程序中調用延時子程序,用于按鍵消抖動,數碼管消影等。
蜂鳴器模塊:用于在設定的鬧鐘時間與走表的時間相等時,鬧鐘響起。
3.3軟件系統程序流圖
主程序的順序流圖如圖17所示。
圖17 主程序順序流圖
顯示程序的順序流圖如圖18所示。
圖18 顯示程序順序流圖
中斷程序的順序流圖如圖19所示。
圖19 中斷程序順序流
第四章 仿真結果與分析
1.仿真結果
上電走表仿真結果圖如圖20所示。
圖20 上電之后走表仿真結果圖
按下一次kgnxz鍵,再分別調整時、分、秒各按鍵,使得顯示時間為15-15-15仿真結果圖如圖21所示。
圖21 調整時分秒仿真結果圖
按下kzh鍵,使得顯示時間為03-15-19仿真結果圖如圖22所示。
圖22 24小時制轉換為12小時制仿真結果圖
按下第二次kgnxz鍵,再分別調整時、分、秒各按鍵,即調整的便是鬧鐘的設定時間(初始設定為01-00-30),仿真結果圖如圖23所示。
圖23 鬧鐘顯示仿真結果圖
調整鬧鐘的設定時間為03-20-30,仿真結果圖如圖24所示。
圖24 鬧鐘調整顯示仿真結果圖
按下第三次kgnxz鍵時,顯示走表的時間,并且在到達設定的鬧鐘時間時蜂鳴器發出聲音,即在蜂鳴器發聲過程中P1.0口會由原高電平變為低電平,仿真結果圖如圖25所示。
圖25 蜂鳴器發聲仿真圖
2.仿真結果分析
讓手機中的秒表與Protues仿真中的秒同時開始,可以發現他們幾乎是同步的(由于個人反應導致按下手機秒表瞬間有微小誤差)。而鬧鐘設定值是完全沒有誤差的,當時間與設定鬧鐘時間完全相等時蜂鳴器就會發聲。
第五章 總結
本次課程設計利用Keil以及Protues軟件,完成了電子時鐘系統的程序編寫與電路圖搭建,并對所設計的電子時鐘系統進行了仿真測試。
完成本次課程設計的過程,經歷了興奮、自信、失落、奮發、所悟、完成幾個過程。剛開始做課程設計時,仔細閱讀設計的題目和要求,想到理論課學得也還差不多,以為沒什么太大困難,所用的知識書上都有,各部分程序大都可以參考課本例題完成。開始前兩天我就熟悉課本,參考課本內容在稿紙上把自己的思路和各部分程序寫了下來,然后就是銜接起來在Keil中編寫。經過三天的努力,毫無結果。埋頭苦干的過程是痛苦的,尤其是在按自己覺得理論上合理的算法和程序做完,發現根本顯示不了的時候,是迷茫,煩躁的。在第三天下午參考別人只是顯示出來走表就可以的程序,并且接受別人建議按一步一步調試去編寫的情況下,編寫運行找錯地不斷循環中,終于在第五天完善了程序。
通過這次課程設計,我感覺到自己從課本上學到的理論知識和實踐仍有很大的差距。學習理論課時也是有實踐課的,但當時自己只是追求明白課本例題的程序,幾乎很少在Protues上去畫例題中的仿真圖,導致自己對Protues的應用不熟悉,而且也沒深入想過課本上那些小的程序之間的聯系應用。所以學習知識不能太局限于理論,要與實踐結合。學會了單片機的一般設計過程,通常都要進行系統擴展與配置,因此,要完成一個單片機的設計工作,必須依次做到下述工作:
- 硬件電路的設計、組裝與調試;
- 應用軟件的編寫、調試;
- 完整應用軟件的調試、固化和脫機運行。
而在進行硬件系統設計時我們應當盡量做到:
- 盡可能的選擇典型電路,并符合單片機的常規使用方法;
- 在充分滿足系統功能要求前提下,留余地以便于二次開發;
- 硬件結構設計應與軟件設計方案一并考慮;
- 整個系統相關器件要力求性能的匹配;
- 硬件上要有可靠性與抗干擾設計;
- 充分考慮單片機的帶載驅動能力。
所以我用單片機編寫了上面的程序,因為基礎知識學的不怎么好,如有錯誤之處,還望老師理解,并加以批改。通過這次設計使我對單片機有了更深入的了解。培養了我的動手實踐能力。
參考文獻
[1] 郭文川,MCS-51單片機原理、接口及應用,電子工業出版社,2014.
[2] 朱永金,《單片機應用技術》,中國勞動社會保障出版社.
[3] 彭冬明.韋友春,《單片機實驗教程》,理工大學出版社.
[4] 朱家建,《單片機原理及應用》,機械工業出版社.
[5] 胡漢才,《單片機原理及接口技術》,清華大學出版社.
[6] 張偉,《單片機原理及應用》,機械工業出版社.
附錄:
PCB原理圖