




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
1、精選文檔單片機與接口技術實驗報告信息工程學院 2016年9月遼東學院信息技術學院單片機與接口技術實驗報告姓名: 王瑛 學號: 0913140319 班級: B1403 專業(yè): 網絡工程 層次: 本科 2016年9月目 錄實驗題目:實驗環(huán)境的初識、使用及調試方法(第一章)實驗題目:單片機工程初步實驗(第二章)實驗題目:基本指令實驗(第三章)4實驗題目:定時器/計數器實驗(第五章)4實驗題目:中斷實驗(第六章)4實驗題目:輸入接口實驗(第八章)4實驗題目:I/O口擴展實驗(第九章)4實驗題目:串行通信實驗(第十一章)4實驗題目:A/D,D/A轉換實驗(第十七章)4實驗題目:實驗環(huán)境的初識、使用及調
2、試方法實驗實驗類型: 驗證性 實驗課時: 1 時間:2016年10月24日一、 實驗內容和要求了解單片機的基礎知識了解51單片機的組成和工作方法掌握項目工程的建立、編輯、編譯和下載的過程方法熟練單片機開發(fā)調試工具和方法二、 實驗結果及分析單片機最小系統(tǒng)的構成: Keil集成開發(fā)環(huán)境:STC-ISP:實驗題目:單片機工程初步實驗實驗類型: 驗證性 實驗課時: 1 時間:2016 年10 月24 日一、 實驗內容和要求點亮一個LED小燈程序下載到單片機中二、實驗結果及分析1、點亮一個LED小燈點亮LED小燈的程序:#include /包含特殊功能寄存器定義的頭文件sbit LED = P00; s
3、bit ADDR0 = P10; /sbit必須小寫,P必須大寫sbit ADDR1 = P11;sbit ADDR2 = P12;sbit ADDR3 = P13;sbit ENLED = P14;void main() ENLED = 0; ADDR3 = 1; ADDR2 = 1; ADDR1 = 1; ADDR0 = 0; LED = 0; /點亮小燈 while (1); /程序停止 2、程序下載 首先,我們要把硬件連接好,把板子插到我們的電腦上,打開設備管理器查看所使用的COM 口,如圖所示:然后 STC 系列單片的下載軟件STC-ISP,端口為上一步查到的端口,其余選項改成如圖所
4、示:打開程序文件下載后當軟件顯示“已加密”就表示程序下載成功了,如下圖所示:3、 心得體會 通過對單片機的初步學習和認識,我了解到了單片機的工作流程,還有通過自己編寫單片機的程序,也讓我對單片機的學習有了更大的興趣,雖然過程中遇到了些許的困難,但這也讓自己意識到還有很多不足,通過接下來的學習,希望對單片機的課程有更加深入的了解。實驗題目:基本指令實驗實驗類型: 驗證性 實驗課時: 2 時間:2016年 11月 1日1、 實驗內容和要求了解單片機的硬件基礎知識 LED燈閃爍的程序二、實驗結果及分析1、去耦電容 電容有緩沖和穩(wěn)定的作用,有了這個電容,可以說我們的電壓和電流就會很穩(wěn)定了,不會產生大的
5、波動。2、74HC138三八譯碼器 在我們設計單片機電路的時候,單片機的 IO 口數量是有限的,有時并滿足不了我們的設計需求,比如我們的 STC89C52 一共有 32 個 IO 口,但是我們?yōu)榱丝刂聘嗟钠骷鸵褂靡恍┩鈬臄底中酒?,這種數字芯片由簡單的輸入邏輯來控制輸出邏輯,比如 74HC138三八譯碼器。如圖所示。3、LED燈閃爍的程序#includesbit LED = P00;sbit ADDR0 = P10;sbit ADDR1 = P11;sbit ADDR2 = P12;sbit ADDR3 = P13;sbit ENLED = P14; void main() /void
6、為函數類型unsigned int i = 0; /定義一個無符號整型變量i,賦初始值為0ENLED = 0;ADDR3 = 1;ADDR2 = 1;ADDR1 = 1;ADDR0 = 0;while(1)LED = 0; /點亮小燈for(i = 0; i=3000; i+); /延時LED = 1; /熄滅小燈for(i = 0; i=3000; i+); /延時三、心得體會 做好一件事的前提條件是你對自己所要做的事情有充分的了解和認識,做好完全的準備才能夠有保證將這件事做好,學習也是如此,想要做好一個程序,就要將他的工作過程以及條件搞清楚才能將程序編好編清楚。實驗題目:定時器/計數器實驗
7、實驗類型: 驗證性 實驗課時: 3 時間:2016年11月 8 日一、實驗內容和要求學習和了解單片機中的定時器、及其寄存器學習數碼管的相關知識編寫數碼管的靜態(tài)顯示的相關程序二、實驗結果及分析1、數碼管數碼管示意圖: 數碼管結構圖:2、數碼管靜態(tài)顯示的程序#include sbit ADDR0 = P10;sbit ADDR1 = P11;sbit ADDR2 = P12;sbit ADDR3 = P13;sbit ENLED = P14;void main() ENLED = 0; ADDR3 = 1; ADDR2 = 0; ADDR1 = 0; ADDR0 = 0; P0 = 0xF9; w
8、hile (1);三、心得體會 通過這次實驗課,我對定時器有了更加深刻的了解,也讓我知道了對教材應該更熟悉,因為教材是基礎的,只有把基礎搞好了才能夠進行其他層次的學習。有時候也可以通過軟件的仿真來驗證書上的一些理論性的東西。實現自己想要的效果。實驗題目:中斷實驗實驗類型: 驗證性 實驗課時: 4 時間:2016年 11月15 日一、實驗內容和要求復習C語言中的數組、if語句和switch語句學習數碼管的動態(tài)顯示相關知識掌握單片機中斷系統(tǒng)二、實驗結果及分析1、數碼管的動態(tài)顯示程序(switch語句)#include sbit ADDR0 = P10;sbit ADDR1 = P11;sbit A
9、DDR2 = P12;sbit ADDR3 = P13;sbit ENLED = P14;unsigned char code LedChar = 0xC0, 0xF9, 0xA4, 0xB0, 0x99, 0x92, 0x82, 0xF8, 0x80, 0x90, 0x88, 0x83, 0xC6, 0xA1, 0x86, 0x8E;unsigned char LedBuff6 = 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF;void main() unsigned char i = 0; unsigned int cnt = 0; unsigned long se
10、c = 0; ENLED = 0; ADDR3 = 1; TMOD = 0x01; TH0 = 0xFC; TL0 = 0x67; TR0 = 1; while (1) if (TF0 = 1) TF0 = 0; TH0 = 0xFC; TL0 = 0x67; cnt+; if (cnt = 1000) cnt = 0; sec+; LedBuff0 = LedCharsec%10; LedBuff1 = LedCharsec/10%10; LedBuff2 = LedCharsec/100%10; LedBuff3 = LedCharsec/1000%10; LedBuff4 = LedCh
11、arsec/10000%10; LedBuff5 = LedCharsec/100000%10; switch (i) case 0: ADDR2=0; ADDR1=0; ADDR0=0; i+; P0=LedBuff0; break; case 1: ADDR2=0; ADDR1=0; ADDR0=1; i+; P0=LedBuff1; break; case 2: ADDR2=0; ADDR1=1; ADDR0=0; i+; P0=LedBuff2; break; case 3: ADDR2=0; ADDR1=1; ADDR0=1; i+; P0=LedBuff3; break; case
12、 4: ADDR2=1; ADDR1=0; ADDR0=0; i+; P0=LedBuff4; break; case 5: ADDR2=1; ADDR1=0; ADDR0=1; i=0; P0=LedBuff5; break; default: break; 2、中斷系統(tǒng)程序(if.else語句)#include sbit ADDR0 = P10;sbit ADDR1 = P11;sbit ADDR2 = P12;sbit ADDR3 = P13;sbit ENLED = P14;unsigned char code LedChar = 0xc0,0xF9,0xA4,0xB0,0x99,0x
13、92,0x82,0xF8,0x80,0x90,0x88,0x83,0xC6,0xA1,0x86,0x8E;unsigned char LedBuff6 = 0xFF,0xFF,0xFF,0xFF,0xFF,0xFF;unsigned char flagls = 0; void main()unsigned char i = 0;unsigned int cnt = 0;unsigned long sec = 0;ENLED = 0;ADDR3 = 1;TMOD = 1;TH0 = 0x01;TL0 = 0xFC;TL0 = 0x67;TR0 = 1;while (1)if (TF0 =1)TF
14、0 = 0;TH0 = 0xFC;TL0 = 0x67;cnt +;if (cnt =1000)cnt = 0;sec+;LedBuff0 = LedCharsec%10;LedBuff1 = LedCharsec/10%10;LedBuff2 = LedCharsec/100%10;LedBuff3 = LedCharsec/1000%10;LedBuff4 = LedCharsec/10000%10;LedBuff5 = LedCharsec/100000%10; if (i = 0) ADDR2 = 0; ADDR1 = 0; ADDR0 = 0; i+; P0 = LedBuff0;
15、else if (i = 1) ADDR2 = 0; ADDR1 = 0; ADDR0 = 1; i+; P0 = LedBuff1; else if (i = 2) ADDR2 = 0; ADDR1 = 1; ADDR0 = 1; i+; P0 = LedBuff2; else if (i = 3) ADDR2 = 0; ADDR1 = 1; ADDR0 = 1; i+; P0 = LedBuff3; else if (i = 4) ADDR2 = 1; ADDR1 = 0; ADDR0 = 0; i+; P0 = LedBuff4; else if (i = 5) ADDR2 = 1; A
16、DDR1 = 0; ADDR0 = 1; i+; P0 = LedBuff5; 三、心得體會通過在實驗課的學習,了解到了51單片機中中斷的概念以及中斷處理系統(tǒng)的工作原理。學習知識也應該經常復習。也讓我感受到他是一門綜合性實踐性較強的課程,也是我體會到要想綜合運用所學的理論知識、提高設計能力,還需增加實際操作的環(huán)節(jié)。 實驗題目:輸入接口實驗實驗類型: 驗證性 實驗課時: 5 時間:2016年 11月 22 日一、實驗內容和要求掌握函數調用、函數形式參數和實際參數的相關知識學習單片機中按鍵的相關知識編寫簡易加法計算器程序二、實驗結果及分析1、按鍵獨立按鍵原理圖:矩陣按鍵原理圖:按鍵的掃描程序:#i
17、nclude sbit ADDR0 = P10;sbit ADDR1 = P11;sbit ADDR2 = P12;sbit ADDR3 = P13;sbit ENLED = P14;sbit KEY_IN_1 = P24;sbit KEY_IN_2 = P25;sbit KEY_IN_3 = P26;sbit KEY_IN_4 = P27;sbit KEY_OUT_1 = P23;sbit KEY_OUT_2 = P22;sbit KEY_OUT_3 = P21;sbit KEY_OUT_4 = P20;unsigned char code LedChar = 0xC0, 0xF9, 0xA
18、4, 0xB0, 0x99, 0x92, 0x82, 0xF8, 0x80, 0x90, 0x88, 0x83, 0xC6, 0xA1, 0x86, 0x8E;unsigned char KeySta44 = 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1;void main() unsigned char i, j; unsigned char backup44 = 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1, 1; EA = 1; ENLED = 0; ADDR3 = 1; ADDR2 = 0; AD
19、DR1 = 0;ADDR0 = 0; TMOD = 0x01; TH0 = 0xFC; TL0 = 0x67; ET0 = 1; TR0 = 1; P0 = LedChar0; while (1) for (i=0; i4; i+) for (j=0; j4; j+) if (backupij != KeyStaij) if (backupij != 0) P0 = LedChari*4+j; backupij = KeyStaij; void InterruptTimer0() interrupt 1 unsigned char i; static unsigned char keyout
20、= 0; static unsigned char keybuf44 = 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF ; TH0 = 0xFC; TL0 = 0x67; keybufkeyout0 = (keybufkeyout0 1) | KEY_IN_1; keybufkeyout1 = (keybufkeyout1 1) | KEY_IN_2; keybufkeyout2 = (keybufkeyout2 1) | KEY_IN_3; keyb
21、ufkeyout3 = (keybufkeyout3 1) | KEY_IN_4; for (i=0; i4; i+) if (keybufkeyouti & 0x0F) = 0x00) KeyStakeyouti = 0; else if (keybufkeyouti & 0x0F) = 0x0F) KeyStakeyouti = 1; keyout+; keyout = keyout & 0x03; switch (keyout) case 0: KEY_OUT_4 = 1; KEY_OUT_1 = 0; break; case 1: KEY_OUT_1 = 1; KEY_OUT_2 =
22、0; break; case 2: KEY_OUT_2 = 1; KEY_OUT_3 = 0; break; case 3: KEY_OUT_3 = 1; KEY_OUT_4 = 0; break; default: break; 三、心得體會 用戶與單片機之間的信息交互需要依賴于兩類設備:輸入設備和輸出設備。通過這節(jié)實驗課的學習,讓我對單片機輸入接口有了更深入的了解,鞏固了書上學到的知識,熟悉了操作。實驗題目:I/O口擴展實驗實驗類型: 驗證性 實驗課時: 6 時間: 2016年11月29日一、實驗內容和要求了解單片機I/O口、上下拉電阻的結構28BYJ-48型步進電機二、實驗結果及分析1、
23、I/O口結構2、28BYJ-48型步進電機#include unsigned long beats = 0; void StartMotor(unsigned long angle);void main() EA = 1; TMOD = 0x01; TH0 = 0xF8; TL0 = 0xCD; ET0 = 1; TR0 = 1; StartMotor(360*2+180); while (1);void StartMotor(unsigned long angle) EA = 0; beats = (angle * 4076) / 360; EA = 1;void InterruptTime
24、r0() interrupt 1 unsigned char tmp; static unsigned char index = 0; unsigned char code BeatCode8 = 0xE, 0xC, 0xD, 0x9, 0xB, 0x3, 0x7, 0x6 ; TH0 = 0xF8; TL0 = 0xCD; if (beats != 0) tmp = P1; tmp = tmp & 0xF0; tmp = tmp | BeatCodeindex; P1 = tmp; index+; index = index & 0x07; beats-; else P1 = P1 | 0x
25、0F; 三、心得體會 通過本次實驗課學會了I/O口的使用,學會了延時子程序的編寫和使用。通過對單片機的深入學習,我也發(fā)現通過單片機能過實現很多自己想要的功能,我們不能過只拘泥于課本知識,要結合實際的學習,這也讓我對學習單片機的興趣更加濃厚。實驗題目:串行通信實驗實驗類型: 驗證性 實驗課時: 7 時間: 2016年 12月 6 日一、實驗內容和要求了解單片機串行通信的知識掌握RS-232通信接口、USB轉串口通信串口通信的應用和實例二、實驗結果及分析1、單片機之間UART通信示意圖2、 串口數據發(fā)送示意圖3、串口通信應用程序#include sbit PIN_RXD = P30; 義sbit
26、PIN_TXD = P31; bit RxdOrTxd = 0; bit RxdEnd = 0; bit TxdEnd = 0; unsigned char RxdBuf = 0; unsigned char TxdBuf = 0; void ConfigUART(unsigned int baud);void StartTXD(unsigned char dat);void StartRXD();void main() EA = 1; ConfigUART(9600); while (1) while (PIN_RXD); StartRXD(); while (!RxdEnd); Start
27、TXD(RxdBuf+1); while (!TxdEnd); void ConfigUART(unsigned int baud) TMOD &= 0xF0; TMOD |= 0x02; TH0 = 256 - (11059200/12)/baud; void StartRXD() TL0 = 256 - (256-TH0)1); ET0 = 1; TR0 = 1; RxdEnd = 0; RxdOrTxd = 0; void StartTXD(unsigned char dat) TxdBuf = dat; TL0 = TH0; ET0 = 1; TR0 = 1; PIN_TXD = 0;
28、 TxdEnd = 0; RxdOrTxd = 1; void InterruptTimer0() interrupt 1 static unsigned char cnt = 0; if (RxdOrTxd) cnt+; if (cnt = 1; else if (cnt = 9) PIN_TXD = 1; else cnt = 0; TR0 = 0; TxdEnd = 1; else if (cnt = 0) if (!PIN_RXD) RxdBuf = 0; cnt+; else TR0 = 0; else if (cnt = 1; if (PIN_RXD) RxdBuf |= 0x80
29、; cnt+; else cnt = 0; TR0 = 0; if (PIN_RXD) RxdEnd = 1; 三、心得體會 這次實驗讓我初步了解了串口通信的原理,掌握單片機串口波特率的設置方法,掌握單片機串口查詢方式程序的設計方法,單片機一般充當控制器的角色,通過串口發(fā)送一定格式的數據來控制與之相連設備的動作,同時設備也會反饋回來一些自己的狀態(tài)信息給單片機,也知道了許多串口通信在生活中的應用實例。實驗題目:A/D,D/A轉換實驗實驗類型: 驗證性 實驗課時: 8 時間: 2016年12月13 日一、實驗內容和要求掌握A/D和D/A的基本概念A/D和D/A的輸入和輸出2、 實驗結果及分析1、P
30、CF8591 原理圖2、PCF8591 基準與對外接口原理圖3、A/D轉換程序#include bit flag300ms = 1; unsigned char T0RH = 0; unsigned char T0RL = 0; void ConfigTimer0(unsigned int ms);unsigned char GetADCValue(unsigned char chn);void ValueToString(unsigned char *str, unsigned char val);extern void I2CStart();extern void I2CStop();ex
31、tern unsigned char I2CReadACK();extern unsigned char I2CReadNAK();extern bit I2CWrite(unsigned char dat);extern void InitLcd1602();extern void LcdShowStr(unsigned char x, unsigned char y, unsigned char *str);void main() unsigned char val; unsigned char str10; EA = 1; ConfigTimer0(10); InitLcd1602();
32、 LcdShowStr(0, 0, AIN0 AIN1 AIN3); while (1) if (flag300ms) flag300ms = 0; val = GetADCValue(0); ValueToString(str, val); LcdShowStr(0, 1, str); val = GetADCValue(1); ValueToString(str, val); LcdShowStr(6, 1, str); val = GetADCValue(3); ValueToString(str, val); LcdShowStr(12, 1, str); unsigned char
33、GetADCValue(unsigned char chn) unsigned char val; I2CStart(); if (!I2CWrite(0x481) I2CStop(); return 0; I2CWrite(0x40|chn); I2CStart(); I2CWrite(0x488); T0RL = (unsigned char)tmp; TMOD &= 0xF0; TMOD |= 0x01; TH0 = T0RH; TL0 = T0RL; ET0 = 1; TR0 = 1; void InterruptTimer0() interrupt 1 static unsigned char tmr300
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業(yè)或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年中國堅果禮盒行業(yè)市場全景分析及前景機遇研判報告
- 2025-2030年中國PLUS模塊行業(yè)深度研究分析報告
- 中國剪切板行業(yè)市場調查研究及投資潛力預測報告
- 家具工藝培訓課件
- 2024年全球及中國食品和飲料軟管行業(yè)頭部企業(yè)市場占有率及排名調研報告
- 2025年 化工自動化控制儀表操作證考試練習題附答案
- 2025年 國科大附屬學校招聘教師考試試題附答案
- 2024年中國功能性涂布膠膜行業(yè)調查報告
- 2025年中國塑合行業(yè)市場發(fā)展前景及發(fā)展趨勢與投資戰(zhàn)略研究報告
- 2020-2025年中國鼓風機行業(yè)發(fā)展趨勢及投資前景預測報告
- 套管開窗側鉆技術
- 2023-2024學年山西省長治市小學語文五年級期末??碱}詳細參考答案解析
- 淘寶客服銷售技巧-客戶分析
- 現代物流管理(第三版-錢廷仙)課件3.物流成本核算特點與內容
- 混凝土結構下冊第章鋼筋混凝土框架結構設計
- 江西師范大學師范類教育心理學期末考試答案
- 小區(qū)燃氣壁掛爐采購及安裝合同
- 電子科技大學《嵌入式系統(tǒng)》20春期末考試【答案50234】
- 危貨運輸危險源識別清單
- GB/T 7705-2008平版裝潢印刷品
- GB/T 16631-2008高效液相色譜法通則
評論
0/150
提交評論