微型計(jì)算機(jī)原理與接口技術(shù)課程設(shè)計(jì)兵乓球比賽_第1頁(yè)
微型計(jì)算機(jī)原理與接口技術(shù)課程設(shè)計(jì)兵乓球比賽_第2頁(yè)
微型計(jì)算機(jī)原理與接口技術(shù)課程設(shè)計(jì)兵乓球比賽_第3頁(yè)
微型計(jì)算機(jī)原理與接口技術(shù)課程設(shè)計(jì)兵乓球比賽_第4頁(yè)
微型計(jì)算機(jī)原理與接口技術(shù)課程設(shè)計(jì)兵乓球比賽_第5頁(yè)
已閱讀5頁(yè),還剩11頁(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、河南理工大學(xué)計(jì)算機(jī)科學(xué)與技術(shù)學(xué)院課程設(shè)計(jì)報(bào)告2013 2014學(xué)年第 2學(xué)期課程名稱 微機(jī)原理與接口技術(shù)課程設(shè)計(jì)設(shè)計(jì)題目 兵乓球比賽 學(xué)生姓名 陳闖 學(xué) 號(hào) 311109010209 專業(yè)班級(jí) 計(jì)算機(jī)科學(xué)與技術(shù)2班 指導(dǎo)教師 李長(zhǎng)青 2014 年 3月 6 日15目錄一、設(shè)計(jì)題目21.1設(shè)計(jì)的題目:2二、設(shè)計(jì)要求與目的22.1設(shè)計(jì)的要求:22.2設(shè)計(jì)的目的2三、設(shè)計(jì)方案23.1設(shè)計(jì)原理23.2 設(shè)計(jì)思路33.2.1提出方案33.2.2方案論證3四、原理分析4五、硬件設(shè)計(jì)5六、軟件分析66.1軟件流程66.2源程序:7七、總結(jié)與展望14八、參考文獻(xiàn)15一、設(shè)計(jì)題目1.1設(shè)計(jì)的題目:兵乓球比賽。二

2、、設(shè)計(jì)要求與目的2.1設(shè)計(jì)的要求:用8個(gè)LED發(fā)光管(4紅4綠)的來(lái)回滾動(dòng)顯示模擬打乒乓球時(shí),乒乓球在兩邊球臺(tái)上的來(lái)回運(yùn)動(dòng)。比賽雙方用按按鈕(雙方各用一個(gè)按鈕)的方法來(lái)模擬發(fā)球與接球,即發(fā)球方按動(dòng)其控制的按鈕,球從發(fā)球方一側(cè)向?qū)Ψ竭\(yùn)動(dòng)(LED發(fā)光管從發(fā)球方到對(duì)方逐個(gè)點(diǎn)亮,滾動(dòng)顯示)。當(dāng)球運(yùn)動(dòng)至接球方時(shí),接球方立即按動(dòng)其控制的按鈕,“擊球”使球“彈回”發(fā)球方一側(cè)。如此周而復(fù)始,直至在規(guī)定的擊球時(shí)間內(nèi)有一方未能完成擊球動(dòng)作,從而對(duì)方得一分;然后繼續(xù)比賽。比賽規(guī)則可參照一般的乒乓球比賽。2.2設(shè)計(jì)的目的:通過(guò)課程設(shè)計(jì)及研究論文,使學(xué)生對(duì)計(jì)算機(jī)系統(tǒng)尤其對(duì)計(jì)算機(jī)硬件系統(tǒng)有更深入的理解,并具有較簡(jiǎn)單的計(jì)算

