內(nèi)蒙古工業(yè)大學(xué)單片機實訓(xùn)蜂鳴器按鍵數(shù)碼管顯示_第1頁
內(nèi)蒙古工業(yè)大學(xué)單片機實訓(xùn)蜂鳴器按鍵數(shù)碼管顯示_第2頁
內(nèi)蒙古工業(yè)大學(xué)單片機實訓(xùn)蜂鳴器按鍵數(shù)碼管顯示_第3頁
免費預(yù)覽已結(jié)束,剩余23頁可下載查看

下載本文檔

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

文檔簡介

1、韻參興孚單片機項目實踐好好學(xué)習不準抄襲! !題 目:儀表參數(shù)設(shè)定 <任務(wù)二)組長:指導(dǎo)教師:劉偉、裴巖、斯日古楞、楊傳穎、 韓海波、高鵬、郭慧 <研)、胡元元 <研)設(shè)計時間:2018年6月17日2018年6月29日一、設(shè)計目的:通過一個以8位單片機為核心的模擬量數(shù)字表的硬件調(diào)試過程,掌握具有七段LED顯示、蜂鳴器自檢、鍵盤自檢的單片機應(yīng)用系統(tǒng)的設(shè)計思想和方法。同時用單片 機實現(xiàn)一個模擬的乒乓球游戲機。學(xué)習應(yīng)用系統(tǒng)軟件的模塊化設(shè)計方法,通過源程序的編輯、匯編或編譯、鏈接、仿真調(diào)試,完成給定的任務(wù)。通過上述過程提高學(xué)生項目實踐能力和素質(zhì)。二、設(shè)計任務(wù):要求明確設(shè)計任務(wù)內(nèi)容及任務(wù)

2、分工等; < 內(nèi)容小四號宋體字)1、基本任務(wù):完成蜂鳴器、鍵盤、七段 LED顯示器、AD7109的自檢程序設(shè)計。<1)蜂鳴器自檢要求:利用程序?qū)崿F(xiàn)兩種以上聲音。<2)鍵盤自檢要求:確定鍵盤正確。<3) 七段LED顯示器自檢要求:確定LED顯示器每一段均正確。主任務(wù):題目10:乒乓球游戲機難度系數(shù):9功能:1、用5個LED顯示器作為乒乓球臺,用LED顯示器的中間橫線 一”代表乒乓球2、用兩個按鍵代表球拍。3、比賽規(guī)則:當 一”到了最左側(cè)LED時,左側(cè)要及時擊球,右側(cè)同理。4、 輸贏判斷:當乒乓球到達某一側(cè)時,若提前或滯后按鍵< 擊球),則為輸,用 聲音和顯示來表示。

3、5、球速要隨著比賽回合的增加而加快,擊球判斷時間逐漸減小。6*、可以顯示比分。硬件環(huán)境:鍵盤、LED顯示器、喇叭等2.任務(wù)分工:組長:張勤偉負責主程序的編寫以及定時計數(shù)器有關(guān)控制反應(yīng)時間以及 球速的編寫及調(diào)用組員:武松負責編寫鍵盤米集程序編寫組員:張子陽負責編寫各程序所用延時子程序和蜂鳴器的程序的編寫三、框圖:要求包括自檢任務(wù)和主任務(wù)的框圖1、硬件編程框圖及相關(guān)說明喇叭自檢硬件框圖:P2.3P2.3置0后,喇叭會發(fā)聲,P2.3置1后,喇叭不響 鍵盤自檢硬件框圖:P1P2.5P2.610Kx;jU474HC245LDIRGNDLEDVCCEBOBlB2B3B4B5B6B70-了 -1- 1-4K

4、1,K2,K3,K4的開關(guān)值對應(yīng)P1 口的低4位,而自檢開關(guān)由高4位控制。然而,此程序 要求保護自檢開關(guān),檢驗 K1,K2,K3,K4的正確性。調(diào)用SEL8可以打開74HC245L的三 態(tài)門。然后將最終表現(xiàn)結(jié)果巧妙的利用 LED或喇叭表現(xiàn)出來。七段LED顯示器自檢硬件框圖:po.oP0P0.7P2P2P2P0.0P0bL_COMP2P2.P2.P0.7Y0Y1Y2SEQP0 口負責字型口,P2 口負責字位口,實驗中的數(shù)碼管都是共陽極的。通過中斷控制模數(shù)轉(zhuǎn)換,采集模擬的電壓量,轉(zhuǎn)換為用LED顯示出來的數(shù)字信號量2、主程序框圖、子程序框圖及相關(guān)說明1 )乒乓球主程序框圖:2)子程序框圖判斷發(fā)球權(quán)框

