單片機(jī)課程設(shè)計(jì)玩乒乓球_第1頁(yè)
單片機(jī)課程設(shè)計(jì)玩乒乓球_第2頁(yè)
單片機(jī)課程設(shè)計(jì)玩乒乓球_第3頁(yè)
單片機(jī)課程設(shè)計(jì)玩乒乓球_第4頁(yè)
單片機(jī)課程設(shè)計(jì)玩乒乓球_第5頁(yè)
已閱讀5頁(yè),還剩4頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、1 引言單片機(jī)作為微型計(jì)算機(jī)發(fā)展的一個(gè)重要分支,以其高可靠、高性能價(jià)格比、低電壓、低功耗等優(yōu)勢(shì),贏得了廣泛的應(yīng)用。單片機(jī)是一門實(shí)用性很強(qiáng)的應(yīng)用學(xué)科,在目前和今后相當(dāng)長(zhǎng)的一段時(shí)間內(nèi)仍有著廣泛的應(yīng)用前景。作為自動(dòng)化專業(yè)的學(xué)生,更應(yīng)該熟練掌握各種電路編輯軟件,作為專業(yè)必需的技能更要及時(shí)地對(duì)這一類軟件的更新版本進(jìn)行學(xué)習(xí),其日趨強(qiáng)大的功能是對(duì)我們專業(yè)技能的補(bǔ)充。之前由于培養(yǎng)過(guò)自己的動(dòng)手能力,在本次課程設(shè)計(jì)中,本人使用單片機(jī)作為這次作業(yè)的核心。課程設(shè)計(jì)通過(guò)使用90c51單片機(jī)和共陽(yáng)極二位數(shù)碼管,綜合應(yīng)用基礎(chǔ)電子電路和單片機(jī)的知識(shí),來(lái)實(shí)現(xiàn)該電路的制作。通過(guò)實(shí)際程序設(shè)計(jì)和調(diào)試,逐步掌握塊化程序設(shè)計(jì)方法和調(diào)試技

2、術(shù),通過(guò)課程設(shè)計(jì),掌握一單片機(jī)核心的電路設(shè)計(jì)的基本方法和技術(shù),了解有關(guān)電路參數(shù)的計(jì)算方法,通過(guò)完成一個(gè)包括電路設(shè)計(jì)和程序設(shè)計(jì)開發(fā)的完整過(guò)程,了解開發(fā)單片機(jī)應(yīng)用系統(tǒng)的全過(guò)程,為今后從事相應(yīng)工作打下基礎(chǔ)。2 設(shè)計(jì)方案及原理 2.1 題目要求8支連續(xù)排列的發(fā)光二極管,發(fā)光二極管的依次點(diǎn)亮代表乒乓球的運(yùn)動(dòng)。用兩個(gè)按鍵模擬左右兩個(gè)球拍,鍵按下代表球拍擊球。“左拍”按下可使發(fā)光二極管從左向右依次點(diǎn)亮,如同乒乓球從左向右飛來(lái);反之,“右拍”按下則可使發(fā)光二極管從右向左依次點(diǎn)亮,代表乒乓球從右向左運(yùn)動(dòng)。本游戲供兩人玩耍,以一方按鍵開始,這時(shí)“乒乓球”就向?qū)Ψ竭\(yùn)動(dòng),接球方應(yīng)在“乒乓球”到達(dá)終點(diǎn)時(shí)刻擊球。如擊球時(shí)

