實(shí)驗(yàn)指導(dǎo)書MCU寧大_第1頁
實(shí)驗(yàn)指導(dǎo)書MCU寧大_第2頁
實(shí)驗(yàn)指導(dǎo)書MCU寧大_第3頁
實(shí)驗(yàn)指導(dǎo)書MCU寧大_第4頁
實(shí)驗(yàn)指導(dǎo)書MCU寧大_第5頁
已閱讀5頁,還剩28頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

1、目 錄1. 實(shí)驗(yàn)板介紹22. 讓實(shí)驗(yàn)箱成為仿真器3實(shí)驗(yàn)1 熟悉實(shí)驗(yàn)環(huán)境與簡單編程4實(shí)驗(yàn)2 數(shù)據(jù)排序?qū)嶒?yàn)17實(shí)驗(yàn)3端口的輸入、輸出實(shí)驗(yàn)18實(shí)驗(yàn)4 陣列鍵盤與顯示20實(shí)驗(yàn)5 外部中斷實(shí)驗(yàn)24實(shí)驗(yàn)6 計(jì)數(shù)器實(shí)驗(yàn)25實(shí)驗(yàn)7 定時(shí)器實(shí)驗(yàn)28實(shí)驗(yàn)8 a/d實(shí)驗(yàn)29實(shí)驗(yàn)9 串口rs232實(shí)驗(yàn)30實(shí)驗(yàn)10 數(shù)字時(shí)鐘311. 實(shí)驗(yàn)板介紹com1com2miniusbusbs2s1主芯片測溫電路基準(zhǔn)電壓自定義擴(kuò)展區(qū)sw19實(shí)時(shí)時(shí)鐘led流水燈紅外收發(fā)數(shù)碼管7459574595sp3232ch3401204is62c256sw17sw18adc按鍵4*4掃描陣列鍵盤j8j9j7j10j5j1274573實(shí)驗(yàn)板的布局

2、功能介紹:(1) 供電:通過miniusb或usb口供電(實(shí)驗(yàn)箱提供miniusb數(shù)據(jù)口),然后通過sb1204穩(wěn)壓后作為整個(gè)實(shí)驗(yàn)板的工作電源(2) 主芯片:iap15f2k61s2,可在線仿真(3) 電路板復(fù)位:sw19,按下斷電,松開上電(4) 流水燈:由led7、led8、led9、led10組成(5) 串行口:電路板上有三個(gè)串口,主芯片通過芯片sp3232電平轉(zhuǎn)換連接到com1和com2口。另外一個(gè)com通過芯片ch340實(shí)現(xiàn)usb轉(zhuǎn)串口,用于程序的下載及在線調(diào)試。(6) 數(shù)碼顯示:八個(gè)數(shù)碼管由2芯片74595驅(qū)動(dòng)(7) 紅外收發(fā):實(shí)現(xiàn)紅外的信號(hào)收發(fā)(8) 實(shí)時(shí)時(shí)鐘:芯片為pcf856

3、3(9) 測溫電路:未提供熱敏電阻sdnt2012x103f3950ftf(10) 基準(zhǔn)電壓:由芯片cd431給adc提供基準(zhǔn)電壓2.5v(11) 陣列接盤:通過掃描端口的方式檢測按鍵(12) adc鍵盤:通過ad采樣的方式檢測鍵盤(13) 中斷按鍵:外部中斷按鍵sw17、sw18(14) 擴(kuò)展ram:通過外部并行總線的方式擴(kuò)展了32k sram,芯片為is62c256al,其中74573為地址鎖存器(15) 自定義擴(kuò)展區(qū):過孔焊盤,可根據(jù)需要進(jìn)行擴(kuò)展(16) 其他接插口:j5、j7、j8、j9、j10、j12(擴(kuò)展液晶12764接口)2. 讓實(shí)驗(yàn)箱成為仿真器為了方便學(xué)習(xí)單片機(jī)的硬件編程,一般

