數(shù)字時鐘的設計與仿真_第1頁
數(shù)字時鐘的設計與仿真_第2頁
數(shù)字時鐘的設計與仿真_第3頁
數(shù)字時鐘的設計與仿真_第4頁
數(shù)字時鐘的設計與仿真_第5頁
已閱讀5頁,還剩14頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、信息工程學院課程設計湖北民族學院課程設計報告數(shù)字時鐘設計與仿真課 程: 電子線路課程設計 專 業(yè): 電子信息科學與技術班 級: 0312409 學 號: 031240910 學生姓名: 謝加龍 指導教師: 易金橋 2014年 06月 21日信息工程學院課程設計任務書學 號031240910學生姓名謝加龍專業(yè)(班級)0312409設計題目數(shù)字時鐘設計與仿真設計技術參數(shù)單片機AT87C5I驅動芯片74LS04 74LS245 蜂鳴器14MO +5V晶振 12MHz電容22u 33p(2)電阻220 1K(2)三極管 PNP S8550按鍵開關設計要求(1)、 要求準確顯示“時”、“分”、“秒”,2

2、4 小時制;(2)、 具有整點報時功能,在每小時59 分51 秒、53 秒、55 秒、57 秒發(fā)出低音,59秒整發(fā)出高音;(3)、系統(tǒng)工作符合一般時鐘要求。(4)、具有校時功能,用戶可修改“時”、“分”,且互不影響;(5)、可切換12 小時制和24 小時制。參考資料【1】.王守中 51單片機應用開發(fā)速查手冊 人民郵電出版社P417 2009年4月第一版【2】.彭東明 韋友春 邱少龍 單片機實驗教程 北京理工大學出版社P137 2007年2月第一版【3】.韓志軍 單片機系統(tǒng)的設計與應用實例 機械工業(yè)出版社P160 2010年2月第二版【4】. 陶春明 單片機實用技術 人民郵電出版社 2008年4

3、月第一版【5】.單片機數(shù)字電子時鐘畢業(yè)設計 百度文庫 2010-06-19【6】.電子時鐘 百度文庫 2010-08-06 2014-06-21 學生姓名: 謝加龍 學號: 031240910 專業(yè)(班級): 0312409 課程設計題目: 數(shù)字時鐘設計與仿真 成績: 指導教師: 2014年 06月21 日摘 要基于單片機AT89c51設計而成的簡易數(shù)字電子時鐘,其主要功能皆由對單片機編程即由軟件完成,外圍硬件電路只包括報時電路、鍵盤輸入電路和顯示電路三個模塊。具有外圍硬件電路簡單、運行功能可靠的優(yōu)點。關鍵詞:單片機 時鐘 鍵盤輸入 顯示目錄1、系統(tǒng)設計要求 11.1 基本功能11.2擴展功能

4、12、硬件設計22.1系統(tǒng)設計方案選擇22.2系統(tǒng)原理框圖22.3各單元的功能描述22.4電路連接圖22.5元器件清單列表22.6所用芯片的管腳圖23、軟件設計 33.1主程序的流程圖33.2鍵盤掃描程序流程圖33.3發(fā)聲程序流程圖33.4總程序34、調試 44.1仿真調試44.2硬件調試45、總結5參考文獻61、系統(tǒng)設計要求1.1 基本功能(1)、 要求準確顯示“時”、“分”、“秒”,24 小時制;(2)、 具有整點報時功能,在每小時59 分51 秒、53 秒、55 秒、57 秒發(fā)出低音,59秒整發(fā)出高音;(3)、系統(tǒng)工作符合一般時鐘要求。1.2擴展功能:(1)、具有校時功能,用戶可修改“時

5、”、“分”,且互不影響;(2)、可切換12 小時制和24 小時制。2、 硬件總體設計方案2.1系統(tǒng)設計方案選擇本次設計時鐘電路,最初的設想方案是用AT89C51單片機芯片控制外圍電路,用6位共陰數(shù)碼管顯示時間,用上拉電阻來驅動數(shù)碼管的顯示,用按鍵來調時和實現(xiàn)12小時制和24小時制的轉換,用喇叭進行整點報時,單片機編程用匯編語言。但由于在編程過程中,匯編語言指令多、編程難,因此改為用C語言編程。在用C語言編程來實現(xiàn)用按鍵轉換12小時制和24小時制的時候遇到了困難,因此又把按鍵改為開關。另外學校只有4位和2位及1位的共陽數(shù)碼管,因此又把6位共陰數(shù)碼管換掉,同時接受老師的建議,把數(shù)碼管的驅動電路改為

