接口實驗報告_第1頁
接口實驗報告_第2頁
接口實驗報告_第3頁
接口實驗報告_第4頁
接口實驗報告_第5頁
已閱讀5頁,還剩1頁未讀 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

一、實驗?zāi)康模?、掌握8255A編程原理;2、掌握鍵盤的輸入和數(shù)碼管的顯示;3、提高理論與實踐相結(jié)合的能力,強化所學(xué)內(nèi)容。二、實驗要求:用8255A實現(xiàn)模擬電梯,用鍵盤輸入要求電梯所到達的樓層,數(shù)碼管顯示電梯當前所在樓層。電梯在初始樓層,當有用戶在其他樓層做出請求時,即通過鍵盤輸入希望電梯到達的樓層,電梯運行到目的樓層。電梯在運行運行過程中經(jīng)過一層需要的時間是1秒,即數(shù)碼管顯示每個數(shù)字的時間是1秒,當電梯到達目的樓層時,揚聲器發(fā)出聲音三、實驗過程:1〕實驗流程圖:2〕實驗硬件設(shè)計電路圖:3〕實驗接線按硬件設(shè)計圖接線,8255C口接鍵盤〔實際8255的C0~C3接鍵盤的列0~列3,C4~C7接鍵盤的行0~行3〕,8255CS接地址譯碼輸出的288h~28fh。8255的A口PA0~PA7接數(shù)碼管的a~dp。數(shù)碼管位碼S0接+5V,S3~S1接GND。8255端口A地址為:288H端口B地址為:289H端口C地址為:28AH控制口地址為:28BH3〕實驗代碼:頭文件:#include<stdio.h>#include<conio.h>#include"ApiExusb.h"#pragmacomment(lib,"ApiExusb.lib")運行函數(shù):voidCDiantiDlg::OnRun(){ //TODO:Addyourcontrolnotificationhandlercodeherecharled[9]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f}; /*上面為從0-8對應(yīng)的段碼表*/bytedata; //將鍵盤輸入數(shù)據(jù)存儲bytei,j; //i為輸入數(shù)據(jù),j為對應(yīng)的段碼 bytenow,goal; //記錄電梯的目前樓層和目標樓層 getch(); if(!Startup()) /*翻開設(shè)備*/ { printf("ERROR:OpenDeviceError!\n"); return; }now=j=0; //PortWriteByte(0x28b,0x81); //初始狀態(tài)為0層while(!kbhit()) {PortWriteByte(0x28b,0x81); //設(shè)置8255的A口輸出C口低輸入 PortWriteByte(0x288,led[now]);//數(shù)碼管顯示PortWriteByte(0x28a,0x0f); //c口初始化后四位為0x0fPortReadByte(0x28a,&data); //讀取c口數(shù)據(jù)低四位 i=data;if(i!=0x0f){i=data;Sleep(50);PortWriteByte(0x28b,0x88);//設(shè)置A口輸出C高四位輸入PortWriteByte(0x28a,0xf0);//c口初始化高四位為0xf0 PortReadByte(0x28a,&data); //讀取c口數(shù)據(jù)高四位i=i|data; //〔C口高四位與低四位即鍵盤的行與列相與得出所按的鍵〕 //記錄按鍵八位碼if(i==0x77)j=0; //得出目的樓層elseif(i==0x7b)j=1;elseif(i==0x7d)j=2;elseif(i==0x7e)j=3;elseif(i==0xb7)j=4;elseif(i==0xbb)j=5;elseif(i==0xbd)j=6;elseif(i==0xbe)j=7;elseif(i==0xd7)j=8;else;} goal=j; if(now!=goal) { if(now>goal) { for(;now>goal;now--) { PortWriteByte(0x28b,0x81); PortWriteByte(0x288,led[now]);//數(shù)碼管顯示 Sleep(1000); //每層停一秒 } PortWriteByte(0x28b,0x81); PortWriteByte(0x288,led[goal]);//數(shù)碼管顯示 //PortWriteByte(0x28b,0x80); PortWriteByte(0x289,0x80); //揚聲器開,PB7變成高電平 Sleep(100); PortWriteByte(0x288,0x00); //揚聲器關(guān) } else { for(;now<goal;now++) { PortWriteByte(0x28b,0x81); PortWriteByte(0x288,led[now]);//數(shù)碼管顯示 Sleep(1000); } PortWriteByte(0x28b,0x81); PortWriteByte(0x288,led[goal]);//數(shù)碼管顯示 //PortWriteByte(0x28b,0x80); PortWriteByte(0x289,0x80); //揚聲器開 Sleep(100); PortWriteByte(0x288,0x00); //揚聲器關(guān) }} PortWriteByte(0x28b,0x81); PortWriteByte(0x288,led[goal]);//數(shù)碼管顯示 } Cleanup(); /*關(guān)閉設(shè)備*/}三、實驗現(xiàn)象:數(shù)碼管顯示數(shù)字為1〔表示電梯初始狀態(tài)停在第一層〕,此時LED顯示燈全滅〔表示沒有鍵入目的樓層〕;從鍵盤上鍵入數(shù)字4,相應(yīng)的LED顯示燈亮,數(shù)碼管顯示每隔2秒從1到4遞增,當?shù)竭_4時停下并開揚聲器,表示電梯從一樓上升到達四樓,相應(yīng)的LED燈滅。在電梯運行過程中不相應(yīng)其他鍵入信息,知道停在四樓。電梯到達四樓后假設(shè)鍵入大于四的

溫馨提示

  • 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

提交評論