《專業(yè)課程設(shè)計3(微處理器與微控制器應(yīng)用)》課程設(shè)計說明書單片機定時鬧鈴課程設(shè)計_第1頁
《專業(yè)課程設(shè)計3(微處理器與微控制器應(yīng)用)》課程設(shè)計說明書單片機定時鬧鈴課程設(shè)計_第2頁
《專業(yè)課程設(shè)計3(微處理器與微控制器應(yīng)用)》課程設(shè)計說明書單片機定時鬧鈴課程設(shè)計_第3頁
《專業(yè)課程設(shè)計3(微處理器與微控制器應(yīng)用)》課程設(shè)計說明書單片機定時鬧鈴課程設(shè)計_第4頁
《專業(yè)課程設(shè)計3(微處理器與微控制器應(yīng)用)》課程設(shè)計說明書單片機定時鬧鈴課程設(shè)計_第5頁
已閱讀5頁,還剩19頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、武漢理工大學(xué)專業(yè)課程設(shè)計3(微處理器與微控制器應(yīng)用)課程設(shè)計說明書目錄1設(shè)計方案11.1 設(shè)計目的11.2 設(shè)計任務(wù)12 設(shè)計總體框圖12.1 系統(tǒng)設(shè)計方框圖12.2 程序流程圖23 設(shè)計單元電路33.1 at89c51的時鐘電路33.2 at89c51的復(fù)位電路設(shè)計43.3 at89c51的顯示電路設(shè)計43.4 at89c51的按鍵電路設(shè)計54 電路原理說明64.1 at89c51芯片管腳及其功能64.2 電路總原理及硬件原理圖84.3 軟件設(shè)計95 參考文獻206 設(shè)計心得20附錄:21附錄1:調(diào)試報告21附錄2:元器件清單22定時鬧鈴的設(shè)計1設(shè)計方案1.1 設(shè)計目的本設(shè)計是一個定時鬧鐘,

2、它僅使用單片的20引腳單片機完成鬧鐘的全部功能。設(shè)計目的是為了學(xué)習(xí)和鞏固單片機知識,使對已學(xué)過的基礎(chǔ)知識能有更深入的理解,學(xué)會獨立思考、獨立思考、獨立工作,以及提高對所學(xué)應(yīng)用基本理論分析和解決實際問題的能力。1.2 設(shè)計任務(wù) 本設(shè)計是一個定是鬧鐘,它僅使用單片40個引腳單片機at89c51完成鬧鐘的全部功能,包括時鐘顯示,時鐘設(shè)置,鬧鐘設(shè)定和鬧鐘報時。設(shè)計目的是學(xué)習(xí)和鞏固單片機知識,使用學(xué)習(xí)過的關(guān)于at89c51的基礎(chǔ)知識能有更深入的理解,學(xué)會獨立思考,獨立工作,以及提高對所學(xué)習(xí)的應(yīng)用基本理論分析和解決實際問題的能力。2 設(shè)計總體框圖2.1 系統(tǒng)設(shè)計方框圖6位共陽數(shù)碼管顯示單片機at89c51

3、限流電阻晶振及復(fù)位按鈕led指示燈圖1 系統(tǒng)設(shè)計框圖開 始2.2 程序流程圖有關(guān)變量的初始化啟動走時顯示時間判斷是否鬧鐘時間到y(tǒng)led亮nns4是否按下s3是否按下yynn按s3?按s2?按s2?按s4?yyyy調(diào) 整 時鐘 分調(diào) 整 時鐘 時設(shè)置鬧鐘 時設(shè) 置 鬧鐘 分nnnn按s1?按s1?按s1?按s1? yyyy圖2 程序流程圖3 設(shè)計單元電路3.1 at89c51的時鐘電路at89c51系列的單片機時鐘方式分為內(nèi)部和外部方式,外部方式是把外部已經(jīng)有的時鐘信號引入到單片機內(nèi)部。時鐘電路在計算機系統(tǒng)中起著非常重要的作用,是保證系統(tǒng)正常工作的基礎(chǔ)。在一個單片機應(yīng)用系統(tǒng)中,時鐘有兩方面的含義

