競(jìng)賽搶答器課程設(shè)計(jì)-微機(jī)接口課程設(shè)計(jì)報(bào)告_第1頁(yè)
已閱讀1頁(yè),還剩16頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、<p><b>  計(jì)算機(jī)科學(xué)與技術(shù)系</b></p><p><b>  微機(jī)原理與接口技術(shù)</b></p><p><b>  課程設(shè)計(jì)報(bào)告</b></p><p>  2008~2009學(xué)年第2學(xué)期</p><p>  2009 年 2月</p>

2、<p>  一、題義分析及解決方案</p><p><b>  1.題義需求分析</b></p><p>  題目要求利用8086系統(tǒng)接口電路設(shè)計(jì)一個(gè)可供八人競(jìng)賽使用的搶答器,并顯示競(jìng)答者編號(hào)(1~8)。</p><p>  根據(jù)題義可知:本設(shè)計(jì)是要設(shè)計(jì)一個(gè)能夠提供給8個(gè)人使用的競(jìng)賽搶答裝置,能夠使得搶答者的編號(hào),顯示的裝置。首先

3、是主持人發(fā)出搶答允許信號(hào),當(dāng)搶答者收到信號(hào)后,便立刻進(jìn)行搶答,然后通過裝置,將最先搶答者的編號(hào)顯示出來。</p><p>  根據(jù)以上分析,提出以下幾個(gè)問題:</p><p> ?、僦鞒秩巳绾伟l(fā)出搶答的信息?</p><p>  ②競(jìng)賽者如何進(jìn)行搶答?</p><p> ?、廴绾螌⒎直鎿尨鸬捻樞?,誰是最先搶答的?</p><

4、;p> ?、苋绾物@示搶答者的編號(hào)?</p><p> ?、輷尨鸬目傮w規(guī)則是什么?怎樣控制?</p><p>  2.解決問題的思路及其方法</p><p><b>  1)硬件部分</b></p><p>  (1)主控裝置,由主持人控制決定搶答有效與無效,共兩個(gè)量,因而考慮到邏輯開關(guān)、微動(dòng)開關(guān)和小鍵盤,主控完成的

5、是保持有效與無效兩種狀態(tài),而微動(dòng)開關(guān)是輸入一個(gè)脈沖,故不符合要求,小鍵盤雖然可以實(shí)現(xiàn),但相對(duì)復(fù)雜,不便于實(shí)現(xiàn)。邏輯開關(guān)能很好地符合要求,優(yōu)點(diǎn)是簡(jiǎn)單、易操作。本實(shí)驗(yàn)使用新實(shí)驗(yàn)箱,芯片8255的A、B、C口均被使用,故不能實(shí)現(xiàn)該主控功能,但設(shè)計(jì)思想中應(yīng)包含此方面,以便設(shè)計(jì)完備。</p><p> ?。?)搶答裝置,由競(jìng)賽選手搶答使用,每一個(gè)選手在搶答時(shí)均有兩種選擇情況,搶答或不搶答,同主控裝置道理一樣,“1”表示搶答

6、動(dòng)作發(fā)生,“0”表示不搶答,可見,邏輯開關(guān)可方便實(shí)現(xiàn),微動(dòng)開關(guān)同樣滿足要求。然而現(xiàn)實(shí)生活中,更合理的應(yīng)采用微動(dòng)開關(guān)按鍵式完成搶答動(dòng)作,以符合現(xiàn)實(shí)要求。</p><p>  (3)顯示裝置,可選擇LCD或LED,由于這里的輸出結(jié)果是選手編號(hào),比較簡(jiǎn)單,用LED即可實(shí)現(xiàn),用LCD也可以實(shí)現(xiàn),但相對(duì)復(fù)雜,且LCD價(jià)格高,故選LED。實(shí)現(xiàn)時(shí)可采用一人一個(gè)發(fā)光二極管,但這樣在搶答時(shí)不便于觀察與先后比較,所以選用七段LED數(shù)

7、碼顯示最后竟比較先后處理過的數(shù)字編號(hào)。</p><p> ?。?)規(guī)則設(shè)定,對(duì)于規(guī)則要用到可編程芯片,因?yàn)閾尨鸾Y(jié)果的多種情況需要作不同的處理,要有硬件實(shí)現(xiàn)。由于是八位選手在同一個(gè)時(shí)間段均可搶答,輸入搶答信號(hào),所以應(yīng)并行而不是串行。可編程芯片有8253、8251A以及8255等,8253主要用于定勢(shì)和計(jì)時(shí)器用,它的6種工作方式多以觸發(fā)方式,故不適用。8251A用于通信借口,并且是串行的,也不可用。而8255恰很好的