4、采用在線仿真的方式進(jìn)行。因此每次實(shí)驗(yàn)前,請(qǐng)先做這一步“創(chuàng)建仿真器”燒寫仿真器設(shè)置用usb線將pc電腦和實(shí)驗(yàn)箱連接,單片機(jī)型號(hào)選擇iap15f2k61s2,串口號(hào)會(huì)自動(dòng)檢測usb-serial ch340 (comx),一般不需要調(diào)整。然后如上圖,進(jìn)入到“keil仿真設(shè)置”頁面,點(diǎn)擊“將iap15f2k61s2設(shè)置為仿真芯片(5.0v系統(tǒng))”按鈕,再在實(shí)驗(yàn)箱中按一下sw19按鈕,當(dāng)程序下載完成后仿真器便制作完成了。燒寫仿真器的過程實(shí)驗(yàn)1 熟悉實(shí)驗(yàn)環(huán)境與簡單編程一、實(shí)驗(yàn)?zāi)康?. 熟悉基于keil下的實(shí)驗(yàn)環(huán)境。2. 掌握程序調(diào)試的單步、斷點(diǎn)、連續(xù)運(yùn)行方法。 3. 熟悉在keil環(huán)境下觀察內(nèi)部ram

5、, 特殊功能寄器的方法。二、實(shí)驗(yàn)內(nèi)容編寫并調(diào)試一個(gè)雙字節(jié)無符號(hào)十進(jìn)制數(shù)加法程序。其功能為將被加數(shù)寫入30h、31h單元,加數(shù)寫入40h、41h單元,運(yùn)行程序結(jié)果寫入50h、51h、52h單元中,加法程序功能為:(30h)(31h)+(40h)(41h)=(50h)(51h)(52h)(都是高位在前、低位在后)。三、實(shí)驗(yàn)設(shè)備1.stc學(xué)習(xí)板套。2.pc機(jī)一臺(tái)。四、實(shí)驗(yàn)步驟1. 啟動(dòng)pc 機(jī), 打開桌面上的 keil vision4 軟件,進(jìn)入vision4 界面,如圖1-1。圖1-1 vision4 界面2. 創(chuàng)建和打開項(xiàng)目(項(xiàng)目管理)項(xiàng)目是用來保存文件、鏈接工具、目標(biāo)代碼生成和窗口配置信息的。

6、可以使用“project”菜單中的“new vision project”選項(xiàng)來創(chuàng)建項(xiàng)目。一旦項(xiàng)目被保存,將保存如下信息: 當(dāng)前所有打開的文件。 集成鏈接工具的設(shè)置。 目標(biāo)生成配置。 主ide 窗口及已經(jīng)打開的調(diào)試窗口的位置和大小。 編輯器的設(shè)置如字體和文字顏色等。2.1 創(chuàng)建新項(xiàng)目2.1.1 選擇【project】/【new vision project】選項(xiàng),并打開。如圖1-2 。2.1.2 在彈出的“create new project”對(duì)話框中選擇要保存項(xiàng)目文件的路徑,如圖13。在“e盤” 以自己的學(xué)號(hào)建立一文件夾,以后自己的實(shí)驗(yàn)程序都存在此文件夾中。例如:新文件夾為“12345678

7、” , 然后單擊“保存”按鈕。圖1-2 project菜單新建文件夾按鈕圖1-3“create new project”對(duì)話框2.1.3 在彈出的“create new project”對(duì)話框中的“文件名”文本框中輸入項(xiàng)目名,例如:shiyan1,然后單擊“保存”按鈕。如圖1-4。到此建立項(xiàng)目完成。 圖1-4 建立項(xiàng)目2.1.4 在彈出的對(duì)話框中要求選擇單片機(jī)的型號(hào)。在keil中新建項(xiàng)目時(shí)選擇芯片型號(hào)時(shí),便會(huì)有“stc mcu database”的選擇項(xiàng),如下圖 圖1-5 選擇單片機(jī)類型然后從列表中選擇相應(yīng)的mcu型號(hào)(目前stc支持仿真的型號(hào)只有stc15f2k60s2),所以我們在此選擇“

8、stc15f2k60s2”的型號(hào),點(diǎn)擊“確定”完成選擇圖1-6 選擇stc15f2k60s2型號(hào)2.1.5 彈出的對(duì)話框點(diǎn)擊“確定”按鈕后,會(huì)彈出的如圖1-7 的對(duì)話框,詢問是否要將啟動(dòng)代碼“startup code”加入到項(xiàng)目中。c 語言文件編程點(diǎn)擊“是”;匯編文件點(diǎn)擊“否”。圖1-7 “startup code”3. 源程序編輯ide 包括一個(gè)全功能的編輯器。可用文件菜單中的“new file”命令來新建文件,或用文件工具欄中的“new”按鈕 ,然后開始鍵入源程序。只有當(dāng)文件的擴(kuò)展名為.asm或.c時(shí),才具有源程序關(guān)鍵字符彩色顯示功能。可用文件保存按鈕,或用文件菜單中的“save”或“sa