6、數(shù)碼管的段選用74LS245來驅動,位選用74LS04驅動。最后在領元件的時候老師說單片機也不能驅動喇叭,把喇叭換成蜂鳴器。因此我們最后的方案是:使用AT89C51單片機芯片控制電路,單片機控制電路簡單且省去了很多復雜的線路,使得電路簡明易懂;使用鍵盤鍵上的按鍵來調整時鐘的時、分以及鍵盤上的開關實現(xiàn)12小時制和24小時制的轉換;用一蜂鳴器來進行整點報時;同時使用C語言編程,使得編程變得更容易;用一個4位和一個2位共陽數(shù)碼管來顯示時間,且數(shù)碼管的段選用74LS245來驅動,位選用74LS04驅動。這樣通過四個模塊:鍵盤、單片機芯片、蜂鳴器、數(shù)碼管顯示即可滿足設計要求。2.2系統(tǒng)原理框圖此電路包括

7、以下四個部分:單片機,鍵盤,報時電路及顯示電路。設計原理框圖如圖3-1所示蜂鳴器報時51單片機獨立鍵盤數(shù)碼管顯示 圖3-1 設計原理框圖2.3各單元的功能描述(1) 對單片機進行編程,使主要功能由軟件控制實現(xiàn),從而簡化硬件電路。(2) 單片機通過程序控制輸出各種電脈沖信號來驅動數(shù)碼管以及報時電路的正常工作。(3) 單片機通過對端口高低電平的掃描從而判斷鍵盤的工作情況,鍵盤通過單片機輸出來影響顯示電路和報時電路的工作。整個電路的工作流程為:單片機內部計數(shù)器持續(xù)計數(shù),得到的數(shù)據(jù)通過程序的控制轉化成時間,并通過對輸出端口輸出不同的高低電平來控制數(shù)碼管和蜂鳴器的工作。與此同時,單片機還在不停地掃描連接

8、鍵盤的輸入端口,通過得到輸入端口的不同電平來判斷鍵盤的工作情況,再通過程序的控制來影響數(shù)碼管和蜂鳴器的工作。2.4電路連接圖設計的電路主要由四模塊構成:單片機控制電路,顯示電路、報時電路以及調時電路。詳細電路功能圖如圖3-2:23圖3-2 詳細電路功能圖該電路的單片機復位采用上電復位,即給電路一通電,電路就從程序最初設置的狀態(tài)開始工作。為了方便檢測報時,我們把時鐘的初始值設為00點59分48秒,當電路一通電,數(shù)碼管就顯示此值,三秒后蜂鳴器開始發(fā)音報時,并按59 分51 秒、53 秒、55 秒、57 秒發(fā)出低音,59秒整發(fā)出高音的規(guī)律發(fā)音。圖中三個按鍵開關從上到下一次為小時加1、分鐘加1按鍵和1

9、2/24轉換開關,即按一下小時加1或分鐘加1按鍵則小時或分鐘自動加1,按下進制轉換開關為12進制,斷開進制轉換開關為24進制.2.5元器件清單列表2.6所用芯片的管腳圖4位共陽數(shù)碼管引腳圖74LS04管腳圖74LS245管腳最后實物圖3、軟件設計流程及描述3.1主程序的流程圖程序設計的總體思路是:首先在主程序里初始化單片機的計數(shù)器,使單片機計數(shù)器一直計數(shù),然后給主程序設定一個死循環(huán),在這個死循環(huán)里,主程序在不斷地調用鍵盤掃描、顯示和發(fā)音三個子程序,而時鐘功能在子程序中設計完成。主程序的流程圖如圖4-1所示。程序頭文件定義全局變量延時程序發(fā)聲程序顯示程序鍵盤掃描程序主程序單片機的初始化調用鍵盤掃