5、圖Stb faqiu開始Clr faqiu從右向左發(fā) 球從左向右發(fā) 球乒乓球做一程序 右移同理)接球過程框圖:顯示分數(shù)框圖:符頻率延時喇叭自檢的程序框圖:注釋:每次循環(huán)給 得到。LED自檢程序框圖開始送字型顯示子程序11r送01H<小數(shù)點亮)位選第一個LED各段碼分別顯示及數(shù)字并延時送 FFH<8.亮)返回結(jié)束此模塊鍵盤自檢程序框圖開始四、程序清單:乒乓球游戲機程序score_left equ 30h定義左側(cè)分數(shù)緩存區(qū) uint_left equ 31h。左側(cè)得分的個位緩存區(qū) decade_left equ 32h左側(cè)得分的十位緩存區(qū) score_right equ 33h定義右側(cè)

6、分數(shù)緩存區(qū) uint_right equ 34h。定義右側(cè)的分緩存區(qū) decade_right equ 35h定義右側(cè)分數(shù)十位緩存區(qū) speed equ 36h 定義球移動速度緩存區(qū) speed2 equ 37hscore equ 38h 為發(fā)球的次數(shù)開辟緩存區(qū) beep bit p2.3 定義蜂鳴器端口 k1 bit p1.0。定義 k1 位k2 bit p1.1。定義 k2 位 k3 bit p1.2。定義 k3 位 k4 bit p1.3。定義 k4 位 org 00h ajmp main org 0bh ajmp time。time為定時器0子程序 org 30h。錯開中斷入口地址 m

7、ain: init:MOV p1,#0ffhMOV p0,#00hSETB p2.3。關(guān)閉蜂鳴器mov score_left,#0h 初始化分數(shù)mov uint_left,#0h=初始化左側(cè)分數(shù)個位mov decade_left,#0hmov score_right,#0h初始化右側(cè)分數(shù) mov uint_right,#0h。初始化右側(cè)個位分數(shù) mov decade_right,#0h初始化右側(cè)分數(shù)十位 mov speed,#60初始化球的移動速度 mov TMOD,#01h。設(shè)置定時計數(shù)器方式 1 mov TH0,#0b1h mov TL0,#0e0h。定時 20msmov n,#50mov

8、 IE,#82h。開總中斷和定時計數(shù)器 0中斷 mov R7,#0h。初始化 R7start: jb p1.2,starto 啟動判斷開關(guān)lcall delay2。延時去抖動jb p1.2,start。如果k3鍵按下則繼續(xù)執(zhí)行,否則返回 jb jufaq ,clr faqiu。判斷誰的發(fā)球權(quán)setb faqiujb faqiu, yd_left:判斷 A,B 誰發(fā)球 yd_rightydeft:mov p0,#80h。送入一”cjne a,#11,led_left1lcall score_display_leftled_left1:acall sel5acall delayacall sel8

9、yd_left2:jb k1,yd_left3。如果 k1 不按下則lcall delay2 jb k1,yd_left2 lcall yd_left_fail yd_left3:acall sel4 acall delay acall sel8 yd_left4:jb k1,yd_left5 lcall delay2 jb k1,yd_left4 Icall yd_left_fail。如果在此時按下k1鍵則跳入輸判斷子程序 yd_left5:acall sel3acall delayacall sel8yd_left6:jb k1,yd_left7lcall delay2jb k1,yd_l

10、eft6lcall yd_left_fail。yd_left7:acall sel2acall delayacall sel8yd_left8:jb k1,yd_left9lcall delay2jb k1,yd_left8lcall led_left_failyd_left9:acall sel1acall delayacall sel8ydeft10:jb p1.0,yd_left11。如果沒有按下鍵則重新從左發(fā)球 lcall delay2 jb p1.0,yd_left10lcall time。如果接住球啟動定時器加速球的速度ljmp yd_rightyd_left11:inc scor