3、機(jī)合適,則把球擊回,算得分;否則就算失誤,由對(duì)方重新發(fā)球。在游戲過(guò)程中,以led顯示器顯示雙方比分。2.2 題目分析(1) “乒乓球”移動(dòng)速度是固定的,假定每秒鐘移動(dòng)1位led。(2) 在“乒乓球”移位一次的過(guò)程中,進(jìn)行50次測(cè)試,查詢接球方是否有擊球動(dòng)作。(3) 接球方的擊球動(dòng)作應(yīng)發(fā)生在“乒乓球”到達(dá)最后一位led1秒鐘時(shí)間之內(nèi)。如接球方在此1秒鐘時(shí)間之內(nèi)按鍵,則接球成功,接球方得分?!捌古仪颉鞭D(zhuǎn)為相反方向運(yùn)動(dòng)。此后,原接球方變?yōu)榘l(fā)球方,原發(fā)球方變?yōu)榻忧蚍?。游戲繼續(xù)進(jìn)行。(4) 如接球方提前或滯后擊球,則接球方失誤,雙方都不得分。這時(shí)“乒乓球”熄滅,led顯示器顯示出雙方比分,然后仍由原發(fā)球

4、方發(fā)球。2.3 解決方案本設(shè)計(jì)采用90c51單片機(jī)系統(tǒng),任何軟件的設(shè)計(jì)首先都應(yīng)該對(duì)模型進(jìn)行抽象畫,使用實(shí)用化語(yǔ)言對(duì)對(duì)任務(wù)進(jìn)行描述,對(duì)于具體到本實(shí)驗(yàn)的設(shè)計(jì),最需要描述和處理的事件是擊球動(dòng)作,比賽雙方的任何一方按下鍵都是一個(gè)擊球動(dòng)作,需要判斷是發(fā)球還是擊球,是提前擊球還是滯后擊球還是準(zhǔn)確擊球,這是本設(shè)計(jì)把乒乓球游戲抽象為系統(tǒng)模型的關(guān)鍵點(diǎn)。是否準(zhǔn)確擊球是具體體現(xiàn)為:若有鍵按下時(shí)則先判斷a還是b擊球,再根據(jù)球所在位置就可以判斷擊球準(zhǔn)確還是失球。比如現(xiàn)在a按鍵擊球,而同時(shí)led當(dāng)前顯示值為01h,則判斷a正確擊球,反之若led點(diǎn)亮處于其他任何狀態(tài)都判a失球b得分,同樣b的有效擊球時(shí)間應(yīng)為led顯示值為8

5、0h額時(shí)間段內(nèi),其他時(shí)間段b有擊球動(dòng)作都判b時(shí)分。球移動(dòng)的動(dòng)作抽象到系統(tǒng)模型即為led的逐個(gè)點(diǎn)亮,而具體設(shè)計(jì)程序時(shí),需要設(shè)計(jì)一個(gè)led顯示的子程序,再用不同的亮燈數(shù)值通過(guò)調(diào)用led顯示子程序刷新led顯示即可完成。另外定時(shí)中斷在本實(shí)驗(yàn)中也有相當(dāng)大的比重,led逐個(gè)點(diǎn)亮的時(shí)間間隔,擊球是否在規(guī)定時(shí)間內(nèi)完成,這些都需要使用定時(shí)器來(lái)產(chǎn)生所需要的時(shí)間標(biāo)度。3 硬件設(shè)計(jì)3.1 i/o地址分配 由90c51組成的單片機(jī)系統(tǒng)通常情況下,p0口分時(shí)復(fù)用作為地址、數(shù)據(jù)總線,p2口提供a15-a8即高8位地址,p3口用作第二功能,只有p1口通常用作i/o口。8051的p1口作為基本i/o口使用,p1口是8位準(zhǔn)雙向

6、口,它的每一位都可獨(dú)立地定義為輸入或輸出,因此,既可作為8位的并行i/o口,也可作為8為的輸入輸出端。3.2 系統(tǒng)硬件模擬圖本設(shè)計(jì)采用硬件與軟件相結(jié)合,對(duì)所求題目進(jìn)行仿真,proteus仿真圖如圖3.1所示,硬件實(shí)物圖如圖3.2所示。圖3.1 proteus硬件電路圖4 軟件設(shè)計(jì)主程序流程圖如圖4.1所示。開始設(shè)置初始值設(shè)置閃爍次數(shù)r0=10,r2=8設(shè)置中斷等待中斷執(zhí)行中斷程序調(diào)用delay程序,延時(shí)1sr0-1=r0,r2-1=r2r0=0?r2=0?是否是否是結(jié)束圖4.1 主程序流程圖具體程序見附錄。5 總結(jié)本課程設(shè)計(jì)經(jīng)過(guò)了三個(gè)階段的程序設(shè)計(jì),第一階段是了解打乒乓球的工作方式及其原理,確

