微機(jī)原理硬件實(shí)驗(yàn)5個(gè)_第1頁
微機(jī)原理硬件實(shí)驗(yàn)5個(gè)_第2頁
微機(jī)原理硬件實(shí)驗(yàn)5個(gè)_第3頁
微機(jī)原理硬件實(shí)驗(yàn)5個(gè)_第4頁
微機(jī)原理硬件實(shí)驗(yàn)5個(gè)_第5頁
已閱讀5頁,還剩8頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡(jiǎn)介

1、微機(jī)綜合實(shí)踐實(shí)驗(yàn)報(bào)告姓名:孫曉東 班級(jí):1011* 學(xué)號(hào):1120122*2015年1月1日實(shí)驗(yàn)一實(shí)驗(yàn)名稱:8051單片機(jī)P1口輸入輸出應(yīng)用試驗(yàn)實(shí)驗(yàn)?zāi)康模簩W(xué)習(xí)8051單片機(jī)P1口作為雙向I/O口的使用方法,采用循環(huán)指令編寫延時(shí)子程序。了解弱電控制強(qiáng)電的基本原理,采用單片機(jī)P1口實(shí)現(xiàn)繼電器開關(guān)控制。實(shí)驗(yàn)環(huán)境:Keil調(diào)試環(huán)境、VW調(diào)試軟件偉福單片機(jī)開發(fā)試驗(yàn)系統(tǒng)(Digital LAB 51)實(shí)驗(yàn)內(nèi)容:(1)采用8051單片機(jī)的P1口作為輸出口,外接8只發(fā)光二極管,編寫程序使二極管循環(huán)點(diǎn)亮。(2)從P1.0輸出不同頻率的方波信號(hào),經(jīng)放大器濾波后驅(qū)動(dòng)揚(yáng)聲器發(fā)聲,聲音的頻率由延時(shí)程序控制。實(shí)驗(yàn)總結(jié):(

2、1)流程圖:開始燈滅Index=0NIndex<8?YIndex對(duì)應(yīng)燈亮Index+(1)C語言實(shí)驗(yàn)程序注解:#include<reg51.h> /引用庫void delay()unsigned int i; for(i=0;i<20000;i+) /N次循環(huán)亮燈 void main()unsigned char index;unsigned char LED;while(1) /開始循環(huán)點(diǎn)亮程序LED=1; /首先從右1燈起始亮for(index=0;index<8;index+) P1=LED; /二進(jìn)制數(shù)LED為1的位對(duì)應(yīng)燈亮LED<<=1; /

3、LED左移1位,從右往左依次點(diǎn)亮一位delay(); /亮燈延時(shí)(2)流程圖:開始第一次響鈴、延時(shí)第二次響鈴、延時(shí) N次循環(huán)持續(xù)發(fā)聲(2)C語言程序注解:#include<reg51.h>/引用庫程序51sbit Speaker=P10;void Delay()unsigned char i;for(i=0;i<50;i+); /響鈴50次循環(huán)程序void main()while(1) / 第i+1次循環(huán)響鈴開始Speaker=0; /第一次鈴響delay(); /第一次延時(shí)Speaker=0; /第二次鈴響delay(); /第二次延時(shí)心得體會(huì):開始先一步步跟著老師熟悉了軟