11、e_rightlcall fail_buzzerclr TR0ljmp led_left*。 *。此程序?qū)崿F(xiàn)乒乓球右移動程序*。 *yd_right:mov p0,#80h 。送入“一”cjne a,#11,led_right1lcall score_display_leftyd_right1:acall sel1acall delayacall sel8 yd_right2:jb k4,yd_right3lcall delay2 jb k4,yd_right2 lcall yd_right_fail yd_right3:acall sel2acall delayacall sel8 yd_r

12、ight4:jb k4,yd_right5lcall delay2 jb k4,yd_right4 lcall yd_right_fail yd_right5:acall sel3acall delayacall sel8 yd_right6:jb k4,yd_right7lcall delay2jb k4,yd_right6 lcall yd_right_fail yd_right7:acall sel4acall delayacall sel8 yd_right8:jb k4,yd_right9 lcall delay2 jb k4,yd_right8 lcall yd_right_fai

13、l yd_right9:acall sel5acall delayacall sel8nopyd_right10: jb p1.3,ydight。如果沒有按下則重新從有發(fā)球 lcall delay2jb p1.3,yd_right10 nopIcall time。如果接住球則啟動定時計數(shù)器 ljmp led_leftyd_right11:inc score_left lcall fail_buzzer clr TR0 ljmp yd_right*。 * 。功能 : 對輸球進行處理的子程序 。返回值 :右側(cè)分數(shù)* yd_left_fail:lcall fail_buzzerinc score_r

14、ight clr TR0 ajmp yd_left yd_right_fail:lcall fail_buzzer inc score_left clr TR0 ajmp yd_right*。 * 。下面為所有用到的的子程序*。 * sel5: setb p2.5clr p2.6clr p2.7retsel4: clr p2.5 setb p2.6 setb p2.7 retsel3: clr p2.5 setb p2.6 clr p2.7 retsel2: clr p2.5clr p2.6setb p2.7retsel1: clr p2.5clr p2.6clr p2.7retsei8:se

15、tb p2.5 開三態(tài)門 74hc245 setb p2.6setb p2.7ret*。 * 。分數(shù)顯示程序 。本段程序用來將采集的分數(shù)顯示到數(shù)碼管上*。 * 。接住球的蜂鳴器程序 win_buzzer:mov r4,#60mov p0,#0ch在蜂鳴器響的同時讓"1"也亮 win_buzzer1:cpi beep acaii deiay1djnz r4,win_buzzer1ret 。未接住蜂鳴器的程序 fail_buzzer:mov r4,#60 fail_buzzer1:cpl beep acall delay2 djnz r4,fail_buzzer1 ret*。

16、*。分數(shù)顯示程序 。本段程序用來將采集的左側(cè)擊球分數(shù)顯示到數(shù)碼管上*。 *score_display_left: mov a,score_leftmov b,#10div abmov uint_left,bb將分數(shù)的個位送入相應(yīng)的緩沖區(qū) mov decade_left,a將十位送入相應(yīng)的緩沖區(qū) mov DPTR,#tabmov a,uint_left將個位數(shù)送入到 a中 movc a,a+DPTRacall sel3開個位顯示 mov p0,a顯示個位數(shù) lcall delay1mov p0,#00h關(guān)顯示以去除虛亮mov a,decade_leftmovc a,a+DPTR acall se

17、l2開十位顯示mov p0,a 顯示十位數(shù)lcall delay1mov p0,#00h 關(guān)顯示以去除虛亮 sore_display_right:mov a,score_rightmov b,#10div abmov uint_right,b 將分數(shù)的個位送入相應(yīng)的緩沖區(qū) mov decade_right,a 將十位送入相應(yīng)的緩沖區(qū) mov DPTR,#tabmov a,uint_right 將個位數(shù)送入到 a 中 movc a,a+DPTR acall sel5 開個位顯示 mov p0,a 顯示個位數(shù) lcall delay1mov p0,#00h 關(guān)顯示以去除虛亮mov a,decade

18、_right movc a,a+DPTR acall sel4 開十位顯示 mov p0,a 顯示十位數(shù) lcall delay1mov p0,#00h關(guān)顯示以去除虛亮ajmp score_display_left ret*。 * 。定時計數(shù)程序中斷子程序。為球移動速度進行定時,控制反應(yīng)時間*。 *time:push ACCpush PSWinc r7cjne r7,#11,exitdjnz n ,timeexitdec ndec speedmov r7,#00hexit: mov TH0,#0b1h。重裝初值mov TL0,#0e0h。pop PSWpop ACCretidelay:mov