3、機(jī)應(yīng)用的設(shè)計(jì)能力。三、設(shè)計(jì)方案3.1設(shè)計(jì)原理根據(jù)課程設(shè)計(jì)任務(wù)書的內(nèi)容與要求,要實(shí)現(xiàn)模擬打乒乓球的運(yùn)動(dòng)過(guò)程,首先使比賽開(kāi)始,假定甲先發(fā)球,小球向乙方向運(yùn)動(dòng),然后乙揮拍擊球?qū)⑶虼蚧?,小球向甲方向運(yùn)動(dòng),如此循環(huán),當(dāng)某一方擊球失誤(過(guò)早或是超時(shí)擊球),則為對(duì)方加分,最后將比分顯示出來(lái)。3.2 設(shè)計(jì)思路編寫匯編語(yǔ)言程序,并結(jié)合AEDK實(shí)驗(yàn)箱上的相關(guān)芯片設(shè)計(jì)電路,實(shí)現(xiàn)模擬打乒乓球的過(guò)程(開(kāi)始,揮拍,球移動(dòng),加分,顯示分?jǐn)?shù)等功能)。3.2.1提出方案用8255A的A口作為輸出端,分別與機(jī)箱上的8個(gè)小燈相連,向A口輸出一個(gè)值,使相應(yīng)的一個(gè)小燈亮,然后利用循環(huán)左移和右移發(fā)光的小燈來(lái)模擬實(shí)現(xiàn)乒乓球的實(shí)際運(yùn)動(dòng)軌跡。

4、每當(dāng)小燈亮?xí)r,就檢測(cè)有無(wú)鍵按下,如果無(wú)鍵按下,小燈繼續(xù)移動(dòng)并繼續(xù)檢測(cè)有無(wú)鍵按下;如果有鍵按下并且鍵碼值等于所按下的對(duì)應(yīng)鍵,則讀出8255A的A口的值,看其是否等于小球到達(dá)正確位置時(shí)對(duì)應(yīng)的值,如果相等小球自動(dòng)返回,如果不等則調(diào)用加分程序,為對(duì)方加分。設(shè)置適當(dāng)大小的緩沖區(qū),將所有比賽的比分放在此緩沖區(qū)內(nèi),利用8279A將比分輸出顯示在LED上(分兩部分:1)每局的比分2)比賽的局分)。3.2.2方案論證利用8279A芯片的鍵盤輸入來(lái)實(shí)現(xiàn)比賽開(kāi)始和甲、乙的揮拍(F鍵為開(kāi)始鍵,0鍵為甲,7鍵為乙),用8279A的LED顯示來(lái)實(shí)現(xiàn)比分的顯示。利用8255A的A口作為輸出來(lái)模擬小球的運(yùn)動(dòng)情況,假定甲先發(fā)球

5、,為其設(shè)置一個(gè)初始值,低電平燈亮,使最左邊的燈亮,調(diào)用循環(huán)右移程序,小燈依次向右亮,按下7鍵,判斷是否是在小球到達(dá)最右邊時(shí)按下的,如果是,調(diào)用循環(huán)左移程序,小燈依次向左亮,如果乙擊球提前或是超時(shí),則給對(duì)方加分,同理循環(huán)下去。甲和乙的比分放在不同緩沖區(qū)內(nèi)累加,當(dāng)有一方得分滿11分時(shí),總局比分加一,此時(shí)比賽中止,再次按下開(kāi)始鍵后,單局比分清零,總局分不變,另一方發(fā)球,重新積分。經(jīng)實(shí)際連線操作,所得現(xiàn)象與預(yù)期的相一致,方案成功。四、原理分析18253定時(shí)器選用方式0,實(shí)現(xiàn)定時(shí)功能。兩個(gè)七段數(shù)碼管要實(shí)現(xiàn)連續(xù)顯示,必須每隔510ms刷新一次,而燈移動(dòng)速度為300500ms。設(shè)定定時(shí)周期為5ms,當(dāng)計(jì)數(shù)停