8、滿足需求,是并行接口芯片,所以選用8255。</p><p> ?。?)接口實(shí)現(xiàn),8086CPU與8255之間的數(shù)據(jù)總線經(jīng)數(shù)據(jù)總線收發(fā)器相連,地址線經(jīng)地址鎖存器相連,八個(gè)邏輯開關(guān)K0~K7分別連接到8255的輸入口PA0~PA7,輸出口PB0~PB7連接到七段LED顯示器。在8255與LED連接時(shí),要留心參數(shù)是否匹配,能否成功驅(qū)動(dòng)LED顯示,LED的標(biāo)準(zhǔn)編碼及顯示數(shù)字如下表所示:</p><p

9、>  表1-1 LED的標(biāo)準(zhǔn)編碼</p><p>  通過上表,我們需要用到的編碼是0、1、2、3、4、5、6、7、8、E, LED完全符合要求,每一位選手的編號(hào),顯示裝置采用七段LED二極管顯示八位選手的編號(hào),即為搶答結(jié)果。</p><p><b>  2)軟件部分</b></p><p>  對(duì)于設(shè)計(jì)中的搶答規(guī)則由軟件來實(shí)現(xiàn),考慮到8

10、位選手的各自按下?lián)尨鹧b置與自己的編號(hào)間的對(duì)應(yīng)關(guān)系,8個(gè)信號(hào)有可能在同一時(shí)間段內(nèi)有兩個(gè)或以上信號(hào)輸入,各自之間在時(shí)間上不會(huì)牽制,即涉及并行的方式輸入,后要對(duì)輸入的開關(guān)量進(jìn)行處理、輸出,連接至LED顯示,其中需有一主控裝置,據(jù)此結(jié)合課程的所學(xué)的相關(guān)知識(shí)可知,使用可編程并行接口芯片8255能夠滿足要求,實(shí)現(xiàn)相關(guān)功能。實(shí)現(xiàn)時(shí),可設(shè)置8255的A口作為八個(gè)輸入信號(hào),用邏輯電平開關(guān)K0—K7代表?yè)尨鹧b置的搶答開關(guān)1—8號(hào)。當(dāng)某個(gè)微動(dòng)開關(guān)置“0”時(shí),

11、顯示有效,當(dāng)有兩個(gè)或以上選手同時(shí)按下?lián)尨鹌鲿r(shí),信號(hào)無效,顯示“E”。將B口輸出信號(hào)與7段LED的a—dp連接,即可用LED顯示器輸出搶答結(jié)果。在實(shí)驗(yàn)中需設(shè)置C口位控制選用新實(shí)驗(yàn)箱的八個(gè)LED顯示中的一個(gè)。</p><p><b>  二、硬件設(shè)計(jì)</b></p><p><b>  1) 8255芯片</b></p><p&g

12、t;  (1) 8255引腳圖</p><p>  8255是可編程并行接口,內(nèi)部有3個(gè)相互獨(dú)立的8位數(shù)據(jù)端口,即A口B口和C口。三個(gè)端口都可以作為輸入端口或輸出端口。A口有三種工作方式:即方式0、方式1和方式2,而B口只能工作在方式0或方式1下,而C口通常作為聯(lián)絡(luò)信號(hào)使用。8255的工作只有當(dāng)片選CS有效時(shí)才能進(jìn)行。而控制邏輯端口實(shí)現(xiàn)對(duì)其他端口的控制。</p><p><b>

13、  (2) CPU接口</b></p><p><b>  1.數(shù)據(jù)總線緩沖器</b></p><p>  這是一個(gè)8位雙向三態(tài)緩沖器,三態(tài)是由讀/寫控制邏輯控制的。這個(gè)緩沖器是8255A與CPU數(shù)據(jù)總線的接口。</p><p><b>  2.讀/寫控制邏輯</b></p><p> 