4、:一是指為保障系統(tǒng)正常工作的基準振蕩定時信號,主要有晶振和外圍電路組成,晶振頻率的大小決定了單片機系統(tǒng)工作的快慢;而是指系統(tǒng)的標準定時時鐘,即定時時間,它通常有兩種實現(xiàn)方法:一是用軟件實現(xiàn),即用單片機內(nèi)部的可編程定時/計數(shù)器來實現(xiàn),但誤差很大,主要用在對時間精度要求不高的場合;二是用專門的時鐘芯片實現(xiàn)。本設(shè)計的采用內(nèi)部時鐘方式。時鐘電路如圖3所示。圖3 時鐘電路3.2 at89c51的復(fù)位電路設(shè)計 復(fù)位是單片機的初始化操作,起主要功能是把pc初始化為0000h,使單片機從0000h單元開始執(zhí)行程序。除進入系統(tǒng)的正常初始化之外,當(dāng)由于程序運行出錯禍操作錯誤使系統(tǒng)處于死鎖狀態(tài)時,為擺脫困境,可以使

5、復(fù)位鍵以重新啟動,也可以通過監(jiān)視定時器來強迫復(fù)位。ret引腳是復(fù)位信號的輸入端,如圖4所示。圖4 復(fù)位電路 3.3 at89c51的顯示電路設(shè)計分段式顯示器(led數(shù)碼管)由7條線段圍成8字型,每一段包含一個發(fā)光二極管。外加正向電壓時二極管導(dǎo)通,發(fā)出清晰的光。只要按規(guī)律控制各發(fā)光段亮、滅,就可以顯示各種字形或符號。led數(shù)碼管有共陽、共陰之分。圖是共陽式、共陰式led數(shù)碼管的原理圖和符號,如圖5所示。顯示電路顯示模塊需要實時顯示當(dāng)前的時間,即時、分、秒,因此需要6個數(shù)碼管。led顯示器的顯示控制方式按驅(qū)動方式可分成靜態(tài)顯示方式和動態(tài)顯示方式兩種。對于多位led顯示器,通常都是采用動態(tài)掃描的方法

6、進行顯示,其硬件連接方式如圖6所示,時的十位和個位分別顯示在第一個和第二個數(shù)碼管,分的十位和個位分別顯示在第三個和第四個數(shù)碼管,秒的十位和個位分別顯示在第五個和第六個數(shù)碼管。定時時間到后,p3.7被置位,二極管發(fā)光,提醒鬧鐘時間到。 圖5 共陽式、共陰式led數(shù)碼管的原理圖和數(shù)碼管的符號圖 圖6 數(shù)碼管硬件連接圖3.4 at89c51的按鍵電路設(shè)計s1按鍵接在p2.0口,用于切換正常走時、調(diào)時間、設(shè)定鬧鐘;s2按鍵接在p2.1口,用于調(diào)整時間分加一和設(shè)置鬧鈴分加一功能鍵;s3按鍵接在p2.2口,按下后進入鬧鐘設(shè)置狀態(tài);s4按鍵接在p2.3口,按下后進入時間調(diào)整狀態(tài)。按鍵連接如圖7所示。圖7 按

7、鍵硬件連接圖4 電路原理說明4.1 at89c51芯片管腳及其功能at89c51是一種帶4k字節(jié)閃爍可編程可擦除只讀存儲器的低電壓,可穩(wěn)定地工作于5v的電源下.該器件采用atmel高密度非易失存儲器制造技術(shù)制造,與工業(yè)標準的mcs-51指令集和輸出管腳相兼容。由于將多功能8位cpu和閃爍存儲器組合在單個芯片中,atmel的at89c51是一種高效微控制器。at89c51芯片引腳圖如圖8所示。圖8 at89c51芯片引腳圖at89c51管腳說明: vcc:供電電壓。 gnd:接地。 p0口:p0口為一個8位漏級開路雙向i/o口,每腳可吸收8ttl門電流。當(dāng)p1口的管腳第一次寫1時,被定義為高阻輸

