版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、Proteus軟件使用簡介Proteus ISIS是英國Labcenter公司開發(fā)的電路分析與實(shí)物仿真軟件。它運(yùn)行于Windows操作系統(tǒng)上,可以仿真、分析(SPICE)各種模擬器件和集成電路,是目前較好的仿真單片機(jī)及外圍器件的工具。下面以制作一個閃爍燈為例給出proteus的使用方法。1創(chuàng)建文件雙擊桌面上的ISIS 7 Professional圖標(biāo)或者單擊屏幕左下方的“開始”“程序”“Proteus 7 Professional”進(jìn)入Proteus ISIS集成環(huán)境,選擇“File”“Creat New Design”命令,選擇Default模板,單擊OK并進(jìn)行保存命名為“Led.DSN”,
2、 如圖所示。創(chuàng)建文件2繪制電路圖1)將所需元器件加入到對象選擇器窗口。選擇“Library”“Pick Device/Symbol”命令,彈出“Pick Devices”頁面,在“Keywords”輸入AT89C51,如圖所示。 Pick Devices窗口單擊“OK”,元件名出現(xiàn)在“DEVICES”列表中,如圖所示。DEVICES窗口2)在“DEVICES”列表中選擇AT89C51,在繪圖區(qū)域單擊鼠標(biāo)左鍵擺放元件。3)同理擺放其它元件,如圖所示。擺放元件4)使用左下角的旋轉(zhuǎn)或反轉(zhuǎn)命令,改變元件方向。也可用鼠標(biāo)右鍵單擊元件,進(jìn)行旋轉(zhuǎn)或反轉(zhuǎn)。5)在左側(cè)單擊圖標(biāo),列表框中顯示可用的終端,單擊“Po
3、wer”擺放電源終端,單擊“Ground”擺放接地終端,如圖所示。添加終端6)選中元件,單擊鼠標(biāo)左鍵,設(shè)置元件參數(shù),7)布線,分別單擊兩個引腳,兩個引腳之間會自動走線,也可以手動走線,連接走線后的電路如圖所示 。連接走線3加載目標(biāo)文件在AT89C51上雙擊鼠標(biāo)左鍵,彈出Edit Component 窗口,點(diǎn)擊Program File,添加目標(biāo)程序在Keil中生成的HEX文件,如圖。加載目標(biāo)文件4運(yùn)行仿真點(diǎn)擊OK,單擊ISIS編輯環(huán)境下方的啟動仿真按鈕,運(yùn)行仿真,可觀察到實(shí)驗運(yùn)行結(jié)果,如圖9-17所示。運(yùn)行仿真結(jié)果這四個按鈕分別是啟動仿真、單步運(yùn)行仿真、暫停仿真和停止仿真。二、Keil C與Pr
4、oteus連接調(diào)試1正確安裝Keil C與Proteus 及連調(diào)驅(qū)動。2設(shè)置Keil C的選項。在Keil C下創(chuàng)建一個項目,加入Keil C源程序。單擊“Project 菜單/Options for Target”選項或者點(diǎn)擊工具欄的“Option For Target”按鈕,在彈出窗口上點(diǎn)擊“Debug”按鈕,選中對話框右欄上部的下拉菜單中的“Proteus VSM Monitor”,點(diǎn)擊“Use”表明選中。出現(xiàn)如圖所示。KeilC Vision3選項設(shè)置點(diǎn)擊“Setting”按鈕,設(shè)置通信接口,在“Host”后面添上“127.0.0.1”,如果使用的不是同一臺電腦,則需要在這里添上另一臺
5、電腦的IP地址。在“Port”后面添加“8000”,如圖(a)所示,點(diǎn)擊“OK”按鈕。將工程編譯,進(jìn)入調(diào)試狀態(tài)。 a) b)選項設(shè)置a)Keil C 通信接口設(shè)置 b)Proteus選項設(shè)置3Proteus的設(shè)置打開Proteus ISIS,鼠標(biāo)左鍵點(diǎn)擊菜單“Debug”, 選中“use romote debuger monitor”,如圖(b)所示,便可實(shí)現(xiàn)Keil C與Proteus連接調(diào)試。4Keil C與Proteus連接仿真調(diào)試在Keil C開發(fā)環(huán)境Debug下點(diǎn)擊單步、斷點(diǎn)、連續(xù)運(yùn)行,可在Proteus上清楚地觀察到電路中每一個引腳的電平變化及閃爍燈的亮滅變化。實(shí)驗一 清零程序一、
6、 實(shí)驗?zāi)康恼莆諈R編語言設(shè)計和調(diào)試方法,熟悉鍵盤操作。二、 實(shí)驗內(nèi)容把60H7FH的內(nèi)容清零。三、 實(shí)驗程序框圖開始R0 = 00H R1 = 60H00送到R1所存數(shù)據(jù)對應(yīng)的地址單元R1=R1+1,R0=R0+1 NR0=20H Y 結(jié)束四、 實(shí)驗步驟使用proteus仿真,觀察各寄存器和存儲單元的變化情況。五、 思考假使要把50H7FH中的內(nèi)容改成FF,如何編制程序。源文件名:CLEAR.ASMORG 0030HCLEAR:MOV R0,#00HMOV R1,#60HCLEAR1: CLR A ;a = 0 mov a,#0MOV R1,AINC R1INC R0CJNE R0,#20H,C
7、LEAR1SJMP CLEAREND實(shí)驗二 BCD碼求和實(shí)驗源代碼:ORG00HMOVR7,#03HMOVR0,#30HMOVR1,#34HMOV30H,#68HMOV31H,#55HMOV32H,#98HMOV34H,#55HMOV35H,#23HMOV36H,#64HBCDA: MOV A,R7;取字節(jié)數(shù)至R2中 MOV R2,A ADD A,R0;初始化數(shù)據(jù)指針 MOV R0,A MOV A,R2 ADD A,R1 ;高位字節(jié)相加MOV R1,A CLR C ;為什么要加一個清除C?BCD1: DEC R0;調(diào)整數(shù)據(jù)指針 DEC R1 MOV A,R0 ADDC A,R1;按字節(jié)相加,帶
8、進(jìn)位的加法 addDA A;十進(jìn)制調(diào)整 MOV R0,A;和存回R0中 DJNZ R2,BCD1;處理完所有字節(jié) SJMP $END說明該實(shí)驗完成的功能,分析程序。使用proteus仿真,觀察各寄存器和存儲單元的變化情況。實(shí)驗三 多路開關(guān)狀態(tài)指示1 實(shí)驗內(nèi)容AT89S51單片機(jī)的P1.0P1.3接四個發(fā)光二極管L1L4,P1.4P1.7接了四個開關(guān)K1K4,編程將開關(guān)的狀態(tài)反映到發(fā)光二極管上。(開關(guān)閉合,對應(yīng)的燈亮,開關(guān)斷開,對應(yīng)的燈滅)。 2 電路原理圖 3 系統(tǒng)板上硬件連線 (1 把“單片機(jī)系統(tǒng)”區(qū)域中的P1.0P1.3用導(dǎo)線連接到“八路發(fā)光二極管指示模塊”區(qū)域中的L1L4端口上; (2
9、把“單片機(jī)系統(tǒng)”區(qū)域中的P1.4P1.7用導(dǎo)線連接到“四路撥動開關(guān)”區(qū)域中的K1K4端口上; 4 程序設(shè)計內(nèi)容 (1 開關(guān)狀態(tài)檢測 對于開關(guān)狀態(tài)檢測,相對單片機(jī)來說,是輸入關(guān)系,我們可輪流檢測每個開關(guān)狀態(tài),根據(jù)每個開關(guān)的狀態(tài)讓相應(yīng)的發(fā)光二極管顯示,可以采用JBP1.X,REL或JNBP1.X,REL指令來完成;也可以一次性檢測四路開關(guān)狀態(tài),然后讓其顯示,可以采用MOVA,P1指令一次把P1端口的狀態(tài)全部讀入,然后取高4位的狀態(tài)來指示(高4位接開關(guān))。 (2 輸出控制 根據(jù)開關(guān)的狀態(tài),由發(fā)光二極管L1L4來指示,我們可以用SETBP1.X和CLRP1.X指令來完成,也可以采用把開關(guān)狀態(tài)反映到低4
10、位,然后通過MOVP1,1111XXXXB方法一次指示。 5匯編源程序方法一ORG 00HSTART: MOV A,P1 ANL A,#0F0H RR A RR A RR A RR A ORL A,#0F0H MOV P1,A SJMP STARTEND 方法二ORG 00HSTART: JB P1.4,NEXT1 CLR P1.0 SJMP NEX1NEXT1: SETB P1.0NEX1: JB P1.5,NEXT2 CLR P1.1 SJMP NEX2NEXT2: SETB P1.1NEX2: JB P1.6,NEXT3 CLR P1.2 SJMP NEX3NEXT3: SETB P1.
11、2NEX3: JB P1.7,NEXT4 CLR P1.3 SJMP NEX4NEXT4: SETB P1.3NEX4: SJMP STARTEND實(shí)驗步驟:1、使用proteus仿真,觀察實(shí)驗現(xiàn)象。 2、在開發(fā)板上下載程序,觀察實(shí)驗現(xiàn)象。實(shí)驗四 子程序設(shè)計-BCD碼轉(zhuǎn)換為二進(jìn)制單字節(jié)可存放兩位壓縮BCD碼(099)B=D110D0(D1,D0為09)十位 個位單字節(jié)BCD碼轉(zhuǎn)換為二進(jìn)制子程序入口:(R0)= 壓縮BCD碼的地址出口:(A)= 轉(zhuǎn)換結(jié)果DSFR::MOV A,R0ANL A,#0F0H ;取十位數(shù)SWAP A ;變?yōu)闃?biāo)準(zhǔn)BCD碼MOV B,#10MUL AB ;(A)=D110
12、MOV R7,A ;D110暫存R7MOV A,R0ANL A,#0FH ;取個位ADD A,R7 ;A=D110D0RET1、實(shí)驗內(nèi)容四位壓縮BCD碼存在20H21H單元D=D3D2D1D0D=D31000+D2100+D110+D0 =(D310+D2) 100+D110+D0結(jié)果存放30H31HR0,R1賦初值調(diào)用DSFR子程序 ;求D310+D2A100結(jié)果存30H31H INC R0ACALL DSFR 結(jié)果加到30h31HDSFR子程序子程序設(shè)計要點(diǎn):子程序一般為多次返復(fù)使用的程序段,一般應(yīng)說明入口條件,DSFR子程序的入口條件是:被轉(zhuǎn)換為二進(jìn)制的單字節(jié)BCD碼為間接尋址,間接尋址
13、寄存器為R0。要調(diào)用DFSR子程序必需先將壓縮BCD碼的存放地址賦與R0。而出口條件是指最后結(jié)果在哪兒存放。本子程序轉(zhuǎn)換結(jié)果在ACC內(nèi)。主程序調(diào)用子程序,在調(diào)試時一般要先調(diào)試子程序、再調(diào)試主程序。2、實(shí)驗步驟使用proteus仿真,觀察各寄存器和存儲單元的變化情況。3.實(shí)驗報告 1)寫出主程序流程圖、子程序流程圖、程序清單 2)根據(jù)記錄數(shù)據(jù)給程序加注解 3)調(diào)試心得實(shí)驗五 數(shù)制轉(zhuǎn)換子程序單字節(jié)二進(jìn)制數(shù)轉(zhuǎn)換為三位數(shù)的BCD碼B=D2100D110+D0 單字節(jié)二進(jìn)制數(shù)應(yīng)轉(zhuǎn)換為BCD子程序入口: (A)= 二進(jìn)制數(shù)出口: (R0)= 十位數(shù)和個位數(shù)的地址DRFS:MOV B,#100DIV AB
14、;(A)= 百位數(shù) MOV R0,A ; 存入RAM單元INC R0MOV A,#10XCH A,BDIV AB ;(A)= 十位、(B)= 個位SWAP AADD A,B ;個位、十位拼字MOV R0,A ;存入RAMRETEND1、實(shí)驗內(nèi)容將FFH轉(zhuǎn)換為壓縮BCD碼存入內(nèi)部RAM 20H.21H單元(高位在前)Org 10hFFH送ACCR0賦初值20H調(diào)用DRFSSJMP $DRFS子程序end2、實(shí)驗步驟使用proteus仿真,觀察各寄存器和存儲單元的變化情況。 3、實(shí)驗報告 1)寫出程序流程圖、程序清單 2)根據(jù)記錄數(shù)據(jù)給程序加注解 3)調(diào)試心得實(shí)驗六 循環(huán)程序設(shè)計1、實(shí)驗內(nèi)容:三字
15、節(jié)加法加數(shù)存放在內(nèi)部RAM 20H21H22H,被加數(shù)存放在28H29H2AH,結(jié)果存放在28H29H2AH。多字節(jié)加法用 ADDC A,R1 連續(xù)使用之三次。第一個字節(jié)使用時要先清進(jìn)位位C第二、第三字節(jié)使用時需要調(diào)整加數(shù)、被加數(shù)的取數(shù)地址。連續(xù)取數(shù)或連續(xù)送數(shù)一般用間接尋址。間接尋址要先賦初值再使用,賦初值的語句要在循環(huán)體之外避免出現(xiàn)死循環(huán)。間接尋址地址調(diào)整用INC(連續(xù)增加),用DEC(連續(xù)減小)判斷循環(huán)次數(shù)有多種方法: 1)DJNZ R7,LOP ;R7內(nèi)存循環(huán)次數(shù),LOP為跳轉(zhuǎn)地址。R7要先賦初值。 2)CJNE R7,#3,LOP 3)DEC R7MOV A,R7 2、實(shí)驗步驟使用pr
16、oteus仿真,觀察各寄存器和存儲單元的變化情況。 3、實(shí)驗報告 1)寫出程序流程圖、程序清單 2)根據(jù)記錄數(shù)據(jù)給程序加注解 3)調(diào)試心得實(shí)驗七 多重循環(huán)程序設(shè)計-閃爍燈方法一1、實(shí)驗內(nèi)容 在P1.0端口上接一個發(fā)光二極管L1,使L1在不停地一亮一滅,一亮一滅的時間間隔為0.2秒。 2、電路原理圖 3、系統(tǒng)板上硬件連線 把“單片機(jī)系統(tǒng)”區(qū)域中的P1.0端口用導(dǎo)線連接到“八路發(fā)光二極管指示模塊”區(qū)域中的L1端口上。 4、程序設(shè)計內(nèi)容 (1)延時程序的設(shè)計方法 作為單片機(jī)的指令的執(zhí)行的時間是很短,數(shù)量大微秒級,因此,我們要求的閃爍時間間隔為0.2秒,相對于微秒來說,相差太大,所以我們在執(zhí)行某一指令
17、時,插入延時程序,來達(dá)到我們的要求,但這樣的延時程序是如何設(shè)計呢?下面具體介紹其原理: 石英晶體為12MHz,因此,1個機(jī)器周期為1微秒 機(jī)器周期 微秒 MOV R6,#20 D1: MOV R7,#248 DJNZ R7,$ DJNZ R6,D1 因此,上面的延時程序時間為 ms。 由以上可知,當(dāng)R610、R7248時,延時5ms,R620、R7248時,延時10ms,以此為基本的計時單位。如本實(shí)驗要求0.2秒200ms,10msR5200ms,則R520,延時子程序如下: DELAY: MOV R5,#20D1: MOV R6,#20D2: MOV R7,#248 DJNZ R7,$ DJ
18、NZ R6,D2 DJNZ R5,D1 RET (2)輸出控制 當(dāng)P1.0端口輸出高電平,即P1.01時,根據(jù)發(fā)光二極管的單向?qū)щ娦钥芍?,這時發(fā)光二極管L1熄滅;當(dāng)P1.0端口輸出低電平,即P1.00時,發(fā)光二極管L1亮;我們可以使用SETBP1.0指令使P1.0端口輸出高電平,使用CLRP1.0指令使P1.0端口輸出低電平。 5、 程序框圖 開始P1.0輸出1,L1熄滅延時0.2秒P1.0輸出0,L1延時0.2秒6、匯編源程序ORG 0000hSTART: CLR P1.0LCALL DELAYSETB P1.0LCALL DELAYLJMP STARTDELAY: MOV R5,#20 ;
19、延時子程序,延時0.2秒D1: MOV R6,#20D2: MOV R7,#248 DJNZ R7,$ DJNZ R6,D2 DJNZ R5,D1 RETEND方法二1、實(shí)驗內(nèi)容1) 利用100毫秒為循環(huán)體,寫一個1秒的三重循環(huán)程序2) 寫一個1毫秒的子程序,然后調(diào)用子程序?qū)懸粋€延時1秒的程序。3) 如果單片機(jī)的機(jī)器周期為2個微秒改寫程序。2、實(shí)驗原理單片機(jī)每執(zhí)行一條程序需要1-4個機(jī)器周1秒定時子程序期因此利用該性質(zhì)可以實(shí)現(xiàn)軟件定時。最筒單的軟件定時程序用NOP和DJNZ循環(huán)指令完成。R5,R6,R7賦初值假定單片機(jī)的機(jī)器周期為1微秒則MOV R7,#O9H;1LOP:NOP;11毫秒到嗎D
20、JNZ R7,LOP;2 N RET;2T=1+93+2=30微秒 Y恢復(fù)R7初值MOV R7,#250;1LOP:NOP;1 NNOP;1 0.1秒到嗎 DJNZ R7,LOP;2RET ;2T=1毫秒 每循環(huán)一次4微秒循環(huán)250次1毫秒 Y恢復(fù)R6初值此為單循環(huán)。利用循環(huán)嵌套可以實(shí)現(xiàn)較長時間的定時MOV R6,#100;11秒到嗎MOV R7,#250;1 NLOP1:NOP NOP YRETDJNZ R7,LOP1;T=1毫秒 Y MOV R7,#250;1DJNZ R6,LOP1;2RET;2將1毫秒作為循環(huán)體利用R6循環(huán)執(zhí)行100次,執(zhí)行時間為100毫秒。此為2重循環(huán)。注意內(nèi)循環(huán)完成
21、后R7=0,下次循環(huán)若還要執(zhí)行250次R7必須重新賦值250,否則循環(huán)次數(shù)為256。3、實(shí)驗步驟使用proteus仿真,觀察實(shí)驗現(xiàn)象。2、在開發(fā)板上下載程序,觀察實(shí)驗現(xiàn)象。注意:連線用排線將J8 0-3分別連J13 1-4,J8 4-7連J7 s17-20;打開STC-isp軟件,選擇單片機(jī)STC12C5A60S2, 串口從設(shè)備管理器里找到并選擇,打開程序”.HEX”文件,點(diǎn)擊下載,打開開發(fā)板上的電源開關(guān),按下按鍵觀察實(shí)驗現(xiàn)象。 4、實(shí)驗報告 1.寫出程序流程圖、程序清單 2.根據(jù)記錄數(shù)據(jù)給程序加注解 3.調(diào)試心得實(shí)驗八 P1口應(yīng)用實(shí)驗方法一:1、實(shí)驗任務(wù) 做單一燈的左移右移,硬件電路如圖4.
22、4.1所示,八個發(fā)光二極管L1L8分別接在單片機(jī)的P1.0P1.7接口上,輸出“0”時,發(fā)光二極管亮,開始時P1.0P1.1P1.2P1.3P1.7P1.6P1.0亮,重復(fù)循環(huán)。 2、 電路原理圖 3、 系統(tǒng)板上硬件連線 把“單片機(jī)系統(tǒng)”區(qū)域中的P1.0P1.7用8芯排線連接到“八路發(fā)光二極管指示模塊”區(qū)域中的L1L8端口上,要求:P1.0對應(yīng)著L1,P1.1對應(yīng)著L2,P1.7對應(yīng)著L8。 4、 程序設(shè)計內(nèi)容 我們可以運(yùn)用輸出端口指令MOVP1,A或MOVP1,DATA,只要給累加器值或常數(shù)值,然后執(zhí)行上述的指令,即可達(dá)到輸出控制的動作。 每次送出的數(shù)據(jù)是不同,具體的數(shù)據(jù)如下表1所示 :P1
23、.7P1.6P1.5P1.4P1.3P1.2P1.1P1.0說明L8L7L6L5L4L3L2L101111110L1滅11111101L2滅11111011L3滅11110111L4滅11101111L5滅11011111L6滅10111111L7滅01111111L8滅 5、匯編源程序ORG 0START: MOV R2,#8 MOV A,#0FEH SETB CLOOP: MOV P1,ALCALL DELAY RLC A DJNZ R2,LOOP MOV R2,#8LOOP1: MOV P1,A LCALL DELAY RRC A DJNZ R2,LOOP1 LJMP STARTDELA
24、Y: MOV R5,#20 ;D1: MOV R6,#20D2: MOV R7,#248 DJNZ R7,$ DJNZ R6,D2 DJNZ R5,D1 RETEND方法二:1、 實(shí)驗任務(wù)P1.0-P1.7八個I/O口接八只LED發(fā)光管口線狀態(tài)為”1”LED亮, 試編程實(shí)現(xiàn)每次點(diǎn)亮一只LED并左循環(huán)連續(xù)點(diǎn)亮八只LED編程實(shí)現(xiàn)每次點(diǎn)亮兩個LED右循環(huán)連續(xù)點(diǎn)亮8、7 6。5 4,3 2,1假設(shè)P1.0在左邊。CYC:MOV A,#01HLOP:MOV P1,AACALL DELY循環(huán)代碼送ACCRL A SJMP LOPDELY:MOV R6,#100循環(huán)代碼送P1口MOV R7,#250LOP1
25、:NOPACC右環(huán)移兩次NOPDJNZ R7,LOP1MOV R7,#250延時0.1秒DJNZ R6,LOP1RET2、實(shí)驗步驟使用proteus仿真,觀察各實(shí)驗現(xiàn)象。3、實(shí)驗報告 1.寫出程序流程圖、程序清單 2.根據(jù)記錄數(shù)據(jù)給程序加注解 3.調(diào)試心得實(shí)驗步驟:1、使用proteus仿真,觀察實(shí)驗現(xiàn)象。 2、在開發(fā)板上下載程序,觀察實(shí)驗現(xiàn)象。實(shí)驗九 多分支程序設(shè)計1、實(shí)驗內(nèi)容 用P3.0、P3.1控制流水燈的變化 P3.0、P3.1=00 燈全滅P3.0、P3.1=01 單燈亮左循環(huán)P3.0、P3.1=10 單燈亮右循環(huán)P3.0、P3.1=11 雙燈亮左循環(huán) 燈亮的時時為1秒。用軟件延時實(shí)
26、現(xiàn)。*用T0定時選作。2、實(shí)驗電路3、實(shí)驗步驟使用proteus仿真,觀察各實(shí)驗現(xiàn)象。4、實(shí)驗報告 1.寫出主程序流程圖、子程序流程圖、程序清單 2.根據(jù)記錄數(shù)據(jù)給程序加注解 3.調(diào)試心得實(shí)驗十 中斷實(shí)驗1、實(shí)驗內(nèi)容用T0產(chǎn)生0.5秒定時,定時到,P1口的八個LED兩兩循環(huán)點(diǎn)亮。T0工作在方式1、允許中斷2、實(shí)驗電路3、實(shí)驗步驟使用proteus仿真,觀察各實(shí)驗現(xiàn)象。主程序中斷子程序恢復(fù)時間初值定時器T0初始化4、實(shí)驗報告1) 畫出接口電路圖設(shè)定中斷系統(tǒng)2) 畫出程序流程圖R4-1=0?3) 記錄中斷執(zhí)行的過程N(yùn)4) 源程序清單R4初始化Y恢復(fù)R4初值啟動定時器T0循環(huán)代碼左環(huán)移兩次 等待定時
27、到送P1口顯示RETI實(shí)驗十一 廣告燈(利用取表方式) 1、實(shí)驗任務(wù)利用取表的方法,使端口P1做單一燈的變化:左移2次,右移2次,閃爍2次(延時的時間0.2秒),一直循環(huán)下去。 2、 電路原理圖 3、 系統(tǒng)板上硬件連線 把“單片機(jī)系統(tǒng)”區(qū)域中的P1.0P1.7用8芯排線連接到“八路發(fā)光二極管指示模塊”區(qū)域中的L1L8端口上,要求:P1.0對應(yīng)著L1,P1.1對應(yīng)著L2,P1.7對應(yīng)著L8。 4、 程序設(shè)計內(nèi)容 在用表格進(jìn)行程序設(shè)計的時候,要用以下的指令來完成 (1)利用MOVDPTR,DATA16的指令來使數(shù)據(jù)指針寄存器指到表的開頭。 (2)利用MOVCA,ADPTR的指令,根據(jù)累加器的值再加
28、上DPTR的值,就可以使程序計數(shù)器PC指到表格內(nèi)所要取出的數(shù)據(jù)。 因此,只要把控制碼建成一個表,而利用MOVCA,ADPTR做取碼的操作,就可方便地處理一些復(fù)雜的控制動作,取表過程如下圖所示: 5、 匯編源程序ORG 0START: MOV DPTR,#TABLE LOOP: CLR A MOVC A,A+DPTR CJNE A,#01H,LOOP1 JMP STARTLOOP1: MOV P1,A MOV R3,#20 LCALL DELAY INC DPTR JMP LOOPDELAY: MOV R4,#20D1: MOV R5,#248 DJNZ R5,$ DJNZ R4,D1 DJNZ
29、 R3,DELAY RETTABLE: DB 0FEH,0FDH,0FBH,0F7HDB 0EFH,0DFH,0BFH,07FHDB 0FEH,0FDH,0FBH,0F7HDB 0EFH,0DFH,0BFH,07FHDB 07FH,0BFH,0DFH,0EFHDB 0F7H,0FBH,0FDH,0FEHDB 07FH,0BFH,0DFH,0EFHDB 0F7H,0FBH,0FDH,0FEHDB 00H, 0FFH,00H, 0FFHDB 01HEND實(shí)驗步驟:1、使用proteus仿真,觀察實(shí)驗現(xiàn)象。 2、在開發(fā)板上下載程序,觀察實(shí)驗現(xiàn)象。實(shí)驗十二 單片機(jī)與報警電路的設(shè)計聲音是由震動所產(chǎn)生的,
30、 一定頻率的震動就產(chǎn)生了一定頻率的聲音。本實(shí)驗是喇叭里發(fā)出 滴答一長一短的報警聲音,送出的端口是p1.0輸出1khz,2khz變頻信號報警,每一秒交換一次。 接線方法: 用一根1PIN數(shù)據(jù)線一端插入CPU部分P1口的P1.0,另外一端插入小喇叭部分的輸入端JP16org 1000hdlv: mov r2,#08h;1kz持續(xù)時間dlv1:mov r3,#0fahdlv2:cpl p1.0;輸出1khz方波 lcall d5ms;調(diào)用延時程序1 djnz r3,dlv2;持續(xù)1秒 djnz r2,dlv1 mov r2,#10h;2khz持續(xù)時間dlv3:mov r3,#0fahdlv4:cpl
31、 p1.0;輸出2khz方波 lcall d25ms;調(diào)用延時程序2 djnz r3,dlv4 djnz r2,dlv3 sjmp dlv;反復(fù)循環(huán)d5ms:mov r7,#0ffh;延時子程序1loop:nop nop djnz r7,loop retd25ms:mov r6,#0ffh;延時子程序2lin:djnz r6,lin retend實(shí)驗步驟:1、使用proteus仿真,觀察實(shí)驗現(xiàn)象。 2、在開發(fā)板上下載程序,觀察實(shí)驗現(xiàn)象。實(shí)驗十三、七段碼LED顯示實(shí)驗一、 實(shí)驗?zāi)康膶W(xué)習(xí)七段數(shù)碼管顯示數(shù)據(jù)的編程方法;二、 試驗內(nèi)容實(shí)現(xiàn)數(shù)碼管上從0到f循環(huán)顯示。三、 實(shí)驗電路圖四、 實(shí)驗程序org
32、00hljmp mainorg 0030hmain:mov sp,#7mov r2,#0mov r5,#16start:djnz r5,next mov r5,#16 mov r2,#0 next: mov dptr,#tab mov a,r2 movc a,a+dptr mov p2,a inc r2 lcall delay jmp start delay: mov r0,#10 delay0: mov r7,#100 delay1: mov r6,#250 djnz r6,$ djnz r7, delay1 djnz r0, delay0 ret tab: db 0c0h,0f9h,0a4
33、h,0b0h,99h,92h,82h,0f8h,80h,90h,08h,03h,46h,21h,06h,0eh end注:數(shù)碼管:7seg;74LS244為3態(tài)8位緩沖器,一般用作總線驅(qū)動器。實(shí)驗步驟:1、使用proteus仿真,觀察實(shí)驗現(xiàn)象。 2、在開發(fā)板上下載程序,觀察實(shí)驗現(xiàn)象。實(shí)驗十五、A/D轉(zhuǎn)換一、實(shí)驗?zāi)康?、掌握A/ D轉(zhuǎn)換與單片機(jī)的接口方法。2、了解A/ D芯片0809轉(zhuǎn)換性能及編程方法。3、通過實(shí)驗了解單片機(jī)如何進(jìn)行數(shù)據(jù)采集。 二、實(shí)驗內(nèi)容及設(shè)備 利用實(shí)驗平臺上的0809做A/D轉(zhuǎn)換器,實(shí)驗平臺上的電位器提供模擬量輸入,編制程序,將模擬量轉(zhuǎn)換成數(shù)字量,通過8155鍵顯區(qū)數(shù)碼管顯示
34、出來。SICELabG2200實(shí)驗箱 1臺;計算機(jī) 1臺;導(dǎo)線若干。 三、實(shí)驗說明 A/D轉(zhuǎn)換器的功能主要是將輸入的模擬信號轉(zhuǎn)換成數(shù)字信號,如電壓、電流、溫度測量等都屬于這種轉(zhuǎn)換。本實(shí)驗中采用的轉(zhuǎn)換器為ADC0809,它是一個8位逐次逼近型A/D轉(zhuǎn)換器,可以對8個模擬量進(jìn)行轉(zhuǎn)換,轉(zhuǎn)換時間為100S。其工作過程如下:首先由地址鎖存信號ALE的上升沿將引腳ADDA、ADDB和ADDC上的信號鎖存到地址寄存器內(nèi),用以選擇模擬量輸入通道;START信號的下降沿啟動A/D轉(zhuǎn)換器開始工作;當(dāng)轉(zhuǎn)換結(jié)束時,AD0809使EOC引腳由低電平變成高電平,程序可以通過查詢的方式讀取轉(zhuǎn)換結(jié)果,也可以通過中斷方式讀取結(jié)
35、果。CLOCK為轉(zhuǎn)換時鐘輸入端,頻率為100KHz-1.2MHz,推薦值為640KHz。 四、實(shí)驗接線圖五、實(shí)驗程序框圖六、實(shí)驗步驟1、根據(jù)實(shí)驗內(nèi)容及原理圖畫出程序流程 圖。2、根據(jù)程序流程圖寫出程序并進(jìn)行調(diào)試;3、根據(jù)實(shí)驗的原理圖進(jìn)行接線并調(diào)試觀察結(jié)果源程序: OUTBIT equ 08002h ; 位控制口OUTSEG equ 08004h ; 段控制口IN equ 08001h ; 鍵盤讀入口LEDBuf equ 60h ; 顯示緩沖Num equ 70h ; 顯示的數(shù)據(jù)DelayT equ 75h ; ORG 0000H ljmp Start ORG 0030HLEDMAP: ; 八段
36、管顯示碼 db 3fh, 06h, 5bh, 4fh, 66h, 6dh, 7dh, 07h db 7fh, 6fh, 77h, 7ch, 39h, 5eh, 79h, 71hDelay: ; 延時子程序 mov r7, #0DelayLoop: djnz r7, DelayLoop djnz r6, DelayLoop retDisplayLED: mov r0, #LEDBuf mov r1, #6 ; 共6個八段管 mov r2, #00100000b ; 從左邊開始顯示Loop: mov dptr, #OUTBIT mov a, #0 movx dptr, a ; 關(guān)所有八段管 mov
37、 a, r0 mov dptr, #OUTSEG movx dptr,a mov dptr, #OUTBIT mov a, r2 movx dptr, a ; 顯示一位八段管 mov r6, #01 call Delay mov a, r2 ; 顯示下一位 rr a mov r2, a inc r0 djnz r1, Loop mov dptr, #OUTBIT mov a, #0 movx dptr, a ; 關(guān)所有八段管 retStart: mov sp, #40h mov LEDBuf+0, #3fh ; 顯示 0809xx mov LEDBuf+1, #7fh mov LEDBuf+2
38、, #3fh mov LEDBuf+3, #6fhloop2: call loop3 ; mov DelayT ,#30hMLoop: call DisplayLED ; djnz DelayT,mloop sjmp loop2loop3: mov dptr,#0A000h ; ad0809轉(zhuǎn)換mov a,#00hmovx dptr,a mov r6,#01h call delay movx a,dptr mov r5,a anl a,#0fh mov dptr, #LEDMap movc a, a+dptrmov LEDBuf+5,a ;拆字后送顯示緩沖區(qū)mov a,r5 swap a an
39、l a,#0fh mov dptr, #LEDMap movc a, a+dptr mov LEDBuf+4,a ret end實(shí)驗十六、1616點(diǎn)陣LED實(shí)驗一、實(shí)驗?zāi)康?、掌握點(diǎn)陣LED的原理和程序設(shè)計方法;2、掌握74LS164擴(kuò)展并口的方法;3、了解單片機(jī)控制外圍設(shè)備常用的電路。二、實(shí)驗內(nèi)容在1616的LED上顯示“南京偉福實(shí)業(yè)有限公司”計算機(jī)1臺;SICELab-G2200實(shí)驗箱 1臺;導(dǎo)線如干;三、實(shí)驗接線五、實(shí)驗步驟1、根據(jù)實(shí)驗內(nèi)容與實(shí)驗原理圖進(jìn)行軟件設(shè)計;2、寫出程序代碼并進(jìn)行調(diào)試;3、進(jìn)行調(diào)試觀察結(jié)果程序清單:RowLow equ 08002h; 行低八位地址RowHigh
40、equ 08003h; 行高八位地址ColLow equ 08000h; 列低八位地址ColHigh equ 08001h; 列高八位地址bitmask equ 40hbase equ 42h org 0 jmp mainmain: mov bitmask, #0 mov bitmask+1,#0 ;清屏 mov a,#00h ;列驅(qū)動低有效 mov dptr,#RowLow movx dptr,a mov dptr,#RowHigh movx dptr,a mov a,#0ffh ;行驅(qū)動高有效 mov dptr,#ColLow movx dptr,a mov dptr,#ColHigh m
41、ovx dptr,a mov r5, #0 ;漢字個數(shù)loop0: mov r4, #50 ;每個字顯示的時間loop: mov bitmask, #01 ;選擇顯示行 mov r2, #16 ;每行16列 mov a,r5 ;字模的起始地址 mov b,#32 mul ab mov dptr,#Font add a,dpl mov base, a mov a,b addc a,dph mov base+1,anextrow: mov a,#00h ;先關(guān)閉顯示 mov dptr,#RowLow movx dptr,a mov dptr,#RowHigh movx dptr,a mov dpl
42、, base ;取出該行字模 mov dph, base+1 clr a movc a, a+dptr mov r0,a inc dptr clr a movc a,a+dptr mov r1,a inc dptr mov base , dpl ;指向下行字模 mov base+1, dph mov dptr,#ColLow ;輸出字模數(shù)據(jù) mov a,r0 cpl a movx dptr,a mov dptr,#ColHigh mov a,r1 cpl a movx dptr,a mov a,bitmask ;點(diǎn)亮該行 mov dptr,#RowLow movx dptr,a mov a,b
43、itmask+1 mov dptr,#RowHigh movx dptr,a clr c mov a,bitmask rlc a mov bitmask,a mov a,bitmask+1 rlc a mov bitmask+1,a ;指向下一行 mov r7,10 call delay djnz r2, nextrow djnz r4, loop ;每個字要重復(fù)顯示 inc r5 ;指向下個漢字 mov a,r5 cjne r5,#10, nextchar jmp main ;nextchar: jmp loop0delay:ddd: djnz r7,ddd ret;字模 每個16x16點(diǎn)陣
44、漢字為: 8位x2x16 = 256位, 32字節(jié)Font: ;南 DB 008H, 040H, 014H, 041H, 004H, 041H, 004H, 041H DB 0F4H, 05FH, 004H, 041H, 004H, 041H, 0F4H, 05FH DB 044H, 044H, 024H, 048H, 0FEH, 07FH, 004H, 001H DB 000H, 001H, 0FEH, 0FFH, 004H, 001H, 000H, 001H ;京 DB 000H, 002H, 008H, 025H, 018H, 011H, 030H, 009H DB 040H, 009H, 000H, 001H, 0F0H, 01FH, 010H, 010H DB 010H, 010H, 010H, 010H, 0F8H, 01FH, 010H, 000H DB 0FEH, 0FFH, 004H, 001H, 000H, 001H, 000H, 002H ;偉 DB 040H,
溫馨提示
- 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)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年度個人貴金屬交易融資合同范本民間版4篇
- 二零二五年度網(wǎng)絡(luò)安全股份公司成立股東數(shù)據(jù)安全協(xié)議3篇
- 2025版危險品運(yùn)輸駕駛員勞動合同標(biāo)準(zhǔn)范本3篇
- 2025年高標(biāo)準(zhǔn)圍墻建設(shè)及維護(hù)服務(wù)合同細(xì)則3篇
- 二零二五年酒類企業(yè)產(chǎn)品追溯與防偽技術(shù)合作合同3篇
- 2024破樁勞務(wù)分包合同
- 2025年食堂承包合同補(bǔ)充協(xié)議強(qiáng)調(diào)食品安全與衛(wèi)生規(guī)范3篇
- 與物業(yè)公司合同范本(2024版)
- 鄭州科技學(xué)院《藝術(shù)考察與創(chuàng)新設(shè)計》2023-2024學(xué)年第一學(xué)期期末試卷
- 2025年度戶外景觀門窗工程分包合同范本8篇
- 南通市2025屆高三第一次調(diào)研測試(一模)地理試卷(含答案 )
- 2025年上海市閔行區(qū)中考數(shù)學(xué)一模試卷
- IF鋼物理冶金原理與關(guān)鍵工藝技術(shù)1
- 銷售提成對賭協(xié)議書范本 3篇
- 勞務(wù)派遣招標(biāo)文件范本
- 信息安全意識培訓(xùn)課件
- Python試題庫(附參考答案)
- 碳排放管理員 (碳排放核查員) 理論知識考核要素細(xì)目表三級
- 2024年河北省中考數(shù)學(xué)試題(含答案解析)
- 小學(xué)二年級數(shù)學(xué)口算練習(xí)題1000道
- 納布啡在產(chǎn)科及分娩鎮(zhèn)痛的應(yīng)用
評論
0/150
提交評論