大工16秋《單片機原理及應用》大作業完整版_第1頁
大工16秋《單片機原理及應用》大作業完整版_第2頁
大工16秋《單片機原理及應用》大作業完整版_第3頁
大工16秋《單片機原理及應用》大作業完整版_第4頁
大工16秋《單片機原理及應用》大作業完整版_第5頁
已閱讀5頁,還剩5頁未讀 繼續免費閱讀

下載本文檔

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

文檔簡介

網絡教育學院《單片機原理及應用》大作業題目:單片機電子時鐘設計學習中心:層次:專升本專業:電氣工程及其自動化年級:學號:學生姓名:一、課題背景1957年,Ventura創造了世界上第一個電子表,從而奠定了電子時鐘的根底,電子時鐘開始迅速開展起來。現代的電子時鐘是基于單片機的一種計時工具,采用延時程序產生一定的時間中斷,用于一秒的定義,通過計數方式進行滿六十秒分鐘進一,滿六十分小時進一,滿二十四小時小時清零。從而到達計時的功能,是人們日常生活不可缺少的工具。現在高精度的計時工具大多數都使用了石英晶體振蕩器,由于電子鐘、石英鐘、石英表都采用了石英技術,因此走時精度高,穩定性好,使用方便,不需要經常調試,數字式電子鐘用集成電路計時時,譯碼代替機械式傳動,用LED顯示器代替指針顯示進而顯示時間,減小了計時誤差,這種表具有時、分、秒顯示時間的功能,還可以進行時和分的校對,片選的靈活性好。二、時鐘的根本原理分析利用單片機定時器完成計時功能,定時器0計時中斷程序每隔0.01s中斷一次并當作一個計數,設定定時1秒的中斷計數初值為100,每中斷一次中斷計數初值減1,當減到0時,那么表示1s到了,秒變量加1,同理再判斷是否1min鐘到了,再判斷是否1h到了。為了將時間在LED數碼管上顯示,可采用靜態顯示法和動態顯示法,由于靜態顯示法需要譯碼器,數據儲存器等較多硬件,可采用動態顯示法實現LED顯示,通過對每位數碼管的依次掃描,使對應數碼管亮,同時向該數碼管送對應的字碼,使其顯示數字。由于數碼管掃描周期很短,由于人眼的視覺暫留效應,使數碼管看起來總是亮的,從而實現了各種顯示。三、51單片機介紹及時鐘設計分析針對要實現的功能,采用AT89S51單片機進行設計,AT89S51單片機是一款低功耗,高性能CMOS8位單片機,片內含4KB在線可編程〔ISP〕的可反復擦寫1000次的Flash只讀程序存儲器,器件采用高密度、非易失性存儲技術制造,兼容標準MCS-51指令系統及80C51引腳結構。這樣,既能做到經濟合理又能實現預期的功能。在程序方面,采用分塊設計的方法,這樣既減小了編程難度、使程序易于理解,又能便于添加各項功能。程序可分為鬧鐘的聲音程序、時間顯示程序、日期顯示程序,秒表顯示程序,時間調整程序、鬧鐘調整程序、定時調整程序,延時程序等。運用這種方法,關鍵在于各模塊的兼容和配合,假設各模塊不匹配會出現意想不到的錯誤。首先,在編程之前必須了解硬件結構尤其是各引腳的用法,以及內部存放器、存儲單元的用法,否那么,編程無從下手,電路也無法設計。這是前期準備工作。第二局部是硬件局部:依據想要的功能分塊設計設計,比方輸入需要開關電路,輸出需要顯示驅動電路和數碼管電路等。第三局部是軟件局部:先學習理解匯編語言的編程方法再根據設計的硬件電路進行分塊的編程調試,最終完成程序設計。第四局部是軟件畫圖局部:設計好電路后進行畫圖,包括電路圖和仿真圖的繪制。第五局部是軟件仿真局部:軟硬件設計好后將軟件載入芯片中進行仿真,仿真無法完成時檢查軟件程序和硬件電路并進行修改直到仿真成功。第六局部是硬件實現局部:連接電路并導入程序檢查電路,假設與設計的完全一樣一般能實現想要的功能。最后進行功能擴展,在已經正確的設計根底上,添加額外的功能!四、時鐘的設計A.電路設計1.整體設計此次設計主要是應用單片機來設計電子時鐘,硬件局部主要分以下電路模塊:顯示電路用8個共陰數碼管分別顯示,星期〔年份〕,小時、分鐘〔月份〕和秒〔日〕,通過動態掃描進行顯示,從而防止了譯碼器的使用,同時節約了I/0端口,使電路更加簡單。單片機采用AT89S51系列,這種單片機應用簡單,適合電子鐘設計。電路的總體設計框架如下:單片機單片機輸入局部晶振和復位輸出局部2.分塊設計模塊電路主要分為:輸入局部、輸出局部、復位和晶振電路。2.1輸入局部輸入信號主要是各種模式選擇和調整信號,由按鍵開關提供。以下為輸入局部樣例:在本實驗中主要用用P3口輸入按鍵信號,還用到了特殊的P0口。對于P0口,由于其存在高阻狀態,為了實現開關功能,給其添加上拉電阻,具體如下列圖所示:2.2輸出局部本電路的輸出信號為7段數碼管的位選和段選信號,鬧鈴脈沖信號,提示燈信號。本實驗的數碼管是共陰的,為了防止段選信號不能驅動數碼管,故在P1口連接上拉電阻后,再送段選信號,以提高驅動,位選信號直接從P2口接入,如下列圖:鬧鈴由P2.6端輸出,模塊如下:2.3晶振與復位電路本實驗單片機時鐘用內部時鐘,模塊如下:復位電路為手動復位構成,模塊如下:各模塊拼接組合,電路總體設計圖如下:B.程序設計B.1程序總體設計本實驗用匯編程序完成.程序總的流程圖如下:主程序開始主程序開始顯示星期,時,分,秒是否有調轉?T0中斷秒,分,時等進位閃爍提示顯示日期并調整響鈴提示時間調整鬧鈴設置定時設置鈴聲測試秒表模式回主程序定時到按0鍵按0鍵鬧鈴到按1鍵按2鍵按3鍵按4鍵按5鍵按7鍵7鍵恢復按4鍵按8鍵按0鍵按0鍵倒計時啟動并顯示回主程序秒表暫停秒表清零回主程序按7鍵B.2程序主要模塊B.2.1延時模塊數碼管顯示動態掃描時,用到延時程序,這里使用延遲1ms的程序,此程序需反復調,除數碼管動態掃描外,數碼管的閃爍提示,以及音樂模塊也用到了延時,只是延時的長短不同罷了,在此不再贅述。B.2.2中斷效勞程序本實驗中,計數器T0,T1中斷都有運用,其中T0中斷為時鐘定時所用,T1中斷用于音樂播放。T0的定時長度為0.01s,工作于方式1,計數1次,時長1us,故計數器計數10000次,進入中斷,計數初值為65536-10000=55536=#0D8F0,裝滿定時器需要0.01s的時間,從而100次中斷為一秒,一秒之后,判斷是否到60秒,假設不到那么秒加一,然后返回,假設到,那么秒賦值為0,分加一,依次類推。包括日期顯示的功能也是如此。另外,由于要實現倒計時功能,因此在中斷程序中還要參加減一的存放器,需要時將其進行顯示。基于以上考慮,以R3為倒計時中的秒,R4為倒計時的分,當秒加1時R3減一,減到0之后,秒賦值為59,分減一,直到分為0。計數器T1工作于方式1,當調用響鈴程序時,其計數功能開啟,為音樂音調不同頻率的方波的形成,提供延時。其中斷效勞程序就是根據音調改變音樂方波輸出口電平的上下,用語句CPL實現。中斷效勞程序中日歷的實現較為復雜,要考慮平年,閏年,特殊的2月,每月的天數的不盡相同。具體的邏輯判斷方法為:首先,要考慮年份是不是閏年,閏年的判斷方法是:將年份除以100,假設能整除,那么將年份除以400,假設還能整除,那么為閏年,假設不能,那么為平年;假設不能被100整除,那么判斷是否能被4整除,假設能,那么為閏年,假設不能那么為平年。只有2月與平、閏年相關,因此在閏年和平年的子程序中,要判斷是不是2月,假設是那么在相應的年中進行日期的增加,假設不是那么轉入平時的月份。其中1、3、5、7、8、10、12月是每月31天,4、6、9、11月為每月30天。日歷進位判斷流程圖如下:年份能否被100整除年份能否被100整除NY年份是否能被4整除年份是否能被400整除NN平年閏年YY是不是2月是不是2月Y日>=28之后返回為1NNY日>=29之后返回為1假設月份為1、3、5、7、8、10、12月那么調用31天的程序假設月份為4、6、9、11那么調用30天的程序本實驗用8個數碼管,剛好能顯示年,月,日,掃描顯示與時間的掃描顯示類似。年比擬特殊,由兩個存放器存儲,個位,十位為0時,說明年數能被100整除,假設此時千位,百位組成兩位數能被4整除,那么年數被400整除,為閏年。假設十位,個位組成兩位數能被4整除,那么年數能被4整除,為閏年。B.2.3主程序主程序主要對按鍵進行掃描,以及判斷定時和鬧鈴時間是否已到,假設到那么調用相關程序。B.2.4顯示子程序8個數碼管輪流進行顯示,分別顯示1ms,依賴人的視覺暫留效應,給人以數碼管持續高亮的錯覺。日期的顯示,秒表的顯示,倒計時的顯示,調鬧鈴,調定時的顯示,閃爍的顯示程序與以上的的掃描相似,有的以子程序的方式出現,通過子程序調用語句ACALL調用;有點直接嵌套在相應的程序里面,順序執行,或者用調轉語句AJMP調用。C程序調試及仿真本程序通過Keil單片機開發平臺實現程序的編譯,鏈接,生成HEX文件。通過Keil和硬件仿真平臺Proteus的聯合,可以將設計效果仿真出來,根據效果,有目的的改變設計,優化程序。利用Proteus仿真實驗過程截圖:普通時間顯示模式仿真圖,表示:星期一9點10分38秒五、總結本文先從整體論述了設計電子鐘的大致思路,然后再采用劃分模塊的方法,將硬件電路劃分為開關電路,顯示驅動電路,以及數碼管電路等,而軟件局部,那么依據要實現的功能,劃分為:鬧鐘的聲音程序,時間顯示程序,日期顯示程序,秒表顯示程序,時間調整程序、鬧鐘調整程序、定時調整程序,延時程序等。最后將各模塊集成為一個整體,合成一個多功能的電子鐘。通過本次設計,我深深體會到了掌握知識的重要性,本次設計也使我熟悉了單片機的硬件特點和編程方法,并成功將學到的知識變成了實際的成果,雖然在設計過程中遇到了很多問題,例如知識的融會貫穿、調試遇到的BUG等,但通過努力都一一得到了克服,從而也提高了我學習的信心,堅決了我繼續深入學習的決心。附錄:延時程序:D_1MS:MOVR7,#2D_5:MOVR2,#250DJNZR2,$DJNZR7,D_5RET主程序:MAIN:JNBP3.0,DATETZ;按下0鍵,顯示日期并可對日期進行調整JNBP3.1,ZSTZ1;按下1鍵,顯示時間,并可調時JNBP3.2,NLTZZ;按下2鍵,進行鬧鈴設置JNBP3.3,DSTZ;按下3鍵,進行定時設置JNBP3.4,CESHI;鬧鈴測試JNBP3.6,STOPWATCHTZ;按下6鍵,進入秒表方式ACALLDISP;調用時鐘顯示子程序JNBP0.6,RERING;判斷是否開啟鬧鈴重響功能RE:JNBP2.7,DSPDKQ;判斷是否開啟鬧鈴功能,沒開那么去判斷定時FMQPD:;判斷定時值R4,R3是否到零、鬧鈴時刻是否已到MOVA,HOUR;SUBBA,38H;JZFEN;判斷小時數是否到鬧鈴所定時間,假設到,那么對分進行判斷;假設不到,那么對定時進行判斷AJMPDSPDKQFEN:MOVA,MINUTE;SUBBA,37H;JZMIAO;判斷分是否到鬧鈴所定時間,假設到,那么對秒進行判斷;假設不到,那么對定時進行判斷AJMPDSPDKQMIAO:MOVA,SECONDSUBBA,#0JZSHENGYIN1;判斷秒是否到鬧鈴所定時間,假設到,那么時,分,秒都到達鬧鈴時刻,進入響鈴子程序;假設不到那么判斷定時AJMPDSPDKQRERING:;鬧鈴重響判斷程序JNBF0,RE;標志位F0為0,不進行鬧鈴重響設定CPLF0MOV3CH,#1;定時判斷標志位賦1,定時判斷功能開啟JNBP0.7,M1;鬧鈴重響間隔時間選取MOVR4,#0;鬧鈴重響間隔30秒MOVR3,#30AJMPMAINM1:;鬧鈴重響間隔60秒MOVR4,#1MOVR3,#0AJMPMAINDSPDKQ:;判斷是否應該進行定時判斷MOVA,3CH;3CH是引入的判斷因子,當其為0時,不對定時時間是否到0進行判斷JNZDSPD2;當3CH不是0時,跳轉到定時判斷程序AJMPMAINDSPD2:MOVA,R4;JZS_PD;R4所存定時分數為0,那么轉而判斷R3所存定時秒數AJMPMAIN;S_PD:MOVA,R3;JNZMAIN;R4,R3所存參數減為0,定時長度已到JNBP0.6,SHENGYIN2;鬧鈴重響功能開啟時,跳入響鈴程序AJMPTISHI;不是鬧鈴重響定時,那么定時時間到時,跳入提示程序AJMPMAINCESHI:ACALLRINGAJMPMAINSHENGYIN1:;調用響鈴子程序LCALLRINGAJMPMAINSHENGYIN2:SETBF0;鬧鈴重響標志位設定LCALLRING;響鈴CLRF0;標志位復位AJMPMAINNLTZZ:AJMPNLTZ1;跳入鬧鈴調整程序DSTZ:AJMPDSTZ1;跳入定時調整程序DATETZ:AJMPDATETZ1;跳入日期調整程序STOPWATCHTZ:AJMPSTOPWATCHTZ1;跳入秒表程序顯示子程序:DISP:;時間顯示子程序JNBP3.7,OUT1;判斷節能開關7是否按下,按下那么數碼管不顯示,延長其壽命MOVDPTR,#LEDTABMOVA,SECOND;顯示當前時間秒位MOVB,#10D

溫馨提示

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

評論

0/150

提交評論