14、 它與CPU的6根控制線相連,控制8255A內(nèi)部的各種操作??刂凭€RESET用來使8255A復(fù)位。和地址線A1及A0用于芯片選擇和通道尋址。控制線用來決定8位內(nèi)部和外部數(shù)據(jù)總線上信息傳送的方向,即控制把CPU的控制命令或輸出的數(shù)據(jù)送到相應(yīng)的通道,或把狀態(tài)信息或輸入數(shù)據(jù)送到CPU。8255A的讀/寫控制邏輯的作用,是從CPU的地址和控制總線上接受輸入的信號(hào),轉(zhuǎn)變成各種命令送到A組或B組控制電路進(jìn)行相應(yīng)的操作。 </p>&l

15、t;p>  (3) 8255A的引腳信號(hào)</p><p><b>  1.與外設(shè)相連的</b></p><p>  PA7~PA0:A口數(shù)據(jù)信號(hào)線。</p><p>  PB7~PB0:B口數(shù)據(jù)信號(hào)線。</p><p>  PC7~PC0:C口數(shù)據(jù)信號(hào)線。</p><p><b>

16、  2.與CPU相連的</b></p><p>  RESET:復(fù)位信號(hào)。當(dāng)此信號(hào)來時(shí),所有寄存器都被清除。同時(shí)三個(gè)數(shù)據(jù)端口被自動(dòng)置為輸入端口。</p><p>  D7~D0:它們是8255A的數(shù)據(jù)線和系統(tǒng)總線相連。</p><p>  CS:片選信號(hào)。在系統(tǒng)中,一般根據(jù)全部接口芯片來分配若于低位地址組成各種芯片選擇碼,當(dāng)這幾位地址組成某一個(gè)低電平,于

17、8255A被選中。只有當(dāng)有效時(shí),讀信號(hào)寫才對(duì)8255進(jìn)行讀寫。 </p><p>  RD:讀信號(hào)。當(dāng)此信號(hào)有效時(shí),CPU可從8255A中讀取數(shù)據(jù)。</p><p>  WR:寫信號(hào)。當(dāng)此信號(hào)有效時(shí),CPU可向8255A中寫入數(shù)據(jù)。</p><p>  A1、A0:端口選擇信號(hào)。8255A內(nèi)部有3個(gè)數(shù)據(jù)端口和1個(gè)控制端口,共4個(gè)端口。規(guī)定當(dāng)A1、A0:為00時(shí),選中

18、A端口;為01時(shí),選中B端口;為10時(shí),選中C端口;為11時(shí),選中控制口。</p><p>  表2-1 8255A的技術(shù)參數(shù)</p><p>  輸入最低電壓:min -0.5V,max 0.8 V,輸入最高電壓:2.0 V。輸出最低電壓:0.45 V,輸出最高電壓:2.4 V。</p><p>  (3)8255A的方式控制字</p><p&

19、gt;  D7 D6 D5 D4 D3 D2 D1 D0</p><p>  1:工作方式 A口方式0輸入 B口方式0輸出</p><p>  C口高4位輸出 C口低4位輸出</p><p>  圖2-1 8255A

20、的方式控制字</p><p>  方式0的工作特點(diǎn)是通常不用聯(lián)絡(luò)信號(hào),不使用中斷,三個(gè)通道中的每一個(gè)都有可以由程序選定為輸入或輸出。其功能為:</p><p> ?、賰蓚€(gè)8位通道:通道A、B。兩個(gè)四位通道:通道C高四位和低四位;</p><p> ?、谌魏我粋€(gè)通道可以作輸入/輸出;</p><p><b> ?、圯敵鍪擎i存的;<

21、;/b></p><p><b> ?、茌斎胧遣绘i存的;</b></p><p> ?、菰诜绞?時(shí)各個(gè)通道的輸入/輸出可有16種不同的組合。</p><p><b>  2)顯示器件LED</b></p><p>  (1) LED在本設(shè)計(jì)中的作用</p><p>  

22、LED功能分析如下:</p><p>  1.物理構(gòu)造:LED發(fā)光二級(jí)管,采用砷化鎵、鎵鋁砷、和磷化鎵等材料制成,其內(nèi)部結(jié)構(gòu)為一個(gè)PN結(jié),具有單向?qū)щ娦浴?lt;/p><p>  2.工作原理:當(dāng)在發(fā)光二極管PN結(jié)上加正向電壓時(shí),PN結(jié)勢(shì)壘降低,載流子的擴(kuò)散運(yùn)動(dòng)大于漂移運(yùn)動(dòng),致使P區(qū)的空穴注入到N區(qū),N區(qū)的電子注入到P區(qū),這樣相互注入的空穴與電子相遇后會(huì)產(chǎn)生復(fù)合,復(fù)合時(shí)產(chǎn)生的能量大部分以光

