單片機電子鐘設計課程設計報告_第1頁
單片機電子鐘設計課程設計報告_第2頁
單片機電子鐘設計課程設計報告_第3頁
單片機電子鐘設計課程設計報告_第4頁
單片機電子鐘設計課程設計報告_第5頁
已閱讀5頁,還剩10頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

單片機課程電子時鐘設計報告2016.04.27

設計的任務及要求:利用實驗平臺上4個LED數(shù)碼管,設計帶有鬧鈴功能的數(shù)字時鐘。任務:通過電子時鐘綜合設計,學會利用8051定時器時間計時處理功能,了解按鍵掃描及控制LED數(shù)碼管顯示原理,掌握單片機和按鍵以及LED數(shù)碼管硬件電路設計及控制程序的設計方法。思考按鍵消除抖動、LED動態(tài)顯示與靜態(tài)顯示的特點,從而提高解決實際問題的能力。要求:1.在4位數(shù)碼管上顯示當前時間。顯示格式“時時分分”。2.由LED閃動做秒顯示。3.利用按鍵可對時間及鬧玲進行設置,并可顯示鬧玲時間。當鬧玲時間到蜂鳴器發(fā)出聲響,按停止鍵使可使鬧玲聲停止。工作原理:LED數(shù)碼管:蜂鳴器:按鍵:軟件設計流程及描述:總設計框圖:顯示部分:顯示部分分為時鐘顯示、鬧鐘顯示和秒顯示三部分,主要由時鐘顯示子程序和鬧鐘顯示子程序構成,秒顯示較為簡單。鬧鐘顯示與時鐘顯示編程流程大致相同。流程圖如下:按鍵掃描及處理框圖:鬧鈴部分:設計思路及原理:音節(jié)由不同頻率的方波產(chǎn)生,音節(jié)與頻率的關系如下表所示。要產(chǎn)生音頻方波,設計利用延時來建立音符表NOTE,表格中的數(shù)存R3*20us,其倒數(shù)1/(R3*2*10us)對應相應音符的頻率。另外,音樂的節(jié)拍是由延時實現(xiàn)的,如果1拍為0.4秒,1/4拍是0.1秒。只要設定延時時間,就可求得節(jié)拍的時間。延時作為基本延時時間,節(jié)拍值只能是它的整數(shù)倍。設計利用T1中斷產(chǎn)生10ms延時,取1/4拍為10H*10ms,相應產(chǎn)生所需延時。音符(低).1.2.3.4.5.6.7頻率(HZ)262294330349392440494音符(中)1234567頻率(HZ)523587659698784880988音符(高)^1^2^3^4^5^6^7頻率(HZ)1046117513181397156817601967程序中的音樂樂譜如下:NOTE: DB60H,60H,7FH,98H,7FH,60H,60H,7FH,60HDB98H,7FH,60H,7FH,98H,60H,7FH,98H,50HMETRE: DB20H,20H,20H,20H,20H,20H,20H,20H,20HDB20H,20H,20H,20H,20H,20H,20H,20H,20H源程序及代碼:;程序主要包括MAIN函數(shù),T0/T1中斷程序,時間、鬧鐘顯示程序,按鍵掃描、處理程序;/主函數(shù)/預置T0\T1工作方式,置初值,預置時鐘、鬧鐘,置位數(shù)碼管 ORG0000H AJMPMAIN ;跳轉到主程序MAIN執(zhí)行 ORG000BH AJMPINTT0 ;跳到INTT0執(zhí)行 ORG001BH LJMPINTT1 ;跳到INTT1執(zhí)行 ORG02B0HMAIN:MOVSP,#80H MOVTMOD,#11H ;設置定時器T0、T1工作于方式1 MOVTH0,#0ECH ;裝入時鐘定時初值(5ms) MOVTL0,#78H MOVTH1,#0D8H ;裝入鬧鈴定時初值(10ms) MOVTL1,#0F0H MOVR1,#00H ;確保首次默認鬧鈴工作 MOV22H,#00H ;預置時鐘分鐘 MOV23H,#00H ;預置時鐘小時MOV30H,#03H ;預置鬧鈴分鐘 MOV31H,#00H ;預置鬧鈴小時 SETBP1.7 ;LED7顯示秒;置位P1.7,發(fā)光二極管LED8滅 SETBEA ;開放總中斷 SETBET0 ;允許T0中斷 SETBTR0 ;開啟定時器T0LOOP:LCALLDISPT ;調用時間顯示子程序 LCALLRING ;調用鬧鈴處理子程序 LCALLKEY ;調用按鍵掃描子程序 JZLOOP ;無鍵按下則循環(huán) LCALLCASE ;有鍵按下則轉按鍵處理子程序執(zhí)行 SJMPLOOP ;返回循環(huán);/T0一秒定時中斷程序INTT0/正常時鐘計時INTT0:PUSHPSW ;狀態(tài)字入棧保護 PUSHACC ;累加器入棧保護MOVTH0,#0ECH ;裝入計數(shù)初值,12MHZ晶振,形成1S中斷MOVTL0,#78H INC20H MOVA,20H CJNEA,#200,RETURN CPLP1.67 ;一秒到LED8亮,用于顯示秒 MOV20H,#00 ;一秒到清20HMOVA,21H ADDA,#01H DAA MOV21H,A CJNEA,#60H,RETURN MOV21H,#00 ;一分到,21H單元清零 MOVA,22H ADDA,#01H DAA MOV22H,A CJNEA,#60H,RETURN MOV22H,#00 ;一小時到,22H單元清零 MOVA,23H ADDA,#01H DAA MOV23H,A CJNEA,#24H,RETURN MOV23H,#00H ;滿24,23H單元清零RETURN:POPACC POPPSW RETI;/時間顯示子程序/DISPT: MOVA,22H ANLA,#0FH MOV2AH,A ;時鐘分的低位 MOVA,22HANLA,#0F0H SWAPA MOV2BH,A ;時鐘分的高位 MOVA,23H ANLA,#0FH MOV2CH,A ;時鐘時的低位 MOVA,23H ANLA,#0F0H SWAPA MOV2DH,A ;時鐘時的高位LED1: SETBP2.3 MOVA,2DHMOVDPTR,#TABMOVCA,@A+DPTR CLRP2.0 ;選通數(shù)碼管1 MOVP0,A ;顯示時鐘時的十位部分 LCALLDELAYLED2: SETBP2.0MOVA,2CHMOVDPTR,#TABMOVCA,@A+DPTR CLRP2.1 ;選通數(shù)碼管2 MOVP0,A ;顯示時鐘時的個位部分 LCALLDELAYLED3: SETBP2.1MOVA,2BHMOVDPTR,#TABMOVCA,@A+DPTR CLRP2.2 ;選通數(shù)碼管3 MOVP0,A ;顯示時鐘分的十位部分 LCALLDELAYLED4: SETBP2.2MOVA,2AHJBP1.6,TATA:MOVDPTR,#TABMOVCA,@A+DPTR CLRP2.3 ;選通數(shù)碼管4 MOVP0,A ;顯示時鐘分的個位部分 LCALLDELAY RETTAB:DB0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H;共陽數(shù)碼管的時間顯示碼;/按鍵掃描程序/ 開關接P3口,判斷按鍵情況KEY:MOVP3,#0FFH MOVA,P3 CPLA ANLA,#2CH JZRETK ;無鍵按下則返回 LCALLDELAY ;延時消抖 MOVA,P3 CPLA ANLA,#2CH JZRETK ;鍵盤去抖動 MOVR6,A ;將鍵值存入R6LOOP1: LCALLDISPT; MOVA,P3 CPLA ANLA,#2CH JNZLOOP1 ;等待鍵釋放 MOVA,R6RETK: RET;/按鍵處理子程序/根據(jù)按鍵情況進行處理CASE: MOVA,R6 CLRP1.0 ;發(fā)光二極管LED1亮 JBACC.2,SETH ;轉調整時 JBACC.3,SETM ;轉調整分 JBACC.5,SETR ;轉鬧鈴設置WAITCASE:LCALLDISPT ;無鍵按下時等待 LCALLKEY JZWAITCASE;/時間調整程序/ 按鍵調整時間SETT: LCALLDISPT LCALLKEY JZSETT MOVA,R6 JBACC.2,SETH JBACC.3,SETM JBACC.5,KEYGO ;第二次按為確認離開KEYGO:SETBP1.0 ;發(fā)光二極管LED1、LED2滅 SETBP1.1 RETSETH: MOVA,23H ;調整時鐘時,時加1 ADDA,#01H DAA ;十進制調整 MOV23H,A CJNEA,#24H,HD ;判斷是否到24,不到繼續(xù) MOV23H,#00H ;到24時清零HD: LJMPSETTSETM: MOVA,22H ;分加1 ADDA,#01H DAA ;十進制調整 MOV22H,A CJNEA,#60H,MD ;判斷是否到1小時,不到繼續(xù) MOV22H,#00H ;到1小時則清零MD: LJMPSETT;/鬧鈴時間調整按鍵掃描及處理子程序/KEYR: MOVP3,#0FFH MOVA,P3 CPLA ANLA,#2CH JZRETK ;無鍵按下則返回 LCALLDISPR ;延時消抖 MOVA,P3 CPLA ANLA,#2CH JZRETK ;鍵盤去抖動 MOVR6,A ;將鍵值存入R6 LJMPLOOPRLOOPR: LCALLDISPR MOVA,P3 CPLA ANLA,#2CH JNZLOOPR ;等待鍵釋放 MOVA,R6 AJMPRETK;/設置鬧鈴時間/SETR: SETBP1.0 ;發(fā)光二極管LED1滅 CLRP1.1 ;發(fā)光二極管LED2亮,改顯示狀態(tài) LCALLDISPR MOVR1,#00H ;設置鬧鐘時重設R1,用于檢測鬧鈴播放與否 MOV53H,#03H ;重設鬧鈴次數(shù) LCALLKEYR ;鬧鈴時間調整按鍵檢測 JZSETR MOVA,R6 JBACC.2,SETRH JBACC.3,SETRM JBACC.5,KEYGO ;第二次按為確認離開SETRH: MOVA,31H ;鬧鐘時加1 ADDA,#01H DAA ;十進制調整 MOV31H,A CJNEA,#24H,RHD ;判斷是否到24,不到繼續(xù) MOV31H,#00H ;到24時則清零RHD: LJMPSETR SETRM: MOVA,30H ;鬧鐘分加1 ADDA,#01H DAA ;十進制調整 MOV30H,A CJNEA,#60H,RMD ;判斷是否到1小時,不到繼續(xù) MOV30H,#00H ;到1小時則清零RMD: LJMPSETR;/鬧鐘設置顯示子程序/DISPR: MOVA,30H ANLA,#0FH ;屏蔽高四位 MOV3AH,A ;保留低位送3AH MOVA,30H ANLA,#0F0H ;屏蔽低四位 SWAPA ;高四位與第四位交換 MOV3BH,A ;將保留的高4位送3BH MOVA,31H ANLA,#0FHMOV3CH,A ;低位 MOVA,31H ANLA,#0F0H SWAPA MOV3DH,A ;高位LEDR1: SETBP2.3 MOVA,3DHMOVDPTR,#TABMOVCA,@A+DPTR CLRP2.0 MOVP0,A LCALLDELAYLEDR2: SETBP2.0MOVA,3CHMOVDPTR,#TABMOVCA,@A+DPTR CLRP2.1 MOVP0,A LCALLDELAYLEDR3: SETBP2.1MOVA,3BHMOVDPTR,#TABMOVCA,@A+DPTR CLRP2.2 MOVP0,A LCALLDELAYLEDR4: SETBP2.2MOVA,3AHMOVDPTR,#TABMOVCA,@A+DPTR CLRP2.3 MOVP0,A LCALLDELAY RET;/延時子程序/DELAY: MOVR5,#2D1: MOVR4,#250D2: DJNZR4,D2 DJNZR5,D1 RET;/鬧鈴檢測程序/RING: MOVA,23H ;比較時 CJNEA,31H,RETR MOVA,22H ;比較分 CJNEA,30H,RETR LCALLSINGRETR: RET;/定時器T1中斷子程序/INTT1: PUSHPSW ;狀態(tài)字入棧保護 PUSHACC ;累加器入棧保護 INC50H ;中斷服務程序,中斷計數(shù)器加1 MOVTH1,#0D8H ;裝入計數(shù)初值,12M晶振,形成10MS中斷 MOVTL1,#0F0H POPACC POPPSW RETI;/響鈴子程序/SING: CJNER1,#01H,SING1 ;判斷是否已經(jīng)鬧鈴過一次 LJMPRETSSING1: SETBET1 MOV50H,#00H ;中斷計數(shù)器清0 MOV51H,#00H ;音符指針 MOV52H,#00H ;節(jié)拍碼指針 MOV53H,#03H ;設置鬧鐘不退出響鈴次數(shù)GETNOT: MOVA,51H MOVDPTR,#NOTE ;表頭地址送DPTR MOVCA,@A+DPTR ;查表取音符碼 JZENDP ;是00H,則結束 MOVR6,A ;存R6 INC51H CJNEA,#0FFH,GETMET ;不為0FFH,轉取節(jié)拍碼 LJMPPAUSE ;轉休止播放 LJMPGETNOT ;取音符碼GETMET: MOVA,52H MOVDPTR,#METRE ;取節(jié)拍碼首地址 MOVCA,@A+DPTR ;取節(jié)拍代碼送R7 MOVR7,A INC52HPLAY: SETBTR1 ;啟動計數(shù) CPLP2.4 LCALLKEY JNZRETS MOVA,R6 MOVR3,A ;音符碼存R3 LCALLDELAY1 MOVA,R7 ;取節(jié)拍碼放A與中斷計數(shù)比較CJNEA,50H,PLAY ;中斷計數(shù)器(50H)=R7否,不等繼續(xù)循環(huán)MOV50H,#00H ;等于,則取下一代碼 LCALLDISPT CLRTR1 LJMPGETNOTRETS: SETBP2.4 ;置位蜂鳴器,否則可能產(chǎn)生嘯叫 MOVR1,#01H ;表明播放過一次 CLRA ;清除A,防止進入按鍵處理子程序 LJMPRETR PAUSE: CLRTR1 ;休止100毫秒 MOVR2,#0DHDELAY2:MOVR3,#0FFH LCALLDELAY1 DJNZR2,DELAY2 RETENDP: SETBP2.4 MOVR2,#0C7H ;歌曲結束,延時1秒后繼續(xù)END1M:MOVR3,#00H LCALLDELAY1 DJNZR2,END1M DJN

溫馨提示

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

評論

0/150

提交評論