9、veas”命令保存文件。然后再將編輯好的源代碼添加到項(xiàng)目中。3.1 建立一個(gè)新的實(shí)驗(yàn)源程序文件。選擇【file】/【new】選項(xiàng),或者單擊工具欄 按鈕。如果已經(jīng)有源程序文件,可以忽略這一步。3.2 在彈出的程序文本框中輸入一個(gè)簡單的程序,如圖1-8 所示。圖1-8 輸入新的實(shí)驗(yàn)源程序 3.3 程序輸入完成后,要保存程序文件。選擇【file】/【save】選項(xiàng),或者單擊工具欄 按鈕,保存文件。在彈出的對(duì)話框中選擇要保存的路徑,在“文件名”文本框中輸入文件名。注意一定要輸入文件擴(kuò)展名,如果是c 程序文件,文件名為 *.c ;如果是匯編文件,文件名為 * .asm 。例如:shiyan1.c ,單擊

10、“保存”按鈕。注意一定要有擴(kuò)展名.c。#include “stc15f2k61s2.h”#include <stdio.h>#include <intrins.h>unsigned char a5 _at_ 0x50; unsigned char ww0 _at_ 0x30;unsigned char ww1 _at_ 0x31;unsigned char ww2 _at_ 0x32;unsigned char ww3 _at_ 0x33;unsigned char ww4 _at_ 0x34; unsigned char ee0 _at_ 0x40;unsigned

11、char ee1 _at_ 0x41;unsigned char ee2 _at_ 0x42; unsigned char bdata bzw _at_ 0x20; /標(biāo)志位sbit bb0 = bzw0; /標(biāo)志位0sbit bb1 = bzw1; /標(biāo)志位1sbit bb2 = bzw2; /標(biāo)志位2 unsigned char xx;yy;zz;int i,k,y,z,x; void main() ww0=0x95; /存儲(chǔ)器窗口 察看30h ww1=0xa6; / 察看31h ww2=0xb7; / 察看32h ww3=0x88; / 察看33h ww4=0x08; / 察看34h k

12、=ww0+ww1+ww2+ww3+ ww4; / 觀察和堆棧窗口 察看 k=0x282 ww4=k/4; / 察看34h =0xa0 ee0=ww4/100; /察看40h =0x01 xx=ww4%100; /察看 xx 觀察和堆棧窗口 察看 xx=0x3c ee1=xx/10; /察看41h =0x06 ee2=xx%10; /察看42h =0x00 if (ee0>2) bb0=1; /察看20h 位0 if (ee1>=5) bb1=1; /察看20h 位1 if (ee2<9) bb2=1; /察看20h 位2 for(i=0,k=0x55;i<5;i+,k+

13、) ai=k; / 察看 存儲(chǔ)器窗口 (50h-54h) acc=0xa0; /專用寄存器窗口 察看 a b=0xbb; /專用寄存器窗口 察看 b switch(acc+1) case 0xa1: tl0=0x77;th0=0x88; /存儲(chǔ)器窗口 察看8ah,8ch break; case 0xa2: tl0=0x33;th0=0x44; /存儲(chǔ)器窗口 察看8ah, 8ch break; default: tl0=0x11; th0=0x22; /存儲(chǔ)器窗口 察看8ah, 8ch break; while(1); 3.4 將編輯好的源代碼文件添加到項(xiàng)目中。單擊target1 前面的 + 號(hào)

14、,展開里面的內(nèi)容source group1,如圖1-9 所示。3.5 用右鍵單擊source group1,在彈出的快捷菜單中選擇add file to groupsourcegroup1選項(xiàng),如圖1-10所示。3.6 如果是c 文件,則選擇 “c source file”;如果是匯編文件,則選擇“asm source file”, 選擇剛才源程序文件“shiyan1”,單擊“add”按鈕,如果要添加多個(gè)文件,可以不斷添加。添加完畢后單擊“close”按鈕,關(guān)閉該窗口,如圖1-11 。 圖1-9 target 展開圖 圖1-10 add files to group source group1

