




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進(jìn)行舉報或認(rèn)領(lǐng)
文檔簡介
1、機電專業(yè)綜合實驗實驗指導(dǎo)書 大連交通大學(xué)機械工程學(xué)院機械電子工程教學(xué)與研究中心2009年9月序言機電專業(yè)綜合實驗是為提高學(xué)生的實際動手能力而開設(shè)的專業(yè)實驗課。本實驗課以單片機原理與接口技術(shù)、計算機控制技術(shù)2門課為理論基礎(chǔ),以“mini51單片機實驗板”為硬件基礎(chǔ),結(jié)合典型接口應(yīng)用實例,進(jìn)行微機接口技術(shù)的實際操作訓(xùn)練。所用軟件說明:匯編語言編譯仿真軟件“WAVE6000”,單片機程序下載軟件“STC_ISP”,均為綠色軟件。但實驗板上的USB轉(zhuǎn)RS232接口電路需要先安裝驅(qū)動程序,下載軟件“STC_ISP”才能正常工作。實驗1:mini51單片機實驗板的使用一、實驗?zāi)康膶W(xué)習(xí)mini51單片機實驗
2、板的使用,對實驗板的結(jié)構(gòu)、組成及工作原理有基本的認(rèn)識。通過最基本的實驗,掌握實驗板的程序下載與實驗方法。二、實驗要求1、了解mini51單片機實驗板的基本功能。2、學(xué)習(xí)單片機仿真軟件的使用方法。3、掌握匯編指令的輸入與編輯方法,并能仿真運行。4、將編譯后的代碼下載到mini51單片機實驗板中,運行并觀察結(jié)果。5、學(xué)習(xí)最基本的程序調(diào)試方法。三、實驗內(nèi)容1.1、學(xué)習(xí)WAVE單片機仿真程序的使用:了解其基本功能,學(xué)習(xí)匯編程序的輸入、編輯,熟悉各窗口界面的基本功能。操作指導(dǎo):運行WAVE.exe單片機仿真程序,先觀察與熟悉操作界面,特別注意:DATA窗口為單片機內(nèi)存數(shù)據(jù)窗口,REG、SFR、BIT等窗
3、口分別顯示寄存器、特殊功能寄存器、位地址數(shù)據(jù)等信息,中間部分是輸入與編輯指令的窗口。特別提示:按“窗口()CPU窗口”可以打開反匯編(Disassembly)窗口,顯示程序反匯編數(shù)據(jù)與程序代碼的對應(yīng)關(guān)系。1.1.2、仿真程序?qū)嵗皵?shù)據(jù)傳送編程”編程與仿真運行:將0、1、2、等數(shù)據(jù)依次送入30H、31H、3FH內(nèi)。1.1.3 程序輸入與編輯:新建一個文件,輸入能實現(xiàn)上述要求的程序。典型程序如下:PG11: MOV R2,#16 ;送循環(huán)次數(shù) MOV A,#0 ;送數(shù)據(jù)初值 MOV R0,#30H ;送起始地址X: MOV R0,A ;送數(shù)據(jù) INC R0 ;改地址指針 INC A ;改數(shù)據(jù) DJ
4、NZ R2,X ;判斷循環(huán)次數(shù) AJMP $ ;原地循環(huán),防止程序往下執(zhí)行到亂碼區(qū) 輸入技巧:以第一行程序為例,進(jìn)入英文輸入狀態(tài),選擇大寫輸入,輸入“PG11:”之后,按一下“Tab”鍵,光標(biāo)會右移到第8格的位置,輸入“MOV”,再按一次“Tab”鍵,再輸入“R3,#16 ”,再按一次“Tab”鍵,再輸入“;送循環(huán)次數(shù)”。這樣程序會很整齊。特別注意:分號(包括分號本身)之前的字符,必須是半角英文字符?;剀囍螅劝匆幌隆癟ab”鍵,再輸入第2行。輸入程序之后,先要保存文件(文件名不準(zhǔn)超過8個英文字符或4個漢字,必須加擴展名.asm),統(tǒng)一命名為PG11.ASM。之后,即可按“編譯”進(jìn)行編譯,
5、如果有錯誤,會有提示。雙擊錯誤提示處,可以直接定位到程序錯誤之處,進(jìn)行修改。如果無誤,則編譯通過,也會有提示。1.1.4 查看程序編譯代碼:打開Disassembly窗口,查看程序反匯編數(shù)據(jù)與代碼的對應(yīng)關(guān)系。 1.1.5 運行程序與查看結(jié)果:編譯通過后,按全速執(zhí)行按鈕 ,即可執(zhí)行程序。由于程序的最后一條為原地循環(huán)指令,不會自行停止,必須按暫停按鈕 ,才能停止。接著可以查看內(nèi)存單元30H3FH內(nèi)的數(shù)據(jù)。 1.1.6 程序單步執(zhí)行與斷點執(zhí)行:先將內(nèi)存單元30H3FH內(nèi)的數(shù)據(jù)全部清零,或全部改為FFH。方法是:點擊要改的數(shù)據(jù),用鍵盤輸入即可。按復(fù)位 | ,使程序復(fù)位。按F8即可單步執(zhí)行程序。每執(zhí)行一
6、條指令,可立即察看執(zhí)行結(jié)果。要分別察看累加器A、狀態(tài)寄存器PSW、寄存器R0、R3,以及相應(yīng)內(nèi)存單元的數(shù)據(jù)變化,了解每一條程序所作的工作。注意:執(zhí)行一步,如果數(shù)據(jù)有變化,數(shù)據(jù)會變?yōu)榧t色的。如果要迅速查看每個循環(huán)后的執(zhí)行結(jié)果,可以在“DJNZ R3,X”這條指令上設(shè)置一個斷點。方法是:點擊此條指令的左側(cè)的灰色豎條,成功后,此條指令的背景色變?yōu)榧t色。此后,可以用全速執(zhí)行方式執(zhí)行程序,執(zhí)行到“DJNZ R3,X”這條指令,就會自動暫停,再按全速執(zhí)行按鈕 ,即可繼續(xù)執(zhí)行。1.2、實驗板入門程序1:“按鍵與燈”編程與實驗程序功能:分別按下實驗板上的K2K7(對應(yīng)P3.2P3.7)鍵,可分別點亮P0.2P
7、0.7對應(yīng)的燈D2D7。1.2.1 接口說明:P2.0輸出:選通8個燈D0D7(=1選通)。P2.1P2.6輸出:分別選通(=1選通):數(shù)碼管16(右側(cè)為1)。P2.7輸出:驅(qū)動蜂鳴器(=0響)。P0.0P0.7輸出:分別驅(qū)動8個燈D0D7(=0亮),或分別驅(qū)動數(shù)碼管的a、b、c、d、e、f、g、p段(=0亮)。P3.2P3.7:按鍵輸入,對應(yīng)K2K7 (按下時=0)。1.2.2 程序輸入與編輯:新建一個文件,輸入能實現(xiàn)上述要求的程序。典型程序如下:PG12: MOV P2,#81H ;禁止發(fā)聲,選通燈X: MOV P0,P3 ;按鍵狀態(tài)直接送到P0口,驅(qū)動燈 AJMP X ;循環(huán)編譯通過后,
8、會在PG12.ASM在同一個文件夾內(nèi)生成PG12.hex文件,這就是要下載到單片機內(nèi)的程序文件。1.2.3 下載程序到實驗板的單片機:將實驗板與電腦的USB口相連,啟動STC_ISP下載軟件,按軟件界面的步驟來操作:步驟1:在“MCU Type”選擇框內(nèi)選擇單片機型號:“STC89C51RC”。步驟2:點擊“OpenFile/打開文件”,打開剛才生成的PG12.hex文件。步驟3:選擇COM口,這是實驗板上的USB轉(zhuǎn)RS232芯片生成的COM口。具體是幾號口,要查看電腦的硬件資源。鼠標(biāo)右鍵點擊桌面圖標(biāo)“我的電腦”,點“屬性硬件設(shè)備管理器”,如果生成的COM口為3號口,雙擊“端口(COM和LPT
9、)”,會列出“Prolific USB-to-Serial Vomm Port (COM3)”。根據(jù)此端口號來選擇對應(yīng)的COM口。其他參數(shù)用默認(rèn),不要改動。步驟4:全部按默認(rèn)配置,不要改動。步驟5:點擊“Download/下載”,下面的文本框內(nèi)會出現(xiàn)提示:“Chinese:正在嘗試與 MCU/單片機 握手連接 .”,此時按下實驗板上的電源按鈕,即可開始下載程序,片刻之后就可完成。步驟5補充說明:選中“每次下載前重新調(diào)入已打開在緩沖區(qū)的文件,方便調(diào)試使用”選項,如果程序有改動,再次編譯之后,可以不用進(jìn)行步驟2打開新文件,可直接進(jìn)入步驟5。1.2.4 程序功能驗證:依次按下實驗板上的K2K7鍵,觀
10、察對應(yīng)的指示燈變化情況,看是否能夠達(dá)到要求。補充說明:實驗板上有一個電位器,有2個作用:一是為AD轉(zhuǎn)換器提供可調(diào)節(jié)的模擬電壓輸入,二是用于調(diào)節(jié)NE555振蕩器的頻率,順時針旋轉(zhuǎn)時頻率增加。當(dāng)振蕩器振蕩時,電位器旁的指示燈會有同步閃爍指示。如果頻率較低,會看到指示燈閃爍,如果頻率較高,由于人眼的分辨力有限,高速閃爍的指示燈看上去就一直在亮。此頻率輸出信號與P3.2相連,如果振蕩器振蕩,在本實驗中就會導(dǎo)致D2燈閃爍或一直亮,但比按下K2鍵的亮度低。如果出現(xiàn)這種情況,就需要逆時針旋轉(zhuǎn)電位器,一直到電位器旁的指示燈不亮為止。此時振蕩器振蕩停止,不再影響實驗。1.3 實驗板入門程序2“按鍵與燈”編程與實
11、驗程序功能:在程序PG12的基礎(chǔ)上,增加:按下按鍵的同時,蜂鳴器要發(fā)聲。按程序PG12的步驟,再做一遍。參考程序如下:PG13: MOV P2,#81H ;禁止發(fā)聲,選通燈X: MOV P0,P3 ;按鍵狀態(tài)直接送到P0口,驅(qū)動燈 MOV A,P3 ;讀入按鍵狀態(tài)到A CJNE A,#255,Y ;若有鍵按下,轉(zhuǎn)Y SETB P2.7 ;若無按鍵按下,關(guān)閉聲音 AJMP X ;循環(huán)Y: CLR P2.7 ;若有鍵按下,發(fā)聲 AJMP X ;循環(huán)四、補充實驗與思考1、PG12與PG13中,如何選擇讓按健控制某(幾)個數(shù)碼管的段位亮?2、將PG12與PG13的第一條指令中的“#81H”改為“#83
12、H”,或分別改為“#87H”、“#84H”、“#96H”、“#95H”、甚至“#0FFH”等,會出現(xiàn)什么結(jié)果?為什么?3、如果要求:按鍵不按時亮,按下滅。如何實現(xiàn)?實驗2:數(shù)碼管的靜態(tài)顯示及驅(qū)動一、實驗?zāi)康膶W(xué)習(xí)數(shù)碼管靜態(tài)顯示及其驅(qū)動方法,進(jìn)一步了解實驗板數(shù)碼管顯示電路的工作原理。通過典型實驗,掌握設(shè)計數(shù)碼管靜態(tài)顯示的基本方法。二、實驗要求1、了解mini51單片機實驗板的數(shù)碼管顯示電路。2、學(xué)習(xí)驅(qū)動數(shù)碼管靜態(tài)顯示的軟件方法。3、將典型程序下載到mini51單片機實驗板中,運行并觀察結(jié)果。4、掌握數(shù)碼管靜態(tài)顯示程序的調(diào)試方法。三、實驗內(nèi)容2.1、數(shù)碼管顯示程序1:“4按鍵轉(zhuǎn)1位16進(jìn)制數(shù)顯示”編
13、程與實驗程序功能:將P3.4P3.7對應(yīng)的K4K7的按鍵狀態(tài)轉(zhuǎn)為1位16進(jìn)制數(shù):0F,查表得到顯示碼,在最右側(cè)的數(shù)碼管顯示出來。要求:4個鍵都不按,對應(yīng)數(shù)字0,K7對應(yīng)低位,K4對應(yīng)高位。例如:按下K7顯示1,按下K6顯示2,同時按下K6與K7顯示3同時按下K4、K5、K6、K7則顯示F。2.1.1 接口說明:P2.0輸出:選通8個燈D0D7(=1選通)。P2.1P2.6輸出:分別選通(=1選通):數(shù)碼管16(右側(cè)為1)。P2.7輸出:驅(qū)動蜂鳴器(=0響)。P0.0P0.7輸出:分別驅(qū)動8個燈D0D7(=0亮),或分別驅(qū)動數(shù)碼管的a、b、c、d、e、f、g、p段(=0亮)。P3.2P3.7:按
14、鍵輸入,對應(yīng)K2K7 (按下時=0)。2.1.2 主程序參考:PG21: MOV P2,#82H ;禁止發(fā)聲,選通最右側(cè)的數(shù)碼管X: MOV A,P3 ;讀P3口按鍵狀態(tài) ACALL KATX ;8個位反向排序 CPL A ;取反 ANL A,#0FH ;保留低4位Y: ACALL PTABH ;調(diào)用查表子程序 MOV P0,A ;將查到的顯示碼送P0口顯示 AJMP X ;循環(huán)2.1.3 按鍵狀態(tài)8個位反向排序子程序要求:將A內(nèi)的8個位:D7D6D5D4D3D2D1D0,排列順序反過來,變?yōu)椋篋0D1D2D3D4D5D6D7 。參考程序如下:KATX: MOV R2,#8 ;循環(huán)次數(shù)8KAL
15、P: RRC A ;A帶C右循環(huán) XCH A,B ;A與B交換內(nèi)容 RLC A ;A帶C左循環(huán) XCH A,B ;A與B交換內(nèi)容 DJNZ R2,KALP ;判循環(huán)次數(shù) MOV A,B ;反序后的數(shù)據(jù)送A RET ;返回2.1.4 顯示碼查表子程序要求:傳入?yún)?shù):A:待查數(shù)據(jù)為1位16進(jìn)制數(shù):0F,返回值: A:對應(yīng)的顯示碼(負(fù)邏輯:共陽數(shù)碼管,0亮,1滅)。參考程序如下:PTABH: INC A MOVC A,A+PC RET DB 0C0H,0F9H,0A4H,0B0H,99H ;04的負(fù)邏輯顯示碼DB 92H,82H,0F8H,80H,90H ;59的負(fù)邏輯顯示碼DB 88H,83H,0
16、C6H,0A1H,86H,8EH ;AF的負(fù)邏輯顯示碼2.1.5 輸入上述程序,編譯通過后,下載到實驗板的單片機。2.1.6 程序功能驗證:依次按實驗板上的K4K7鍵,形成4位二進(jìn)制數(shù):0000B1111B,即1位16進(jìn)制數(shù):0F。觀察對應(yīng)的數(shù)碼管顯示變化情況,看是否能夠達(dá)到要求。2.2、數(shù)碼管顯示程序2:“按鍵轉(zhuǎn)為鍵值顯示”編程與實驗程序功能:將P3.2P3.7對應(yīng)的按鍵K2K7的按鍵狀態(tài)轉(zhuǎn)為鍵值27,查表得到顯示碼,在最右側(cè)的數(shù)碼管顯示出來。2.2.1 接口說明:P2.0輸出:選通8個燈D0D7(=1選通)。P2.1P2.6輸出:分別選通(=1選通):數(shù)碼管16(右側(cè)為1)。P2.7輸出:
17、驅(qū)動蜂鳴器(=0響)。P0.0P0.7輸出:分別驅(qū)動8個燈D0D7(=0亮),或分別驅(qū)動數(shù)碼管的a、b、c、d、e、f、g、p段(=0亮)。P3.2P3.7:按鍵輸入,對應(yīng)K2K7 (按下時=0)。2.2.2 主程序參考:PG22: MOV P2,#82H ;禁止發(fā)聲,選通最右側(cè)的數(shù)碼管X: ACALL KTV ;調(diào)用鍵狀態(tài)轉(zhuǎn)鍵值子程序 CJNE A,#255,Y ;若有鍵按下,轉(zhuǎn)Y MOV P0,#255 ;不顯示 AJMP X ;循環(huán)Y: ACALL PTAB10 ;調(diào)用查表子程序 MOV P0,A ;將查到的顯示碼送P0口顯示 AJMP X ;循環(huán)2.2.3 按鍵狀態(tài)轉(zhuǎn)鍵值子程序要求:將
18、P3口的狀態(tài)讀入A,用帶C右循環(huán)的方法轉(zhuǎn)為鍵值,仍送A。無鍵按下時,鍵值為255,K2K7的鍵值分別為27。參考程序如下:KTV: MOV A,P3 ;讀P3口輸入狀態(tài) MOV B,#255 ;B初值為255(無鍵按下) CJNE A,#255,KTV2 ;若有鍵按下,轉(zhuǎn)KTV2 RET ;無按鍵,直接返回KTV2: INC B ;鍵值+1 RRC A ;帶C右循環(huán) JC KTV2 ;C=1時,繼續(xù)循環(huán) MOV A,B ;鍵值送A RET ;返回2.2.4 顯示碼查表子程序要求:傳入?yún)?shù):A:待查數(shù)據(jù),09,返回值: A:顯示碼(負(fù)邏輯:共陽數(shù)碼管,0亮,1滅)。參考程序如下:PTAB10:
19、INC A MOVC A,A+PC RET DB 0C0H,0F9H,0A4H,0B0H,99H ;04的負(fù)邏輯顯示碼DB 92H,82H,0F8H,80H,90H ;59的負(fù)邏輯顯示碼2.2.5 輸入上述程序,編譯通過后,下載到實驗板的單片機。2.2.6 程序功能驗證:依次按下實驗板上的K2K7鍵,觀察對應(yīng)的數(shù)碼管顯示變化情況,看是否能夠達(dá)到要求。2.3、數(shù)碼管顯示程序3:“1位顯示按鍵加減”編程與實驗程序功能:將內(nèi)存單元NX作為計數(shù)器,計數(shù)范圍:09,將其值顯示在最右側(cè)的數(shù)碼管上。按K5(-)鍵,計數(shù)器減1,按K6(+)鍵,計數(shù)器加1。計數(shù)值一直在09之間循環(huán)。2.3.1 接口說明:參考2
20、.1.1。2.3.2 主程序參考:PG23: NX EQU 30H ;定義計數(shù)器內(nèi)存地址 K5 BIT P3.5 ;定義按鍵K5的端口 K6 BIT P3.6 ;定義按鍵K6的端口 MOV P2,#82H ;禁止發(fā)聲,選通最右側(cè)的數(shù)碼管 MOV NX,#0 ;計數(shù)器清零LP: MOV A,NX ;讀計數(shù)器值到A ACALL PTAB10 ;查表得顯示碼 MOV P0,A ;顯示碼送顯示 MOV A,#200 ;準(zhǔn)備延時200mS ACALL DELAYMS ;調(diào)延時子程序PKEY: JB K5,PKEY2 ;若無K3鍵按下,轉(zhuǎn)PKEY2 DEC NX ;若按下K3,計數(shù)器減1 MOV A,NX
21、 ;讀計數(shù)器值到A CJNE A,#255,LP ;若計數(shù)器值不小于0,轉(zhuǎn)LP MOV NX,#9 ;若計數(shù)器值小于0,則計數(shù)器裝9 AJMP LP ;轉(zhuǎn)LP去顯示PKEY2: JB K6,PKEY ;若無K4鍵按下,轉(zhuǎn)PKEY INC NX ;若按下K4,計數(shù)器加1 MOV A,NX ;讀計數(shù)器值到A CJNE A,#10,$+3 ;判計數(shù)器值是否大于等于10 JC LP ;若小于10,轉(zhuǎn)LP去顯示 MOV NX,#0 ;否則計數(shù)器清零 AJMP LP ;轉(zhuǎn)LP去顯示2.3.3 軟件延時毫秒子程序要求:按A內(nèi)的待延時時間值(mS單位)進(jìn)行軟件循環(huán)延時,到時間后返回。實驗板的晶振為11.059
22、2MHz。參考程序如下:DELAYMS:; 毫秒延時子程序(11.0592MHz晶振); 傳入?yún)?shù):A:延時值(mS),若A=0,則延時256mS MOVB,#183 NOP NOP NOPDELALP: NOP NOP NOP DJNZB,DELALP DJNZACC,DELAYMS RET2.3.4 顯示碼查表子程序:與上述2.2.4相同。2.3.5 輸入上述程序,編譯通過后,下載到實驗板的單片機。2.3.6 程序功能驗證:分別按下實驗板上的按K5(-)鍵、K6(+)鍵,觀察數(shù)碼管顯示值變化情況,看是否能夠達(dá)到要求。四、補充實驗與思考1、去掉PG21程序的第3行指令“ACALL KATX”
23、,會出現(xiàn)什么結(jié)果?為什么?2、去掉PG21程序的第4行指令“CPL A”,會出現(xiàn)什么結(jié)果?為什么?3、PG21、PG22、PG23這三個程序,如何選擇其他位置的數(shù)碼管亮?如何選擇多個數(shù)碼管亮?4、PG22程序,將按鍵K2K7對應(yīng)顯示27,改為對應(yīng)顯示38、或49,如何實現(xiàn)?5、PG23程序,按住K5或K6鍵不松開,會出現(xiàn)什么現(xiàn)象?為什么?6、PG23程序,如果將第9行的延時時間,由200減小為150或100,甚至更小,會出現(xiàn)什么現(xiàn)象?為什么?實驗3:流水燈顯示及驅(qū)動一、實驗?zāi)康膶W(xué)習(xí)狀態(tài)指示燈變化顯示及其驅(qū)動方法,進(jìn)一步了解實驗板指示燈顯示電路的工作原理。通過典型實驗,掌握設(shè)計指示燈按一定頻率變
24、化顯示的基本方法。二、實驗要求1、了解mini51單片機實驗板的指示燈顯示電路。2、學(xué)習(xí)驅(qū)動指示燈輪流變化顯示的軟件方法。3、將典型程序下載到mini51單片機實驗板中,運行并觀察結(jié)果。4、掌握指示燈輪流變化顯示程序的調(diào)試方法。三、實驗內(nèi)容3.1、流水燈顯示程序1:“軟件延時循環(huán)控制流水燈”編程與實驗程序功能:依次順序點亮8個燈,軟件定時循環(huán)執(zhí)行。亮燈時間由參數(shù)TIME決定,時間范圍1256mS。3.1.1 接口說明:P2.0輸出:選通8個燈D0D7(=1選通)。P2.1P2.6輸出:分別選通(=1選通):數(shù)碼管16(右側(cè)為1)。P2.7輸出:驅(qū)動蜂鳴器(=0響)。P0.0P0.7輸出:分別驅(qū)
25、動8個燈D0D7(=0亮),或分別驅(qū)動數(shù)碼管的a、b、c、d、e、f、g、p段(=0亮)。P3.2P3.7:按鍵輸入,對應(yīng)K2K7 (按下時=0)。3.1.2 主程序參考:PG31: TIME EQU 200 ;延時時間(單位:mS) MOV P2,#81H ;禁止發(fā)聲,選通燈 MOV P0,#0FEH ;初始燈狀態(tài):點亮D0 MOV R7,#0FEH ;保存初始燈狀態(tài)LP: MOV A,#TIME ;裝入延時時間 LCALL DELAYMS ;延時 MOV A,R7 ;取燈狀態(tài) RL A ;循環(huán)左移 MOV R7,A ;保存到R7 MOV P0,A ;送P0口 AJMP LP ;不停循環(huán)3.
26、1.3毫秒延時子程序,用2.3.3中的延時子程序DELAYMS 。3.1.4 輸入上述程序,編譯通過后,下載到實驗板的單片機。3.1.5 程序功能驗證:觀察對應(yīng)的狀態(tài)燈顯示變化情況,看是否能夠達(dá)到要求。3.2、流水燈顯示程序2:“速度可調(diào)流水燈”編程與實驗程序功能:在上一個實驗的基礎(chǔ)上,增加變化速度可調(diào)功能,按K6(+)鍵:增大延時值,按K5(-)鍵:減小延時值。3.2.1 接口說明:參考上述3.1.1。3.2.2 主程序參考:PG32: TADR EQU 30H ;保存延時時間的地址(單位:mS) K5 BIT P3.5 K6 BIT P3.6 MOV P2,#81H ;禁止發(fā)聲,選通燈 M
27、OV P0,#0FEH ;初始燈狀態(tài):點亮D0 MOV R7,#0FEH ;保存初始燈狀態(tài) MOV TADR,#100 ;裝入延時時間初值:100mSLP: MOV A,TADR ;裝入延時時間 LCALL DELAYMS ;延時 CPL P2.7 ;發(fā)聲取反:每循環(huán)2個燈響1下 MOV A,R7 ;取燈狀態(tài) RL A ;循環(huán)左移 MOV R7,A ;保存到R7 MOV P0,A ;送P0口 JB K5,PKEY DEC TADR ;K5按下,TADR-1 AJMP LP ;循環(huán)PKEY: JB K6,LP INC TADR ;K6按下,TADR+1 AJMP LP ;循環(huán)3.2.3毫秒延時子
28、程序,用2.3.3中的延時子程序DELAYMS 。3.2.4 輸入上述程序,編譯通過后,下載到實驗板的單片機。3.2.5 程序功能驗證:按K5與K6鍵,觀察對應(yīng)的狀態(tài)燈顯示速度變化情況,看是否能夠達(dá)到要求。3.3、流水燈顯示程序3:“按鍵選擇流水燈”編程與實驗程序功能:在PG31實驗的基礎(chǔ)上,增加按鍵選擇數(shù)碼管段位參與流水燈顯示的功能,按鍵K2K7分別與數(shù)碼管LED6LED1對應(yīng),按一下按鍵,對應(yīng)的數(shù)碼管段位就參與流水燈顯示,再按一下,就取消參與。3.3.1 接口說明:參考上述3.1.1。3.3.2 主程序參考:PG33: TIME EQU 200 ;延時時間(單位:mS) K2 BIT P3
29、.2 K3 BIT P3.3 K4 BIT P3.4 K5 BIT P3.5 K6 BIT P3.6 K7 BIT P3.7 KK BIT 70H ;按鍵已執(zhí)行標(biāo)志 MOV P2,#81H ;禁止發(fā)聲,選通燈 MOV P0,#0FEH ;初始燈狀態(tài):點亮D0 MOV R7,#0FEH ;保存初始燈狀態(tài)LP1: SETB KK CLR P2.7 ;發(fā)聲LP: MOV A,#TIME ;裝入延時時間 LCALL DELAYMS ;延時 MOV A,R7 ;取燈狀態(tài) RL A ;循環(huán)左移 MOV R7,A ;保存到R7 MOV P0,A ;送P0口 SETB P2.7 ;靜音 MOV A,P3 CJ
30、NE A,#255,PKEY CLR KK ;若無鍵按下,清除KK標(biāo)志 AJMP LPPKEY: JB KK,LP ;若有KK標(biāo)志,不再掃描按鍵 JB K2,PKEY3 CPL P2.6 ;K2按下,P2.2取反 AJMP LP1 ;循環(huán)PKEY3: JB K3,PKEY4 CPL P2.5 ;K2按下,P2.2取反 AJMP LP1 ;循環(huán)PKEY4: JB K4,PKEY5 CPL P2.4 ;K2按下,P2.2取反 AJMP LP1 ;循環(huán)PKEY5: JB K5,PKEY6 CPL P2.3 ;K2按下,P2.2取反 AJMP LP1 ;循環(huán)PKEY6: JB K6,PKEY7 CPL
31、 P2.2 ;K2按下,P2.2取反 AJMP LP1 ;循環(huán)PKEY7: JB K7,LP CPL P2.1 ;K2按下,P2.2取反 AJMP LP1 ;循環(huán)3.2.3毫秒延時子程序,用2.3.3中的延時子程序DELAYMS 。3.2.4 輸入上述程序,編譯通過后,下載到實驗板的單片機。3.2.5 程序功能驗證:分別按K2K7鍵,觀察對應(yīng)的數(shù)碼管段位是否參與流水燈顯示,看是否能夠達(dá)到要求。四、補充實驗與思考1、程序PG31中,改變延時時間TIME,會有什么結(jié)果?2、程序PG31中,第2行“MOV P2,#81H”中的“81H”,分別改為“82H”、“83H”、“0C1H”、“0FFH”等,
32、會有什么結(jié)果?3、程序PG31、PG32、PG33中,所有的“RL A”改為“RR A”,會有什么結(jié)果?4、程序PG31、PG32、PG33中,都是1個亮的在循環(huán),其他都不亮。如何實現(xiàn)讓2個、3個或更多的同時亮,且循環(huán)?如何實現(xiàn)其他都亮,只有1個不亮的循環(huán)?5、利用中的毫秒延時子程序DELAYMS,設(shè)計一個以0.01秒為單位的延時子程序DELAY001S,延時時間范圍為:0.012. 56秒。在PG31、PG32、PG33中,由調(diào)用DELAYMS改為調(diào)用DELAY001S,使顯示切換速度變慢。實驗4:數(shù)碼管的動態(tài)顯示及驅(qū)動一、實驗?zāi)康膶W(xué)習(xí)數(shù)碼管動態(tài)顯示及其驅(qū)動方法,進(jìn)一步了解實驗板數(shù)碼管顯示電
33、路的工作原理。通過典型實驗,掌握設(shè)計數(shù)碼管動態(tài)顯示的基本方法。二、實驗要求1、了解mini51單片機實驗板的數(shù)碼管顯示電路。2、學(xué)習(xí)驅(qū)動數(shù)碼管動態(tài)顯示的軟件方法。3、將典型程序下載到mini51單片機實驗板中,運行并觀察結(jié)果。4、掌握數(shù)碼管動態(tài)顯示程序的調(diào)試方法。三、實驗內(nèi)容4.1、數(shù)碼管動態(tài)顯示程序1:“單字節(jié)計數(shù)器”編程與實驗程序功能:將內(nèi)存單元NX內(nèi)的數(shù)值(范圍:0255)顯示在右側(cè)的3位數(shù)碼管上。用定時中斷動態(tài)顯示方式顯示。按K2(INT0外中斷)鍵:NX加1,按K3(INT1外中斷)鍵:NX減1,用中斷方式計數(shù)。4.1.1 接口說明:P2.0輸出:選通8個燈D0D7(=1選通)。P2
34、.1P2.6輸出:分別選通(=1選通):數(shù)碼管16(右側(cè)為1)。P2.7輸出:驅(qū)動蜂鳴器(=0響)。P0.0P0.7輸出:分別驅(qū)動8個燈D0D7(=0亮),或分別驅(qū)動數(shù)碼管的a、b、c、d、e、f、g、p段(=0亮)。P3.2P3.7:按鍵輸入,對應(yīng)K2K7 (按下時=0)。4.1.2 主程序參考:PG41: NX EQU 30H ;定義NX地址 ORG 0000H LJMP MAIN ORG 0003H INC NX ;INT0中斷:NX加1 RETI ORG 000BH LJMP INT_T0 ;T0定時中斷 ORG 0013H DEC NX ;INT0中斷:NX減1 RETI ORG 0
35、030H ;主程序開始MAIN: MOV P2,#81H ;禁止發(fā)聲,選通燈 MOV 20H,#255 ;燈不亮 MOV 24H,#255 ;高3位數(shù)碼管不亮 MOV 25H,#255 MOV 26H,#255 MOV NX,#0 ;NX清零 MOV R0,#20H ;顯示碼首地址 MOV TMOD,#1 ;T0模式1 MOV TL0,#LOW(65536-921) ;定時1mS初值(11.0592MHz) MOV TH0,#HIGH(65536-921) SETB TR0 ;啟動T0 SETB ET0 ;允許T0中斷 SETB EX0 ;允許外部INT0中斷 SETB EX1 ;允許外部IN
36、T1中斷 SETB IT0 ;設(shè)INT0為下跳沿中斷 SETB IT1 ;設(shè)INT1為下跳沿中斷 SETB EA ;開總中斷WK: MOV A,NX ;將NX化為3個BCD碼,分別送21H23H MOV B,#100 DIV AB ACALL PTAB10 MOV 23H,A MOV A,B MOV B,#10 DIV AB ACALL PTAB10 MOV 22H,A MOV A,B ACALL PTAB10 MOV 21H,A AJMP WK4.1.3 定時中斷子程序要求:1mS中斷1次,每次中斷都要先裝定時器初值。每次中斷,切換顯示1位數(shù)碼管。8個狀態(tài)燈,相當(dāng)于1位數(shù)碼管,其顯示碼在20
37、H內(nèi),6個數(shù)碼管,從低位(右側(cè))開,其顯示碼依次放在21H26H內(nèi)。中斷子程序要注意保護現(xiàn)場。參考程序如下:INT_T0: MOV TL0,#LOW(65536-921) ;重裝1mS定時器初值 MOV TH0,#HIGH(65536-921) PUSH ACC PUSH PSWIT04: MOV P0,#255 ;關(guān)閉顯示 MOV A,P2 ;P2狀態(tài)送A ANL P2,#80H ;P2口不選通顯示 ANL A,#7FH ; RL A ;選通位左移1位 INC R0 ;顯示碼指針加1 JNB ACC.7,IT05 MOV A,#1 ;選通燈狀態(tài) MOV R0,#20H ;指針指向燈狀態(tài)顯示碼
38、:20HIT05: ORL A,P2 MOV P2,A ;新的顯示選通 MOV P0,R0 ;新的顯示碼送P0口 POP PSW POP ACC RETI4.1.4 顯示碼查表子程序,與前面中的PTAB10一致。4.1.5 輸入上述程序,編譯通過后,下載到實驗板的單片機。4.1.6 程序功能驗證:依次按1下實驗板上的K2、或K3鍵,觀察對應(yīng)的數(shù)碼管顯示變化情況,看是否能夠達(dá)到要求。4.1.7 特別實驗:順時針旋轉(zhuǎn)板上的電位器,板上的振蕩電路就會振蕩,振蕩脈沖直接輸入給P3.2腳,這就會使計數(shù)器按脈沖數(shù)快速計數(shù)。脈沖頻率不同,計數(shù)速度就不同。4.2、數(shù)碼管動態(tài)顯示程序2:“6位多功能計數(shù)器”編程
39、與實驗程序功能:將內(nèi)存單元50H、51H、52H內(nèi)的3字節(jié)壓縮BCD碼數(shù)N(低位在前,數(shù)值范圍:0999999)顯示在6位數(shù)碼管上。用定時中斷動態(tài)顯示方式顯示,并采用高位消隱方式(高位的0不顯示)。按K2(INT0外中斷)鍵:N加1,按K3(INT1外中斷)鍵:N減1,用中斷方式計數(shù)。擴展功能:按K4鍵:加減換向:K2與K3的加減功能互換,最左側(cè)的指示燈亮。按K5鍵:計數(shù)器啟動,最右側(cè)的指示燈亮。按K6鍵:計數(shù)器停止,最右側(cè)的指示燈滅。按K7鍵:計數(shù)器清零。特別要求:此程序的數(shù)字顯示,要帶高位消隱功能。補充說明: 什么是“高位消隱”。在6位顯示器上顯示小于6位的數(shù)字,如果不經(jīng)過處理,高位都會顯
40、示為0。例如:1023會顯示為:“001023”。要使高位的2個0不顯示,就稱為“高位消隱”處理。但要注意,如果僅僅令0不顯示,1023會顯示為“1 23”,這也不行。4.2.1 接口說明:參考上述4.1.1。4.2.2 主程序參考:PG42: BEEP BIT P2.7 ;蜂鳴器(=0響),上電后先令其=1 STOP BIT 7 ;停止標(biāo)志,=1時不亮,=0時亮 FWD BIT 0 ;正向標(biāo)志,=0時亮,表示反向 KEN BIT 2FH.0 ;允許按鍵輸入標(biāo)志 BELT EQU 15 ;蜂鳴器響聲定時器,單位1mS KENT EQU 14 ;所有按鍵全都抬起定時器,單位1mS;全抬起50mS后,令KEN=1,允許按鍵工作 RPT EQU 13 ;按鍵自動重復(fù)定時器,單位1mS K4 BIT P3.4 ;加減換向 K5 BIT P3.5 ;計數(shù)器啟動 K6 BIT P3.6 ;計數(shù)器停止 K7 BIT P3.7 ;計數(shù)器清零ORG 0000H LJMP MAIN ORG 0003H LJMP PINT0 ;加1中斷(反向時為減1) ORG 000BH LJMP INT_T0 ORG 0013H LJMP PINT1 ;減1
溫馨提示
- 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)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 猴頭健胃靈片臨床應(yīng)用專家共識
- 恒源祥(集團)有限公司2021年度社會責(zé)任報告
- 內(nèi)科護理說課:代謝性疾病
- 車輛運輸安全責(zé)任協(xié)議書
- 2025年軟件及服務(wù)項目規(guī)劃申請報告
- 護理設(shè)備質(zhì)控體系實施要點
- 中醫(yī)與五行的關(guān)系
- 華鎣公招面試題及答案
- 八年級地理試題及答案
- 2025合同范本臨時租賃合同示例
- 中國妊娠期糖尿病母兒共同管理指南(2024版)核心要點解讀
- 2025屆四川省眉山市百坡初級中學(xué)八下數(shù)學(xué)期末復(fù)習(xí)檢測模擬試題含解析
- 2025年浙江省湖州市吳興區(qū)中考數(shù)學(xué)二模試卷
- 《寵物保健品營銷策略》課件
- 公寓管理考試試題及答案
- 2021城市運行管理服務(wù)平臺數(shù)據(jù)標(biāo)準(zhǔn)
- 大學(xué)籃球筆試題目及答案
- 消防車駕駛員基本素質(zhì)、車輛行車安全
- 統(tǒng)編版語文五年級下冊詞句段練習(xí)(含答案)
- T-CACM 1277-2019 中醫(yī)外科臨床診療指南 燒傷
- 海務(wù)管理面試題庫及答案
評論
0/150
提交評論