23、的形式出現(xiàn)。</p><p>  3.數(shù)字成像:將七個(gè)發(fā)光管進(jìn)行組合,排列成數(shù)字圖形8,再根據(jù)需要控制七個(gè)管的亮與滅,即可顯示出定義數(shù)字。</p><p>  LED技術(shù)參數(shù)如下:</p><p>  1.發(fā)光二極管的壓降一般為1.5~2.0 V,其工作電流一般取10~20 mA為宜。</p><p>  2.發(fā)光二極管的發(fā)光顏色有:紅色光

24、、黃色光、綠色光、紅外光等。</p><p>  3.發(fā)光二極管應(yīng)用電路有四種,即直流驅(qū)動(dòng)電路、交流驅(qū)動(dòng)電路、脈沖驅(qū)動(dòng)電路、變色發(fā)光驅(qū)動(dòng)電路。</p><p>  表2-2 LED顯示管段選碼編碼表</p><p>  圖2-2 LED數(shù)碼管及其框圖</p><p>  上面兩圖分別為外形圖和原理圖,當(dāng)七段數(shù)碼管點(diǎn)亮其中幾段可顯示數(shù)字和簡(jiǎn)

25、單的字符,將七段數(shù)碼管負(fù)極連接到一起稱為公共端,而發(fā)光二極管的正極則分別由引腳引出,便于控制哪個(gè)發(fā)光二極管點(diǎn)亮。</p><p>  由于將8個(gè)發(fā)光二極管負(fù)極全部連接在一起,稱為共陰極數(shù)碼管,還有將8個(gè)發(fā)光二極管的正極連接在一起,故稱之為共陽(yáng)極數(shù)碼管。</p><p>  本次實(shí)驗(yàn)用的數(shù)碼管需動(dòng)態(tài)掃描顯示,其接口電路將所有數(shù)碼管的筆畫控制段與a~h同名端連在一起,接到一個(gè)并行端口,每個(gè)公共

26、極COM端由獨(dú)立的I/O線控制,CPU向字模輸出口送出字形碼時(shí),所有數(shù)碼管接收到相同的字形碼,究竟哪個(gè)數(shù)碼管顯示,取決于每個(gè)LED的COM端,所謂動(dòng)態(tài)掃描,就是顯示一位信息時(shí),其他位不能顯示,必須采用分時(shí)方法,輪流控制COM端。</p><p><b>  3) 微動(dòng)開關(guān)</b></p><p>  (1)微動(dòng)開關(guān)及其編碼</p><p>  

27、開關(guān)高電平:+5V、低電平:0V</p><p>  表2-4微動(dòng)開關(guān)及其編碼</p><p>  4) 硬件總邏輯圖及其說明</p><p>  圖2-3 硬件電路圖</p><p>  說明:8086的數(shù)據(jù)線接8255A的數(shù)據(jù)線,8086的地址線形成地址通過譯碼器與8255A的片選信號(hào)相連。8086的分別接8255A的A0,A1。PA0—

28、PA7接微動(dòng)開關(guān)K0—K7。PB0—PB7接顯示管的a—dp,PC0—PC7接LED顯示裝置,用于位選擇。</p><p><b>  3、控制程序說明</b></p><p>  3.1控制程序設(shè)計(jì)思路說明</p><p>  定義十六進(jìn)制數(shù)字符的七段代碼表。</p><p>  初始化8255A的工作方式。</

29、p><p><b>  置LED燈全滅。</b></p><p>  輸出顯示零表示等待搶答。</p><p>  讀A口狀態(tài),若有兩個(gè)或兩個(gè)以上的搶答信號(hào),顯示輸出E。若只有一個(gè)搶答信號(hào),則查詢輸出其編號(hào)。</p><p>  繼續(xù)觀察LED是否輸出顯示零,若為0,進(jìn)行下一次搶答。</p><p>