15、菜單圖1-11 add files to group source group1對(duì)話框3.7 接下來要對(duì)目標(biāo)進(jìn)行一些設(shè)置。用鼠標(biāo)右鍵(注意用右鍵)單擊target1,在彈出的會(huì)計(jì)菜單中選擇options for target “target 1”選項(xiàng),如圖1-12 所示。 圖1-12 options for target “target 1”選項(xiàng)3.11 選擇設(shè)置debug 選項(xiàng)卡,這里有兩類仿真形式可選:use simulator 和use:stc monitor-51 driver,前一種是純軟件仿真,后一種是帶有monitor-51 目標(biāo)仿真器的仿真。如圖1-13 所示。 純軟件仿真仿真

16、,選擇“use simulator”即可。選擇stc仿真驅(qū)動(dòng)圖1-13 設(shè)置debug 選項(xiàng)如上圖,首先進(jìn)入到項(xiàng)目的設(shè)置頁面,選擇“debug”設(shè)置頁,第2步選擇右側(cè)的硬件仿真“use ”,第3步,在仿真驅(qū)動(dòng)下拉列表中選擇“stc monitor-51 driver”項(xiàng),然后點(diǎn)擊“settings”按鈕,進(jìn)入下面的設(shè)置畫面,對(duì)串口的端口號(hào)和波特率進(jìn)行設(shè)置,波特率一般選擇115200或者57600。到此設(shè)置便完成了。4. 源程序的編譯和鏈接編譯程序,選擇【project】/【rebuild all target files】選項(xiàng).或者單擊工具欄中的 按鈕,開始編譯程序。如果編譯成功,開發(fā)環(huán)境下面

17、會(huì)顯示編譯成功的信息,圖1-14;如果不成功,圖1-15,需修改程序語法等,選中圖中程序錯(cuò)誤的行,雙擊左鍵,則在程序編輯窗口中,在錯(cuò)誤源代碼所在的行處顯示一標(biāo)記,對(duì)程序錯(cuò)誤進(jìn)行修改,全部修改后,重新編譯,直至編譯成功。圖1-14 編譯成功圖1-15 編譯不成功5. 調(diào)試,運(yùn)行程序菜單5.1 編譯完畢之后,選擇【debug】/【start/stop debug session】選項(xiàng),或者單擊工具欄中的銨鈕,即就進(jìn)入調(diào)試環(huán)境,如圖1-16 ,或圖1-17,單擊工具欄 銨鈕,可在匯編程序與反匯編程序之間來回切換。 開始調(diào)試程序。程序調(diào)試前應(yīng)先要熟悉調(diào)試菜單debug 、調(diào)試命令,視圖菜單view、項(xiàng)

18、目菜單project 和項(xiàng)目命令project。見表1、表2、表35.2 單步執(zhí)行程序:a. 單擊工具欄 銨鈕, 顯示存儲(chǔ)器窗口,在memory#1 中的 / ddress 窗口處輸入:d : 30h, 然后按回車鍵,在程序執(zhí)行過程中,注意觀察ram 30h, 31h, 40h, 41h, 50h, 51h, 52h d1數(shù)據(jù)變化,注意觀察特殊功能寄存器的存數(shù)據(jù)變化情況。(a,b,sp,dptr,pc,psw,r0r7)。b. 單擊工具欄 或快捷鍵 f11 ,單步執(zhí)行程序,觀察ram ,特殊功能寄器“ a” 變化情況。c. 當(dāng)單步執(zhí)行程序到 “ while(1); ” 時(shí),停止向下執(zhí)行,原地踏

19、步。d. 單擊工具欄 復(fù)位。e. 重新單步執(zhí)行程。 觀察和堆棧窗口專用寄存器窗口銨鈕專用寄存器存儲(chǔ)器窗口觀察和堆棧窗口銨鈕匯編程序與反匯編程序切換銨鈕存儲(chǔ)器窗口銨鈕圖1-16 匯編程序匯編程序匯編程序與反匯編程序切換銨鈕圖1-17 反匯編程序5.2.2 程序的修改a. 如果程序需要修改,單擊工具欄 退出調(diào)試狀態(tài)。b. 對(duì)程序進(jìn)行修改,并保存c. 編譯程序d. 重新開始調(diào)試程序。5.2.3 斷點(diǎn)執(zhí)行程序:a. 斷點(diǎn)的設(shè)置:單擊要設(shè)置斷點(diǎn)的程序行后,移動(dòng)鼠標(biāo)到工具欄,單擊 ,此時(shí)要設(shè)置斷點(diǎn)的程序行前,顯示一紅色標(biāo)記,斷點(diǎn)設(shè)置完成??稍O(shè)置多個(gè)斷點(diǎn)。b. 單擊工具欄 或快捷鍵 f5,直到遇到一個(gè)中斷后