4、件環(huán)境以及編譯運(yùn)行等步驟。第一次輸入程序,出現(xiàn)了很多不該有的錯(cuò)誤,導(dǎo)致出現(xiàn)燈不亮等不理想的結(jié)果,經(jīng)過對(duì)連線的檢查和軟件的錯(cuò)誤指向,把錯(cuò)誤的地方一一查找出來,改正后得到了二極管循環(huán)點(diǎn)亮的效果。發(fā)聲的實(shí)驗(yàn)讓我明白了簡(jiǎn)單聲調(diào)音樂的原理,比如生日蛋糕里面點(diǎn)亮蓮花蠟燭時(shí)的生日快樂歌。這次試驗(yàn)只要求得到一個(gè)持續(xù)的發(fā)聲音調(diào),但通過輸入已有的音樂程序代碼,還是得到了具體的音樂蘭花草,讓我感到了濃濃的樂趣。通過這次試驗(yàn),使我更加深入的了解了單片機(jī)是如何控制二極管的以及簡(jiǎn)單程序的編寫,加強(qiáng)了我們的實(shí)際動(dòng)手操作能力。 實(shí)驗(yàn)二實(shí)驗(yàn)名稱:8段數(shù)碼管的靜態(tài)顯示實(shí)驗(yàn)?zāi)康模海?)學(xué)習(xí)在單片機(jī)系統(tǒng)中擴(kuò)展簡(jiǎn)單I/o接口

5、的方法;(2)學(xué)習(xí)數(shù)據(jù)輸出程序的設(shè)計(jì)方法;(3)了解數(shù)據(jù)鎖存的概念和方法。實(shí)驗(yàn)環(huán)境:Keil調(diào)試環(huán)境、VW調(diào)試軟件偉福單片機(jī)開發(fā)試驗(yàn)系統(tǒng)(Digital LAB 51)實(shí)驗(yàn)內(nèi)容:在實(shí)驗(yàn)板上用74LS244作為輸出口,用8根線的排線分別連接P2和J17輸出口,制一個(gè)LED顯示模塊。碼顯示器由7段條形LED組成,加一位小數(shù)點(diǎn),共有8段。相應(yīng)LED電平為“0”時(shí)燈滅,為“1”時(shí)燈亮。流程圖:開始定義8段數(shù)碼管顯示碼定義變量i取i的最后一位并顯示i+程序注解:#include<reg52.h>code unsigned char LEDMAP=0xC0,0xF9,0xA4,0xB0,0x9

6、9,0x92,0x82,0xF8,0x80,0x90,0x88,0x83,0xC6,0xA1,0x86,0x8E; /*16進(jìn)制數(shù)的數(shù)碼管顯示定義*/TIME_1S() /延時(shí)1S的程序unsigned int i;for(i=0;i<32780;i+)main()unsigned int i;while(1) P2=LEDMAPi&0x0f; /取i的最后一位16進(jìn)制數(shù)并顯示i+; /i自加1,循環(huán)顯示16進(jìn)制數(shù)TIME_1S(); /延時(shí)1S 心得體會(huì):  這次試驗(yàn)要比第一次的實(shí)驗(yàn)難,在改寫代碼這一環(huán)節(jié)我們就遇到了很大的困難。這次試驗(yàn)我使用了匯編語言的程序代碼。由于

7、參考代碼沒有給出F的字型碼,因此“F”無法顯示出來。通過對(duì)其他16進(jìn)制數(shù)與8段數(shù)碼管亮滅情況的對(duì)照,我最終找出了“F”對(duì)應(yīng)的字型碼為”08EH”,進(jìn)過實(shí)驗(yàn)檢驗(yàn)結(jié)果正確,可以實(shí)現(xiàn)1F所有16進(jìn)制數(shù)的靜態(tài)顯示。這次試驗(yàn)證明匯編語言在編程中的重要性,而且從這次的實(shí)驗(yàn)中我發(fā)現(xiàn)了自己匯編語言的功底還是有待提高,以后的日子里還需努力。 實(shí)驗(yàn)三實(shí)驗(yàn)名稱: 8段數(shù)碼管動(dòng)態(tài)顯示實(shí)驗(yàn)實(shí)驗(yàn)?zāi)康模海?)了解8段數(shù)碼管動(dòng)態(tài)顯示的原理(2)了解用總線方式控制數(shù)碼管顯示實(shí)驗(yàn)內(nèi)容:連接仿真器至計(jì)算機(jī),使用Keil軟件編寫程序,編譯成功后載入仿真器,利用實(shí)驗(yàn)系統(tǒng)提供的顯示電路,動(dòng)態(tài)顯示數(shù)據(jù)實(shí)驗(yàn)環(huán)境: Keil調(diào)試環(huán)境