30、<b>  3.2程序流程圖</b></p><p>  圖3-1 程序流程圖</p><p><b>  3.3控制程序</b></p><p>  .MODELTINY</p><p>  PCIBAR3EQU1CH;8位I/O空間基地址(它就是實(shí)驗(yàn)儀的基地址, 也為DMA &

31、; 32 BIT RAM板卡上的8237提供基地址) </p><p>  Vendor_IDEQU 10EBH;廠商ID號(hào)</p><p>  Device_IDEQU8376;設(shè)備ID號(hào)</p><p>  .STACK100</p><p><b>  .DATA</b></p>

32、<p>  IO_Bit8_BaseAddressDW?</p><p>  msg0DB'BIOS不支持訪問PCI $'</p><p>  msg1DB'找不到Star PCI9052板卡 $'</p><p>  msg2DB'讀8位I/O空間基地址時(shí)出錯(cuò)$'&l

33、t;/p><p>  COM_ADD DW00F3H;控制口偏移量</p><p>  PA_ADDDW00F0H;PA口偏移量</p><p>  PB_ADDDW00F1H;PB口偏移量</p><p>  PC_ADDDW00F2H;PC口偏移量</p><p><b

34、>  .CODE</b></p><p>  START:MOV AX,@DATA</p><p>  MOV DS,AX</p><p><b>  NOP</b></p><p>  CALL InitPCI</p><p>  CALL ModifyAddres

35、s;根據(jù)PCI提供的基地址,將偏移地址轉(zhuǎn)化為實(shí)地址</p><p>  mov dx,COM_ADD ;控制口地址</p><p>  mov ax,90h ;10010000</p><p>  out dx,ax </p><p>  step0:mov ax,00h ;禁止顯示LED全滅</p><

36、;p>  mov dx,PB_ADD ;B口地址輸出</p><p><b>  out dx,ax</b></p><p>  step3:mov dx,PB_ADD</p><p>  mov ax,3fh ;輸出顯示0表示允許搶答</p><p>  out dx,ax </

37、p><p>  mov dx,PC_ADD ;設(shè)置數(shù)碼管位選碼</p><p>  mov al,7Fh ;只使用最左邊一位</p><p><b>  out dx,al</b></p><p>  step2:mov dx,PA_ADD ;通過A口地址讀輸入信號(hào)</p>

38、;<p>  in ax,dx ;讀A口狀態(tài)</p><p>  not ax ;取反,因?yàn)槲?dòng)開關(guān)按下為低電平有效</p><p>  cmp al,00h ;檢測(cè)是否有輸入</p><p>  jz step2 ;沒有則繼續(xù)檢測(cè)</p><p><b>

39、  mov dl,al</b></p><p>  mov bl,00h ;bl用于記錄有幾人同時(shí)按鍵</p><p>  mov cx,8h ;循環(huán)次數(shù)</p><p>  test1:ror dl,1 ;循環(huán)右移一位,末位進(jìn)CF</p><p>  jnc test2 ;若沒有

40、進(jìn)位,即CF=0則跳轉(zhuǎn)retest繼續(xù)測(cè)試</p><p>  inc bl ;有進(jìn)位,bl自加記錄同時(shí)搶答人數(shù)</p><p>  test2:loop test1;循環(huán)測(cè)試8次</p><p><b>  cmp bl,1</b></p><p>  ja error ;有一人以上同

41、時(shí)搶答,則報(bào)錯(cuò)</p><p>  mov bl,00h ;bl清零</p><p>  next:ror al,1 ;有搶答信號(hào)</p><p>  jc print ;有則輸出</p><p>  inc bl ;bl用來記錄是哪一位選手</p><p><b&g

42、t;  jmp next</b></p><p>  error:mov bl,8</p><p>  print:mov al,bl</p><p>  lea bx,ssegment ;查表</p><p>  xlat ;將BX的內(nèi)容(代碼表首地址)+AL的內(nèi)容(表格偏移量)作為有效地</

43、p><p>  ;址,最終內(nèi)容存入AL中</p><p>  mov dx,PB_ADD</p><p><b>  out dx,al</b></p><p>  mov dx,PC_ADD ;設(shè)置數(shù)碼管位選碼一位顯示</p><p>  mov al,7Fh ;只使用最左邊一

44、位</p><p><b>  out dx,al</b></p><p>  step5:mov dx,PA_ADD </p><p>  in ax,dx </p><p>  cmp al,0ffh ;檢測(cè)開關(guān)是否已松開</p><p>  jnz step5