20、停止,c. 再次單擊工具欄 或快捷鍵 f5,程序從斷點(diǎn)處開始向下執(zhí)行程序。d. 斷點(diǎn)的取消:單擊要取消設(shè)置斷點(diǎn)的程序行后,移動(dòng)鼠標(biāo)到工具欄,單擊 ,此時(shí)設(shè)置斷點(diǎn)的紅色標(biāo)記消除,斷點(diǎn)被取消。 e. 單擊工具欄 復(fù)位。5.2.3 連續(xù)執(zhí)行程序:單擊工具欄 或快捷鍵 f5 ,連續(xù)執(zhí)行程序,單擊工具欄 或快捷鍵 esc,停止程序運(yùn)行。6. 修改數(shù)據(jù) :ww0=0x55; /存儲(chǔ)器窗口 察看30h ww1=0x77; /察看31h ww2=0xaa; /察看32h ww3=0x44; /察看33h ww4=0xdf; /察看34hacc=0xa3; /專用寄存器窗口 察看 a b=0xbb; /專用寄存

21、器窗口 察看 b7.重新調(diào)試。表1 視圖菜單view。菜單工具欄描述status bar顯示 / 隱藏狀態(tài)條file toolbar顯示 / 隱藏文件菜單條build toobar顯示 / 隱藏編譯菜單條debug toobar顯示 / 隱藏調(diào)試菜單條project window顯示 / 隱藏項(xiàng)目窗口output window顯示 / 隱藏輸出窗口source browser打開資源瀏覽器disassembly window顯示 / 隱藏反匯編watch & call stack window顯示 / 隱藏觀察和堆棧窗口memory window顯示 / 隱藏存儲(chǔ)器窗口code cov

22、erage window顯示 / 隱藏代碼報(bào)告窗口performance analyzer window顯示 / 隱藏性能分析窗口symbol window顯示 / 隱藏字符變量窗口serial window #1顯示 / 隱藏串口1的觀察窗口serial window #2顯示 / 隱藏串口2的觀察窗口toolbox顯示 / 隱藏自定義工具欄窗口periodic window update程序運(yùn)行時(shí)刷新觀察窗口workbook mode顯示 / 隱藏窗口框架模式options . . .設(shè)置顏色,字體,快捷鍵和編輯器的選項(xiàng)表2 項(xiàng)目菜單project 和項(xiàng)目命令project 菜單工具欄快捷

23、鍵描述new project創(chuàng)建新項(xiàng)目import vision1project轉(zhuǎn)化 vision1 的項(xiàng)目open project打開一個(gè)已經(jīng)存在的項(xiàng)目close project關(guān)閉當(dāng)前的項(xiàng)目target environment定義工具、包含文件和庫的路徑targets,groups,files維護(hù)一個(gè)項(xiàng)目的對(duì)象、文件組和文件select device for target選擇對(duì)象的cpuremove 從項(xiàng)目中移走一個(gè)組或文件options alt+f7設(shè)置對(duì)象、組或文件的工具選項(xiàng)file extensions選擇不同文件類型的擴(kuò)展名build targetf7編譯修改過的文件并生成應(yīng)用re

24、build target重新編譯所有的文件并生成應(yīng)用translate ctrl+f7編譯當(dāng)前文件stop build停止生成應(yīng)用的過程17打開最近打開過的項(xiàng)目表3 調(diào)試菜單和調(diào)試命令debug菜單工具欄快捷鍵描述start/stop debuggingctrl+f5開始/停止調(diào)試模式gof5運(yùn)行程序,直到遇到一個(gè)中斷stepf11單步執(zhí)行程序,遇到子程序則進(jìn)入step overf10單步執(zhí)行程序,跳過子程序step out ofctrl+f11執(zhí)行到當(dāng)前函數(shù)的結(jié)束current function stopruningesc停止程序運(yùn)行breakpoints打開斷點(diǎn)對(duì)話框insert/remo

25、ve breakpoint設(shè)置/取消當(dāng)前行的斷點(diǎn)enable/disable breakpoint使能/禁止當(dāng)前行的斷點(diǎn)disable all breakpoints禁止所有的斷點(diǎn)kill all breakpoints取消所有的斷點(diǎn)show next statement顯示下一條指令enable/disable tracerecording使能/禁止程序運(yùn)行軌跡的標(biāo)識(shí)view trace records顯示程序運(yùn)行過的指令memory map打開存儲(chǔ)器空間設(shè)置對(duì)話框performance analyzer打開設(shè)置性能分析的窗口inline assembly對(duì)某一行重新匯編,可以修改匯編代碼f

