版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、<p><b> 1 引言</b></p><p> 單片機(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ì)
2、我們專業(yè)技能的補(bǔ)充。之前由于培養(yǎng)過自己的動(dòng)手能力,在本次課程設(shè)計(jì)中,本人使用單片機(jī)作為這次作業(yè)的核心。課程設(shè)計(jì)通過使用90C51單片機(jī)和共陽(yáng)極二位數(shù)碼管,綜合應(yīng)用基礎(chǔ)電子電路和單片機(jī)的知識(shí),來實(shí)現(xiàn)該電路的制作。</p><p> 通過實(shí)際程序設(shè)計(jì)和調(diào)試,逐步掌握塊化程序設(shè)計(jì)方法和調(diào)試技術(shù),通過課程設(shè)計(jì),掌握一單片機(jī)核心的電路設(shè)計(jì)的基本方法和技術(shù),了解有關(guān)電路參數(shù)的計(jì)算方法,通過完成一個(gè)包括電路設(shè)計(jì)和程序設(shè)計(jì)開發(fā)
3、的完整過程,了解開發(fā)單片機(jī)應(yīng)用系統(tǒng)的全過程,為今后從事相應(yīng)工作打下基礎(chǔ)。</p><p> 2 設(shè)計(jì)方案及原理 </p><p><b> 2.1 題目要求</b></p><p> 8支連續(xù)排列的發(fā)光二極管,發(fā)光二極管的依次點(diǎn)亮代表乒乓球的運(yùn)動(dòng)。用兩個(gè)按鍵模擬左右兩個(gè)球拍,鍵按下代表球拍擊球?!白笈摹卑聪驴墒拱l(fā)光二極管從左向右依次點(diǎn)亮,
4、如同乒乓球從左向右飛來;反之,“右拍”按下則可使發(fā)光二極管從右向左依次點(diǎn)亮,代表乒乓球從右向左運(yùn)動(dòng)。</p><p> 本游戲供兩人玩耍,以一方按鍵開始,這時(shí)“乒乓球”就向?qū)Ψ竭\(yùn)動(dòng),接球方應(yīng)在“乒乓球”到達(dá)終點(diǎn)時(shí)刻擊球。如擊球時(shí)機(jī)合適,則把球擊回,算得分;否則就算失誤,由對(duì)方重新發(fā)球。在游戲過程中,以LED顯示器顯示雙方比分。</p><p><b> 2.2 題目分析<
5、;/b></p><p> (1) “乒乓球”移動(dòng)速度是固定的,假定每秒鐘移動(dòng)1位LED。</p><p> (2) 在“乒乓球”移位一次的過程中,進(jìn)行50次測(cè)試,查詢接球方是否有擊球動(dòng)作。</p><p> (3) 接球方的擊球動(dòng)作應(yīng)發(fā)生在“乒乓球”到達(dá)最后一位LED1秒鐘時(shí)間之內(nèi)。如接球方在此1秒鐘時(shí)間之內(nèi)按鍵,則接球成功,接球方得分?!捌古仪颉?/p>
6、轉(zhuǎn)為相反方向運(yùn)動(dòng)。此后,原接球方變?yōu)榘l(fā)球方,原發(fā)球方變?yōu)榻忧蚍?。游戲繼續(xù)進(jìn)行。</p><p> (4) 如接球方提前或滯后擊球,則接球方失誤,雙方都不得分。這時(shí)“乒乓球”熄滅,LED顯示器顯示出雙方比分,然后仍由原發(fā)球方發(fā)球。</p><p><b> 2.3 解決方案</b></p><p> 本設(shè)計(jì)采用90C51單片機(jī)系統(tǒng),任何軟
7、件的設(shè)計(jì)首先都應(yīng)該對(duì)模型進(jìn)行抽象畫,使用實(shí)用化語言對(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)。</p><p> 是否準(zhǔn)確擊球是具體體現(xiàn)為:若有鍵按下時(shí)則先判斷A還是B擊球,再根據(jù)球所在位置就可以判斷擊球準(zhǔn)確還是失球。比如現(xiàn)在A按鍵擊
8、球,而同時(shí)LED當(dāng)前顯示值為01H,則判斷A正確擊球,反之若LED點(diǎn)亮處于其他任何狀態(tài)都判A失球B得分,同樣B的有效擊球時(shí)間應(yīng)為L(zhǎng)ED顯示值為80H額時(shí)間段內(nèi),其他時(shí)間段B有擊球動(dòng)作都判B時(shí)分。</p><p> 球移動(dòng)的動(dòng)作抽象到系統(tǒng)模型即為L(zhǎng)ED的逐個(gè)點(diǎn)亮,而具體設(shè)計(jì)程序時(shí),需要設(shè)計(jì)一個(gè)LED顯示的子程序,再用不同的亮燈數(shù)值通過調(diào)用LED顯示子程序刷新LED顯示即可完成。另外定時(shí)中斷在本實(shí)驗(yàn)中也有相當(dāng)大的
9、比重,LED逐個(gè)點(diǎn)亮的時(shí)間間隔,擊球是否在規(guī)定時(shí)間內(nèi)完成,這些都需要使用定時(shí)器來產(chǎn)生所需要的時(shí)間標(biāo)度。</p><p><b> 3 硬件設(shè)計(jì)</b></p><p> 3.1 I/O地址分配</p><p> 由90C51組成的單片機(jī)系統(tǒng)通常情況下,P0口分時(shí)復(fù)用作為地址、數(shù)據(jù)總線,P2口提供A15-A8即高8位地址,P3口用作第二功能
10、,只有P1口通常用作I/O口。8051的P1口作為基本I/O口使用,P1口是8位準(zhǔn)雙向口,它的每一位都可獨(dú)立地定義為輸入或輸出,因此,既可作為8位的并行I/O口,也可作為8為的輸入輸出端。</p><p> 3.2 系統(tǒng)硬件模擬圖</p><p> 本設(shè)計(jì)采用硬件與軟件相結(jié)合,對(duì)所求題目進(jìn)行仿真,proteus仿真圖如圖3.1所示,硬件實(shí)物圖如圖3.2所示。</p>&l
11、t;p> 圖3.1 proteus硬件電路圖</p><p><b> 4 軟件設(shè)計(jì)</b></p><p> 主程序流程圖如圖4.1所示。</p><p> 具體程序見附錄。5 總結(jié)</p><p> 本課程設(shè)計(jì)經(jīng)過了三個(gè)階段的程序設(shè)計(jì),第一階段是了解打乒乓球的工作方式及其原理,確定設(shè)計(jì)的方向與方法以及
12、確定設(shè)計(jì)過程中需要的軟件及工具。第二階段是熟悉用keil軟件編寫C語言的方法,這一階段側(cè)重于對(duì)C語言的基本掌握,第三階段是學(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)了正常打乒乓球。</p><p> 在本課程設(shè)計(jì)中,最初遇到了很多的棘手問題,比如如何實(shí)現(xiàn)發(fā)球的控制。
13、通過查閱大量資料和虛心請(qǐng)教他人慢慢解決掉了設(shè)計(jì)過程中遇到的這一系列的問題。</p><p> 本設(shè)計(jì)也存在一些不足,比如記分板顯示并不清晰,只能單方發(fā)球。因此,這需要改進(jìn)。</p><p><b> 參考文獻(xiàn)</b></p><p> [1] 李華,王思明.單片機(jī)應(yīng)用及原理[M].蘭州大學(xué)出版社,2001:30-40.</p>
14、<p> [2] 李廣弟.單片機(jī)基礎(chǔ)[M].北京航空航天大學(xué)出版社,1994:45-48.</p><p> [3] 房小翠.單片機(jī)實(shí)用系統(tǒng)設(shè)計(jì)技術(shù)[M].國(guó)防工業(yè)出版社,1999:33-45.</p><p> [4] 張金敏,董海棠.單片機(jī)原理與應(yīng)用系統(tǒng)設(shè)計(jì)[M].西南交通大學(xué)出版社,2010:35-56.</p><p><b>
15、 附錄</b></p><p> #include<reg52.h></p><p> /*******************************************宏定義***************************************************/</p><p> #define uint un
16、signed int</p><p> #define uchar unsigned char</p><p> sbit LSB=P1^0;</p><p> sbit RSB=P1^1;</p><p> uchar d_s=2;</p><p> bit HLSB=0;</p><
17、p> bit HRSB=0;</p><p> uchar code wei_code[]={0x0e,0x0d,0x0b,0x07};</p><p> uchar code duan_code[]={~0x3F, ~0x06, ~0x5B, ~0x4F, ~0x66, ~0x6D, ~0x7D, ~0x07, ~0x7F, ~0x6F};</p><p&
18、gt; uchar code dis_led[] = {0xff,0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f,0xff};</p><p> uchar i=0,num=0;</p><p> uchar Li=0,Ri=0;</p><p> uchar count=0;</p><p> uc
19、har LN=0,RN=0;</p><p> uchar dis[]={0x3f,0x3f,0x3f,0x3f};</p><p> void TimeInit(void)</p><p><b> {</b></p><p> TMOD=0X11;</p><p> TH0=(655
20、36-50000)/256;</p><p> TL0=(65536-50000)%256;</p><p> TH1=(65536-6000)/256;</p><p> TL1=(65536-6000)%256;</p><p><b> ET0=1;</b></p><p><
21、b> TR0=1;</b></p><p><b> ET1=1;</b></p><p><b> TR1=1;</b></p><p><b> EA=1;</b></p><p><b> }</b></p>
22、<p> void ReadLK(void)</p><p><b> {</b></p><p> if(HLSB==1&&LSB==0)</p><p><b> {</b></p><p><b> if(i==1)</b></
23、p><p><b> d_s=1;</b></p><p><b> if(i==9)</b></p><p><b> {</b></p><p><b> i=1;</b></p><p><b> d_s=1;
24、</b></p><p><b> }</b></p><p><b> }</b></p><p><b> HLSB=LSB;</b></p><p><b> }</b></p><p> void Re
25、adRK(void)</p><p><b> {</b></p><p> if(HRSB==1&&RSB==0)</p><p><b> {</b></p><p><b> if(i==8)</b></p><p><
26、;b> d_s=0;</b></p><p><b> if(i==0)</b></p><p><b> {</b></p><p><b> i=8;</b></p><p><b> d_s=0;</b></p>
27、;<p><b> }</b></p><p><b> }</b></p><p><b> HRSB=RSB;</b></p><p><b> }</b></p><p> void discode(void)</p&g
28、t;<p><b> {</b></p><p> dis[0]=LN/10;</p><p> dis[1]=LN%10;</p><p> dis[2]=RN/10;</p><p> dis[3]=RN%10;</p><p><b> }</b&g
29、t;</p><p><b> main()</b></p><p><b> {</b></p><p> TimeInit();</p><p><b> while(1)</b></p><p><b> {</b>
30、</p><p><b> ReadRK();</b></p><p><b> ReadLK();</b></p><p> P0=dis_led[i];</p><p> discode();</p><p><b> }</b></
31、p><p><b> }</b></p><p> void timer0() interrupt 1</p><p><b> {</b></p><p> TH0 = (65536 - 50000) / 256;</p><p> TL0 = (65536 - 50
32、000) % 256; //給T1裝初值</p><p><b> num++;</b></p><p> if(num==10)</p><p><b> {</b></p><p><b> Li=i;</b></p><p><
33、;b> Ri=i;</b></p><p> if(d_s==1)</p><p><b> i++;</b></p><p> else if(d_s==0)</p><p><b> i--;</b></p><p> else if(d_s
34、==2)</p><p><b> i=i;</b></p><p><b> num=0;</b></p><p> if(Li==8&&i==9)</p><p><b> {</b></p><p><b> d
35、_s=2;</b></p><p><b> LN++;</b></p><p><b> }</b></p><p> if(Li==1&&i==0)</p><p><b> {</b></p><p><b
36、> d_s=2;</b></p><p><b> RN++;</b></p><p><b> }</b></p><p><b> }</b></p><p> if(i>9)i=9;</p><p> if(i&
37、lt;0)i=0;</p><p><b> }</b></p><p> /***************************************顯示數(shù)據(jù)*********************************************/</p><p> void timer1() interrupt 3</p
38、><p><b> {</b></p><p> TH1 = (65536 - 6000) / 256;</p><p> TL1 = (65536 - 6000) % 256;</p><p> P2=duan_code[dis[count]];</p><p> P3=wei_code[
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝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ù)僅提供信息存儲(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- eda課程設(shè)計(jì)--乒乓球游戲機(jī)
- 數(shù)電課程設(shè)計(jì)乒乓球游戲機(jī)
- eda課程設(shè)計(jì)乒乓球游戲機(jī)報(bào)告
- 乒乓球游戲模擬設(shè)計(jì)課程設(shè)計(jì)
- 數(shù)電課程設(shè)計(jì)--乒乓球游戲設(shè)計(jì)
- 電子技術(shù)課程設(shè)計(jì)--乒乓球游戲機(jī)
- 電子技術(shù)乒乓球比賽游戲機(jī)課程設(shè)計(jì)
- 微機(jī)原理課程設(shè)計(jì)--乒乓球比賽游戲機(jī)的設(shè)計(jì)
- 單片機(jī)課程設(shè)計(jì)-單片機(jī)課程設(shè)計(jì)---電子時(shí)鐘
- 數(shù)字邏輯課程設(shè)計(jì)--模擬乒乓球比賽
- 課程設(shè)計(jì)--乒乓球比賽游戲機(jī)設(shè)計(jì)
- 單片機(jī)課程設(shè)計(jì)
- 單片機(jī)課程設(shè)計(jì)
- 單片機(jī)課程設(shè)計(jì)
- 單片機(jī)課程設(shè)計(jì)
- 單片機(jī)課程設(shè)計(jì)--單片機(jī)串行通訊
- 單片機(jī)秒表單片機(jī)課程設(shè)計(jì)
- 單片機(jī)課程設(shè)計(jì)
- 單片機(jī)課程設(shè)計(jì)---單片機(jī)數(shù)字時(shí)鐘
- 乒乓球課程論文
評(píng)論
0/150
提交評(píng)論