45、 ;沒有松開繼續(xù)檢測(cè)</p><p><b>  jmp step6</b></p><p>  step6:mov al,cl</p><p>  mov dx,PB_ADD</p><p><b>  out dx,al</b></p><p>  mov dx,PC

46、_ADD ;設(shè)置數(shù)碼管位選碼一位顯示</p><p>  mov al,0FEh ;只使用最右邊一位</p><p><b>  out dx,al</b></p><p>  call DL500ms ;調(diào)用延遲程序</p><p>  jmp step0 </p&g

47、t;<p><b>  ssegment:</b></p><p><b>  db 06h</b></p><p><b>  db 5bh</b></p><p><b>  db 4fh</b></p><p><b>  d

48、b 66h</b></p><p><b>  db 6dh</b></p><p><b>  db 7dh</b></p><p><b>  db 07h</b></p><p><b>  db 7fh</b></p>&

49、lt;p><b>  db 79h</b></p><p>  DL500ms PROC NEAR</p><p><b>  push ax</b></p><p><b>  push dx</b></p><p>  mov dx,500</p>

50、<p>  mov ah,0ffh</p><p><b>  int 21h</b></p><p><b>  pop dx</b></p><p><b>  pop ax</b></p><p><b>  RET</b></p

51、><p>  DL500ms ENDP</p><p>  InitPCIPROCNEAR</p><p>  MOVAH,00H</p><p>  MOVAL,03H</p><p>  INT10H ;清屏</p><p>  MOVAH,0B1H</p&

52、gt;<p>  MOVAL,01H</p><p><b>  INT1AH</b></p><p><b>  CMPAH,0</b></p><p>  JZInitPCI2</p><p>  LEADX,msg0</p><p> 

53、 InitPCI1:MOVAH,09H</p><p><b>  INT21H</b></p><p><b>  JMPExit</b></p><p>  InitPCI2:MOVAH,0B1H</p><p>  MOVAL,02H</p><p&

54、gt;  MOVCX,Device_ID</p><p>  MOVDX,Vendor_ID</p><p><b>  MOVSI,0</b></p><p><b>  INT1AH</b></p><p>  JNCInitPCI3;是否存在Star PCI9052板卡<

55、;/p><p>  LEADX,msg1</p><p>  JMPInitPCI1</p><p>  InitPCI3:MOVDI,PCIBAR3</p><p>  MOVAH,0B1H</p><p>  MOVAL,09H</p><p>  INT1AH

56、 ;讀取該卡PCI9052基地址</p><p>  JNCInitPCI4</p><p>  LEADX,msg2</p><p>  JMPInitPCI1</p><p>  InitPCI4:ANDCX,0FFFCH</p><p>  MOVIO_Bit8_BaseAddress,CX&

57、lt;/p><p><b>  RET</b></p><p>  InitPCIENDP</p><p>  ModifyAddressPROCNEAR</p><p>  ADDCOM_ADD,CX</p><p>  ADDPA_ADD,CX</p><

58、p>  ADDPB_ADD,CX</p><p>  ADDPC_ADD,CX</p><p><b>  RET</b></p><p>  ModifyAddressENDP</p><p>  Exit:MOVAH,4CH</p><p><b>  I

59、NT21H</b></p><p>  ENDSTART4、上機(jī)調(diào)試過程</p><p><b>  4.1硬件調(diào)試</b></p><p>  按照硬件連接圖接好線后,運(yùn)行程序,發(fā)現(xiàn)LED顯示的不是0,經(jīng)檢查發(fā)現(xiàn)二進(jìn)制編碼是11000000而并不是0的編碼00000011。后在老師提示下,原因是PB口的連接的并不是a-dp

60、,而是dp-a。后采用將數(shù)據(jù)線反過來接,結(jié)果正確顯示0。</p><p><b>  4.2軟件調(diào)試</b></p><p>  剛開始調(diào)試程序時(shí),總是出現(xiàn)錯(cuò)誤,后經(jīng)老師提示,原因是新實(shí)驗(yàn)箱沒有8086CPU,它采用的運(yùn)行方式是上位機(jī)的CPU模擬實(shí)現(xiàn)下位機(jī)的8086CPU實(shí)現(xiàn)功能,所以加入了老師給的地址轉(zhuǎn)換程序,得以實(shí)現(xiàn)。繼而相應(yīng)的刪去了一些重復(fù)不必要的初始化程序。&