8、入。p0能夠用于外部程序數(shù)據(jù)存儲器,它可以被定義為數(shù)據(jù)/地址的第八位。在fiash編程時,p0 口作為原碼輸入口,當(dāng)fiash進行校驗時,p0輸出原碼,此時p0外部必須被拉高。 p1口:p1口是一個內(nèi)部提供上拉電阻的8位雙向i/o口,p1口緩沖器能接收輸出4ttl門電流。p1口管腳寫入1后,被內(nèi)部上拉為高,可用作輸入,p1口被外部下拉為低電平時,將輸出電流,這是由于內(nèi)部上拉的緣故。在flash編程和校驗時,p1口作為第八位地址接收。 p2口:p2口為一個內(nèi)部上拉電阻的8位雙向i/o口,p2口緩沖器可接收,輸出4個ttl門電流,當(dāng)p2口被寫“1”時,其管腳被內(nèi)部上拉電阻拉高,且作為輸入。并因此作

9、為輸入時,p2口的管腳被外部拉低,將輸出電流。這是由于內(nèi)部上拉的緣故。p2口當(dāng)用于外部程序存儲器或16位地址外部數(shù)據(jù)存儲器進行存取時,p2口輸出地址的高八位。在給出地址“1”時,它利用內(nèi)部上拉優(yōu)勢,當(dāng)對外部八位地址數(shù)據(jù)存儲器進行讀寫時,p2口輸出其特殊功能寄存器的內(nèi)容。p2口在flash編程和校驗時接收高八位地址信號和控制信號。 p3口:p3口管腳是8個帶內(nèi)部上拉電阻的雙向i/o口,可接收輸出4個ttl門電流。當(dāng)p3口寫入“1”后,它們被內(nèi)部上拉為高電平,并用作輸入。作為輸入,由于外部下拉為低電平,p3口將輸出電流(ill)這是由于上拉的緣故。 p3口也可作為at89c51的一些特殊功能口:管

10、腳 備選功能 p3.0 rxd(串行輸入口) p3.1 txd(串行輸出口) p3.2 /int0(外部中斷0) p3.3 /int1(外部中斷1) p3.4 t0(記時器0外部輸入) p3.5 t1(記時器1外部輸入) p3.6 /wr(外部數(shù)據(jù)存儲器寫選通) p3.7 /rd(外部數(shù)據(jù)存儲器讀選通) p3口同時為閃爍編程和編程校驗接收一些控制信號。 rst:復(fù)位輸入。當(dāng)振蕩器復(fù)位器件時,要保持rst腳兩個機器周期的高電平時間。 ale/prog:當(dāng)訪問外部存儲器時,地址鎖存允許的輸出電平用于鎖存地址的地位字節(jié)。在flash編程期間,此引腳用于輸入編程脈沖。在平時,ale端以不變的頻率周期輸

11、出正脈沖信號,此頻率為振蕩器頻率的1/6。因此它可用作對外部輸出的脈沖或用于定時目的。然而要注意的是:每當(dāng)用作外部數(shù)據(jù)存儲器時,將跳過一個ale脈沖。如想禁止ale的輸出可在sfr8eh地址上置0。此時, ale只有在執(zhí)行movx,movc指令是ale才起作用。另外,該引腳被略微拉高。如果微處理器在外部執(zhí)行狀態(tài)ale禁止,置位無效。 /psen:外部程序存儲器的選通信號。在由外部程序存儲器取指期間,每個機器周期兩次/psen有效。但在訪問外部數(shù)據(jù)存儲器時,這兩次有效的/psen信號將不出現(xiàn)。 /ea/vpp:當(dāng)/ea保持低電平時,則在此期間外部程序存儲器(0000h-ffffh),不管是否有內(nèi)

12、部程序存儲器。注意加密方式1時,/ea將內(nèi)部鎖定為reset;當(dāng)/ea端保持高電平時,此間內(nèi)部程序存儲器。在flash編程期間,此引腳也用于施加12v編程電源(vpp)。xtal1:反向振蕩放大器的輸入及內(nèi)部時鐘工作電路的輸入。 xtal2:來自反向振蕩器的輸出。4.2 電路總原理及硬件原理圖電路總原理:將軟件.hex文件添加到芯片后,就可開始仿真。此設(shè)計中數(shù)碼管顯示時分秒,時為24進制,分和秒都為60進制。當(dāng)按下s3時進入鬧鐘設(shè)置狀態(tài),此時再按下s3則設(shè)置鬧鐘時,每按一下鬧鐘時加一,到23h時回到0h,接著按下s2則設(shè)置鬧鐘分,每按一下鬧鐘分加一,之后按下s1回到時間顯示狀態(tài);當(dāng)按下s4時進

