




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
1、微機綜合實踐實驗報告姓名:孫曉東 班級:1011* 學(xué)號:1120122*2015年1月1日實驗一實驗名稱:8051單片機P1口輸入輸出應(yīng)用試驗實驗?zāi)康模簩W(xué)習(xí)8051單片機P1口作為雙向I/O口的使用方法,采用循環(huán)指令編寫延時子程序。了解弱電控制強電的基本原理,采用單片機P1口實現(xiàn)繼電器開關(guān)控制。實驗環(huán)境:Keil調(diào)試環(huán)境、VW調(diào)試軟件偉福單片機開發(fā)試驗系統(tǒng)(Digital LAB 51)實驗內(nèi)容:(1)采用8051單片機的P1口作為輸出口,外接8只發(fā)光二極管,編寫程序使二極管循環(huán)點亮。(2)從P1.0輸出不同頻率的方波信號,經(jīng)放大器濾波后驅(qū)動揚聲器發(fā)聲,聲音的頻率由延時程序控制。實驗總結(jié):(
2、1)流程圖:開始燈滅Index=0NIndex<8?YIndex對應(yīng)燈亮Index+(1)C語言實驗程序注解:#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)點亮程序LED=1; /首先從右1燈起始亮for(index=0;index<8;index+) P1=LED; /二進制數(shù)LED為1的位對應(yīng)燈亮LED<<=1; /
3、LED左移1位,從右往左依次點亮一位delay(); /亮燈延時(2)流程圖:開始第一次響鈴、延時第二次響鈴、延時 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(); /第一次延時Speaker=0; /第二次鈴響delay(); /第二次延時心得體會:開始先一步步跟著老師熟悉了軟
4、件環(huán)境以及編譯運行等步驟。第一次輸入程序,出現(xiàn)了很多不該有的錯誤,導(dǎo)致出現(xiàn)燈不亮等不理想的結(jié)果,經(jīng)過對連線的檢查和軟件的錯誤指向,把錯誤的地方一一查找出來,改正后得到了二極管循環(huán)點亮的效果。發(fā)聲的實驗讓我明白了簡單聲調(diào)音樂的原理,比如生日蛋糕里面點亮蓮花蠟燭時的生日快樂歌。這次試驗只要求得到一個持續(xù)的發(fā)聲音調(diào),但通過輸入已有的音樂程序代碼,還是得到了具體的音樂蘭花草,讓我感到了濃濃的樂趣。通過這次試驗,使我更加深入的了解了單片機是如何控制二極管的以及簡單程序的編寫,加強了我們的實際動手操作能力。 實驗二實驗名稱:8段數(shù)碼管的靜態(tài)顯示實驗?zāi)康模海?)學(xué)習(xí)在單片機系統(tǒng)中擴展簡單I/o接口
5、的方法;(2)學(xué)習(xí)數(shù)據(jù)輸出程序的設(shè)計方法;(3)了解數(shù)據(jù)鎖存的概念和方法。實驗環(huán)境:Keil調(diào)試環(huán)境、VW調(diào)試軟件偉福單片機開發(fā)試驗系統(tǒng)(Digital LAB 51)實驗內(nèi)容:在實驗板上用74LS244作為輸出口,用8根線的排線分別連接P2和J17輸出口,制一個LED顯示模塊。碼顯示器由7段條形LED組成,加一位小數(shù)點,共有8段。相應(yīng)LED電平為“0”時燈滅,為“1”時燈亮。流程圖:開始定義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進制數(shù)的數(shù)碼管顯示定義*/TIME_1S() /延時1S的程序unsigned int i;for(i=0;i<32780;i+)main()unsigned int i;while(1) P2=LEDMAPi&0x0f; /取i的最后一位16進制數(shù)并顯示i+; /i自加1,循環(huán)顯示16進制數(shù)TIME_1S(); /延時1S 心得體會: 這次試驗要比第一次的實驗難,在改寫代碼這一環(huán)節(jié)我們就遇到了很大的困難。這次試驗我使用了匯編語言的程序代碼。由于
7、參考代碼沒有給出F的字型碼,因此“F”無法顯示出來。通過對其他16進制數(shù)與8段數(shù)碼管亮滅情況的對照,我最終找出了“F”對應(yīng)的字型碼為”08EH”,進過實驗檢驗結(jié)果正確,可以實現(xiàn)1F所有16進制數(shù)的靜態(tài)顯示。這次試驗證明匯編語言在編程中的重要性,而且從這次的實驗中我發(fā)現(xiàn)了自己匯編語言的功底還是有待提高,以后的日子里還需努力。 實驗三實驗名稱: 8段數(shù)碼管動態(tài)顯示實驗實驗?zāi)康模海?)了解8段數(shù)碼管動態(tài)顯示的原理(2)了解用總線方式控制數(shù)碼管顯示實驗內(nèi)容:連接仿真器至計算機,使用Keil軟件編寫程序,編譯成功后載入仿真器,利用實驗系統(tǒng)提供的顯示電路,動態(tài)顯示數(shù)據(jù)實驗環(huán)境: Keil調(diào)試環(huán)境
8、、VW調(diào)試軟件偉福單片機開發(fā)試驗系統(tǒng)(Digital LAB 51)流程圖:開始定義i,并賦初值0取i至i+7的最后一位16進制數(shù)并將其轉(zhuǎn)換為八段管值依次顯示在8位數(shù)碼管上i自增1,觀察數(shù)字移動效果程序注解:#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進制數(shù)的數(shù)碼管顯示定義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=0x80; /從左邊開始顯示for(i=0;i<LEDLen;i+) OUTBIT=0;
10、 /關(guān)所有八段管 LED=LEDBufi; OUTSEG=LED; /取對應(yīng)16進制數(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; /*“與”實現(xiàn)取i的最后一位,并將其賦為八段管值*/LEDBuf1=LEDMAP(i+1)&0x0f; /*“與”實現(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)移動的效果*/for(j=0;j<200;j+) DisplayLED(); /顯示轉(zhuǎn)化后的八段管值 心得體會: 本次試驗最后的結(jié)果是數(shù)碼管8個數(shù)字依次向左移動。得到結(jié)果后老師問我們這是否是程序應(yīng)有的
12、結(jié)果。我認真研究了程序后,發(fā)現(xiàn)并未如此。程序顯示, 8位數(shù)碼管實際只有1位顯示數(shù)字,顯示完成后下一次開始顯示,這一位暫停顯示。但是程序中延時部分時間過短,整個過程變化過快,導(dǎo)致無法分辨變化過程,也就是8個數(shù)字依次向左移動的結(jié)果。實驗四實驗名稱:鍵盤顯示實驗實驗?zāi)康模和ㄟ^學(xué)習(xí)鍵盤掃描和LED8段數(shù)碼管顯示器的工作原理,掌握鍵盤和顯示器的接口方法和編程方法。實驗環(huán)境: Keil調(diào)試環(huán)境、VW調(diào)試軟件偉福單片機開發(fā)試驗系統(tǒng)(Digital LAB 51)實驗內(nèi)容:在上一個實驗的基礎(chǔ)上,利用實驗提供的鍵盤掃描電路和顯示電路,實現(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; 心得體會:在微機原理與接口技術(shù)課程中,我就已經(jīng)學(xué)習(xí)了用掃描法和反轉(zhuǎn)法查找鍵盤按下值的應(yīng)用原理。這次實驗的原理也是一樣的,使用反轉(zhuǎn)法,即查找由行、列不同組合得到的二進制數(shù)(鍵碼)來對應(yīng)相應(yīng)的按鍵位置,這些在流程圖中已經(jīng)給出。通過本次實驗,我更進一步了解了鍵盤的工作原理,對計算機有了更深的認識。建議與意見:此次為期兩個下午的實驗課,使我在
溫馨提示
- 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)容負責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- iceshelf對混合層分層的影響-洞察闡釋
- 小學(xué)五年級上冊安全工作計劃(18篇)
- 車輛掛靠汽車美容養(yǎng)護合作協(xié)議范本
- 產(chǎn)業(yè)園區(qū)場地預(yù)租及招商引資合同
- 高科技園區(qū)場地?zé)o償租賃協(xié)議
- 車庫及車位租賃管理服務(wù)協(xié)議
- 2025電子產(chǎn)品購銷版合同
- 2025員工勞動合同范本
- 2025合同范本企業(yè)合作運營協(xié)議模板
- 2025年上海市物業(yè)服務(wù)合同示范文本
- 2025年保險從業(yè)人員考試試題及答案
- 湖北省武漢二中2025屆高三下學(xué)期歷史模擬卷7(含答案)
- 大學(xué)生干部競選學(xué)生會干部競選97
- 生物地理會考資料
- 新型抗生素抗性基因污染防控-洞察闡釋
- 2025年暑假學(xué)生跨學(xué)科主題實踐活動作業(yè)設(shè)計
- 公司內(nèi)部運作流程優(yōu)化方案
- 公司掛名法人免責(zé)協(xié)議書
- 給藥錯誤魚骨圖分析
- 聘請阿姨做飯合同協(xié)議
- 湖南炎德·英才大聯(lián)考長郡中學(xué)2025屆模擬試卷(一)語文+答案
評論
0/150
提交評論