19、r6,speedd1:mov r5,#100d2:mov r4,#60djnz r4,$djnz r5,d2djnz r6,d1retdelay1:mov r0,#20d3:mov r1,#20djnz r1,$djnz r0,d3retdelay2:mov r2,#50d4:mov r3,#20djnz r3,$djnz r2,d4rettab: db 7eh,0ch,0b6h,9eh,0cch,0dah,0fah,0eh,0feh,0deh數(shù)碼管顯示 0,1,2,3,4,5,6,7,8, 9 end喇叭自檢程序清單:BEEP:MOV R0,#0DFHMOV R1,#0DFHMOV R2,#

20、0DFHLOOP1:SETB P2.3ACALL DELAY1CLR P2.3ACALL DELAY1DJNZ R0,LOOP1LOOP2:SETB P2.3ACALL DELAY2CLR P2.3ACALL DELAY2DJNZ R1,LOOP2LOOP3:SETB P2.3ACALL DELAY3CLR P2.3ACALL DELAY3DJNZ R2, LOOP3SJMP BEEPDELAY1:MOV R6,#02HN1:MOV R7,#07BHN2:DJNZ R7,N2DJNZ R6,N1RETDELAY2:MOV R4,#02H N3:MOV R5,#0AFH N4:DJNZ R5,N

21、4DJNZ R4,N3RETDELAY3:MOV R3,#02H N5:MOV R4,#0DFH N6:DJNZ R4,N6DJNZ R3,N5RETLED自檢程序清單:鍵盤自檢程序清單:KR245: MOV P0,#0LCALL SEL8MOV P1,#0FFHMOV A,P1ANL A,#0FHCJNE A,#0FH,ZWZ1SJMP KR245ZWZ1: LCALL DELAY10 MOV P1,#0FFH MOV A,P1 ANL A,#0FH CJNE A,#0FH,ZW1SJMP KR245ZW1: LCALL SEL7CJNE A,#0DH,ZW2 SJMP Z2ZW2: JC

22、ZW3SJMP Z1ZW3: CJNE A,#07H,Z3 SJMP Z4Z1:LCALL W1 LCALL LED SJMP KR245W1:LCALL SEL1 MOV P0,#0CH LCALL BEEP RETZ2: LCALL W2 LCALL LED SJMP KR245W2:LCALL SEL2 MOV P0,#0B6H LCALL BEEP LCALL BEEP RETZ3:LCALL W3 LCALL LED SJMP KR245W3:LCALL SEL3 MOV P0,#9EH LCALL BEEP LCALL BEEP LCALL BEEP RETZ4:LCALL W4

23、LCALL LED LJMP KR245W4:LCALL SEL4 MOV P0,#0CCH LCALL BEEP LCALL BEEP LCALL BEEP LCALL BEEP RET BEEP: CLR P2.3 LCALL DELAY1 SETB P2.3 LCALL DELAY1RETLED: MOV R0,#07HLOOP1: LCALL DELAYDJNZ R0,LOOP1RETDELAY:MOV R6,#0DEHLOOP3:DJNZ R7,LOOP3RETDELAY10:MOV R6,#14HLOOP4:MOV R7,#0F8HLOOP5:DJNZ R7,LOOP5DJNZ R

24、6,LOOP4RETDELAY1:MOV R6,#0A9HLOOP6:MOV R7,#0B0HLOOP7:DJNZ R7,LOOP7DJNZ R6,LOOP6RETSEL1: CLR P2.7CLR P2.6CLR P2.5RETSEL2: SETB P2.7CLR P2.6CLR P2.5RETSEL3: CLR P2.7SETB P2.6CLR P2.5RETSEL4: SETB P2.7SETB P2.6CLR P2.5RETSEL7: CLR P2.7SETB P2.6SETB P2.5RETSEL8: SETB P2.7SETB P2.6SETB P2.5RET 要求有明確的程序注解、程序清單可分兩欄打印五、 設(shè)計體會要求每個人根據(jù)自己的不同情況分別寫出本人的設(shè)計體會,不得少于 300 字。 順序裝訂體會: 1 實踐和想象

溫馨提示

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

最新文檔

評論

0/150

提交評論