微機原理與接口技術(shù)課程設(shè)計報告_第1頁
微機原理與接口技術(shù)課程設(shè)計報告_第2頁
微機原理與接口技術(shù)課程設(shè)計報告_第3頁
微機原理與接口技術(shù)課程設(shè)計報告_第4頁
微機原理與接口技術(shù)課程設(shè)計報告_第5頁
已閱讀5頁,還剩9頁未讀, 繼續(xù)免費閱讀

下載本文檔

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

文檔簡介

1、微機原理與接口技術(shù) 課程設(shè)計報告項目名稱:十進制數(shù)計算器的設(shè)計與實現(xiàn) 專業(yè)名稱 : 計算機科學與技術(shù)(交通信息工程) 學生姓名 :李?。?01324020311) 教師姓名 : 馬榮貴 2016年1月1日一、 項目名稱及要求31 項目名稱32 項目要求3二、 項目背景及設(shè)計目的31 項目背景32 項目目的3三、 設(shè)計思路31 總體設(shè)計思路32 設(shè)計流程圖4四、 項目方案及原理圖51 項目方案52 并行接口8255A53 鍵盤輸入模塊64 LED數(shù)碼管輸出模塊75 原理圖設(shè)計8五、 結(jié)果與分析81 實現(xiàn)現(xiàn)象82 現(xiàn)象分析8六、 總結(jié)及體會9七、 附錄91 參考文獻92 源代碼9一、 項目名稱及要

2、求 1 項目名稱 十進制數(shù)計算器的設(shè)計與實現(xiàn) 2 項目要求 運用學過的微機原理與接口技術(shù)課程以及本學期的上機實驗操作經(jīng)驗,根據(jù)題目設(shè)計要求進行軟硬件系統(tǒng)的設(shè)計和實現(xiàn),從而加深對本課程知識點的理解。通過具體項目的實踐,來提高學生的動手能力以及實時解決問題的能力,使學生綜合能力得到顯著提升。 本課題要求學生熟練運用并行接口8255A芯片、4*4鍵盤輸入模塊以及LED數(shù)碼管輸出模塊的工作原理以及相應元件驅(qū)動程序的編寫。要求通過4*4鍵盤輸入,LED數(shù)碼管顯示來完成簡單計算器的功能(加減乘除操作) 二、 項目背景及設(shè)計目的 1 項目背景 大學課程設(shè)計是為了輔助學生加深對本課程的理論知識的理解和提高。通

3、過動手完成實際的項目設(shè)計及實現(xiàn),減小理論與實踐的距離,讓同學對實際項目實現(xiàn)的流程有個大體的感受。通過合作完成項目,提高同學的合作意識,以及模塊化設(shè)計理念。 2 項目目的 通過十進制數(shù)計算器的設(shè)計與實現(xiàn),了解proteus軟件使用; 熟練掌握原理圖的設(shè)計方法 知道各硬件的功能以及電路實現(xiàn) 三、 設(shè)計思路 1 總體設(shè)計思路 4*4鍵盤輸入模塊: 鍵盤“09”對應數(shù)字09 鍵盤“A”對應符號“+” 鍵盤“B”對應符號“-” 鍵盤“C”對應符號“*” 鍵盤“D”對應符號“/” 鍵盤“E”對應符號“CE” 鍵盤“F”對應符號“=” 并行接口8255A:A口用于LED數(shù)碼管的段碼輸出 B口用于LED數(shù)碼管

4、的位碼輸出 C口用于4*4鍵盤的輸入LED數(shù)碼管輸出模塊:采用動態(tài)顯示的方式,將并行接口8255A中A口中的段碼顯示2 設(shè)計流程圖四、 項目方案及原理圖1 項目方案先設(shè)計原理圖,然后用PCB布線仿真,最后去實驗室用實驗器材實現(xiàn)設(shè)計2 并行接口8255A并行接口8255A: 8255A是通用可編程并行接口芯片,是有40個引腳的雙列直插式組件,其基本功能為:8255A接口芯片有3個8位并行輸入/輸出端口,可利用編程方法設(shè)置3個端口是作為輸入端口還是輸出端口;8255A能適應CPU與I/O接口之間的多種數(shù)據(jù)傳送方式的要求,如無條件傳送、查詢方式傳送、中斷方式傳送。與此相對應,8255A設(shè)置了方式0、