8、、VW調(diào)試軟件偉福單片機(jī)開發(fā)試驗(yàn)系統(tǒng)(Digital LAB 51)流程圖:開始定義i,并賦初值0取i至i+7的最后一位16進(jìn)制數(shù)并將其轉(zhuǎn)換為八段管值依次顯示在8位數(shù)碼管上i自增1,觀察數(shù)字移動(dòng)效果程序注解:#include<reg51.h>#define LEDLen 8unsigned char LEDBufLEDLen; /顯示緩沖xdata unsigned char OUTBIT _at_ 0x0001; /位控制口xdata unsigned char OUTSEG _at_ 0x0000; /段控制口code unsigned char LEDMAP=0xfC,0x6

9、0,0xda,0xf2,0x66,0xb6,0xbe,0xe0,0xfe,0xf6,0xee,0x3e,0x9c,0x7a,0x9e,0x8e; /16進(jìn)制數(shù)的數(shù)碼管顯示定義void Delay(unsigned char CNT) /延時(shí)程序unsigned char i;while(CNT-!=0) for(i=100;i!=0;i-);void DisplayLED() /顯示程序unsigned char i,j;unsigned char Pos;unsigned char LED;Pos=0x80; /從左邊開始顯示for(i=0;i<LEDLen;i+) OUTBIT=0;

10、 /關(guān)所有八段管 LED=LEDBufi; OUTSEG=LED; /取對(duì)應(yīng)16進(jìn)制數(shù)的八段管值 OUTBIT=Pos; /顯示一位八段管 Delay(1); Pos>>=1; /顯示下一位八段管 OUTBIT=0; /關(guān)所有八段管void main() unsigned char i=0; unsigned char j; while(1) LEDBuf0=LEDMAPi&0x0f; /*“與”實(shí)現(xiàn)取i的最后一位,并將其賦為八段管值*/LEDBuf1=LEDMAP(i+1)&0x0f; /*“與”實(shí)現(xiàn)取i+1后一位,并將其賦為八段管值*/LEDBuf2=LEDMA

11、P(i+2)&0x0f; /*以下到i+7同理*/ LEDBuf3=LEDMAP(i+3)&0x0f; LEDBuf4=LEDMAP(i+4)&0x0f; LEDBuf5=LEDMAP(i+5)&0x0f; LEDBuf6=LEDMAP(i+6)&0x0f;LEDBuf7=LEDMAP(i+7)&0x0f; i+; /*i自增1 ,造成數(shù)字循環(huán)移動(dòng)的效果*/for(j=0;j<200;j+) DisplayLED(); /顯示轉(zhuǎn)化后的八段管值 心得體會(huì): 本次試驗(yàn)最后的結(jié)果是數(shù)碼管8個(gè)數(shù)字依次向左移動(dòng)。得到結(jié)果后老師問我們這是否是程序應(yīng)有的

12、結(jié)果。我認(rèn)真研究了程序后,發(fā)現(xiàn)并未如此。程序顯示, 8位數(shù)碼管實(shí)際只有1位顯示數(shù)字,顯示完成后下一次開始顯示,這一位暫停顯示。但是程序中延時(shí)部分時(shí)間過短,整個(gè)過程變化過快,導(dǎo)致無法分辨變化過程,也就是8個(gè)數(shù)字依次向左移動(dòng)的結(jié)果。實(shí)驗(yàn)四實(shí)驗(yàn)名稱:鍵盤顯示實(shí)驗(yàn)實(shí)驗(yàn)?zāi)康模和ㄟ^學(xué)習(xí)鍵盤掃描和LED8段數(shù)碼管顯示器的工作原理,掌握鍵盤和顯示器的接口方法和編程方法。實(shí)驗(yàn)環(huán)境: Keil調(diào)試環(huán)境、VW調(diào)試軟件偉福單片機(jī)開發(fā)試驗(yàn)系統(tǒng)(Digital LAB 51)實(shí)驗(yàn)內(nèi)容:在上一個(gè)實(shí)驗(yàn)的基礎(chǔ)上,利用實(shí)驗(yàn)提供的鍵盤掃描電路和顯示電路,實(shí)現(xiàn)鍵盤掃描和數(shù)碼顯示,把按鍵輸入的鍵值在8位數(shù)碼管上顯示出來。流程圖:開始定