61、lt;/p><p><b>  4.3聯(lián)機(jī)調(diào)試</b></p><p>  在聯(lián)機(jī)調(diào)試時(shí)出現(xiàn)了兩個(gè)問題:</p><p> ?。?)起初一直堅(jiān)守“1”有效,運(yùn)行錯(cuò)誤,后仔細(xì)閱讀了實(shí)驗(yàn)箱使用說明,認(rèn)識(shí)</p><p>  微動(dòng)開關(guān)按下時(shí)的狀態(tài)為“0”,松開為“1”,于是在程序中讀信號(hào)的代碼段中入NOT AX,將讀取的微動(dòng)開關(guān)

62、按位取反,以使得開關(guān)按下“0”時(shí)有效,彈開“1”時(shí)無效,結(jié)果成功實(shí)現(xiàn)。</p><p> ?。?)程序反復(fù)調(diào)試并運(yùn)行了多次,幾經(jīng)測(cè)試,起初都正確,可是后來同樣正確的程序運(yùn)行LED顯示卻出現(xiàn)故障,下位機(jī)重置仍然不行,后經(jīng)老師指導(dǎo),將上位機(jī)重啟,問題被解決。</p><p>  4.4調(diào)試結(jié)果及問題的提出</p><p> ?。?)數(shù)碼管顯示數(shù)字的筆畫不對(duì),盡管數(shù)碼管編

63、碼正確無誤,經(jīng)檢查原因是控制編碼段的定位變化未能有效設(shè)置好,隨著程序的運(yùn)行,值變化混亂,后經(jīng)單步調(diào)試,仔細(xì)分析并改正優(yōu)化,成功解決。</p><p>  (2)在聯(lián)機(jī)調(diào)試結(jié)果正確后,全速運(yùn)行情況下,LED顯示始終會(huì)全部顯示,后在老師的提示下,程序中顯示代碼段的位置出加入mov ax,00h ,mov dx,PB_ADD 以禁止顯示,LED全滅,同時(shí)應(yīng)考慮到人眼視網(wǎng)膜的分辨率,設(shè)置顯示延遲時(shí)間,以便于觀察。<

64、/p><p>  (3) 在老師的要求下,應(yīng)該能夠觀察到選手的編號(hào)。而微動(dòng)開關(guān)按下是瞬間的且選手不能一直按著開關(guān)不放,對(duì)于觀察結(jié)果不方便,故老師要求在最右邊的一位LED上顯示出選手編號(hào)。設(shè)計(jì)時(shí)在測(cè)試微動(dòng)開關(guān)是否松開后,再加一個(gè)B口輸出在LED上顯示。開始的很多次,在單步調(diào)試中可以觀察到在最右邊的LED上顯示了選手編號(hào),而在全速運(yùn)行中卻看不到。經(jīng)老師檢查后,發(fā)現(xiàn)在顯示程序后立刻執(zhí)行了LED全滅,在人眼的能力內(nèi)是看不到的

65、,在老師的建議下,加入一個(gè)延遲程序即可解決問題。</p><p>  5、設(shè)計(jì)結(jié)果分析及問題討論</p><p>  5.1 課程設(shè)計(jì)結(jié)果</p><p>  在允許搶答信號(hào)發(fā)出后,七段LED顯示器上會(huì)顯示首先按下開關(guān)的選手編號(hào)。由于響應(yīng)速度非??欤粲袃扇嘶騼扇艘陨贤瑫r(shí)撥下開關(guān)是,七段LED顯示器上始終會(huì)靈敏的顯示第一個(gè)按下開關(guān)的搶答者,當(dāng)起初有兩個(gè)或以上選手搶答

66、,則顯示“E”表示出錯(cuò),搶答無效。</p><p><b>  5.2設(shè)計(jì)結(jié)果分析</b></p><p>  由于芯片8255的三個(gè)端口A、B、C全部都被使用,起初的主控思想便無法實(shí)現(xiàn),從 8255A的A口讀入輸入信號(hào),即為選手編號(hào)。然后從B口輸出搶答結(jié)果到七段LED顯示器上,C口控制LED數(shù)碼管的位控制,采用最左邊的一位LED顯示,并設(shè)置延遲在最右邊的一位LED上

