課程設(shè)計報告宗麗麗_第1頁
課程設(shè)計報告宗麗麗_第2頁
課程設(shè)計報告宗麗麗_第3頁
課程設(shè)計報告宗麗麗_第4頁
課程設(shè)計報告宗麗麗_第5頁
已閱讀5頁,還剩11頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、課程設(shè)計報告課程: 單片機(jī)與接口技術(shù) 姓名: 宗麗麗 班級: 09通信1 教師: 高雪飛 河北聯(lián)合大學(xué)信息工程學(xué)院16 / 16文檔可自由編輯打印一、設(shè)計名稱:基于AT89C51的數(shù)字鐘的設(shè)計二、設(shè)計目的及要求:利用51單片機(jī)設(shè)計一個電子時鐘,要求能夠?qū)崟r顯示時間,并可以通過按鍵校時。時間顯示格式:【hh:mm】3、 設(shè)計原理說明:(1)STC89C52RC 單片機(jī)具有低價,高速(0-80M)、高可靠性的優(yōu)點,是具有真正的看門狗的MCU,缺省時為關(guān)閉,啟動后無法關(guān)閉,可放心省去外部看門狗電路。內(nèi)部FLASH 可擦寫100000 次以上,由于出廠時就已經(jīng)加密且無法解密,因此具有很好的保密性。(2

2、)DS12887 內(nèi)部自帶晶振和電源,可省去外部晶振電路,并可在沒有外部電源的情況下工作十年。通過MOT 引腳外接電源或地可分別選擇MOTOROLA 和INTEL 兩種時序。模式。具有24 小時和12 小時兩種計時模式,其中12 小時模式具有AM 和PM 提示。SQW引腳為可編程方波輸出端,通過設(shè)置寄存器A 的低四位和寄存器B 的SQWE 位可輸出不同頻率的方波。本設(shè)計中采用了INTEL 時序和24 小時制,沒有用到方波輸出。另外,初次使用DS12887 時必須先進(jìn)行初始化,即寫入指令啟動計時,設(shè)定時間。DS12887 上電后延時200ms 時間才可進(jìn)行初始化操作。四、硬件設(shè)計圖:講解:1、時

3、鐘顯示用七段LED數(shù)碼管來實現(xiàn),采用共陽管和PNP驅(qū)動方式。PNP工作于開關(guān)狀態(tài),基極通過1K的電阻連到單片機(jī)的P2口。因為四位管的段被并接只能通過動態(tài)掃描的方式來顯示,即利用管子的余暉和人眼的視覺殘留實現(xiàn)六位管子在“同一時間”顯示不同的值,而掃描這是靠位選的輪流有效實現(xiàn)。2.校時、定時 此部分由3個按鍵控制,校時鍵:進(jìn)入、退出校時狀態(tài),選擇被校位。(被校位要閃爍顯示)第1次按下:進(jìn)入校時狀態(tài),選擇小時的十位為被校位;第2次按下:選擇小時的個位為被校位;第3次按下:選擇分鐘的十位為被校位;第4次按下:選擇分鐘的個位為被校位;第4次按下:退出校時狀態(tài)。再1次被按下則重新開始進(jìn)入校時狀態(tài)校時調(diào)整鍵

4、:被校位加減調(diào)整。3.單片機(jī)最小系統(tǒng)本實驗采用AT89C52RC單片機(jī),指令系統(tǒng)完全與51兼容。其最小系統(tǒng)包含電源電路、晶振電路、復(fù)位電路。其中晶振頻率為12MHz,震蕩部分電容為30pF的瓷片電容。復(fù)位電路采用圖示的兼有上電復(fù)位和按鍵復(fù)位功能的方式,其中的電容為10uF電解電容。五、軟件設(shè)計流程圖:源程序:;使用DS12C887的電子鐘程序HOUR1 EQU 30H ;30H作為小時的十位數(shù)存儲單元HOUR2 EQU 31H ;31H作為小時的個位數(shù)存儲單元MINUTE1 EQU 32H ;32H作為分鐘的十位數(shù)存儲單元MINUTE2 EQU 33H ;33H作為分鐘的個位數(shù)存儲單元WEIS