26、unction editor 編輯調(diào)試函數(shù)和調(diào)試設(shè)置文件reset cpu復(fù)位cpu實(shí)驗(yàn)2 數(shù)據(jù)排序?qū)嶒?yàn)一、實(shí)驗(yàn)?zāi)康?. 熟悉51指令系統(tǒng),掌握程序設(shè)計(jì)方法。2. 掌握排序程序的設(shè)計(jì)方法。二、實(shí)驗(yàn)內(nèi)容1. 本例程采用交換排序法將內(nèi)部ram 中的3039h 單元中的10個(gè)單字節(jié)無符號(hào)二進(jìn)制數(shù)按從小到大的次序排列,2. 將排序后的數(shù)據(jù)中的最大的一個(gè)數(shù)和最小一個(gè)數(shù)去掉,求其他八個(gè)數(shù)的和,和放40h,41h 中, 求這八個(gè)數(shù)的平均值,放在50h中。三、實(shí)驗(yàn)步驟1用 c 語言語言編寫程序。2編譯、生成項(xiàng)目、下載程序,調(diào)試運(yùn)行程序。3. 用單步、斷點(diǎn)、連續(xù)執(zhí)行程序的方法調(diào)試程序。4. 打開ram數(shù)據(jù)窗口,

27、分別觀察看30h39h、40h, 41h(02h)(0c0h)和50h(58h)的單元。四、實(shí)驗(yàn)參考程序#include < stc15f2k61s2.h>#include <stdio.h>unsigned char a10 _at_ 0x30;unsigned char data0 _at_ 0x40;unsigned char data1 _at_ 0x41;unsigned char data2 _at_ 0x50;void main() unsigned char tmp,i,j;unsigned int sum;a0=0x5f; a1=0x56;a2=0x5

28、a;a3=0x5e;a4=0x51; a5=0x5b;a6=0x53;a7=0x58;a8=0x57;a9=0x55;for(i=1;i<10;i+)for(j=0;j<10-i;j+) if(aj>aj+1)tmp=aj;aj=aj+1;aj+1=tmp; /數(shù)據(jù)排序 ; ; ;實(shí)驗(yàn)3端口的輸入、輸出實(shí)驗(yàn)一、實(shí)驗(yàn)?zāi)康?掌握單片機(jī)i/o口數(shù)據(jù)輸入、輸出的方法。2掌握獨(dú)立按鍵的接口和編程方法。3了解實(shí)驗(yàn)系統(tǒng)板硬件機(jī)構(gòu)。二、實(shí)驗(yàn)內(nèi)容本實(shí)驗(yàn)提供了一個(gè)2位按鍵,如果有鍵按下,則相應(yīng)輸出位為低電平,否則輸出為高電平。4位邏輯電平顯示電路,當(dāng)相應(yīng)的輸入位為低電平時(shí),指示燈亮。 1.要求編

29、寫一程序?qū)崿F(xiàn)下列功能:sw17鍵按下,一盞指示燈亮;sw18鍵按下兩盞指示燈亮;兩鍵都按下時(shí),led10指示燈連續(xù)閃爍;兩鍵全釋放時(shí),指示燈全部熄滅。2.編寫一程序?qū)崿F(xiàn)下列功能:sw17鍵每按下一次,30h單元加一(30h初值為30h=0x00),并將30h 單元內(nèi)容送到4位邏輯電平顯示電路顯示(4位二進(jìn)制數(shù),led亮代表1);sw18鍵每按下一次,31h單元加二(31h初值為31h=0x03),并將31h 單元內(nèi)容送到4位邏輯電平顯示電路顯示(4位二進(jìn)制數(shù),led亮代表1)。注意:mcu 判斷有鍵按下后,要有一定的延時(shí),防止由于鍵盤抖動(dòng)而引起誤操作。讀出鍵值后,mcu 應(yīng)再判斷鍵按是否釋放,

