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