67、顯示最終的搶答者號(hào)碼,便于觀察和比較。</p><p><b>  5.3問題討論</b></p><p>  在考慮如何確定有幾人同時(shí)撥下開關(guān)的問題中,用BL記下在A口的輸入信號(hào),將BL循環(huán)右移八次,看八位選手中有哪幾位發(fā)出了搶答動(dòng)作,即所在的位有效,有幾個(gè)一被移出,就有多少個(gè)人同時(shí)按下開關(guān)。將BL與1比較,如果大于1,說明有多人同時(shí)搶答,七段LED顯示器上顯示E,

68、表示搶答無效。否則,滿足一位選手動(dòng)作,LED顯示器即會(huì)顯示選手編號(hào)。</p><p>  5.4 收獲、體會(huì)和建議</p><p>  5.4.1關(guān)于可編程芯片8255A</p><p>  通過本次課程設(shè)計(jì)我熟練掌握了可編程并行接口芯片8255A的內(nèi)部結(jié)構(gòu),數(shù)據(jù)總線緩沖器,三個(gè)八位端口,A口、B口和C口的控制電路,讀寫控制邏輯,工作方式,分別有:方式0--基本輸入

69、輸出方式,方式1—選通輸入輸出方式,方式2—雙向選通輸入輸出方式,初始化,包括方式選擇控制字,C口按位置位控制字及其應(yīng)用。 8255A有三個(gè)八位的輸入輸出端口,由于內(nèi)部電路原因,通常將A口 (PA0-PA7)作為輸入用,B口(PB0-PB7)作為輸出用,C口作為輔助用,本實(shí)驗(yàn),在設(shè)計(jì)程序時(shí),選取8255A的工作方式0,通過A口輸入,B口輸出LED段控制,C口輸出LED位控制。</p><p>  5.4.2七段L

70、ED顯示器</p><p>  通過這次課程設(shè)計(jì)我掌握了作為終端顯示的七段LED顯示器物理構(gòu)造,明白了其工作原理,數(shù)字成象的原理及相關(guān)技術(shù)參數(shù)。</p><p><b>  5.4.3匯編語言</b></p><p>  通過這次課程設(shè)計(jì),重新復(fù)習(xí)了匯編語言程序設(shè)計(jì)中的數(shù)據(jù)和程序的尋址方式,各個(gè)指令的作用和含義。通過整個(gè)程序的編寫及后續(xù)的優(yōu)化工

71、作,使我對(duì)匯編語言有了更深層次的掌握,同時(shí)也對(duì)用匯編語言進(jìn)行程有了進(jìn)一步的理解。</p><p>  在為期二周的課程設(shè)計(jì)中, 我們能把課堂上學(xué)習(xí)到的理論知識(shí),經(jīng)過思考、揣摩,運(yùn)用于實(shí)踐中,逐步實(shí)現(xiàn)設(shè)計(jì)中的各種功能,心中有一種很大的欣慰感,以理論指導(dǎo)實(shí)踐,反過來,我們?cè)谡n堂上學(xué)到的理論知識(shí),很多情況都不是很明白其中的道理,也不清楚這點(diǎn)具體可以用在什么方面。在逐步實(shí)驗(yàn)過程中,通過每一個(gè)功能的實(shí)現(xiàn),通過上機(jī)實(shí)踐,對(duì)理

72、論知識(shí)也有了更為透徹的理解和認(rèn)知。深刻認(rèn)識(shí)到上機(jī)實(shí)踐操作的重要性,覺得一周的時(shí)間太短,對(duì)于設(shè)計(jì)的優(yōu)化方面的工作還有許多可以充實(shí),總覺得能再多點(diǎn)時(shí)間會(huì)做到更好,希望在以后的學(xué)習(xí)中,更多地給我們安排一些動(dòng)手操作的實(shí)驗(yàn)課,以更深入地了解計(jì)算機(jī)方方面面的知識(shí)。</p><p>  通過這次設(shè)計(jì)實(shí)踐使自己進(jìn)一步加深了對(duì)專業(yè)知識(shí)和理論知識(shí)學(xué)習(xí)的認(rèn)識(shí)和理解,使自己對(duì)于現(xiàn)實(shí)生活中的實(shí)際問題有了更貼切的整體把握和領(lǐng)會(huì),并很好的將之

溫馨提示

  • 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ì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論