5、方式1以及方式2;8255A的C口比較特殊,除作為數(shù)據(jù)口之外,在工作方式1和方式2下,它的部分信號線被分配作為專用的聯(lián)絡(luò)應答信號。8255A引腳圖: 8255A的工作原理: 方式0:基本輸入輸出方式;方式1:選通式輸入/輸出方式;方式2:雙向選通輸入/輸出方式。8255的控制字:工作方式選擇控制字,D7D0控制位的含義見下圖:本實驗中使8255端口C高四位(PC7-PC4)與鍵盤掃描行連接,低四位(PC0-PC3)與鍵盤掃描列連接,B口低四位(PB0-PB3)用于控制數(shù)碼管位碼,端口A輸出段碼信號用于控制數(shù)碼管對鍵盤數(shù)值的顯示。3 鍵盤輸入模塊 4*4鍵盤: 矩陣鍵盤又稱為行列式鍵盤,它是用4

6、條I/O線作為行線,4條I/O線作為列線組成的鍵盤。在行線和列線的每一個交叉點上,設(shè)置一個按鍵。這樣鍵盤中按鍵的個數(shù)是4×4個。這種行列式鍵盤結(jié)構(gòu)能夠有效地提高單片機系統(tǒng)中I/O口的利用率。4*4鍵盤的電路實現(xiàn): 4 LED數(shù)碼管輸出模塊 LED數(shù)碼管:8段數(shù)碼顯示管用于一般的狀態(tài)或數(shù)字的顯示共陰極對應字符的段碼表: 顯示字形dpgfedcba段碼0001111113fh10000011006h201011o115bh3010011114fh40110011066h5011011016dh6011111017dh70000011107h8011111117fh9011011116fh

7、.1000000080hV001111103eh5 原理圖設(shè)計 五、 結(jié)果與分析1 實現(xiàn)現(xiàn)象 2 現(xiàn)象分析由于LED顯示是動態(tài)的,就沒有以圖片的方式展示,不過在電子版的報告中,現(xiàn)象視頻在附錄文件中。上述現(xiàn)象包含加減乘除以及混合運算的演示。其中已經(jīng)演示了包含高于兩位十進制數(shù)、負數(shù)的運算。六、 總結(jié)及體會這次實驗真是一波三折,剛開始我的選題是8259的級聯(lián),我和我的小組成員已經(jīng)將實驗的流程以及具體實施方案規(guī)劃好了。但是由于臨時的變動了選題,我們開始重新設(shè)計,利用課余時間陸陸續(xù)續(xù)的完成了整個設(shè)計流程。到課設(shè)的第一天,我們開始連線,以及將驅(qū)動程序?qū)懭?,但是測試的時候出現(xiàn)各種問題,比如說顯示不正常,屏幕