6、止,8253輸出高電平時(shí),分別顯示比分的高位和低位。經(jīng)過(guò)一定數(shù)量的定時(shí)周期后,再進(jìn)行燈移動(dòng)的操作。28255并行接口A口B口分別用來(lái)控制LED流水燈及數(shù)碼管的顯示,C口則用于讀入各開(kāi)關(guān)狀態(tài)及輸出數(shù)碼管片選信號(hào)。3單脈沖開(kāi)關(guān)模擬擊球,當(dāng)8255讀入脈沖信號(hào)為高電平時(shí),通過(guò)判斷燈當(dāng)前移動(dòng)方向和擊球者,來(lái)確定燈下一次的移動(dòng)方向。4LED流水燈表示乒乓球移動(dòng),燈每次移動(dòng)應(yīng)留有足夠的時(shí)間給操作者撥動(dòng)調(diào)速開(kāi)關(guān),或按下脈沖開(kāi)關(guān)。5七段數(shù)碼管與比賽同步顯示比分,顯示0f相應(yīng)的16進(jìn)制控制數(shù)為0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,

7、0x39,0x5e,0x7b,0x71。五、硬件設(shè)計(jì)六、軟件分析6.1軟件流程6.2源程序:程序源代碼如下:(含注解)/-/ File Name: table tennis.cpp/ Version: 1.0標(biāo)準(zhǔn)版/ Created By: 楓飛/ Created date: 01/12/2010/ Description: 實(shí)現(xiàn)可記分、判斷勝負(fù),可速度調(diào)整的乒乓球?qū)Υ?/-#include #include #include #include #include ApiEx.h#pragma comment(lib,ApiEx.lib)int pa=0x280;int pb=0x281;int

8、 pc=0x282;int pn1=0x283;int p0=0x288;int p1=0x289;int p2=0x28a;int pn2=0x28b;int s16=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x7b,0x71;/ 0 1 2 3 4 5 6 7 8 9 a b c d e f void leddic(unsigned char &led, int f) /燈移動(dòng)函數(shù)int x=led;if(f=0) x=x/2; /若方向向右,燈向右移動(dòng)一個(gè)else if(f=1) x=x*

9、2; /若方向向左,燈向左移動(dòng)一個(gè)else printf(Error!);led=x;void speed(int &s) /球速控制,從8255C口讀入開(kāi)關(guān)狀態(tài), /若為高電平,調(diào)整速度為高速unsigned char data;int x;PortReadByte(pc,&data);x=data;x=x&4;if(x=0) s=100; /默認(rèn)5*100msif(x=1) s=60; /高速5*60msvoid scorem(int m) /通過(guò)數(shù)碼管顯示比分unsigned char data;data=sm;PortWriteByte(pc,0x20); /選擇數(shù)碼管高位PortWr

10、iteByte(pa,data); /顯示甲得分void scoren(int n)unsigned char data;data=sn;PortWriteByte(pc,0x10); /選擇數(shù)碼管低位PortWriteByte(pa,data); /顯示乙得分void start(unsigned char &led, int &f,int &s,int m,int n) /發(fā)球子函數(shù)unsigned char data;int x;PortWriteByte(pn2,0x57); /8253計(jì)數(shù)器1初始化,低八位,方式3,控制字01010111BPortWriteByte(p1,0x10)

11、; /8253計(jì)數(shù)器1計(jì)數(shù)初值10for(;1=2)|(m11)&(m-n=2) /判斷整局比賽的勝負(fù)printf(此局甲獲勝!重新計(jì)分!nnn);m=n=0;else if(n=11)&(n-m=2)|(n11)&(n-m=2)printf(此局乙獲勝!重新計(jì)分!nnn);m=n=0;void attack(unsigned char &led,int &s, int &f,int &m,int &n) /擊球子函數(shù)unsigned char data;int x,y;STA: printf(請(qǐng)發(fā)球!n);start(led,f,s,m,n);PortWriteByte(pn2,0x51);