10、描顯示發(fā)聲時間計數(shù)程序圖4-1 主程序流程圖3.2鍵盤掃描程序流程圖小時加1按鍵定義在單片機的P30端口,分鐘加1按鍵定義為P31端口,12/24轉換開關定義為P32端口。單片機端口默認輸出為高電平,當按一下小時(分鐘)加1鍵時,延時10ms,此時單片機端口與地相連,呈低電平,單片機檢測到該電平時,對小時(分鐘)加1。同理,按下12/24轉換鍵,延時10ms,P32端口為低電平,單片機檢測到該電平時,把時間轉化為12小時制并通過顯示電路顯示出來。其流程圖如圖4-2所示。掃描P32=0?P31=0?P30=0?NNNYYY12小時制m+h+顯示圖4-2鍵盤掃描流程圖3.3發(fā)聲程序流程圖蜂鳴器低電

11、位端通過三極管連接到單片機的P33端口,高電位端接一5v電壓。單片機端口默認輸出為高電平,當單片機檢測到已符合報時條件時,給P33端口取反,使其變?yōu)榈碗娢?,蜂鳴器導通,根據(jù)程序中定義的不同頻率而發(fā)出不同的高低音。其流程如圖4-3所示。檢驗時間m=59?s=51|53|55|57?;s=59?BUZ =BUZ; Delayms(55);發(fā)音BUZ =BUZ; Delayms(80);NYNYNY圖4-3發(fā)聲程序流程圖3.4總程序#include<reg51.h>sbit BUZ =P33;sbit HOURADD=P30;/小時加1sbit MITADD=P31;/分鐘加1sbit

12、change=P32;/進制轉換unsigned int tmcnt;/定時器計數(shù)unsigned int h=0,m=59,s=50;/h為小時,m為分鐘,s為秒鐘unsigned char code seg7=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90;/共陽數(shù)碼管0-9碼值unsigned char code disp=0xfe,0xfd,0xfb,0xf7,0xef,0xdf;/位掃描unsigned char data disdata6;void Delayms(int ms) /延時函數(shù) while(ms) unsigned

13、char i;for (i=0; i<120; i+); ms-; void display()/掃描顯示 unsigned char i; disdata0=h/10;/數(shù)據(jù)處理,小時高位 disdata1=h%10;/小時低位 disdata2=m/10;/分鐘高位 disdata3=m%10;/分鐘低位 disdata4=s/10;/秒鐘高位 disdata5=s%10;/秒鐘低位 for(i=0;i<6;i+)/循環(huán)顯示 P1=0xff; P1=seg7disdatai;P2=dispi;Delayms(2);/顯示延時 void time0(void)interrupt

14、1 using 0 /時間計數(shù)函數(shù) TH0=0xfc;/計數(shù)器高八位賦初值 TL0=0x18;/計數(shù)器低八位賦初值 if(+tmcnt=1000)/計數(shù)1000次1秒 tmcnt=0; s+; if(s=60) s=0; m+; if(m=60) m=0; h+; if(change=0&&h=12)/按下進制轉換鍵為12進制 h=0; if(change=1&&h=24)/未按下進制轉換鍵為24進制 h=0; void voice()/發(fā)聲函數(shù) if(m=59)&&(s=51)/判斷時間符合低音條件 BUZ =BUZ; Delayms(80);

15、 if(m=59)&&(s=53)/判斷時間符合低音條件 BUZ =BUZ; Delayms(80); if(m=59)&&(s=55)/判斷時間符合低音條件 BUZ =BUZ; Delayms(80); if(m=59)&&(s=57)/判斷時間符合低音條件 BUZ =BUZ; Delayms(80); if(m=59)&&(s=59)/判斷時間符合高音條件 BUZ =BUZ; Delayms(55); void keyscan()/鍵盤掃描 if(change=0)/判斷是否按下進制轉換鍵, Delayms(10); if(c

16、hange=0&&h>=12)/若h>12,則執(zhí)行h-12,轉換成12進制 h=h-12; if(HOURADD=0)/判斷是否按下小時加1鍵 Delayms(10); if(HOURADD=0) while(HOURADD=0); h+; if(h=24) h=0; if(MITADD=0)/判斷是否按下分鐘加1鍵 Delayms(10); if(MITADD=0) while(MITADD=0); m+; if(m=60) m=0; main() unsigned int time(); TMOD=0x01;/軟件啟動計數(shù)器、工作方式為方式1 EA=1;ET0=