8、閃爍太頻繁。我們晚上回去思考,第二天重新調(diào)試,得到了預期的結(jié)果。由于課設(shè)的時間還沒有結(jié)束,我們又將其功能進行了擴展:可以實現(xiàn)多位計算器,可實現(xiàn)負數(shù)運算,可實現(xiàn)連續(xù)運算。不足的地方在于,沒有實現(xiàn)對不同級別運算的先后順序的判斷。七、 附錄1 參考文獻微機原理與接口技術(shù),郭蘭英等編著,清華大學出版社,2006年C+語言程序設(shè)計(第四版),鄭麗等編著,清華大學出版社,2010年TPC-ZK產(chǎn)品說明,清華大學器材部編寫,清華大學出版社,2008年2 源代碼/*/*實驗名稱:運算器*/*實驗內(nèi)容:實現(xiàn)加減乘除運算*/*作者:李俊、豐翔*/*時間:2015-11-21*/*/#include<stdi

9、o.h>#include<conio.h>#include "ApiExusb.h"#pragma comment(lib,"ApiExusb.lib")char led18=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,0x00,0x40; /* 0F 無字符 負號 */void toshu(byte *a,int &shu1) /*將數(shù)組a中的字符轉(zhuǎn)化為一個數(shù)*/if(a3=16)shu1=0;else if(a

10、2=16)shu1=a3;else if(a1=16)shu1=a3+10*a2;else if(a0=16)shu1=a3+10*a2+100*a1;else shu1=a3+10*a2+100*a1+1000*a0;void shuto(byte* a,int shu1) /*將一個數(shù)的各個位轉(zhuǎn)化到數(shù)組a中*/int fuhao1;if(shu1<0)fuhao1=-1;shu1=-shu1;a0=shu1/1000%10;/* 保證溢出的時候仍能正常顯示低位*/a1=shu1/100%10;a2=shu1/10%10;a3=shu1%10;if(a0=0&&a1=0

11、&&a2=0&&a3=0)a0=16; a1=16;a2=16;a3=0;else if(a0=0&&a1=0&&a2=0)a0=16;a1=16;a2=16;if(fuhao1<0)a2=17;else if(a0=0&&a1=0)a0=16;a1=16;if(fuhao1<0)a1=17;else if(a0=0)a0=16;if(fuhao1<0)a0=17;void jisuan(int &shu1,int shu2,char fuhao) /*計算,將結(jié)果存入shu1中*/if(

12、fuhao='+')shu1+=shu2;else if(fuhao='-')shu1=shu2-shu1;else if(fuhao='*')shu1*=shu2;else if(fuhao='/'&&shu1!=0)shu1=shu2/shu1;else printf("運算不合法");exit(0);void main() byte data; byte i,j,k=3,ll=0,l=0;/*k是用來控制數(shù)碼管位碼的*/ byte a4=16,16,16,0;/*用來存儲LED對應段碼的在

13、數(shù)組中的下標*/ int shu1=0,shu2=0;/* shu1是臨時操作數(shù);shu2是上一步的計算結(jié)果*/ char fuhao='+'printf("Press any key to begin!n");getch();if(!Startup()/*打開設(shè)備*/printf("ERROR: Open Device Error!n");return; printf("press any key to exitn"); PortWriteByte(0x28b,0x81);/*設(shè)置8255的A口B口均為輸出、C口輸入

14、 1000 10001*/PortWriteByte(0x28a,0x0f); PortReadByte(0x28a,&data);/* 預讀端口值 */ i=data; while(!kbhit()/*如果不按接盤,一直循環(huán)工作*/ PortWriteByte(0x28b,0x81);/*設(shè)置8255的A口B口均為輸出 C口輸入 1000 10001*/ /PortWriteByte(0x289,0); PortWriteByte(0x288,leda3); PortWriteByte(0x289,0x01);/* 動態(tài)顯示a中的數(shù)字 */ Sleep(50); PortWriteB

15、yte(0x288,leda2); PortWriteByte(0x289,0x02); Sleep(50); PortWriteByte(0x288,leda1); PortWriteByte(0x289,0x04); Sleep(50); PortWriteByte(0x288,leda0); PortWriteByte(0x289,0x08); Sleep(50); PortWriteByte(0x289,0); PortWriteByte(0x28a,0x0f); PortReadByte(0x28a,&data);/*讀a口的數(shù)字*/ i=data; if (k>=0&

16、amp;&i!=0x0f)/*只有四個led數(shù)碼管,通過查看a口來判斷是否有鍵按下*/ i=data; Sleep(50); PortWriteByte(0x28b,0x88); PortWriteByte(0x28a,0xf0); PortReadByte(0x28a,&data); Sleep(20); i=i|data; if(ll=1&&k=3) a0=16; a1=16; a2=16; a3=0; if (i=0x77)ak=0;printf("0");Sleep(1000); /*鍵和對應的功能*/ else if(i=0x7b)

17、l=1;printf("1");ll=0; else if(i=0x7d)l=2;printf("2");ll=0; else if(i=0x7e)l=3;printf("3");ll=0; else if(i=0xb7)l=4;printf("4");ll=0; else if(i=0xbb)l=5;printf("5");ll=0; else if(i=0xbd)l=6;printf("6");ll=0; else if(i=0xbe)l=7;printf("7

18、");ll=0; else if(i=0xd7)l=8;printf("8");ll=0; else if(i=0xdb)l=9;printf("9");ll=0; else if(i=0xdd)printf("+");toshu(a,shu1);jisuan(shu1,shu2,fuhao);shu2=shu1;shuto(a,shu2);fuhao='+'k=4;ll=1; else if(i=0xde)printf("-");toshu(a,shu1);jisuan(shu1,shu2,fuhao);shu2=shu1;shuto(a,shu2);fuh

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
  • 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

提交評論