30、如釋放則根據(jù)鍵值進(jìn)行相應(yīng)操作。 三、實(shí)驗(yàn)步驟1. 將實(shí)驗(yàn)箱成為仿真器。2用 c 語言編寫程序。3編譯、生成項(xiàng)目、下載程序,調(diào)試運(yùn)行程序。4. 觀察發(fā)光二極管的亮滅與按鍵開關(guān)的要求是否一致。四、實(shí)驗(yàn)程序參考框圖1. 按鍵點(diǎn)亮led燈的參考程序如下,請(qǐng)補(bǔ)充后完成調(diào)試#include <stc15f2k60s2.h>#define uchar unsigned charvoid delay1m(uchar i)uchar j;while(i-)for(j=0;j<250;j+);void main (void) uchar key;while(1)if(key=0x08) /sw1

31、7 p16 = 0;else if(key=0x04) /sw18 . else if(key=0x00) /兩鍵 . else . 2. 按鍵計(jì)數(shù)并顯示#include <stc15f2k60s2.h>#define uchar unsigned charvoid delay1m(uchar i) /延時(shí)子程序void disp(uchar i) /二進(jìn)制位: led7、led8、led9、led10 switch(i&0x0f) case 0: p17=1;p16=1;p47=1;p46=1;break; case 1: . default:p17=1;p16=1;p4

32、7=1;p46=1; unsigned char ww0 _at_ 0x30;unsigned char ww1 _at_ 0x31;/* 主函數(shù) */void main (void) uchar key,new;ww0=0x00;ww1=0x03;while(1)while(!(.); /等按鍵按下delay1m(1);new=(p3&0x0c);if(new=key) while(.); /等按鍵釋放 switch(new) case /sw17 case /sw18 default: disp(ww0); 實(shí)驗(yàn)4 陣列鍵盤與顯示一、實(shí)驗(yàn)?zāi)康?掌握數(shù)碼管顯示原理及編程方法。2掌握矩

33、陣式鍵盤的接口和編程方法。3了解實(shí)驗(yàn)系統(tǒng)板硬件機(jī)構(gòu)。二、實(shí)驗(yàn)內(nèi)容本實(shí)驗(yàn)提供了一個(gè)4x4的矩陣式按鍵(實(shí)驗(yàn)箱右下角),其電路連接圖如下。實(shí)驗(yàn)箱中上部為八位共陰極數(shù)碼管,由兩片串入并出的移位寄存器74595驅(qū)動(dòng)。如下圖。要求編寫一程序?qū)崿F(xiàn)下列功能:將按鍵0f值用一位數(shù)碼管顯示,按一次鍵,顯示鍵符。三、實(shí)驗(yàn)步驟1. 將實(shí)驗(yàn)箱成為仿真器。2用 c 語言編寫程序。3編譯、生成項(xiàng)目、下載程序,調(diào)試運(yùn)行程序。4. 觀察數(shù)碼管的顯示是否與按鍵一致。四、實(shí)驗(yàn)程序參考框圖#include <stc15f2k60s2.h>#define uchar unsigned char/*本地常量聲明*/ucha

34、r code t_display=/標(biāo)準(zhǔn)字庫/ 0 1 2 3 4 5 6 7 8 9 a b c d e f0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07, 0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,/black0x00;/公陰極uchar code t_com=0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f;/位碼/*io口定義*/sbit p_hc595_ser = p40;/pin 14serdata inputsbit p_hc595_rclk = p54;/pin 12rclkst

35、ore (latch) clocksbit p_hc595_srclk = p43;/pin 11srclkshift data clock/* 向hc595發(fā)送一個(gè)字節(jié)函數(shù) */void send_595(uchar dat)uchari;for(i=0; i<8; i+)dat <<= 1;p_hc595_ser = cy;p_hc595_srclk = 1;p_hc595_srclk = 0;ucharkeycode=0xff;/給用戶使用的鍵碼, 015有效/ 0 1 2 3/4 5 6 7/8 9 a b/c d e fuchar io_keystate, io_k

36、eystate1, io_keyholdcnt;/行列鍵盤變量uchar code t_keytable16 = 0,1,2,0,3,0,0,0,4,0,0,0,0,0,0,0;void io_keydelay(void)uchar i;i = 60;while(-i);voidio_keyscan(void)/50ms callucharj;j = io_keystate1;/保存上一次狀態(tài)p0 = 0xf0;/x低,讀yio_keydelay();io_keystate1 = p0 & 0xf0;p0 = 0x0f;/y低,讀xio_keydelay();io_keystate1