17、1;/允許定時計數(shù)器中斷 TR0=1;/啟動計數(shù) while(1) keyscan();/掃描鍵盤 display();/顯示 voice();/發(fā)聲 4、調試4.1仿真調試4.1.1共陽數(shù)碼管的顯示的調試 我們最開始用的數(shù)碼管是共陰數(shù)碼管,由于所領元件為共陽,于是將程序中的共陰段選碼改為共陽段選碼,編譯后重新仿真。但共陽數(shù)碼管不顯示,我們懷疑位選也需要改變,但是通過查閱大量資料,我們組員一致認為跟位選無關。通過多次試驗性的調試無果之后,我們給單片機重新加載了一次程序,懷著不報任何希望的心情再次調試,這次居然成功了。從共陽數(shù)碼管的顯示的調試中,我們認識到:每次修改了程序之后要重新加載一次程序,

18、否則單片機運行的仍然是未修改之前的程序。在后面的把P0端口改為P1端口時我們也遇到了同樣的問題。4.1.2蜂鳴器發(fā)音的調試起初設計方案為用喇叭發(fā)音,考慮到驅動問題,就換成了蜂鳴器。在用蜂鳴器進行仿真調試時,我們遇到了困難:蜂鳴器不發(fā)音。我們修改了三極管的串聯(lián)電阻的阻值,把蜂鳴器的高位端電壓由5v改為9v,改變了程序中的發(fā)音頻率,蜂鳴器始終不發(fā)音。我們通過查閱大量資料,請教老師,最后把蜂鳴器自身的頻率調大,蜂鳴器終于響了。但蜂鳴器的發(fā)出的聲音沒有高低音之分,我們又修改發(fā)音頻率,即修改延時時間。該延時只能在很小的范圍內變化,超出了該范圍,蜂鳴器也不發(fā)音。 從蜂鳴器的發(fā)音調試中,我認識到喇叭和蜂鳴器

19、有較大的區(qū)別:如喇叭的阻值為8而我們測出來的蜂鳴器的阻值為14M,另外喇叭和蜂鳴器的發(fā)音頻率也不同,在交換著兩個元件時對其驅動電壓、自身頻率、發(fā)音頻率均需作出改變。4.2硬件調試我們給硬件通電,數(shù)碼管顯示全8,蜂鳴器一直發(fā)音,及蜂鳴器和數(shù)碼管的每一位每一段都一直導通,而且數(shù)碼管的顯示很微弱。我們把蜂鳴器的9v驅動電壓改為5v,又仔細檢查我們的硬件電路,首先檢查出來的錯誤是驅動芯片74LS245的接地端未接地,將其接地以后再通電,數(shù)碼管仍然顯示全8,蜂鳴器仍然一直發(fā)音,但數(shù)碼管的顯示要亮一些了。數(shù)碼管和蜂鳴器一直導通的原因,我們懷疑是震蕩電路沒起作用或者單片機是壞的。我們先檢測震蕩電路的情況,用

20、示波器測出來的信號雜亂無章,于是我們又檢測震蕩電路的連接情況,發(fā)現(xiàn)震蕩電路未接地。將其接地后再測試,數(shù)碼管仍然顯示全8,蜂鳴器仍然一直發(fā)音,但有高低電平的震蕩信號。找同學幫我們檢查,他指出我們段選用的P0端口沒有接上拉電阻,單片機只有P1和P2端口自帶上拉電阻,P0口必須外接上拉電阻。我們把數(shù)碼管的段選改為P1口,測試出仍然是相同的情況。在多次改正錯誤仍無果之后,我們全面仔細地檢查了我們的硬件電路,并沒有其他錯誤。又寫了一個直接給P1口賦上高低電平的簡單程序,用萬用表測出P1口全為高電平,又測試了其他端口,也是全高。我們認真分析了出現(xiàn)這種情況的原因:首先我們的顯示模塊和發(fā)音電路沒有錯,因為數(shù)碼管有顯示,蜂鳴器有發(fā)音;其次我們的震蕩電路沒有錯,因為測試出有震蕩信號;程序沒有錯,因為我們仿真成功了的;最后得出單片機是壞的這一結論。最后我們換了一塊單片機再測試,終于成功了。5、總結經過兩周的單片機課程設計,我們基本完成了課題基本和拓展要求。功能上基本達標:時鐘的顯示,蜂鳴器的報時、調時功能、12小時制和24小時制的轉換。時鐘顯示功能,精確度存在偏差,每15分鐘慢8秒;調時和小時制的轉換功能,方便快捷;報時功能準確可靠。雖然存在一些不足,如:在蜂鳴器進行報時及進行按鍵操作時,數(shù)碼管在一直閃爍,時間精度有偏差。

溫馨提示

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

評論

0/150

提交評論