版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
PAGEPAGE8FILENAME單片機實驗指導書(學生新版)嵌入式系統(tǒng)實驗指導書(修訂稿)主編:銀翔蕭祥錠主審:彭楚武湖南大學電氣與信息工程學院二OO八年前言嵌入式系統(tǒng)原理與應(yīng)用是一門實踐性很強的課程,通過理論教學后進行相應(yīng)地實驗訓練才能深刻地理解,牢固掌握該學科的知識。作為實驗指導書,重點在于編程及應(yīng)用。為了便于理解,大部分實驗都簡單地介紹了編程的方法、畫出了程序流程圖以及電路原理圖,盡可能使每個實驗自成體系,有頭有尾。完成本實驗指導書的實驗,可使學生掌握嵌入式系統(tǒng)的基本結(jié)構(gòu)、原理、指令系統(tǒng)、接口技術(shù)及匯編語言的程序設(shè)計。作為電氣院的學生,該實驗指導書還應(yīng)配合嵌入式系統(tǒng)課程設(shè)計指導書使用,將編程技巧與仿真相結(jié)合,設(shè)計一個獨立的微機實時控制系統(tǒng)。本書在編寫過程中得到許多老師地幫助,提出了許多寶貴意見,在此表示感謝!書中錯誤不妥之處歡迎批評指正。目錄實驗一雙字節(jié)二進制數(shù)到BCD碼的轉(zhuǎn)換1實驗二 P1口實驗4實驗三 定時器與中斷實驗7實驗四 8255A可編程并行接口芯片實驗(鍵盤實驗)11實驗五 數(shù)碼顯示實驗17實驗六 8279鍵盤、顯示接口實驗(LED顯示實驗)23實驗七 串行口實驗(與數(shù)據(jù)終端通訊)29實驗八 D/A,A/D轉(zhuǎn)換實驗35實驗九 電子音響實驗41實驗十 繼電器控制實驗45實驗十一 步進電機控制實驗49附錄一 KEILC51的使用方法51附錄二 PROTEUS軟件的使用方法60附錄三 單片機指令速查表66附錄四 常用IC引腳圖68實驗一雙字節(jié)二進制數(shù)到BCD碼的轉(zhuǎn)換一實驗?zāi)康?1 學習KEILC51軟件的使用和調(diào)試方法.2 了解51單片機內(nèi)部工作寄存器的使用方法.3 熟悉單片機匯編指令,了解程序的編寫方法.二實驗內(nèi)容:程序框圖開始開始BCD碼寄存器清零BCD碼寄存器清零設(shè)循環(huán)指針設(shè)循環(huán)指針二進制數(shù)左移一位,移入C二進制數(shù)左移一位,移入C((…)*2+ai循環(huán)次數(shù)到?N循環(huán)次數(shù)到?Y返回返回2 程序清單ST EQU 0000H ;用戶程序的首地址從0000H開始 ORG ST LJMP BCD16 ORG ST+100H ;下一條指令的地址為ST+100BCD16: CLR A ;累加器A清零 MOV R4,A MOV R5,A MOV R6,A ;R4,R5,R6三個寄存器清零 MOV R7,#10H MOV R2,#22H MOV R3,#33H ;將10H,22H,33H分別送R7,R2,R3寄存器LP0: CLR CMOV A,R2 RLC A MOV R2,A MOV A,R3 RLC A MOV R3,A MOV A,R4 ADDC A,R4 DA A MOV R4,A MOV A,R5 ADDC A,R5 DA A MOV R5,A MOV A,R6 ADDC A,R6DA AMOV R6,ADJNZ R7,LP0LL: SJMP LLEND3 程序說明將二進制數(shù)從最高位逐一左移入單片機CPU中的寄存器的最低位并且每次都實現(xiàn)(…)*2+ai的運算.雙字節(jié)則需循環(huán)16次,由R7寄存器中的值控制.三、習題注意觀察寄存器窗口,當R7中的值為“0”時,記錄R6,R5,R4的值。修改R2,R3的數(shù)值,重復操作,記錄R6,R5,R4的值。本文將簡單介紹一下Proteus的使用。在這里,我用的Proteus版本是Proteus6.7sp3Professional。一、Proteus6Professional界面簡介安裝完P(guān)roteus后,運行ISIS6Professional,會出現(xiàn)以下窗口界面:為了方便介紹,我分別對窗口內(nèi)各部分進行中文說明(見上圖)。下面簡單介紹各部分的功能:1.原理圖編輯窗口(TheEditingWindow):顧名思義,它是用來繪制原理圖的。藍色方框內(nèi)為可編輯區(qū),元件要放到它里面。注意,這個窗口是沒有滾動條的,你可用預(yù)覽窗口來改變原理圖的可視范圍。2.預(yù)覽窗口(TheOverviewWindow):它可顯示兩個內(nèi)容,一個是:當你在元件列表中選擇一個元件時,它會顯示該元件的預(yù)覽圖;另一個是,當你的鼠標焦點落在原理圖編輯窗口時(即放置元件到原理圖編輯窗口后或在原理圖編輯窗口中點擊鼠標后),它會顯示整張原理圖的縮略圖,并會顯示一個綠色的方框,綠色的方框里面的內(nèi)容就是當前原理圖窗口中顯示的內(nèi)容,因此,你可用鼠標在它上面點擊來改變綠色的方框的位置,從而改變原理圖的可視范圍。3.模型選擇工具欄(ModeSelectorToolbar):主要模型(MainModes):1*選擇元件(components)(默認選擇的)2*放置連接點3*放置標簽(用總線時會用到)4*放置文本5*用于繪制總線6*用于放置子電路7*用于即時編輯元件參數(shù)(先單擊該圖標再單擊要修改的元件)配件(Gadgets):1*終端接口(terminals):有VCC、地、輸出、輸入等接口2*器件引腳:用于繪制各種引腳3*仿真圖表(graph):用于各種分析,如NoiseAnalysis4*錄音機5*信號發(fā)生器(generators)6*電壓探針:使用仿真圖表時要用到7*電流探針:使用仿真圖表時要用到8*虛擬儀表:有示波器等2D圖形(2DGraphics):1*畫各種直線2*畫各種方框3*畫各種圓4*畫各種圓弧5*畫各種多邊形6*畫各種文本7*畫符號8*畫原點等4.元件列表(TheObjectSelector):用于挑選元件(components)、終端接口(terminals)、信號發(fā)生器(generators)、仿真圖表(graph)等。舉例,當你選擇“元件(components)”,單擊“P”按鈕會打開挑選元件對話框,選擇了一個元件后(單擊了“OK”后),該元件會在元件列表中顯示,以后要用到該元件時,只需在元件列表中選擇即可。5.方向工具欄(OrientationToolbar):旋轉(zhuǎn):旋轉(zhuǎn)角度只能是90的整數(shù)倍。翻轉(zhuǎn):完成水平翻轉(zhuǎn)和垂直翻轉(zhuǎn)。使用方法:先右鍵單擊元件,再點擊(左擊)相應(yīng)的旋轉(zhuǎn)圖標。6.仿真工具欄仿真控制按鈕1*運行2*單步運行3*暫停4*停止二、操作簡介1、繪制原理圖:繪制原理圖要在原理圖編輯窗口中的藍色方框內(nèi)完成。原理圖編輯窗口的操作是不同于常用的WINDOWS應(yīng)用程序的,正確的操作是:用左鍵放置元件;右鍵選擇元件;雙擊右鍵刪除元件;右鍵拖選多個元件;先右鍵后左鍵編輯元件屬性;先右鍵后左鍵拖動元件;連線用左鍵,刪除用右鍵;改連接線:先右擊連線,再左鍵拖動;中鍵放縮原理圖。具體操作見下面例子。2、定制自己的元件:有三個個實現(xiàn)途徑,一是用PROTEUSVSMSDK開發(fā)仿真模型,并制作元件;另一個是在已有的元件基礎(chǔ)上進行改造,比如把元件改為bus接口的;還有一個是利用已制作好(別人的)的元件,我們可以到網(wǎng)上下載一些新元件并把它們添加到自己的元件庫里面。由于我沒有PROTEUSVSMSDK,所以我只介紹后兩個。3、Sub-Circuits應(yīng)用:用一個子電路可以把部分電路封裝起來,這樣可以節(jié)省原理圖窗口的空間。三、實例實驗二P1口實驗一、實驗內(nèi)容1.K1作為左轉(zhuǎn)彎開關(guān),K2作為右轉(zhuǎn)彎開關(guān)。L1、L2作為左轉(zhuǎn)彎燈,L5、L6作為右轉(zhuǎn)彎燈。2.程序?qū)崿F(xiàn)的功能:向上打K1時左轉(zhuǎn)彎燈以一定頻率閃爍,打K2時右轉(zhuǎn)彎燈以一定頻率閃爍,K1、K2同時向上或向下,發(fā)光二極管滅。二、實驗?zāi)康?.學習P1口作為輸入、輸出口的使用方法。2.學習延時子程序的編寫和使用。3.學習數(shù)據(jù)輸入、輸出程序的設(shè)計方法。4.掌握proteus軟件的使用。三、實驗電路五、程序流程圖 入口入口P1.0,P1.1口鎖存器置"1"P1.0,P1.1口鎖存器置"1"讀入K1,K2狀態(tài)讀入K1,K2狀態(tài)K1=K2=‘0K1=K2=‘1CASEK1,K2從P1口輸出0使發(fā)光二極管全滅從P1口輸出0使發(fā)光二極管全滅CASEK1,K2從P1口輸出0使發(fā)光二極管全滅從P1口輸出0使發(fā)光二極管全滅K1=‘1’ K2=‘0’ K2=‘1’K1=‘0’從P1口輸出0CH使L3,L4亮從P1口輸出30H使L5,L6亮從P1口輸出0CH使L3,L4亮從P1口輸出30H使L5,L6亮延時延時使發(fā)光二極管全滅使發(fā)光二極管全滅延時延時程序清單SH2.ASM ST EQU0000HORGSTLJMPSTARTORGST+30HSTART:SETBP1.0SETBP1.1 MOV A,P1 ANL A,#03H MOV DPTR,#TB;轉(zhuǎn)移表首地址送DPTR MOVC A,@A+DPTR JMP @A+DPTRTB: DB PRG0-TB DB PRG1-TB DB PRG2-TB DB PRG3-TBPRG0: MOV P1,#00 LJMP STARTPRG1: MOV P1,#0CHAAA: ACALL DELAY MOV P1,#00 ACALL DELAY LJMP STARTPRG2: MOV P1,#30H LJMP AAAPRG3: LJMP PRG0DELAY: MOV R1,#5 ;延時0.5秒DEL1: MOV R2,#200DEL2: MOV R3,#126DEL3: DJNZ R3,DEL3 DJNZ R2,DEL2 DJNZ R1,DEL1 RET END習題: 改編程序,實現(xiàn)當開關(guān)K1=K2=‘0’時,發(fā)光二極管L1,L2,L5,L6全部閃爍;當開關(guān)K1=K2=‘1’時,發(fā)光二極管L1,L2,L5,L6全滅;(已實現(xiàn))當開關(guān)K1=‘0’,K2=‘1’時,發(fā)光二極管L1,L2,L5,L6依次循環(huán)右移;當開關(guān)K1=‘1’,K2=‘0’時,發(fā)光二極管L1,L2,L5,L6依次循環(huán)左移;改寫程序,當開關(guān)接任意P1口時,均可實現(xiàn)以上功能。實驗三 定時器、中斷實驗實驗內(nèi)容模擬時序控制裝置。觀測發(fā)光二極管現(xiàn)象:L1、3→L2、4→L5、7→L6、8→L1、3、5、7→L2、4、6、8→全亮→全滅 二、實驗?zāi)康膶W習8031內(nèi)部計數(shù)器的使用和編程方法。掌握中斷處理程序的編程方法。三、實驗原理時間常數(shù)的計算。8031內(nèi)部定時器1,按方式1工作,每0.1秒鐘T1溢出中斷一次。機器周期=12÷晶振頻率=12÷(6.144*106)=1.9531*10-6S設(shè)初值為X,則(216-X)*1.953*10-6=0.1X=14336=3800HTH1=38H,TL1=00H實驗電路程序流程圖主程序:入口入口置首顯示代碼(A),初始地址偏移量(R1),計數(shù)初值(R0)置首顯示代碼(A),初始地址偏移量(R1),計數(shù)初值(R0)定時器1初始化,設(shè)計數(shù)初值定時器1初始化,設(shè)計數(shù)初值開放EA,ET1,TR1開放EA,ET1,TR1 N R0=0?R0=0? Y 裝計數(shù)初值于R0裝計數(shù)初值于R0指向下一個顯示代碼單元指向下一個顯示代碼單元地址偏移=10?地址偏移=10? N Y 裝入初始偏移量裝入初始偏移量從表中取顯示代碼從表中取顯示代碼顯示顯示中斷入口中斷子程序:中斷入口關(guān)閉計數(shù)控制位關(guān)閉計數(shù)控制位計數(shù)值減1一計數(shù)值減1一裝人時間常數(shù)裝人時間常數(shù)開放計數(shù)控制位開放計數(shù)控制位返回返回接線方法:P1.0—P1.7分別接發(fā)光二極管L1—L8。程序清單T06.ASMST_ADDREQU 4000HORG ST_ADDRLJMP STARTORG ST_ADDR+1BHJMP IT11ORGST_ADDR+200HSTART:MOVA,#05HMOVR1,#03MOVR0,#0AHANLTMOD,#0FHORLTMOD,#10HMOVTL1,#00HMOVTH1,#38HORLIE,#88HSETBTR1LOOP1:CJNER0,#00,DISPMOVR0,#0AHINCR1CJNER1,#0BH,LOOP2MOVR1,#03LOOP2:MOV A,R1MOVC A,@A+PCLJMP DISPDB05H,0AH,50H,0A0H,55H,0AAH,0FFH,00HDISP:MOV P1,AJMP LOOP1IT11:CLRTR1DECR0MOVTL1,#00HMOVTH1,#38HSETBTR1RETIEND八、習題:改變發(fā)光二極管閃爍的間隔時間。去掉定時與中斷,編寫延時子程序。實驗四8255A可編程并行接口芯片實驗實驗內(nèi)容:利用單片機的小鍵盤,每按一個數(shù)字鍵(0∽F),用發(fā)光二極管將該代碼顯示出來,按其它鍵退出。二、實驗?zāi)康?.掌握單片機系統(tǒng)中擴展外圍芯片的方法。2.掌握8255A芯片的結(jié)構(gòu)及編程方法。3.掌握鍵盤接口電路的工作原理,編程方法。三、實驗電路四、接線方法首先將鍵盤部分與8279連線的短路片全部拔掉,然后鍵盤矩陣的KA0—KA7接8255A的PA0—PA7,KB0—KB2接8255A的PB0—PB2。8255A芯片的CS1接00—07端,PC0—PC7接發(fā)光二極管的L1—L8。注意:實驗完成后,請將短路片插回原處。入口五、程序流程圖入口顯示初值放入24H單元顯示初值放入24H單元置8255A控制字,A,C口出,B口入置8255A控制字,A,C口出,B口入從C口輸出顯示從C口輸出顯示往A口(行線)全輸出低電平往A口(行線)全輸出低電平從B口(列線)讀入數(shù)據(jù),保存從B口(列線)讀入數(shù)據(jù),保存列線取反后全低電平? Y列線取反后全低電平?延時去抖動 N 延時去抖動重置重置8255A控制字,A口入,B,C口出通過B口(列線)輸出保存的列線值通過B口(列線)輸出保存的列線值由A口(行線)讀入行線值,保存由A口(行線)讀入行線值,保存行線值取反后,全為低電平? Y行線值取反后,全為低電平?N 置計數(shù)初值和字符碼表首址置計數(shù)初值和字符碼表首址從表中讀一行線碼從表中讀一行線碼指針指向下一行線碼與讀入值相等? N指針指向下一行線碼與讀入值相等?字符碼表指針下移從表中讀相應(yīng)列線碼字符碼表指針下移從表中讀相應(yīng)列線碼計數(shù)值減一,為0?與讀入值相等? NN計數(shù)值減一,為0?與讀入值相等? Y Y 據(jù)行線碼,列線碼從字符碼表中取相應(yīng)字符值并存入42H單元據(jù)行線碼,列線碼從字符碼表中取相應(yīng)字符值并存入42H單元置置8255A控制字,A,C口出,B口入從C口輸出字符值顯示從C口輸出字符值顯示把全0從A口輸出到列線上把全0從A口輸出到列線上從B口讀入行線值從B口讀入行線值只要低三位并取反只要低三位并取反為0否? N Y為0否?六、實驗原理1.8255A有三種基本工作方式,其中方式0是一種基本的輸入或輸出方式。在這種工作方式下,三個端口的每一個都可由程序設(shè)定為輸入或輸出,這種方式適用與無條件地傳送數(shù)據(jù)的設(shè)備。2.識別鍵的閉合,通常采用行掃描法和行反轉(zhuǎn)法。行掃描法是使鍵盤上某一行線為低電平,而其余行接高電平,然后讀取列值,如讀列值中某位為低電平,表明有鍵按下,否則掃描下一行,直到掃完所有行。本實驗采用的是行反轉(zhuǎn)法。行反轉(zhuǎn)法識別閉合鍵時,要將行線接一并行口,先讓它工作在輸出方式,將列線也接到一個并行口,先讓它工作與輸入方式,程序使CPU通過輸出端口往各行線上全部送低電平,然后讀入列線值,如此時有某鍵被按下,則必定會使某一列線值為0。然后,程序?qū)蓚€并行端口進行方式設(shè)置,使行線工作于輸入方式,列線工作于輸出方式,并將剛才讀得的列線值從列線所接的并行端口輸出,再讀取行線上輸入值,那么,在閉合鍵所在行線上的值必定為0。這樣,當一個鍵被按下時,必定可以讀得一對唯一的行線值和列線值。七、程序清單T09.ASMST_ADDR EQU 4000HPA EQU 1B00HPB EQU PA+1PC0 EQU PB+1PCTL EQU PC0+1 ORG ST_ADDR LJMP STARTTABLE:DW 06FEH,06FDH,06FBH,06F7H,06EFH,06DFH,06BFHDW 067FH,05FEH,05FDH,05FBH,05F7H,05EFHDW 05DFH,05BFH,057FHCHAR:DB 08h,09H,0AH,0BH,0CH,0DH,0EH,0FH,00H,01HDB 02H,03H,04H,05H,06H,07H ORG ST_ADDR+200HSTART: MOV 42H,#0F0HSTA1: MOV DPTR,#PCTL MOV A,#82H MOVX @DPTR,ALINE: MOV DPTR,#PC0 MOV A,42H MOVX @DPTR,A MOV DPTR,#PA CLR A MOVX @DPTR,A MOV DPTR,#PB MOVX A,@DPTR MOV 40H,A ORL A,#0F8H CPL A JZ LINE MOV R7,#10HDEL0: MOV R6,#0FFHDEL1: DJNZ R6,DEL1 DJNZ R7,DEL0 MOV DPTR,#PCTL MOV A,#90H MOVX @DPTR,A MOV A,40H MOV DPTR,#PB MOVX @DPTR,A MOV DPTR,#PA MOVX A,@DPTR MOV 41H,A CPL A JZ LINE MOV DPTR,#TABLE MOV R7,#10H MOV R6,#00HTT: MOVX A,@DPTR CJNE A,40H,NN1 INC DPTR MOVX A,@DPTR CJNE A,41H,NN2 MOV DPTR,#CHAR MOV A,R6 MOVC A,@A+DPTR MOV 42H,ABBB: MOV DPTR,#PCTL MOV A,#82H MOVX @DPTR,AAAA: MOV A,42H MOV DPTR,#PC0 MOVX @DPTR,A MOV DPTR,#PA CLR A MOVX @DPTR,A MOV DPTR,#PB MOVX A,@DPTR ORL A,#0F8H CPL A JNZ AAA JMP STA1NN1: INC DPTRNN2: INC DPTR INC R6 DJNZ R7,TT JMP BBB END八、習題編寫程序,改用行掃描法識別鍵的閉合。實驗五數(shù)碼顯示實驗一、實驗內(nèi)容做一個電子鐘:利用定時器0定時中斷,控制電子鐘走時;利用單片機上的六個數(shù)碼管顯示分、秒。XX----XX顯示格式:XX----XX 分秒二、實驗?zāi)康倪M一步掌握定時器的使用和編程方法。了解七段數(shù)碼顯示數(shù)字的原理。熟練掌握Keilc51和Proteus聯(lián)調(diào)的方法實驗電路四、程序流程圖入口主程序:入口顯示單元置初值顯示單元置初值定時器0初始化,置位EA,ET0定時器0初始化,置位EA,ET0開始計數(shù)時間及分、秒計數(shù)單元置0 開始計數(shù)時間及分、秒計數(shù)單元置0掃描值帶進位位(=0)右移一位顯示單元地址減一掃描值=0?取分、秒計數(shù)值,經(jīng)變換放入相應(yīng)顯示單元取顯示單元值,轉(zhuǎn)為段碼送段數(shù)據(jù)口顯示緩沖單元首址—R0,掃描初值—R2掃描值帶進位位(=0)右移一位顯示單元地址減一掃描值=0?取分、秒計數(shù)值,經(jīng)變換放入相應(yīng)顯示單元取顯示單元值,轉(zhuǎn)為段碼送段數(shù)據(jù)口顯示緩沖單元首址—R0,掃描初值—R2掃描值送位數(shù)據(jù)口掃描值送位數(shù)據(jù)口 N Y計時單元=10?時間計時單元加一定時器置初值中斷入口中斷程序:計時單元=10?時間計時單元加一定時器置初值中斷入口 N返回分置0分值=60?秒置0,分加一,十進制調(diào)整秒值=60?秒加一,十進制調(diào)整計時單元置0 返回分置0分值=60?秒置0,分加一,十進制調(diào)整秒值=60?秒加一,十進制調(diào)整計時單元置0 Y NY N Y六、程序清單T10.ASMST_ADDREQU0000HPAEQU7FFCH;A口地址PBEQU7FFDH;B口地址CTREQU7FFFH;控制字地址BUFEQU23HSBFEQU22H;存放秒MBFEQU21H;存放分ORGST_ADDRLJMPMAINORGST_ADDR+0BH;定時器0中斷入口LJMPCLOCKORGST_ADDR+200HMAIN:MOVDPTR,#CTR;寫控制字MOVA,#80HMOVX@DPTR,AMOVR0,#40HMOVA,#00HMOV@R0,AINCR0MOV@R0,AINCR0MOVA,#0AHMOV@R0,AINCR0MOV@R0,AINCR0MOVA,#00HMOV@R0,AINCR0MOV@R0,AANLTMOD,#0F0HORLTMOD,#01HMOVTL0,#00HMOVTH0,#38HMOVBUF,#00H;清零MOVSBF,#00HMOVMBF,#00HSETBET0;開定時器0SETBEASETBTR0DS1:MOVR0,#45HMOVR2,#20HDS2:MOVDPTR,#PB;位選MOVA,R2MOVX@DPTR,AMOVDPTR,#PAMOVA,@R0LCALLTABLEMOVX@DPTR,A;送段碼LCALLDELAY1;延時DECR0CLRCMOVA,R2RRCAMOVR2,AJNZDS2MOVR0,#45HMOVA,SBFLCALLGETDECR0DECR0MOVA,MBFLCALLGETSJMPDS1TABLE:INCAMOVCA,@A+PCRETDB0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,98H,0BFHGET:MOVR1,AANLA,#0FHMOV@R0,ADECR0MOVA,R1SWAPAANLA,#0FHMOV@R0,ADECR0RETCLOCK:MOVTL0,#00H;定時器中斷子程序MOVTH0,#38HPUSHPSWPUSHACCINCBUFMOVA,BUFCJNEA,#0AH,QUITMOVBUF,#00HMOVA,SBFINCADAAMOVSBF,ACJNEA,#60H,QUITMOVSBF,#00HMOVA,MBFADDA,#1HDAAMOVMBF,ACJNEA,#60H,QUITMOVMBF,#00HQUIT:POPACCPOPPSWRETIDELAY1:MOVR4,#10;4ms延時DEL11:MOVR5,#0AHDEL12:MOVR3,#18HDEL13:DJNZR3,DEL13DJNZR5,DEL12DJNZR4,DEL11RETEND七、習題:1.改寫程序,使數(shù)碼管顯示分、秒,并用小數(shù)點分隔。2.改編程序,使數(shù)碼管顯示時、分、秒計數(shù)。3.改寫程序,使數(shù)碼管可分時顯示年,月,日,時間等。實驗六、8279鍵盤、顯示接口實驗——LED顯示實驗一、實驗內(nèi)容利用8279鍵盤顯示接口電路和實驗臺上提供的六個數(shù)碼顯示,作成一個電子鐘。格式為:XX.XX.XX由左向右分別為時、分、秒。二、實驗?zāi)康恼莆赵?031系統(tǒng)中擴展8279鍵盤顯示接口的方法。掌握8279工作原理和編程方法。進一步掌握中斷處理程序的編程方法。三、實驗原理:利用8279可實現(xiàn)對鍵盤/顯示器的自動掃描,以減輕CPU負擔,具有顯示穩(wěn)定、程序簡單、不會出現(xiàn)誤動作等特點。四、實驗電路五、接線方法首先檢查數(shù)碼顯示部分與8279之間連接的短路片是否已經(jīng)插好,插好后再將片選端CS7接30—37。六、程序流程圖入口主程序:入口8279,定時器0,初始化8279,定時器0,初始化開始計數(shù)開始計數(shù)寫顯示緩沖器RAM命令字寫顯示緩沖器RAM命令字顯示單元首址顯示單元首址—R1取顯示單元數(shù)據(jù)低四位取顯示單元數(shù)據(jù)低四位轉(zhuǎn)為段選瑪,置位最高位使小數(shù)點亮,輸出轉(zhuǎn)為段選瑪,置位最高位使小數(shù)點亮,輸出取顯示單元數(shù)據(jù)高四位取顯示單元數(shù)據(jù)高四位轉(zhuǎn)為段選瑪輸出轉(zhuǎn)為段選瑪輸出R1指向下一顯示單元R1指向下一顯示單元R7計數(shù)值減一,等于0? Y NR7計數(shù)值減一,等于0?置定時器0初值,置位TR0中斷子程序:置定時器0初值,置位TR0有關(guān)寄存器入棧有關(guān)寄存器入棧時間計數(shù)單元加1時間計數(shù)單元加1其值=10? N其值=10? Y將其清零,秒加1,十進制調(diào)整將其清零,秒加1,十進制調(diào)整秒值為60? N秒值為60? Y秒清零,分值加1,十進制調(diào)整秒清零,分值加1,十進制調(diào)整分值為60? N分值為60? Y分值清零,時加1,十進制調(diào)整分值清零,時加1,十進制調(diào)整時值為24? N時值為24? Y將時值清零將時值清零有關(guān)寄存器出棧有關(guān)寄存器出棧中斷返回中斷返回七、程序清單T11.ASMST_ADDR EQU 4000HPORT EQU 1B30HBUF EQU 24HHOUR EQU 23HMIN EQU 22HSEC EQU 21H ORG ST_ADDR LJMP INIT ORG ST_ADDR+0BH LJMP CLOCK ORG ST_ADDR+200HINIT: MOV DPTR,#PORT+1 MOV A,#0D1H MOVX @DPTR,ALP: MOV A,#2AH MOVX @DPTR,A MOV A,#00H MOVX @DPTR,A ANL TMOD,#0F0H ORL TMOD,#01H MOV TL0,#00H MOV TH0,#38H MOV HOUR,#00H MOV MIN,#00H MOV SEC,#00H MOV BUF,#00H SETB ET0 SETB EA SETB TR0LOOP: MOV DPTR,#PORT+1 MOV A,#90H MOVX @DPTR,A MOV R7,#03H MOV R1,#21H MOV DPTR,#PORTDL0: MOV A,@R1 MOV R2,A ANL A,#0FH LCALL TABLE ORL A,#80H MOVX @DPTR,A MOV A,R2 SWAP A ANL A,#0FH LCALL TABLE MOVX @DPTR,A INC R1 DJNZ R7,DL0 LJMP LOOPTABLE: INC A MOVC A,@A+PC RET DB 3FH,06H,5BH,4FH,66H DB 6DH,7DH,07H,7FH,6FHCLOCK: MOV TL0,#00H MOV TH0,#38H PUSH ACC PUSH PSW INC BUF MOV A,BUF CJNE A,#0AH,ENDT MOV BUF,#00H MOV A,SEC INC A DA A MOV SEC,A CJNE A,#60H,ENDT MOV SEC,#00H MOV A,MIN INC A DA A MOV MIN,A CJNE A,#60H,ENDT MOV MIN,#00H MOV A,HOUR INC A DA A MOV HOUR,A CJNE A,#24H,ENDT MOV HOUR,#00HENDT: POP PSW POP ACC RETI END實驗七串行口實驗實驗內(nèi)容將從單片機小鍵盤上輸入的數(shù)字、字母顯示在終端屏幕上,將終端鍵盤上鍵入的字符(0—F)顯示到單片機數(shù)碼管上。二、實驗?zāi)康?.掌握單片機串行口工作方式的程序設(shè)計。2.掌握單片機通訊程序的編制。接線方法首先檢查8279與數(shù)碼顯示和鍵盤之間連線短路片是否已經(jīng)插好,然后將8279的片選端CS7接30—37。IRQ接INT01。用RS—232電纜將數(shù)據(jù)終端與實驗臺上J13相連。實驗電路五、程序流程圖子程序DISP:顯示R2中的內(nèi)容。寫顯示緩沖器RAM命令寫顯示緩沖器RAM命令取R2中數(shù)值取R2中數(shù)值轉(zhuǎn)換為段選碼轉(zhuǎn)換為段選碼從數(shù)據(jù)口輸出從數(shù)據(jù)口輸出返回返回主程序:入口入口定時器1初始化定時器1初始化8279初始化8279初始化設(shè)置EA及EX1(鍵盤中斷)清除串口及定時器1中斷允許設(shè)置EA及EX1(鍵盤中斷)清除串口及定時器1中斷允許串行口初始化串行口初始化接收緩沖器中有數(shù)據(jù)否?(RI=1?) N接收緩沖器中有數(shù)據(jù)否?(RI=1?)Y清除RI清除RI將接收的字符的ASCII碼轉(zhuǎn)換成十六進制數(shù)將接收的字符的ASCII碼轉(zhuǎn)換成十六進制數(shù)顯示到LED上顯示到LED上CASE行值求行值求列值從鍵盤讀入數(shù)據(jù)入口中斷程序KEYN:從小鍵盤讀入字符值并轉(zhuǎn)換為ASCII碼CASE行值求行值求列值從鍵盤讀入數(shù)據(jù)入口列值加16輸出列值加8輸出列值加16輸出列值加8輸出輸出列值 輸出列值都當作空格符20H是R加3FH是P加3EH是M加3CH是A—都當作空格符20H是R加3FH是P加3EH是M加3CH是A—G加37H是數(shù)字加30HCASE所得新值 發(fā)送中斷標志位TI=0? Y發(fā)送中斷標志位TI=0?清除TI N 清除TI 所得ASCII碼送SBUF中斷返回所得ASCII碼送SBUF中斷返回程序清單T15.ASMST_ADDR EQU 4000HPORT EQU 1B30H ORG ST_ADDR LJMP MAIN ORG ST_ADDR+3H LJMP KEYNMAIN: ANL TMOD,#0F0H ORL TMOD,#20H MOV TH1,#0F3H MOV TL1,#0F3H MOV DPTR,#PORT+1 MOV A,#0D1H MOVX @DPTR,A MOV A,#2AH MOVX @DPTR,A MOV A,#40H MOVX @DPTR,A MOV A,#00H MOVX @DPTR,A MOV A,#80H MOVX @DPTR,A MOV SCON,#52H SETB EA SETB EX0 SETB TR1 CLR ES CLR ET1LOAD: JNB RI,LOAD CLR RI MOV A,SBUF MOV R2,A LCALL CHANGE LCALL DISP JMP LOADKEYN: PUSH ACC PUSH PSW MOV DPTR,#PORT MOVX A,@DPTR MOV R1,A ANL A,#07H MOV R2,A MOV A,R1 ANL A,#38H RR A RR A RR A MOV R3,A CJNE R3,#00H,LINE1 MOV A,R2 ADD A,#08H LJMP QUIT1LINE1: CJNE R3,#01H,LINE2 MOV A,R2 LJMP QUIT1LINE2: MOV A,R2 ADD A,#10HQUIT1: CLR C PUSH ACC SUBB A,#0AH JNC CHAR POP ACC ADD A,#30H LJMP SENDCHAR: POP ACC PUSH ACC SUBB A,#11H JNC WD_M POP ACC ADD A,#55 LJMP SENDWD_M: POP ACC CJNE A,#11H,WD_P ADD A,#3CH LJMP SENDWD_P: CJNE A,#12H,WD_R ADD A,#3EH LJMP SENDWD_R: CJNE A,#13H,OTHR ADD A,#3FH LJMP SENDOTHR: MOV A,#20HSEND: JNB TI,SEND CLR TI MOV SBUF,A POP PSW POP ACC RETICHANGE: MOV A,R2 CLR C SUBB A,#30H MOV R2,A SUBB A,#0AH JC RET2 MOV A,R2 SUBB A,#07H MOV R2,ARET2: RETDISP: MOV DPTR,#PORT+1 MOV A,#80H MOVX @DPTR,A MOV DPTR,#PORTDL0: MOV A,R2 ANL A,#0FH LCALL TABLE MOVX @DPTR,A RETTABLE: INC A MOVC A,@A+PC RET DB 3FH,06H,5BH,4FH,66H,6DHDB7DH,07H,7FH,6FH,77H,7CH,39H,5EH,79H,71H,00H,40H END實驗八A/D,D/A轉(zhuǎn)換實驗一、實驗內(nèi)容利用實驗臺上的ADC0809做A/D轉(zhuǎn)換器,實驗臺上的電位器提供模擬量輸入,將模擬量轉(zhuǎn)換成數(shù)字量,用發(fā)光二極管顯示。利用DAC0832,編制程序產(chǎn)生正弦波。二、實驗?zāi)康?.掌握A/D芯片ADC0809轉(zhuǎn)換性能及編程方法。2.掌握D/A轉(zhuǎn)換芯片0832的性能及編程方法。三、實驗原理1.ADC0809是八位逐次逼近法A/D轉(zhuǎn)換器,每采集一次需100μs。ADC0809D的START端為A/D轉(zhuǎn)換啟動信號,ALE端為通道選擇地址的鎖存信號。實驗電路中將其相連,以便同時鎖存通道地址并開始/D采樣轉(zhuǎn)換,故啟動A/D轉(zhuǎn)換只需如下兩條指令:MOV DPTR,#1B20H MOVX @DPTR,AA中為何內(nèi)容并不重要,這是一次虛擬寫。中斷方式下,A/D轉(zhuǎn)換結(jié)束后會自動產(chǎn)生EOC信號,將其與8031的INT0相接。中斷處理程序中,使用如下指令即可讀取A/D轉(zhuǎn)換結(jié)果:MOV DPTR,#1B20HMOVX A,@DPTRD/A轉(zhuǎn)換是把數(shù)字量轉(zhuǎn)換成模擬量。本實驗中,輸入寄存器占偶地址端口,DAC寄存器占較高的奇地址端口。兩個寄存器均對數(shù)據(jù)獨立鎖存。因而要把一個數(shù)據(jù)通過0832輸出,要經(jīng)兩次鎖存。典型程序段如下:MOV DPTR,PORTIN MOV A,#DATA MOVX @DPTR,A INC DPTR MOVX @DPTR,A其中,第二次I/O寫是一個虛擬寫過程,其目的只是產(chǎn)生一個WR信號,啟動D/A.四、接線方法內(nèi)容1:①0809片選端CS5接20—27,EOC接INT0;P1.0—P1.7接發(fā)光二極管L1—L8。②2K電位器中間頭接IN0,另外兩個頭一端接+5V,另一端接地。內(nèi)容2:0832片選端CS6接28—2F,AOUT接示波器探頭。五、實驗電路內(nèi)容1:A/D轉(zhuǎn)換內(nèi)容2:D/A轉(zhuǎn)換六、程序流程圖內(nèi)容1:A/D轉(zhuǎn)換,查詢方式送P1口由發(fā)光二極管顯示讀取轉(zhuǎn)換結(jié)果軟件延時啟動A/D轉(zhuǎn)換送P1口由發(fā)光二極管顯示讀取轉(zhuǎn)換結(jié)果軟件延時啟動A/D轉(zhuǎn)換內(nèi)容2:D/A轉(zhuǎn)換主程序入口入口定時器0初始化,置位EA,ET0,裝入時間常數(shù)定時器0初始化,置位EA,ET0,裝入時間常數(shù)計數(shù)初值送R1并顯示鋸齒波計數(shù)初值送R1并顯示鋸齒波計數(shù)初值送R1并顯示三角波計數(shù)初值送R1并顯示三角波計數(shù)初值送R1并顯示正弦波計數(shù)初值送R1并顯示正弦波顯示方波顯示方波中斷子程序DELAY:入口入口向定時器0裝時間常數(shù)向定時器0裝時間常數(shù)計數(shù)值R1減一計數(shù)值R1減一開始計數(shù)開始計數(shù)中斷返回中斷返回 入口正弦波顯示子程序PRG3:入口初始化:DAC寄存器端口送R0,計數(shù)值送R4,表首址送DPTR初始化:DAC寄存器端口送R0,計數(shù)值送R4,表首址送DPTR 從表中取一數(shù)據(jù)從表中取一數(shù)據(jù)數(shù)據(jù)數(shù)據(jù)輸出到DAC輸入寄存器數(shù)據(jù)輸出到DAC輸入寄存器啟動D/A啟動D/ADPTR指向下一數(shù)據(jù)DPTR指向下一數(shù)據(jù)R4計數(shù)值為0否? NR4計數(shù)值為0否? Y裝計數(shù)初值入R4,表首址送DPTR裝計數(shù)初值入R4,表首址送DPTR計數(shù)時間到? N計數(shù)時間到? Y返回返回七、程序清單內(nèi)容1:A/D轉(zhuǎn)換,查詢方式T19_2.ASMST_ADDR EQU 4000HPORT EQU 1B20H ORG ST_ADDR LJMP MAIN ORG ST_ADDR+200HMAIN: MOV DPTR,#PORTLOOP: MOVX @DPTR,A MOVR6,#14HDELAY: NOP DJNZ R6,DELAY MOVX A,@DPTR MOV P1,A SJMP LOOP END內(nèi)容2:D/A轉(zhuǎn)換,輸出正弦波ST_ADDR EQU 4000H ORG ST_ADDR LJMP MAIN ORG ST_ADDR+1BH LJMP DELAY ORG ST_ADDR+200HMAIN: ANL TMOD,#0FH ORL TMOD,#10H SETB EA SETB ET1 MOV TL1,#00H MOV TH1,#38H SETB TR1 MOV P2,#1BHDISP: MOV R1,#72H LCALL PRG1 MOV R1,#0B2H LCALL PRG2 MOV R1,#0F2H LCALLPRG3 LCALLPRG4 LJMP DISPDELAY: CLR TR1 MOV TL1,#00H MOV TH1,#38H DEC R1 SETB TR1 RETIPRG1: NOP;鋸齒波 RETPRG2: NOP;三角波 RETPRG3: MOV R0,#29H ;正弦波 MOV R4,#40H MOV DPTR,#DATA0LP11: MOVX A,@DPTR DEC R0 MOVX @R0,A INC R0 MOVX @R0,A INC DPTR DJNZ R4,LP11 MOV R4,#40H MOV DPTR,#DATA0 CJNE R1,#0C0H,LP11DATA0:DB80H,8CH,98H,0A5H,0B0H,0BCH,0C7H,0D1H,0DAH,0E2H,0EAH DB 0F0H,0F6H,0FAH,0FDH,0FFH,0FFH,0FDH,0FAH,0F6H,0F0H DB 0EAH,0E2H,0DAH,0D1H,0C7H,0BCH,0B0H,0A5H,98H,8CH DB 80H,7FH,73H,67H,5AH,4FH,43H,38H,2EH,25H,1DH,15H DB 0FH,09H,05H,02H,00H,00H,02H,05H,09H,0FH,15H DB1DH,25H,2EH,38H,43H,4FH,5AH,67H,73H,7FH RETPRG4: NOP;方波 RET END八、習題1.A/D轉(zhuǎn)換:重新編寫程序,用中斷方式實現(xiàn)。2.D/A轉(zhuǎn)換:編寫程序,使原程序增加鋸齒波PRG1;三角波PRG2;方波PRG4。(提示:產(chǎn)生鋸齒波和三角波只需由A存放的數(shù)字量增減來控制。)實驗九電子音響實驗實驗?zāi)康牧私庥嬎銠C發(fā)聲原理。學習使計算機發(fā)出不同音調(diào)聲音的編程方法。實驗內(nèi)容利用P1口輸出不同頻率的脈沖通過揚聲器發(fā)出不同頻率音調(diào)。實驗原理音階由不同頻率的方波產(chǎn)生,音階與頻率的關(guān)系如表一所示。方波的頻率由定時器控制。定時器計數(shù)溢出后,產(chǎn)生中斷,將P1.7口取反即得周期方波。每個音階相應(yīng)的第時器初值可按下法計算:晶振為6.144MHZ時,音階“1”相應(yīng)的定時器初值為X,則1÷262*2=(216-X)*12÷(6.144*106)可得X=64559D=FC2FH,其它的可同樣求得(見下表單位:HZ,X為16進制)音調(diào)45671234567123頻率175196220247262294330349392440494523587659XFA49FAE6FB7EFC0CFC2FFC8FFCF8FD23FD73FDBAFDFAFE18FE4CFE94音的節(jié)拍由延時子程序?qū)崿F(xiàn)。延時子程序?qū)崿F(xiàn)基本延時時間,節(jié)拍值只能是它的整數(shù)倍。實驗電路五、接線方法將8031的P1.7接LB插孔,揚聲器接J6六、程序流程圖開始計數(shù)取X值低半部入TL1該值為0?從表中取X值高半部入TH1初始化定時器1置位ET1,EA入口開始計數(shù)取X值低半部入TL1該值為0?從表中取X值高半部入TH1初始化定時器1置位ET1,EA入口 Y N表指針指向下一個X值取節(jié)拍對應(yīng)值,延遲相應(yīng)時間長度 表指針指向下一個X值取節(jié)拍對應(yīng)值,延遲相應(yīng)時間長度中斷返回置位TR1轉(zhuǎn)入計數(shù)初值P1.7位取反入口中斷子程序:中斷返回置位TR1轉(zhuǎn)入計數(shù)初值P1.7位取反入口 七、程序清單T20.ASMST_ADDR EQU 4000H ORG ST_ADDR LJMP MAIN ORG ST_ADDR+1BH LJMP INT_0 ORG ST_ADDR+200HMAIN: ANL TMOD,#0FH ORL TMOD,#10H SETB ET1 SETB EA MOV DPTR,#TONE MOV A,#00HLOP: MOVC A,@A+DPTR JZ MAIN MOV R5,A MOV TH1,A INC DPTR MOV A,#00H MOVC A,@A+DPTR MOV R6,A MOV TL1,R6 SETB TR1 INC DPTR MOV A,#00H MOVC A,@A+DPTR MOV R2,ALOOP1: MOV R3,#80HLOOP2: MOV R4,#0FFHLOOP3: DJNZ R4,LOOP3 DJNZ R3,LOOP2 DJNZ R2,LOOP1 INC DPTR MOV A,#00H LJMP LOPINT_0: PUSH DPH PUSH DPL PUSH ACC CPL P1.7 MOV TH1,R5 MOV TL1,R6 SETB TR1 POP ACC POP DPL POP DPH RETITONE: DB 0FCH,2FH,04H,0FCH,99H,04H DB 0FCH,0F8H,04H,0FDH,22H,04H DB 0FDH,073H,04H,0FDH,0BCH,04H DB 0FDH,0FAH,04H,0FEH,17H,04H DB 0FEH,17H,04H DB 0FDH,0FAH,04H,0FDH,0BCH,04H DB 0FDH,73H,04H,0FDH,22H,04H DB 0FCH,0F8H,04H,0FCH,99H,04H DB 0FCH,2FH,04H,00H,00H,00H END實驗十繼電器控制實驗一、實驗內(nèi)容利用P1口輸出高低電平,控制繼電器的開合,以實現(xiàn)對外部轉(zhuǎn)置的控制。二、實驗?zāi)康模赫莆沼美^電器控制的基本方法和編程。三、實驗原理現(xiàn)代自動化控制設(shè)備中,都存在一個電子電路與電氣電路的互相聯(lián)結(jié)問題,一方面要使電子電路的控制信號能夠控制電氣電路的執(zhí)行元件(電動機,電磁鐵,電燈等),一方面又要為電子電路的電氣電路提供良好的電隔離,以保護電子電路和人身的安全。電子繼電器便能完成這一橋梁作用。本實驗所用繼電器,型號為JDC—3F,控制電壓為直流+5V,控制端為JDQ插孔,當JDQ為高電平時,繼電器不動作,為低電平時繼電器動作(常閉觸點斷開,常開觸點閉合)。四、實驗電路五、程序流程圖入口入口向繼電器輸出高電平向繼電器輸出高電平延時延時向繼電器輸出低電平向繼電器輸出低電平延時延時六、接線方法8031的P1.1接JDQ端,繼電器的輸出J4接一白熾燈泡。七、程序清單T22。ASMST_ADDR EQU 4000H ORG ST_ADDR LJMP START ORG ST_ADDR+200HSTART: SETB P1.1 ACALL DE3SLP: CPL P1.1 ACALL DE3S LJMP LPDE3S: MOV R0,#30D0: MOV R1,#00HD1: MOV R2,#38HD2: DJNZ R2,D2 DJNZ R1,D1 DJNZ R0,D0 RET END實驗十一步進電機控制實驗實驗內(nèi)容:利用74LS273輸出脈沖序列,開關(guān)K1-K6控制步進電機轉(zhuǎn)速(分6檔),K7,K8控制步進電機轉(zhuǎn)向。必須要K1-K6中一開關(guān)和K7、K8中一開關(guān)同時為‘1’時步進電機才啟動,其他情況步進電機不工作。實驗?zāi)康模?.了解步進電機控制的基本原理。2.掌握控制步進電機轉(zhuǎn)動編程方法。三、實驗原理:步進電機驅(qū)動原理是通過對它每相線圈中的電流的順序切換來使電機作步進式旋轉(zhuǎn)。驅(qū)動電路有脈沖信號來控制,A所以調(diào)節(jié)脈沖信號的頻率便可改變步進電機的轉(zhuǎn)速。微電腦控制步進電機最適合。C如圖1所示;本實驗使用的步進電機用直流+5V電壓,每相電流為0.16A,電機線圈有四相組成:即φ1(A);φ2(B);φ3(C);φ4(D)BD驅(qū)動方式為二相激磁方式,個線圈通電順序如下表。圖1二相激磁通電次序相順序φ1φ2φ3φ401100101102001131001表中首先向φ1線圈—φ2線圈輸入驅(qū)動電流,接著φ2—φ3,φ3—φ4,φ4—φ1,有返回到φ1—φ2,按這種順序切換,電機軸按順時針方向旋轉(zhuǎn)。步進電機的驅(qū)動電路如實驗電路圖所示,對照表2,微電腦向步進電機輸入端傳送1或0信息,則可實現(xiàn)上述動作。實驗可通過不同長度的延時來得到不同頻率的步進電機輸入脈沖,從而得到多種步進速度。四、接線方法74LS273的O11-O14分別接步進電機BA-BD,74LS273片選端CS2接08-0F。74LS244DEI1-I8分別接K1-K8,74LS244片選端CS4接18-1F。步進電機插頭接J8。五、程序流程圖入口入口置初始值并保存置初始值并保存向電機輸入控制信息向電機輸入控制信息讀入開關(guān)狀態(tài)讀入開關(guān)狀態(tài)置延時時間常數(shù)K1=‘1置延時時間常數(shù)K1=‘1’ NK7=‘1’K7=‘1’K2=‘1’延時延時 N YNK8=‘1’?K8=‘1’K3=‘1’控制信息循環(huán)右移一位 NY控制信息循環(huán)右移一位延時K4=‘1延時K4=‘1’ N控制信息循環(huán)左移一位K5=‘1控制信息循環(huán)左移一位K5=‘1’ NK6=‘1’K6=‘1’ N置停止轉(zhuǎn)動信息置停止轉(zhuǎn)動信息 六、實驗電路七、程序清單T23。ASMST_ADDR EQU 4000HPORT1 EQU 1B08HPORT2 EQU PORT1+10H ORG ST_ADDR LJMP MAIN ORG ST_ADDR+200HMAIN: MOV DPTR,#PORT1 MOV A,#33H MOV R1,ABJ1: MOVX @DPTR,A MOV DPTR,#PORT2 MOVX A,@DPTR JB ACC.0,A0 JB ACC.1,A1 JB ACC.2,A2 JB ACC.3,A3 JB ACC.4,A4 JB ACC.5,A5STOP: MOV DPTR,#PORT1 MOV A,#0FFH LJMP BJ1A0: MOV R2,#08HSAM: JB ACC.6,ZX0 JB ACC.7,NX0 LJMP STOPA1: MOV R2,#10H LJMP SAMA2: MOV R2,#18H LJMP SAMA3: MOV R2,#20H LJMP SAMA4: MOV R2,#40H LJMP SAMA5: MOV R2,#80H LJMP SAMZX0: LCALL DELAY MOV A,R1 RR A MOV R1,A MOV DPTR,#PORT1 LJMP BJ1NX0: LCALL DELAY MOV A,R1 RL A MOV R1,A MOV DPTR,#PORT1 LJMP BJ1DELAY: MOV R6,#50HDE1: DJNZ R6,DE1 DJNZ R2,DELAY RET END附錄一KeilC51軟件的使用:點擊桌面上的以下圖標啟動KeilC51時的屏幕進入KeilC51后的編輯界面建立一個新工程單擊Project菜單(菜單欄的第4項),在彈出的下拉菜單中選中NewProject選項(展開的下拉子菜單中第一項)選擇你要保存的路徑,輸入工程文件的名字,比如保存到C51目錄里,工程文件的名字為C51
如下圖所示,然后點擊保存.
選擇單片機的型號(如AT89C52).
完成上一步驟后,屏幕如下圖所示
5)單擊“File”主菜單,再在下拉菜單中單擊“New”選項新建文件后屏幕如下圖所示注意,如果用C語言編寫程序,則擴展名為(.c);如果用匯編語言編寫程序,則擴展名必須為(.asm)?;氐骄庉嫿缑婧?,單擊“Target1”前面的“+”號,然后在“SourceGroup1”上單擊右鍵,彈出如下菜單然后單擊“AddFiletoGroup‘SourceGroup1’”屏幕如下圖所示選中Test.c,然后單擊畫面中的右下角“Add
”按鈕,屏幕畫面變?yōu)槿缦聢D所示在此框中輸入源程序在此框中輸入源程序7)輸入源程序:8)單擊“Project”菜單,再在下拉菜單中單擊“BuiltTarget”選項(或者使用快捷鍵F7),編譯成功后,再單擊“Project”菜單,在下拉菜單中單擊“Start/StopDebugSession”(或者使用快捷鍵Ctrl+F5)9)調(diào)試程序:在上圖中,單擊“Debug”菜單,在下拉菜單中單擊“Go”選項,(或者使用快捷鍵F5),然后再單擊“Debug”菜單,在下拉菜單中單擊“StopRunning”選項(或者使用快捷鍵Esc);再單擊“View”菜單,再在下拉菜單中單擊“SerialWindows#1”選項,就可以看到程序運行后的結(jié)果10)單擊“Project”菜單,再在下拉菜單中單擊“”在下圖中,單擊“Output”中單擊“CreateHEXFile”選項,使程序編譯后產(chǎn)生HEX代碼,供下載器軟件使用。把程序下載到AT89S51單片機中。11)Keil與proteus聯(lián)調(diào)(1)、安裝keil與proteus。(2)、打開proteus,畫出相應(yīng)電路,在proteus的debug菜單中選中useremotedebugmonitor(3)、在keil中編寫MCU的程序(4)、進入KEIL的project菜單optionfortarget'工程名'。在DEBUG選項中右欄上部的下拉菜單選中ProteusVSMMonitor-51Driver。在進入seting,如果同一臺機IP名為127.0.0.1,如不是同一臺機則填另一臺的IP地址。端口號一定為8000
注意:可以在一臺機器上運行keil,另一臺中運行proteus進行遠程仿真。(5)、在keil中進行debug吧,同時在proteus中查看直觀的結(jié)果(如LCD顯示…)這樣就可以像使用仿真器一樣調(diào)試程序附錄二Proteus軟件的使用一、Proteus6Professional界面簡介安裝完P(guān)roteus后,運行ISIS6Professional,會出現(xiàn)以下窗口界面:1.原理圖編輯窗口(TheEditingWindow):顧名思義,它是用來繪制原理圖的。藍色方框內(nèi)為可編輯區(qū),元件要放到它里面。注意,這個窗口是沒有滾動條的,你可用預(yù)覽窗口來改變原理圖的可視范圍。2.預(yù)覽窗口(TheOverviewWindow):它可顯示兩個內(nèi)容,一個是:當你在元件列表中選擇一個元件時,它會顯示該元件的預(yù)覽圖;另一個是,當你的鼠標焦點落在原理圖編輯窗口時(即放置元件到原理圖編輯窗口后或在原理圖編輯窗口中點擊鼠標后),它會顯示整張原理圖的縮略圖,并會顯示一個綠色的方框,綠色的方框里面的內(nèi)容就是當前原理圖窗口中顯示的內(nèi)容,因此,你可用鼠標在它上面點擊來改變綠色的方框的位置,從而改變原理圖的可視范圍。3.模型選擇工具欄(ModeSelectorToolbar):主要模型(MainModes):1*選擇元件(components)(默認選擇的)2*放置連接點3*放置標簽(用總線時會用到)4*放置文本5*用于繪制總線6*用于放置子電路7*用于即時編輯元件參數(shù)(先單擊該圖標再單擊要修改的元件)配件(Gadgets):1*終端接口(terminals):有VCC、地、輸出、輸入等接口2*器件引腳:用于繪制各種引腳3*仿真圖表(graph):用于各種分析,如NoiseAnalysis4*錄音機5*信號發(fā)生器(generators)6*電壓探針:使用仿真圖表時要用到7*電流探針:使用仿真圖表時要用到8*虛擬儀表:有示波器等2D圖形(2DGraphics):=1\*GB3①=2\*GB3②=3\*GB3③…=8\*GB3⑧=1\*GB3①*畫各種直線=2\*GB3②*畫各種方框=3\*GB3③*畫各種圓=4\*GB3④*畫各種圓弧=5\*GB3⑤*畫各種多邊形=6\*GB3⑥*畫各種文本=7\*GB3⑦*畫符號=8\*GB3⑧*畫原點等4.元件列表(TheObjectSelector):用于挑選元件(components)、終端接口(terminals)、信號發(fā)生器(generators)、仿真圖表(graph)等。舉例,當你選擇“元件(components)”,單擊“P”按鈕會打開挑選元件對話框,選擇了一個元件后(單擊了“OK”后),該元件會在元件列表中顯示,以后要用到該元件時,只需在元件列表中選擇即可。5.方向工具欄(OrientationToolbar):旋轉(zhuǎn):旋轉(zhuǎn)角度只能是90的整數(shù)倍。翻轉(zhuǎn):完成水平翻轉(zhuǎn)和垂直翻轉(zhuǎn)。使用方法:先右鍵單擊元件,再點擊(左擊)相應(yīng)的旋轉(zhuǎn)圖標。6.仿真工具欄1234仿真控制按鈕1*運行2*單步運行3*暫停4*停止二、操作簡介1、繪制原理圖:繪制原理圖要在原理圖編輯窗口中的藍色方框內(nèi)完成。原理圖編輯窗口的操作是不同于常用的WINDOWS應(yīng)用程序的,正確的操作是:用左鍵放置元件;右鍵選擇元件;雙擊右鍵刪除元件;右鍵拖選多個元件;先右鍵后左鍵編輯元件屬性;先右鍵后左鍵拖動元件;連線用左鍵,刪除用右鍵;改連接線:先右擊連線,再左鍵拖動;中鍵放縮原理圖。2、定制自己的元件:有三個個實現(xiàn)途徑,一是用PROTEUSVSMSDK開發(fā)仿真模型,并制作元件;另一個是在已有的元件基礎(chǔ)上進行改造,比如把元件改為bus接口的;還有一個是利用已制作好(別人的)的元件,我們可以到網(wǎng)上下載一些新元件并把它們添加到自己的元件庫里面。3、Sub-Circuits應(yīng)用:用一個子電路可以把部分電路封裝起來,這樣可以節(jié)省原理圖窗口的空間。附錄三、MCS-51單片機指令速查表(按字母順序排列)指令助記符機器碼字節(jié)數(shù)機器周期數(shù)指令助記符機器
溫馨提示
- 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)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 二零二五年度健康醫(yī)療大數(shù)據(jù)委托經(jīng)營服務(wù)合同
- 二零二五年度房屋修繕與綠色建筑標準認證合同3篇
- 2025年度新型醫(yī)療器械研發(fā)技術(shù)授權(quán)合同3篇
- 高中信息技術(shù)選修5說課稿-1.2.6 其他應(yīng)用1-教科版001
- 《精彩麻醉學停頓》課件
- 天文學專業(yè)大學生職業(yè)生涯發(fā)展
- 初二下期中無錫數(shù)學試卷
- 2024離婚夫妻協(xié)議范本大全
- 二零二五年啤酒行業(yè)用冷卻水泵設(shè)備購銷合同2篇
- 冶金工程專業(yè)就業(yè)能力展示
- 大創(chuàng)賽項目書
- 產(chǎn)品質(zhì)量知識培訓課件
- 乳腺旋切手術(shù)
- 醫(yī)護禮儀課件教學課件
- 2024-2030年中國商品混凝土行業(yè)產(chǎn)量預(yù)測分析投資戰(zhàn)略規(guī)劃研究報告
- 2023年中國奧特萊斯行業(yè)白皮書
- 2024年江蘇省學業(yè)水平合格性考試全真模擬語文試題(解析版)
- 獨家投放充電寶協(xié)議書范文范本
- 第六章 綠色化學與科技課件
- 封窗安全事故免責協(xié)議書范文
- 北京市海淀區(qū)2023-2024學年高二上學期期末考試 生物 含解析
評論
0/150
提交評論