5、HU EQU 21H ;21H存放被校位數(shù),1小時十位,2小時個位,3分鐘十位,4分鐘個位ADJUST BIT 23H.0;校時標(biāo)志,23H.0=1正在校時,23H.0=0未校時FLASH0 BIT 22H.0;校時位閃耀標(biāo)志,22H.0=1,送亮,22H.0=0,送黑FLASH1 BIT 22H.1 ;秒點閃耀標(biāo)志;20H存放T0溢出中斷次數(shù),每中斷5次去處理被校位閃耀;2CH單元為鍵值暫存單元,按鍵時2CH單元為鍵值,處理鍵值后將2CH清0,如果按鍵時2CH單元不為0,中斷返回,待按鍵結(jié)束時去處理鍵值.;40H,41H,42H,43H分別存放小時高位,小時低位,分鐘高位,分鐘低位的最大數(shù)2

6、,9,5,9ORG 0000HLJMP MAIN ;轉(zhuǎn)主程序ORG 000BHLJMP T0ZD ;轉(zhuǎn)T0中斷服務(wù)程序,每50ms中斷一次ORG 0013HLJMP INT1ZD; 轉(zhuǎn)INT1中斷服務(wù)程序,DS12C887每隔1秒引起一次INT1中斷ORG 00E0HTAB: DB 18H,7EH,94H,34H,72H ;0,1,2,3,4的顯示字形碼 DB 31H,11H,7CH,10H,30H ;5,6,7,8,9的顯示字形碼 DB 0FFH ;全黑的顯示字形ORG 0100HMAIN:MOV SP,#60H ;設(shè)置堆棧MOV R0,#50H ;0到50H單元清0CLR AKK: MOV

7、 R0,ADJNZ R0,KKMOV R3,#20 ;延時200ms等待DS12C887啟動KK1: LCALL DEL10mSDJNZ R3,KK1MOV DPH,#00H ;DS12C887初始化MOV DPL,#0AH ;寄存器AMOV A,#20H ;初始化為20H MOVX DPTR,AMOV DPL,#0cH ;讀C寄存器(必須)MOVX A,DPTRMOV DPL,#0BH ;寄存器BMOV A,#22H ;初始化為1AH MOVX DPTR,AMOV DPL,#05H ;時,分,秒報警單元0001H,0003H,0005H單元送FFH,1秒1次中斷(要引起中斷就必須有)MOV

8、A,#0FFHMOVX DPTR,A MOV DPL,#03HMOVX DPTR,AMOV DP1l,#01HMOCX DPTR,A MOV P1,#0FFH ;輸入端口鎖存器預(yù)置1 MOV TMOD,#01H ;T0工作于方式1 MOV SCON,#00H ;串口為工作方式0-移位寄存器方式CLR ES ;串口不產(chǎn)生中斷SETB EA ;開總中斷SETB EX1 ;開INT1中斷 MOV 40H,#2 ;小時高位最大數(shù)為2 MOV 41H,#9 ;小時低位最大數(shù)為9 MOV 42H,#5 ;分鐘高位最大數(shù)為5 MOV 43H,#9 ;分鐘低位最大數(shù)為9LCALL QUSHIJ ;將DS12C

9、887的時間存入單片機(jī)的存儲單元中 LCALL DISP ;顯示時間MAIN1: JB ADJUST,MAIN1 ;校時標(biāo)志為1,正在校時,原地等待 MOV A,P1 ;校時標(biāo)志為0,不在校時狀態(tài),輸入鍵值 JB ACC.0,MAIN1 ;有按鍵,為1則未按鍵,返回 MOV 2CH,a ;有按鍵,鍵值送2CH LCALL DEL10mS ;延時 MOV A, P1 ;再讀鍵值 CJNE A,2CH,MAIN1 ;與上次鍵值不同則返回 LCALL XIAOSHI ;調(diào)校時開始程序,在T0中斷處去處理 SJMP MAIN1 ;返回QUSHIJ:PUSH ACC ;將DS12C887的時間存入30H