13、義8段數(shù)碼管顯示碼和定義鍵碼行線全部輸出0讀入列值取出鍵碼,顯示數(shù)字程序注解:#define LEDLen 6xdata unsigned char OUTBIT _at_ 0x01; /位控制口xdata unsigned char OUTSEG _at_ 0x00; /段控制口xdata unsigned char WRITEOUT _at_ 0x02; /列輸出地址xdata unsigned char READIN _at_ 0x02; /行讀入地址unsigned char LEDBufLEDLen; /顯示緩沖code unsigned char LEDMAP=0xfc,0x60,

14、0xda,0xf2,0x66, 0xb6,0xbe,0xe0,0xfe,0xf6, 0xee,0x3e,0x9c,0x7a,0x9e,0x8e; /八段管顯示碼void Delay(unsigned char CNT)unsigned char i; while(CNT-!=0) for(i=100;i!=0;i-);void DisplayLED()unsigned char i,j; unsigned char Pos; unsigned char LED; Pos=0x20; / 從左邊開始顯示 for(i=0;i<LEDLen;i+) OUTBIT=0; /關(guān)所有八段管 LED=

15、LEDBufi; OUTSEG=LED; OUTBIT=Pos; /顯示一位八段管 Delay(1); Pos>>=1; /顯示下一位 code unsigned char KeyTable=0x00,0x04,0x08,0x0c,0x10,0x14, 0x01,0x05,0x09,0x0d,0x11,0x15, 0x02,0x06,0x0a,0x0e,0x12,0x16, 0x03,0x07,0x0b,0x0f,0x13,0x17; /鍵碼定義unsigned char TestKey()WRITEOUT=0; /輸出線置為0 return(READIN&0xf0); /

16、讀入鍵狀態(tài)(低四位不用)unsigned char GetKey()unsigned char Pos; unsigned char i; unsigned char k; i=0; Pos=0x80; /找出鍵所在列 doWRITEOUT=Pos; Pos>>=1; k=READIN&0xf0; while(+i!=6)&&(k=0); if(k!=0) if(k&0x10) /第一行 i=i-1; if(k&0x20) /第二行 i=i+5; if(k&0x40) /第三行 i=i+11; if(k&0x80) /第四行

17、i=i+17; WRITEOUT=0; do Delay(10);while(TestKey(); /等鍵釋放 return(KeyTablei); /取出鍵碼 else return(0xff);void main()LEDBuf0=0xfc; LEDBuf1=0xfc; LEDBuf2=0xfc; LEDBuf3=0xfc; LEDBuf4=0xfc; LEDBuf5=0xfc; while(1) DisplayLED(); if(TestKey() LEDBuf5=LEDMAPGetKey()&0x0f; 心得體會(huì):在微機(jī)原理與接口技術(shù)課程中,我就已經(jīng)學(xué)習(xí)了用掃描法和反轉(zhuǎn)法查找鍵盤按下值的應(yīng)用原理。這次實(shí)驗(yàn)的原理也是一樣的,使用反轉(zhuǎn)法,即查找由行、列不同組合得到的二進(jìn)制數(shù)(鍵碼)來對(duì)應(yīng)相應(yīng)的按鍵位置,這些在流程圖中已經(jīng)給出。通過本次實(shí)驗(yàn),我更進(jìn)一步了解了鍵盤的工作原理,對(duì)計(jì)算機(jī)有了更深的認(rèn)識(shí)。建議與意見:此次為期兩個(gè)下午的實(shí)驗(yàn)課,使我在

溫馨提示

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