7、定設(shè)計(jì)的方向與方法以及確定設(shè)計(jì)過(guò)程中需要的軟件及工具。第二階段是熟悉用keil軟件編寫c語(yǔ)言的方法,這一階段側(cè)重于對(duì)c語(yǔ)言的基本掌握,第三階段是學(xué)校單片機(jī)at89c51芯片的工作原理,并設(shè)計(jì)原理圖,在proteus里畫好原理圖然后加載程序后進(jìn)行仿真驗(yàn)證??傮w上,本設(shè)計(jì)已經(jīng)達(dá)到了預(yù)期目標(biāo),在軟件上做了相關(guān)的功能仿真和時(shí)序仿真,最終實(shí)現(xiàn)了正常打乒乓球。在本課程設(shè)計(jì)中,最初遇到了很多的棘手問(wèn)題,比如如何實(shí)現(xiàn)發(fā)球的控制。通過(guò)查閱大量資料和虛心請(qǐng)教他人慢慢解決掉了設(shè)計(jì)過(guò)程中遇到的這一系列的問(wèn)題。本設(shè)計(jì)也存在一些不足,比如記分板顯示并不清晰,只能單方發(fā)球。因此,這需要改進(jìn)。參考文獻(xiàn)1 李華,王思明.單片機(jī)

8、應(yīng)用及原理m.蘭州大學(xué)出版社,2001:30-40.2 李廣弟.單片機(jī)基礎(chǔ)m.北京航空航天大學(xué)出版社,1994:45-48.3 房小翠.單片機(jī)實(shí)用系統(tǒng)設(shè)計(jì)技術(shù)m.國(guó)防工業(yè)出版社,1999:33-45.4 張金敏,董海棠.單片機(jī)原理與應(yīng)用系統(tǒng)設(shè)計(jì)m.西南交通大學(xué)出版社,2010:35-56.附錄#include/*宏定義*/#define uint unsigned int#define uchar unsigned charsbit lsb=p10;sbit rsb=p11;uchar d_s=2;bit hlsb=0;bit hrsb=0;uchar code wei_code=0x0e,0

9、x0d,0x0b,0x07;uchar code duan_code=0x3f, 0x06, 0x5b, 0x4f, 0x66, 0x6d, 0x7d, 0x07, 0x7f, 0x6f;uchar code dis_led = 0xff,0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f,0xff;uchar i=0,num=0;uchar li=0,ri=0;uchar count=0;uchar ln=0,rn=0;uchar dis=0x3f,0x3f,0x3f,0x3f;void timeinit(void)tmod=0x11;th0=(65536-500

10、00)/256;tl0=(65536-50000)%256;th1=(65536-6000)/256;tl1=(65536-6000)%256;et0=1;tr0=1;et1=1;tr1=1;ea=1;void readlk(void)if(hlsb=1&lsb=0)if(i=1)d_s=1;if(i=9)i=1;d_s=1;hlsb=lsb;void readrk(void)if(hrsb=1&rsb=0)if(i=8)d_s=0;if(i=0)i=8;d_s=0;hrsb=rsb;void discode(void)dis0=ln/10;dis1=ln%10;dis2=rn/10;dis3=rn%10;main()timeinit();while(1)readrk();readlk();p0=dis_ledi;discode();void timer0() interrupt 1 th0 = (65536 - 50000) / 256; tl0 = (65536 - 50000)

溫馨提示

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

最新文檔

評(píng)論

0/150

提交評(píng)論