10、,31H,32H,33H的子程序 PUSH PSW PUSH DPH PUSH DPL MOV DPTR,#000CH ;讀C寄存器(必須) MOVX A,DPTR MOV DPTR,#0002H ;DS12C887中分鐘的存放地址 MOV R0,#33H ;CPU中分鐘個位的存放地址 LCALL DIVIDE DEC R0 INC DPL INC DPL LCALL DIVIDE POP DPH POP DPL POP PSW POP ACC RETDIVIDE:PUSH ACC ;從DS12C887中取出數(shù)據(jù),將十位和個位拆分后送入R0指定位置子程序 PUSH PSW MOVX A,DPT

11、R ANL A,#0FH MOV R0,A DEC R0 MOVX A,DPTR ANL A,#0F0H SWAP A MOV R0,A POP PSW POP ACC RETDISP: PUSH ACC ;送顯示子程序 PUSH PSW CLR RS0 CLR RS1 SETB P1.7 ;向外傳送數(shù)據(jù)時關(guān)掉顯示,避免引起閃爍 MOV DPTR,#00E0H MOV R0,#30H ;要顯示的數(shù) LCALL ZIXING ;對應(yīng)其字形 LCALL FS ;從串口送出 INC R0 LCALL ZIXING LCALL FS INC R0 LCALL ZIXING MOV C,22H.1 MO

12、V ACC.4,C LCALL FS INC R0 LCALL ZIXING LCALL FS CLR P1.7 ;傳送完數(shù)據(jù),開顯示 POP PSW POP ACC RETZIXING:MOV A,R0 ;尋找要顯示的數(shù)的字形碼子程序 MOVC A,A+DPTR RETFS: MOV SBUF,A ;數(shù)據(jù)送串口子程序 JNB TI,$ ;未送完等待 CLR TI ;送完清標(biāo)志 RET ;返回INT1ZD:PUSH ACC ;INT1中斷服務(wù)程序 PUSH PSW PUSH DPL PUSH DPH CLR EA ;關(guān)總中斷 CPL 22H.1 ;秒點閃耀標(biāo)志取反 LCALL QUSHIJ ;

13、調(diào)用取時間子程序 LCALL DISP ;調(diào)用送顯示子程序 SETB EA ;開中斷 POP DPH POP DPL POP PSW POP ACC RETI ;中斷返回;啟動校時子程序,即開T0中斷,關(guān)INT0中斷XIAOSHI: MOV TH0,#3CH ;送時間常數(shù) MOV TL0,#0B0H CLR EX1 ;關(guān)INT1中斷 SETB TR0 ;啟動T0 SETB ET0 ;開T0中斷 SETB EA ;開總中斷 SETB ADJUST ;置校時標(biāo)志 MOV WEISHU,#0 ;被校位數(shù)送0OVER: RET ;返回T0ZD: PUSH ACC PUSH PSW SETB RS0 ;

14、1#寄存器 CLR RS1 CLR EA ;關(guān)中斷 MOV TH0,#3CH ;重送時間常數(shù) MOV TL0,#0B0H MOV A, P1 ;讀鍵值 MOV R7,A ;鍵值暫存 ORL A, #80H ;判斷是否有鍵按下 CPL A JZ KEYUP ;無鍵按下,即按鍵結(jié)束則進(jìn)行鍵值處理 MOV A,2cH ;如有鍵按下,則先判斷鍵值暫存單元是否為0 JNZ MM ;不為0,則已存有鍵值,返回 MOV 2cH,R7 ;為0,則將新鍵值存入2CH, LJMP MM ;返回KEYUP: MOV R6,2CH ;鍵值處理,判斷鍵值暫存單元是否為0 CJNE R6, #0,HH ;不為0則轉(zhuǎn)至HH

15、處理 LJMP MM ;為0則返回HH: MOV 2CH,#0 ;不為0,存有鍵值,則進(jìn)行鍵值處理,處理后清0 MOV A,R6 ORL A,#80H CPL A JZ MM ;判斷是否有鍵按下,沒有則返回 MOV A,R6 JNB ACC.0, LL0 ;有鍵按下,是否是P1.0位,如P1.0位為0,則其按下,轉(zhuǎn)去LL0調(diào)整被校位數(shù) JNB ACC.1,XDYJIA1 ;如P1.0沒按下,判斷P1.1是否按下,是,則轉(zhuǎn)去XDYJIA1使被校位加1 LJMP MM ;P1.0和P1.1沒按下則返回LL0: MOV A,WEISHU ;被校位數(shù)調(diào)整 INC A MOV WEISHU,A CLR