13、入時鐘調(diào)整狀態(tài),此時再按下s4則調(diào)整時鐘時,每按一下時鐘時加一,到23h時回到0h,接著按下s2則設(shè)置時鐘分,每按一下時鐘分加一,之后按下s1回到時間顯示狀態(tài)。電路總原理圖如圖9所示。圖9 電路總原理圖4.3 軟件設(shè)計設(shè)計程序如下:org 0000hljmp startorg 000bh ljmp time start:mov sp,#51h mov 20h,#00h ;定義秒 mov 21h,#00h ;定義分 mov 22h,#00h ;定義時 mov 23h,#00h ;定義鬧鐘分 mov 24h,#00h ;定義鬧鐘時 mov 25h,#00h mov 26h,#00h mov 30h

14、,#00h ;bcd 顯示時間秒 mov 31h,#00h mov 32h,#00h ;bcd 顯示時間分 mov 33h,#00h mov 34h,#00h ;bcd 顯示時間時 mov 35h,#00h mov 36h,#00h ;bcd 鬧鐘分 mov 37h,#00h mov 38h,#00h ;bcd 鬧鐘時 mov 39h,#00h mov 50h,#00h ;按鍵次數(shù) mov tmod,#01h mov th0,#03ch mov tl0,#0b0h mov ie,#82h ;中斷允許 setb tr0 ;啟動t0 mov r2,#14h mov p2,#0ffh clr p3.

15、7main: lcall timepro ;判斷是否為鬧鐘gb: lcall display1 ;顯示時間 jb p1.3,m1 lcall settime ljmp mainm1: jb p1.2,m2 lcall setatime ljmp mainm2: jb p1.0,m4 lcall lookatimem4: ljmp maindelay:mov r4,#030h ;延時子程序dl00: mov r5,#0ffhdl11: mov r6,#09hdl12: djnz r6,dl12 djnz r5,dl11 djnz r4,dl00 retsettime: ;設(shè)置時間l0: lcal

16、l display1mm1: jb p1.3,l1 ;進入時間設(shè)置狀態(tài) mov c,p1.3 jc mm1 lcall delay1 jc mm1mstop1: mov c,p1.3 ;設(shè)置時鐘時 jnc mstop1 lcall delay1 mov a,50h inc 50h cjne a ,#00h,hj1 ljmp l0hj1: mov c,p1.3 jnc mstop1 inc 22h mov a,22h cjne a,#18h,go12 ;時為24h時清零 mov 22h,#00h mov 34h,#00h mov 35h,#00h ljmp l0l1: jb p1.1,l2 mo

17、v c,p1.1 jc l1 lcall delay1 jc l1mstop2: mov c,p1.1 ;設(shè)置時鐘分 jnc mstop2 lcall delay1 mov c,p1.1 jnc mstop2 inc 21h mov a,21h cjne a,#3ch,go11 ;分為60s時清零 mov 21h,#00h mov 32h,#00h mov 33h,#00h ljmp l0go11: mov b,#0ah div ab mov 32h,b mov 33h,a ljmp l0go12: mov b,#0ah div ab mov 34h,b mov 35h,a ljmp l0l2

18、: jb p1.0,l0 mov c,p1.0 jc l2 lcall delay1 mov c,p1.0 jc l1stop1: mov c,p1.0 ;回到時間顯示 jnc stop1 lcall delay1 mov c,p1.0 jnc stop1 mov 50h,#00h ljmp mainsetatime:lcall display2 ;設(shè)置鬧鐘n0: lcall display2mm2: jb p1.2,n1 mov c,p1.2 jc mm2 lcall delay1 jc mm2mstop3: mov c,p1.2 ;設(shè)置鬧鐘時 jnc mstop3 lcall delay1