12、 /8253計(jì)數(shù)器1初始化,低八位,方式0,控制字01010001BRed:PortWriteByte(pb,led);for(int i=1;i=0x10) /球靠近甲且甲擊球f=0; /調(diào)整球的運(yùn)動(dòng)方向?yàn)橄蛴襡lse /球向右運(yùn)動(dòng)x=data;x=x&2;if(x=2)&(led=0x8) /球靠近乙且乙擊球f=1; /調(diào)整球的運(yùn)動(dòng)方向?yàn)橄蜃髄eddic(led,f);out(led,f,m,n);if(led=0x0)PortWriteByte(pb,led);goto STA;goto Red;void main()unsigned char led;int f=1,s=0; /f為燈

13、移動(dòng)方向,默認(rèn)向右;s為燈移動(dòng)速度int m=0,n=0; /m為甲得分,n為乙得分Startup(); /打開(kāi)設(shè)備PortWriteByte(pn1,0x81); /8255初始化,A口B口輸出, /C口高位輸出,低位輸入,控制字10000001BPortWriteByte(pn2,0x27); /8253計(jì)數(shù)器0初始化,高八位,方式3,控制字00100111BPortWriteByte(p0,0x20); /8253計(jì)數(shù)器0計(jì)數(shù)初值2000attack(led,s,f,m,n); /調(diào)用擊球子函數(shù)Cleanup(); /關(guān)閉設(shè)備七、總結(jié)與展望通過(guò)這次課程設(shè)計(jì),我對(duì)8255A、8279A等芯

14、片有了更進(jìn)一步的認(rèn)識(shí),對(duì)它們的功能也有了更深的了解。通過(guò)這次課程設(shè)計(jì),讓我對(duì)上學(xué)期微機(jī)原理與接口技術(shù)的課程內(nèi)容得到了具體的應(yīng)用,也更加深了對(duì)這門課的理解,尤其是計(jì)算機(jī)的工作原理,計(jì)算機(jī)的數(shù)據(jù)通路和指令系統(tǒng)等方面。同時(shí),通過(guò)這次實(shí)驗(yàn),我對(duì)如何做硬件實(shí)驗(yàn)有了更進(jìn)一步的感性認(rèn)識(shí),特別是對(duì)用軟件來(lái)設(shè)計(jì)硬件這一部分增加了實(shí)際操作的經(jīng)驗(yàn)。我體會(huì)到了用軟件設(shè)計(jì)硬件的優(yōu)點(diǎn),人們可以把軟件和硬件的特點(diǎn)結(jié)合起來(lái),從而加快硬件升級(jí)的速度并降低硬件設(shè)計(jì)的成本,并使得硬件開(kāi)發(fā)更加容易維護(hù)。忽然想到大學(xué)云:“知止而后有定,定而后能靜,靜而后能安,安而后能慮,慮而后能得。”課程設(shè)計(jì)亦不出其外。首先,知止,明確目的,明確要做

15、出來(lái)的是怎樣一個(gè)產(chǎn)品;然后,就有了定,有了開(kāi)發(fā)的方向,有了前進(jìn)的目標(biāo),有了基本點(diǎn)來(lái)使自己設(shè)計(jì)不致走偏離;從而,能夠靜,因?yàn)椴慌伦约核叩姆较虿皇亲约旱淖罱K目的,因?yàn)槊鞔_了自己要做的東西到底是怎樣一回事,所謂“知己知彼,百戰(zhàn)不殆”,所以能夠靜心;而后,能夠安,靜心之后,心中無(wú)生非念,故而可以安心;而后,能夠慮,因?yàn)榘残闹?,才能沉下?lái)思索,安心之后,才能透過(guò)現(xiàn)象看本質(zhì),安心之后,才能頓悟深刻道理,安心之后,才能想象勾畫出自己的流程圖;最后,必然能夠得,因?yàn)槟軌虬察o地沉下心來(lái)覃思,能夠想出畫出流程圖來(lái),盡心力而為之,必然可以按照流程圖上的得著自己的目的。與此同時(shí)我還要感謝老師和同學(xué)們?cè)谡n設(shè)過(guò)程中對(duì)我的指導(dǎo)和幫助,如果沒(méi)有他們的幫助,也許我

溫馨提示

  • 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ù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 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)論