16、C ;判斷被校位數(shù)是否小于等于4 SUBB A,#5 JC MM ;是,則返回 CLR 23H.0 ;被校位數(shù)達(dá)到5,則退出校時 CLR ET0 ;關(guān)閉T0中斷 CLR TR0 ;關(guān)閉T0 SETB EX1 ;開INT1,恢復(fù)1秒1次的中斷 LCALL HF1 ;調(diào)用HF1,將校后的時間存回DS12C887 LJMP END1 ;中斷返回MM: MOV A,20H ;以下判斷T0中斷是否到5次 INC A MOV 20H,A CJNE A,#5,END1 ;不等于5,則返回 MOV A,#0 ;等于5,中斷次數(shù)清0, MOV 20H,A LCALL DISP1 ;調(diào)被校位閃耀顯示子程序END1

17、: CLR RS0 ;恢復(fù)現(xiàn)場 POP PSW POP ACC SETB EA RETI ;中斷返回XDYJIA1:SETB RS1 ;被校位加1處理 SETB RS0 ;選擇3寄存器區(qū) MOV A,WEISHU ;被校位數(shù)送A ADD A,#2FH ;得到被校位地址 MOV R0,A ;被校位地址存入R0 MOV A,WEISHU ;被校位數(shù)送A ADD A,#3FH ;得到被校位的最大數(shù)存放地址 MOV R1,A ;被校位的最大允許數(shù)存放地址存入R1 MOV A,R0 ;取出被校位數(shù)據(jù)送A CLR C ;判斷其是否達(dá)到其最大允許數(shù) SUBB A,R1 JNC BACK ;達(dá)到,則轉(zhuǎn)至BAC

18、K,回0 MOV A,R0 ;沒達(dá)到,則加1 INC A MOV R0,A LJMP PP1BACK: MOV R0,#0 ;被校位回0PP1: MOV A,HOUR1 ;小時位不能大于等于24,因此如下判斷:判斷小時的高位是否為2 CJNE A,#2,PP ;不為2,則轉(zhuǎn)至PP送顯示后中斷返回 CLR C ;為2,則判斷小時低位是否小于等于3 MOV A,HOUR2 SUBB A,#4 JC PP ;小于等于3則轉(zhuǎn)至PP送顯示后中斷返回 MOV HOUR1,#0 ;否則小時的高低位都回0 MOV HOUR2,#0PP: CLR RS1 ;選擇0寄存器區(qū) CLR RS0 LCALL DISP

19、;顯示加1后結(jié)果 LJMP END1 ;中斷返回DISP1: CPL 22H.0 ;被校位閃耀顯示子程序:閃耀標(biāo)志取反 JB 22H.0,MM2 ;閃耀標(biāo)志為1,轉(zhuǎn)至MM2送亮,閃耀標(biāo)志為0,送黑 MOV A,WEISHU ;被校位數(shù)送A ADD A,#2FH ;得到被校位地址 MOV R0,A ;被校位地址存入R0 MOV 25H,R0 ;被校位數(shù)據(jù)暫存入25H MOV R0,#0AH ;使被校位數(shù)據(jù)變?yōu)?AH,通過查TAB表, LCALL DISP ;送顯示,調(diào)用顯示子程序時,通過查TAB表得到0AH的字形碼為FFH,使被校位黑 MOV R0,25H ;被校位顯示黑后,從25H取回原來數(shù)據(jù) SJMP OVER1 ;返回MM2: LCALL DISP ;閃耀標(biāo)志為1,顯示亮OVER1: RET ;返回HF1: PUSH ACC ;將CPU中30H到33H的數(shù)據(jù)送入DS12887子程序 PUSH PSW PUSH DPL MOV DPTR,#0004H ;DS12C88

溫馨提示

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

評論

0/150

提交評論