19、 mov a,50h inc 50h cjne a,#00h,hj2 ljmp n0hj2: mov c,p1.2 jnc mstop3 inc 24h mov a,24h cjne a,#18h,go22 ;時為24h時清零 mov 24h,#00h mov 38h,#00h mov 39h,#00h ljmp n0n1: jb p1.1,n2 mov c,p1.1 jc n1 lcall delay1 mov c,p1.1 jc n1mstop4: mov c,p1.1 ;設(shè)置鬧鐘分 jnc mstop4 lcall delay1 mov c,p1.1 jnc mstop4 inc 23h

20、 mov a,23h cjne a,#3ch,go21 ;分為60s時清零 mov 23h,#00h mov 36h,#00h mov 37h,#00h ljmp n0go21: mov b,#0ah div ab mov 36h,b mov 37h,a ljmp n0go22: mov b,#0ah div ab mov 38h,b mov 39h,a ljmp n0n2: jb p1.0,n0 mov c,p1.0 jc n2 lcall delay1 mov c,p1.0 jc n1stop2: mov c,p1.0 ;回到時間顯示 jnc stop2 lcall delay1 mov

21、c,p1.0 jnc stop2 mov 50h,#00h ljmp maintimepro:mov a,21h ; 判斷是否為鬧鐘 mov b,23h cjne a,b,bk mov a,22h mov b,24h cjne a,b,bk setb 25h.0 mov c,25h.0 lcall timeout jmp bk1bk: clr p3.7bk1: rettimeout: setb p3.7 ret lookatime: lcall display2 ;判斷s1是否按下,若按下則顯示時間,否則顯示鬧鐘mm: jnb p1.0,lookatime lcall delay1 ljmp

22、main delay1: mov r4,#14hdl001: mov r5,#0ffhdl111: djnz r5,dl111 djnz r4,dl001 rettime: push acc ;定時 push psw mov th0,#0e0h mov tl0,#0b0h djnz r2,ret0 mov r2,#14h mov a,20h clr c inc a ;秒自加1 cjne a,#3ch,go1 ;秒計數(shù)循環(huán) mov 20h,#00h ;復(fù)位 mov 30h,#00h mov 31h,#00h mov a,21h inc a ;分自加1 cjne a,#3ch,go2 ;分計數(shù)循環(huán)

23、 mov 21h,#00h ;復(fù)位 mov 32h,#00h mov 33h,#00h mov a,22h inc a ;時自加1 cjne a,#18h,go3 ;時計數(shù)循環(huán) mov 22h,#00h ;復(fù)位 mov 34h,#00h mov 35h,#00h mov a,21h ajmp ret0go1: mov 20h,a mov b,#0ah div ab mov 31h,a ;秒高位 mov 30h,b ;秒低位 ajmp ret0go2: mov 21h,a mov b,#0ah div ab mov 3h,a ;分高位 mov 32h,b ;分低位 ajmp ret0go3: m

24、ov 22h,a mov b,#0ah div ab mov 35h,a ;時高位 mov 34h,b ;時低位 ajmp ret0ret0: pop psw pop acc retidisplay1:mov r0,#30h ;顯示子程序 mov r3,#01hplay1: mov a,r3 mov p2,a mov a,r0 mov dptr,#dseg1 mov c a,a+dptr mov p0,a lcall dl1 mov a,r3 rl a mov r3,a mov c,acc.6 jc ld1 inc r0 ljmp play1ld1: retdisplay2: push acc

25、 push psw mov r0,#36h mov r3,#04hplay2: mov a, r3 mov p2,a mov a,r0 mov dptr,#dseg1 movc a,a+dptr mov p0,a lcall dl1 mov a,r3 ;判斷是否顯示到最低位 rl a ;左移一位 mov r3,a mov c,acc.6 jc ld2 inc r0 ;緩存器地址加一 ljmp play2ld2: pop psw pop acc retdl1: mov r7,#20hdl: mov r6,#20hdl6: djnz r6,$ djnz r7,dl retdseg1: db 3fh,06h,5bh,4fh,66h,6dh,7dh,07h,7fh,6fh end 5 參考文獻1高峰.單片微型計算機原理與接口技術(shù)(第二版).北京:科學(xué)出版社,

溫馨提示

  • 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)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論