37、|= (p0 & 0x0f);io_keystate1 = 0xff;/取反if(j = io_keystate1)/連續(xù)兩次讀相等j = io_keystate;io_keystate = io_keystate1;if(io_keystate != 0)/有鍵按下f0 = 0;if(j = 0)f0 = 1;/第一次按下else if(j = io_keystate)if(+io_keyholdcnt >= 20)/1秒后重鍵io_keyholdcnt = 18;f0 = 1;if(f0)j = t_keytableio_keystate >> 4;/第j行,1,

38、2,3,4if(j != 0) && (t_keytableio_keystate& 0x0f != 0) /第幾列keycode = (j - 1) * 4 + t_keytableio_keystate & 0x0f -1;/計(jì)算鍵碼,015elseio_keyholdcnt = 0;p0 = 0xff;/* 主函數(shù) */void main(void)uchar i;for(i=0;i<8;i+)send_595(t_comi);send_595(t_display0x10); /消隱,全滅p_hc595_rclk = 1; p_hc595_rclk

39、= 0;/鎖存輸出數(shù)據(jù)while(1) io_keyscan();if(keycode<=15) /有鍵按下 send_595(0x07f); /顯示在最右邊 send_595(t_displaykeycode); p_hc595_rclk = 1; p_hc595_rclk = 0;/鎖存輸出數(shù)據(jù)實(shí)驗(yàn)5 外部中斷實(shí)驗(yàn)一、實(shí)驗(yàn)?zāi)康?. 掌握外部中斷技術(shù)的基本使用方法2掌握中斷處理程序的編寫方法 二、實(shí)驗(yàn)內(nèi)容 要求編寫一程序?qū)崿F(xiàn)下列功能:主程序一盞指示燈亮(led7)連續(xù)閃動(dòng),當(dāng)sw17鍵按下,進(jìn)入中斷,另一盞指示燈亮(led8)亮一定時(shí)間后熄滅。 三、實(shí)驗(yàn)內(nèi)容及步驟1將實(shí)驗(yàn)箱成為仿真器。

40、2編譯、生成項(xiàng)目、下載程序,調(diào)試運(yùn)行程序。3觀察發(fā)光二極管的亮滅與按鍵開關(guān)的要求是否一致。 四、實(shí)驗(yàn)程序參考框圖#include <stc15f2k60s2.h>#define uchar unsigned char#define uint unsigned intvoid delay1m(uint i)void interex0 () interru pt 0 /using 2p17=1;p16=0;delay1m(8000);p16=1;void main()tcon =0x01;ip =0;ie =1;ea =1;while(1)p17=0;delay1m(800);p17=

41、1;delay1m(800);實(shí)驗(yàn)6 計(jì)數(shù)器實(shí)驗(yàn)一、實(shí)驗(yàn)?zāi)康?. 學(xué)習(xí)8051內(nèi)部計(jì)數(shù)器使用方法2. 學(xué)習(xí)計(jì)數(shù)器各種工作方式的用法3. 進(jìn)一步掌握中斷處理程序的編寫方法二、實(shí)驗(yàn)內(nèi)容 要求編寫一程序?qū)崿F(xiàn)下列功能:主程序一盞指示燈led7連續(xù)閃動(dòng),片內(nèi)計(jì)數(shù)器 t0與按鍵脈沖輸入聯(lián)接,每當(dāng)輸入5個(gè)脈沖后,計(jì)數(shù)器t0產(chǎn)生中斷,在中斷程序中,r0加一,并將r0數(shù)值的個(gè)位數(shù)通過數(shù)碼管顯示出來。 三、實(shí)驗(yàn)電路在用戶擴(kuò)展區(qū)焊接如下電路:四、實(shí)驗(yàn)步驟1編譯、生成項(xiàng)目、下載程序,調(diào)試運(yùn)行程序。2觀察指示燈led7是否連續(xù)閃動(dòng)。3. 連續(xù)按動(dòng)按鍵, 是否每按動(dòng)五次,數(shù)碼管顯示出來的數(shù)據(jù)加一。五、實(shí)驗(yàn)程序參考框圖#i

42、nclude <stc15f2k60s2.h>#define uchar unsigned char#define uint unsigned intuchar ccout=0;/*本地常量聲明*/uchar code t_display=/標(biāo)準(zhǔn)字庫/ 0 1 2 3 4 5 6 7 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,/ 8 9 a b c d e f0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71,/black0x00;/公陰極uchar code t_com=0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f;/位碼/*io口定義*/sbit p_hc595_ser = p40;/pin 14serdata inputsbit p

溫馨提示

  • 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)論