版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、單片機(jī)實(shí)驗(yàn)報(bào)告 華南師范大學(xué)姓 名: 學(xué) 號(hào): 專 業(yè): 通 信 工 程 班 級(jí): 09通信8班 數(shù)字量輸入輸出實(shí)驗(yàn)一、 實(shí)驗(yàn)?zāi)康? 熟悉教學(xué)板電路及其結(jié)構(gòu)。2 掌握利用Vision C51 軟件編輯、調(diào)試(包括仿真調(diào)試、單步調(diào)試)、運(yùn)行單片機(jī)程序的步驟和方法,掌握利用STC-ISP V39軟件和下載線將程序?qū)懭雴纹瑱C(jī)的方法 。3 通過(guò)實(shí)驗(yàn)熟悉51單片機(jī)的并行I/O口,并掌握它們的應(yīng)用。4 掌握矩陣鍵盤、LED動(dòng)態(tài)顯示的工作原理。二、 實(shí)驗(yàn)設(shè)備PC機(jī)一臺(tái)、實(shí)驗(yàn)教學(xué)板一塊。三、 實(shí)驗(yàn)準(zhǔn)備1 閱讀實(shí)驗(yàn)講義附錄一、 實(shí)驗(yàn)教學(xué)板電路圖和附錄二、Vision軟件使用說(shuō)明2 按實(shí)驗(yàn)題目要求設(shè)計(jì)好硬件電路,
2、畫(huà)出電路原理圖,設(shè)計(jì)出相應(yīng)程序,并給程序加上較詳細(xì)的注釋。四、 實(shí)驗(yàn)內(nèi)容 1.實(shí)驗(yàn)線路如附圖所示,51單片機(jī)的P0口輸出接8個(gè)發(fā)光二極管的陰極,P2.4經(jīng)NPN三極管9011控制發(fā)光管的陽(yáng)極。P3口支持一個(gè)8位行列式鍵盤,其中P3.4P3.7供鍵盤掃描輸出, P3.2、P3.3作鍵盤掃描輸入。 實(shí)驗(yàn)要求:編程實(shí)現(xiàn)鍵盤對(duì)發(fā)光二極管的控制,每按一個(gè)按鍵,使對(duì)應(yīng)的二極管點(diǎn)亮。 251單片機(jī)P0口輸出同時(shí)接4個(gè)數(shù)碼管的陰極,P2.0P2.3,經(jīng)NPN三極管9011接數(shù)碼管的陽(yáng)極,該端口用于分別控制相應(yīng)數(shù)碼管的導(dǎo)通。實(shí)驗(yàn)要求:編程實(shí)現(xiàn)對(duì)任意按鍵動(dòng)作的次數(shù)進(jìn)行計(jì)數(shù)(最大99次),同時(shí)將計(jì)數(shù)值實(shí)時(shí)顯示。五、
3、實(shí)驗(yàn)步驟1. 將實(shí)驗(yàn)板與PC機(jī)通過(guò)COM口連接。啟動(dòng)PC機(jī),進(jìn)入Vision軟件環(huán)境,選擇建立新工程文件,即可開(kāi)始輸入源程序。 2完成匯編、編譯、連接,若有錯(cuò)誤,則修改源程序,直至編譯、連接通過(guò)為止。3接上實(shí)驗(yàn)板上的電源。3 運(yùn)行“STC-ISP V39.EXE”,將程序代碼下載到實(shí)驗(yàn)板的單片機(jī)中。操作的順序是:1)選擇單片機(jī)(MCU TYPE)型號(hào)。如:“STC89C51RC”要與實(shí)驗(yàn)板上所裝單片機(jī)的型號(hào)一至。2)打開(kāi)文件(Open File)。 即把要下載到單片機(jī)的程序文件(已通過(guò)編譯了的機(jī)器碼文件二進(jìn)制(.Bin)或十六進(jìn)制(.Hex)的)調(diào)到“文件緩沖區(qū)”,這時(shí)可看到右邊的“文件緩沖區(qū)
4、” 有數(shù)字變化。3)選擇串行通信口。 選對(duì)時(shí),軟件上的小燈會(huì)變綠。否則小燈是灰色。且在左下窗口提示“出錯(cuò)信息”。4)下載:按“Download/下載”按鍵下載。5)把實(shí)驗(yàn)板上的供電的直流電源拔掉或關(guān)掉3秒鐘再插入或打開(kāi)電源(為單片機(jī)上電復(fù)位)。 4觀察單片機(jī)運(yùn)行情況,驗(yàn)證程序是否能完成題目給出的控制要求,若不能達(dá)到要求,分析原因、查找錯(cuò)誤,修改源程序,再次匯編、連接,重新下載、運(yùn)行,直至達(dá)到題目的控制要求。六、 參考程序流程圖實(shí)驗(yàn)內(nèi)容1流程圖 實(shí)驗(yàn)內(nèi)容2流程圖 鍵盤處理程序流程圖七、 相應(yīng)的程序1.按鍵點(diǎn)亮對(duì)應(yīng)相應(yīng)的二極管。ORG0000HMAIN:MOV P2,#10H/二極管一段高電平,點(diǎn)
5、亮準(zhǔn)備STA:MOV A,#B /按鍵測(cè)試MOV R7,#05H STA1:MOV P3,ADJNZ R7,NEXTSJMP STA/為0時(shí)則跳回.NEXT:RL APRESS0:JBP3.3,PRESS1/無(wú)按鍵等待LCALLDELAY30MS/去抖動(dòng)JBP3.3,PRESS0/測(cè)試是哪一行接通了!JNBP3.3,$SJMP PRE_P33PRESS1:JBP3.2,STA1/無(wú)按鍵等待,如果P3.2為1時(shí),則說(shuō)明木有按過(guò).LCALLDELAY30MS /去抖動(dòng)JBP3.2,PRESS1JNBP3.2,$SJMP PRE_P32PRE_P33:DEC R7/點(diǎn)亮對(duì)應(yīng)的LED燈MOV A,R7
6、MOV DPTR,#TABLE MOVC A,A+DPTRMOV P0,ASJMP STAPRE_P32:DEC R7MOV A,R7MOV DPTR,#TABLE1 MOVC A,A+DPTRMOV P0,ASJMP STADELAY30MS:MOVR4,#55DELAY:MOVR3,#250DJNZR3,$ /1.085us(指令周期)*2*250+2=547.5usDJNZR4,DELAYRETTABLE: DB 0F7H,0FBH,0FDH,0FEH /第一行按鍵,對(duì)應(yīng)LED左邊的4個(gè)燈TABLE1: DB 7FH,0BFH,0DFH,0EFH /第二行按鍵,對(duì)應(yīng)LED右邊的4個(gè)燈EN
7、D2.按鍵讓數(shù)碼管從00-99計(jì)數(shù)。ORG 0000HSTA:MOV DPTR,#TABLEMOV P2,#0H /關(guān)閉數(shù)碼管選通MOV P3,#0FFHMOV R0,#0H /R0作為計(jì)數(shù)KEY:MOV A,#0EFH /按鍵掃描初始化第一列 MOV R1,#4HKEYB:MOV P3,A JNB P3.2,KEYC JNB P3.3,KEYC JMP MUY /該列無(wú)按鍵按下,進(jìn)入下一列掃描KEYC:LCALL DELAY20 JNB P3.2,KEYCC JNB P3.3,KEYCC JMP MUYKEYCC:JNB P3.2,$ JNB P3.3,$ INC R0 /按一次,增加R0的
8、值MUY:RL A DJNZ R1,KEYB /一輪掃描結(jié)束后 MOV A,R0 CJNE A,#100,DIS /判斷是否達(dá)到100,不是,轉(zhuǎn)到顯示區(qū) MOV A,#0 /是,重新給A賦值0 MOV R0,#0DIS:MOV B,#10DIV AB /把A/10的商給A,余數(shù)給BMOVC A,A+DPTR MOV P0,A MOV P2,#4 / 十位顯示LCALL DELAY1MOV A,BMOVC A,A+DPTRMOV P0,AMOV P2,#8 /個(gè)位顯示LCALL DELAY1JMP KEYDELAY1:MOV R6,#2 DE11:MOV R5,#248 DJNZ R5,$ DJ
9、NZ R6,DE11 RETDELAY20:MOV R7,#10 DJNZ R7,DELAY1 RETTABLE: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H END八、 思考題1.按鍵程序?yàn)槭裁匆腥ザ秳?dòng)功能,如何去抖動(dòng)?答:按鍵由于機(jī)械彈性的作用,鍵在閉合與斷開(kāi)的瞬間均有抖動(dòng)過(guò)程,所以需要去抖動(dòng)功能,去抖動(dòng)有軟件和硬件的方法,比如采用濾波電路防抖等硬件方法,軟件去抖是檢測(cè)到有鍵按下,執(zhí)行一個(gè)10-20ms的延時(shí)程序,再確認(rèn)該鍵是否仍保持閉合狀態(tài),若仍閉合則確認(rèn)為此鍵按下,消除抖動(dòng)影響。2.在顯示時(shí),為什么要延時(shí)1ms,這個(gè)時(shí)間過(guò)長(zhǎng)或過(guò)短,
10、會(huì)出現(xiàn)什么現(xiàn)象? 答:因?yàn)槿搜劭词挛镉幸粋€(gè)暫留效果,如果延時(shí)過(guò)短的話,可能看不到led燈或者數(shù)碼管的變化,如果延時(shí)太長(zhǎng),則一直保持那原來(lái)的效果,沒(méi)有變化。交通燈控制實(shí)驗(yàn)一、實(shí)驗(yàn)?zāi)康耐ㄟ^(guò)實(shí)驗(yàn)熟悉51單片機(jī)的并行I/O口,并掌握它們的應(yīng)用。二、實(shí)驗(yàn)內(nèi)容及原理模擬實(shí)現(xiàn)一個(gè)路口交通燈管理 在路口當(dāng)中,一條為“干線”,另一條為“支線”。兩個(gè)方向上各設(shè)有紅、黃、綠3盞交通燈。 一般情況下(初始狀態(tài)),干線亮綠燈,支線亮紅燈。當(dāng)支線上有三輛車到達(dá)路口(用按鍵按下模擬一輛車到達(dá)),則6秒后,干線亮黃燈,持續(xù)3秒后,轉(zhuǎn)為干線亮紅燈,支線亮綠燈,過(guò)24秒后,支線轉(zhuǎn)黃燈亮,3秒后,回到初始狀態(tài)。交通燈實(shí)驗(yàn) 程序OR
11、G0000HSTA:MOVP0,#B /干線亮綠燈,支線亮紅燈MOVP2,#B /選通LEDMOVP3,#B /K1列線置0MOVR7,#3STA1:JBP3.3,$ /無(wú)按鍵等待LCALLDELAY30MS /去抖動(dòng)JBP3.3,STA1JNBP3.3,$ /等鍵釋放DJNZR7,STA1MOVR6,#200STA2:LCALLDELAY30MS /延時(shí)30MSDJNZR6,STA2 /延時(shí)6秒MOVP0,#B /干線亮黃燈,支線亮紅燈MoVR6,#100STA3:LCALLDELAY30MSDJNZR6,STA3 /延時(shí)3秒MOVP0,#B /干線亮紅燈,支線亮綠燈MOVR5,#4STA4
12、:MOVR6,#200STA5:LCALLDELAY30MSDJNZR6,STA5DJNZR5,STA4 /延時(shí)24秒MOVP0,#B /干線亮綠燈,支線亮黃燈MOVR6,#100STA6:LCALLDELAY30MSDJNZR6,STA6 /延時(shí)3秒LJMPSTADELAY30MS:MOVR4,#55DELAY:MOVR3,#250DJNZR3,$ /1.085us(指令周期)*2*250+2=547.5usDJNZR4,DELAYRET 定時(shí)與中斷實(shí)驗(yàn)一、實(shí)驗(yàn)?zāi)康?通過(guò)實(shí)驗(yàn)掌握51單片機(jī)的定時(shí)/計(jì)數(shù)器的應(yīng)用。2掌握51單片機(jī)的中斷原理及應(yīng)用。3. 進(jìn)一步學(xué)習(xí)系統(tǒng)應(yīng)用程序的設(shè)計(jì)和調(diào)試方法二、
13、實(shí)驗(yàn)設(shè)備PC機(jī)一臺(tái) 、 實(shí)驗(yàn)教學(xué)板一塊。 圖2-1三、實(shí)驗(yàn)內(nèi)容 實(shí)驗(yàn)線路如圖2-1, 通過(guò)定時(shí)器的定時(shí),產(chǎn)生一定頻率的波形信號(hào),經(jīng)P2.5輸出,驅(qū)動(dòng)蜂鳴器,便可發(fā)出某一頻率的音調(diào),若按樂(lè)曲的音調(diào)連續(xù)發(fā)出,并使其按節(jié)拍變化,便可演奏一首樂(lè)曲。實(shí)驗(yàn)要求:編程實(shí)現(xiàn)演奏一首樂(lè)曲C調(diào)常用音頻及其對(duì)應(yīng)頻率如下表: 音符頻率 T值 音符頻率 T值 SI494 646035 So 784649481 DO523646546 La880650122 Re587647517 Si987650693 Mi65964837 DO 1046650954 Fa69864875 RE 117465143定時(shí)器初值計(jì)算方法:
14、由于軟件是通過(guò)定時(shí)器溢出后對(duì)P2.5取反產(chǎn)生方波,故定時(shí)器溢出時(shí)間為1/2f,則計(jì)數(shù)器計(jì)數(shù)初值為:X = 65536 n = 65536 (1/2f)/12/fosc = 65536 fosc/24f 電路板上的晶振頻率為 11.0593MHZ,根據(jù)不同音調(diào)的頻率值,就可以計(jì)算出上表的初值。用樂(lè)曲最短的1/4拍為一個(gè)基本節(jié)拍時(shí)間,定為0.5秒,基本節(jié)拍時(shí)間由另一個(gè)定時(shí)器產(chǎn)生,設(shè)此定時(shí)器定時(shí)時(shí)間為50ms,定時(shí)時(shí)間常數(shù)(計(jì)數(shù)器初值)= 65536 (50000*12/11.0593)=02C13H,可以分別通過(guò)該定時(shí)中斷10、20、40、80次滿足1/4拍、1/2拍、1拍、2拍的定時(shí)要求。軟件編
15、程時(shí),要先將樂(lè)譜轉(zhuǎn)換成包含有音符和音長(zhǎng)信息的代碼,然后,以查表方式通過(guò)樂(lè)譜代碼控制喇叭演奏出樂(lè)曲。具體方法如下:(1) 樂(lè)譜代碼用字節(jié)結(jié)構(gòu),字節(jié)高4位代表音符,從SI到RE分別用0到9表示;字節(jié)低4位代表該音符的節(jié)拍,用1、2、3、8分別表示1/4拍、1/2拍、1拍、4拍,按照這樣的規(guī)則,將整段音樂(lè)變換成相應(yīng)的代碼數(shù)據(jù)表,最后一個(gè)字節(jié)內(nèi)容為00H,代表數(shù)據(jù)表的結(jié)束。(2) 在程序執(zhí)行時(shí)按順序查表,從字節(jié)數(shù)據(jù)中取出音符代碼和節(jié)拍代碼,查頻率表得該音符對(duì)應(yīng)頻率的定時(shí)初值,再根據(jù)節(jié)拍代碼控制音長(zhǎng),啟動(dòng)兩個(gè)定時(shí)器后,即可發(fā)出要求的音,這樣就控制演奏出完整的樂(lè)曲。四、實(shí)驗(yàn)匯編主程序: ORG 0000H
16、RESET: AJMP MAIN ORG 000BH /定時(shí)器0中斷入口 AJMP TT0P ORG 001BH /定時(shí)器1中斷入口 AJMP TT1P ORG 0030HMAIN: MOV SP,#70H /設(shè)堆棧區(qū) CLR P2.5 /關(guān)聲音 MOV IE,#8AH /開(kāi)中斷 AJMP KEY /調(diào)用鍵盤程序段KEY: MOV P3,#0F0H MOV A,P3 ACALL DELAY CJNE A,P3,SI /不相等時(shí),跳到SI AJMP KEY /相等時(shí),循環(huán)SI: MOV R4,P3 ACALL DELAY MOV 51H,R4 CJNE A,51H,COUNTKEY AJMP K
17、EYCOUNTKEY: MOV A,P3 ANL A,#0F0H MOV R3,A MOV P3,#0CH MOV A,P3 ANL A,#0CH ADD A,R3 MOV 52H,A MOV DPTR,#KEYZHI MOV R1,#00HSUAN: MOV A,R1 MOVC A,A+DPTR CJNE A,52H,JIN CJNE A,#78H,TT0PCS /按鍵8 播音樂(lè) AJMP BOYIN /轉(zhuǎn)到播音樂(lè)程序 AJMP TT0PCSJIN: INC R1 AJMP SUANTT0PCS: MOV IE,#8AH MOV TMOD,#11H MOV DPTR,#TABL2 MOV A
18、 ,R1 RL A MOV R2, A MOVC A,A+DPTR MOV TH0,A MOV 41H,A MOV A,R2 INC A MOVC A,A+DPTR MOV TL0,A MOV 40H,A SETB TR0 HERE: MOV A,P3 ANL A,#0FH CJNE A,#0FH,HERE CLR P2.5 CLR TR0 AJMP MAIN/按鍵釋放,關(guān)聲音關(guān)定時(shí)器,轉(zhuǎn)到主程序BOYIN: MOV IE,#8AH /開(kāi)中斷 MOV R1,#0H /樂(lè)譜數(shù)據(jù)偏移量 ACALL PTOM /調(diào)樂(lè)曲輸出子程序 CLR TR0 CLR TR1 CLR P2.5HERR: AJMP
19、HERR /程序結(jié)束PTOM: MOV TMOD,#11H /設(shè)定定時(shí)器的工作方式PTOM1: MOV DPTR,#MUCI /樂(lè)譜的首地址送DPTR MOV A,R1 MOVC A,A+DPTR /取樂(lè)譜數(shù)據(jù) JNZ PTOM2 /如果數(shù)據(jù)為00H,則結(jié)束 RETPTOM2: MOV R2,A /在R2中暫存 ANL A,#0F0H /取得音符數(shù)據(jù) SWAP A /把A的高四位和低四位對(duì)調(diào) RL A /因?yàn)橐舴亲诸愋?,需要兩個(gè)字節(jié),所以要乘2 MOV R3,A MOV DPTR,#TABL /頻率表 MOVC A,A+DPTR /取得頻率表的高8位 MOV TH0,A MOV 41H,A
20、MOV A,R3 INC A MOVC A,A+DPTR /取得頻率表的低8位 MOV TL0,A MOV 40H,A MOV A,R2 ANL A,#0FH /保留節(jié)拍數(shù)據(jù) MOV B,#5 /乘8得定時(shí)的中斷次數(shù) MUL AB MOV R0,A MOV TH1,#4CH /50MS定時(shí)的初值 MOV TL1,#00H SETB TR1 /啟動(dòng)定時(shí)器 SETB TR0HERE2: CJNE R0,#0H,HERE2 /判斷當(dāng)前節(jié)拍是否已完成 INC R1 /如果完成則取下一個(gè)數(shù)據(jù) AJMP PTOM1TT0P: PUSH Acc /定時(shí)器0中斷服務(wù)程序 PUSH PSW CPL P2.5 M
21、OV TL0,40H MOV TH0,41H POP PSW POP Acc RETITT1P: MOV TH1,#4cH /定時(shí)器1中斷服務(wù)程序,50MS定時(shí)的初值 MOV TL1,#00H DEC R0 RETIDELAY:MOV R7,#10 /延時(shí)程序段D1: MOV R6,#50 DJNZ R6,$ DJNZ R7,D1 RETTABL2:DW 64654,64751,64837,64875,64948,65012,65069,65095TABL:DW 64603,64654,64751,64837,64875,64948,65012,65069,65095,65143KEYZHI:
22、DB 0E4H,0D4H,0B4H,74H,0E8H,0D8H,0B8H,78HMUCI: DB 54H,32H,52H,88H,64H,82H,62H,58H,54H,12H,22H,34H DB 22H,12H,2CH,54H,32H,52H,86H,72H,64H,84H,58H,54H DB 22H,32H,46H,02H,1CH,64H,84H,88H,74H,62H,72H,88H DB 62H,72H,82H,62H,62H,52H,32H,12H,28H,28H,54H,32H DB 52H,84H,72H,64H,86H,58H,54H,22H,32H,46H,02H,1CH
23、 DB 00H END 串行通信實(shí)驗(yàn)一、實(shí)驗(yàn)?zāi)康?了解51單片機(jī)串行口的結(jié)構(gòu)、串行通訊的原理。2掌握51單片機(jī)與PC機(jī)之間通訊的方法。3. 學(xué)習(xí)系統(tǒng)應(yīng)用程序的設(shè)計(jì)和調(diào)試二、實(shí)驗(yàn)設(shè)備PC機(jī)一臺(tái) 、 實(shí)驗(yàn)教學(xué)板一塊。三、實(shí)驗(yàn)原理51單片機(jī)的串行接口是全雙工的,它能做異步接收器/發(fā)送器(UART),也能做同步移位寄存器使用。在做UART使用時(shí),相關(guān)的寄存器有SBUF、SCON、和PCON中的波特率倍增位SMOD。SBUF是數(shù)據(jù)發(fā)送緩沖器和接收緩沖器,邏輯上用同一個(gè)地址,物理上是分開(kāi)的,用讀寫(xiě)操作來(lái)選擇。SCON是串行口控制寄存器,用于設(shè)定串行口的工作方式;保存方式2和方式3的第9位數(shù)據(jù);存放發(fā)送、接
24、收的中斷標(biāo)志。在串行通訊的方式1和方式3中,通信的波特率是可以設(shè)置的,滿足下式: PC機(jī)的串行通訊口是借助通用異步接收發(fā)送器8250(或16C550等)實(shí)現(xiàn)的,可使用comdebug.exe等提供了有關(guān)串行口的收、發(fā)操作窗口的軟件實(shí)現(xiàn)通訊。PC機(jī)的串行通訊采用RS232電平,因此要求單片機(jī)的實(shí)驗(yàn)板也要配置RS232接口,解決邏輯電平的配接。如果通訊距離較遠(yuǎn),則要配接調(diào)制解調(diào)器。四、實(shí)驗(yàn)內(nèi)容1, 自發(fā)自收用一根短路線,將實(shí)驗(yàn)板中RS232插口的RXD和TXD兩個(gè)插孔短路。然后編程設(shè)定串行口為工作方式1,傳送55H和0AAH兩個(gè)數(shù)據(jù)。實(shí)驗(yàn)要求:程序采用查詢方式。每傳送、接收一個(gè)數(shù)據(jù),做一次檢查,看
25、是否正確,若兩次都正確,則在顯示器上顯示“GOOD”,若不正確,則不顯示,并要重新傳送。2, 單片機(jī)與PC機(jī)的通信先使用通訊電纜將單片機(jī)的RS232接口與PC機(jī)的COM1口連接,PC機(jī)起動(dòng)并運(yùn)行comdebug.exe軟件,窗口上設(shè)置波特率為1200,8位數(shù)據(jù)、一個(gè)停止位。單片機(jī)端也采用工作方式1,波特率為1200,完成單片機(jī)與PC機(jī)的通信。實(shí)驗(yàn)要求:編程實(shí)現(xiàn)先由單片機(jī)發(fā)送8個(gè)數(shù)據(jù),01、02、03、04、05、0ABH、0CDH、0EFH。然后進(jìn)入接收狀態(tài),在PC機(jī)發(fā)送窗口上設(shè)置發(fā)送數(shù)據(jù),點(diǎn)擊發(fā)送按鈕,單片機(jī)接收數(shù)據(jù)后將數(shù)據(jù)顯示在顯示器上。五 、程序參考流程圖 (a)自發(fā)自收程序流程圖 (b
26、)與PC機(jī)通訊程序流程圖六、匯編程序 1. 自發(fā)自收 ORG 0000H MOV TMOD,#20H /設(shè)置計(jì)時(shí)器工作于方式2 MOV TL1,#0E8H /波特率為1200 MOV TH1,#0E8H SETB TR1 MOV SCON,#50H MOV P2,#0FH MOVP3,#B /設(shè)置按鍵1START:KEY1: LCALL KEY_STATE /調(diào)用按鍵程序TX_1: MOV A,#55H MOV SBUF,AWAIT1: JBC TI,REX_YES1 /TI為1時(shí),轉(zhuǎn)移,并清零 SJMP WAIT1REX_YES1: JBC RI,NEXT1 /測(cè)試接收中斷RI是否為1, S
27、JMP REX_YES1NEXT1: MOV A,SBUF /把SBUF的值送給A CJNE A,#55H,KEY1 /判斷是否相等,不相等的話就悲劇了. MOV P0,#92H /相等的話,數(shù)碼管顯示“5555”KEY2: LCALL KEY_STATE /同上TX_2: MOV A,#0AAH /同上 MOV SBUF, AWAIT2: JBC TI,REX_YES2 SJMP WAIT2REX_YES2: JBC RI,NEXT2 SJMP REX_YES2NEXT2: MOV A,SBUF CJNE A,#0AAH,KEY2 /判斷是否相等 MOV P0,#88H /相等的話,數(shù)碼管顯
28、示“AAAA” JMP STARTDELAY30MS:MOV R4,#55 DELAY: MOV R3,#250DJNZ R3,$ /1.085us(指令周期)*2*250+2=547.5usDJNZ R4,DELAYRET KEY_STATE:JB P3.3,$ /無(wú)按鍵等待 LCALLDELAY30MS /去抖動(dòng) JB P3.3,KEY_STATE /JB等于1轉(zhuǎn)移 JNB P3.3,$ /等鍵釋放 RET END2單片機(jī)與PC機(jī)的通信 ORG 0000H MOV TMOD,#20H /設(shè)置計(jì)時(shí)器工作于方式2 MOV TL1,#0E8H /波特率為1200 MOV TH1,#0E8H SE
29、TB TR1 /設(shè)置為1 MOV SCON,#50H MOV DPTR,#TABLE MOV 30H,#00H /存儲(chǔ)數(shù)碼管碼型 MOV R0,#08H MOV P2,#08H /選通一個(gè)數(shù)碼管 LCALL TX_DATA /發(fā)送到電腦端START: LCALL RX_YES MOV P0,30H /數(shù)碼管顯示 JMP STARTTX_DATA: CLR A/清零,這個(gè)是依次把TABLE的8個(gè)數(shù)字發(fā)到電腦端 MOVC A,A+DPTR /把.對(duì)應(yīng)位置的數(shù)給A MOV SBUF,A JNB TI,$ /測(cè)試TI,等待TI為1 CLR TI /清零 INC DPTR/.的位置+1 DJNZ R0,
30、 TX_DATA /RO減0后不等于0,跳回去 RET /RO=0時(shí),返回RX_YES: JBC RI,NEXT1 /RI中斷信號(hào),為1時(shí),調(diào)到XXX SJMP RX_YESNEXT1: MOV A,SBUF/把值給A, LCALL SHU_MA_GUAM_MA_XING RETSHU_MA_GUAM_MA_XING:/這個(gè)是依次判斷A是那個(gè)值? 并送相應(yīng)的碼型給數(shù)碼管顯示SHUMA_0: CJNE A,#30H,SHUMA_1 MOV 30H,#0C0HSHUMA_1: CJNE A,#31H,SHUMA_2 MOV 30H,#0F9HSHUMA_2: CJNE A,#32H,SHUMA_3
31、 MOV 30H,#0A4HSHUMA_3: CJNE A,#33H,SHUMA_4 MOV 30H,#0B0HSHUMA_4: CJNE A,#34H,SHUMA_5 MOV 30H,#99HSHUMA_5: CJNE A,#35H,SHUMA_6 MOV 30H,#92HSHUMA_6: CJNE A,#36H,SHUMA_7 MOV 30H,#82HSHUMA_7: CJNE A,#37H,SHUMA_8 MOV 30H,#0F8HSHUMA_8: CJNE A,#38H,SHUMA_9 MOV 30H,#80HSHUMA_9: CJNE A,#39H,SHUMA_OTHER MOV 3
32、0H,#90HSHUMA_OTHER: RETTABLE:DB 01H,02H,03H,04H,05H,0ABH,0CDH,0EFH END七、思考題 1波特率能否置為1000,為什么? 答:如實(shí)驗(yàn)原理提供的波特率計(jì)算公式可知,波特率可以置為1000,但是這樣一來(lái)速度太低了,會(huì)影響單片機(jī)的通信能力。 2數(shù)據(jù)傳輸時(shí),若要加奇偶校驗(yàn),單片機(jī)和PC機(jī)要怎樣做?答:帶奇偶校驗(yàn)位的,要用方式2或方式3,當(dāng)51單片機(jī)用位數(shù)據(jù)方式進(jìn)行串行通信的時(shí)候,TB8和RB8的作用如下:51單片機(jī)在發(fā)送的時(shí)候,先發(fā)送位數(shù)據(jù),然后發(fā)送TB8中的內(nèi)容;在接收的時(shí)候,先接收位數(shù)據(jù),然后接收校驗(yàn)位,存到RB8中。接收方會(huì)把收到
33、的位數(shù)送到SBUF,第位數(shù),送到RB8,然后自動(dòng)設(shè)立RI = 1。之后,就可以用RB8中的內(nèi)容,對(duì)剛才收到的位數(shù)進(jìn)行正確性檢驗(yàn)。實(shí)驗(yàn)六 人體視覺(jué)暫留特性測(cè)試實(shí)驗(yàn)一、 實(shí)驗(yàn)?zāi)康?進(jìn)一步熟悉利用 Kei l C51 軟件編輯、調(diào)試(包括仿真調(diào)試、單步調(diào)試)和運(yùn)行單片機(jī)程序的步驟和方法。2 學(xué)習(xí)運(yùn)用單片機(jī)完成一個(gè)較為簡(jiǎn)單的一應(yīng)用系統(tǒng)的設(shè)計(jì) 二、實(shí)驗(yàn)設(shè)備PC機(jī)一臺(tái) 、 實(shí)驗(yàn)教學(xué)板一塊。三、實(shí)驗(yàn)內(nèi)容及原理編程從一個(gè)I/O口輸出一掃頻信號(hào),驅(qū)動(dòng)一支LED燈閃動(dòng),頻率范圍為10HZ99HZ,掃描時(shí)間為30秒,在LED閃動(dòng)期間觀察,一旦發(fā)現(xiàn)無(wú)法識(shí)別LED燈閃動(dòng)時(shí),按下按鍵K1,立即停止輸出,并將此時(shí)的信號(hào)頻率
34、顯示在數(shù)碼管上,該信號(hào)的周期為測(cè)試者的視覺(jué)暫留時(shí)間。 四、實(shí)驗(yàn)要求1按實(shí)驗(yàn)題目要求設(shè)計(jì)好硬件電路,畫(huà)出電路原理圖。2. 要求畫(huà)出主程序、子程序、中斷服務(wù)程序流程圖,設(shè)計(jì)出相應(yīng)程序并給程序加上較詳細(xì)的注釋。3. 在Keil C51編譯環(huán)境下完成程序編譯。4. 通過(guò)下載線和下載軟件STC-ISP V39將編譯后的程序下載到單片機(jī)。5. 運(yùn)行程序,用實(shí)驗(yàn)結(jié)果驗(yàn)證程序的正確性。若不能達(dá)到要求,分析原因、查找錯(cuò)誤,修改源程序,再次匯編、連接,重新下載、運(yùn)行,直至達(dá)到題目的要求。 五、思考題 1、實(shí)驗(yàn)中頻率數(shù)據(jù)是怎樣計(jì)算出來(lái)的? 2、總結(jié)數(shù)碼管動(dòng)態(tài)顯示方法。程序流程圖主程序 輸出波形 輸出頻率與定時(shí)器初值
35、關(guān)系表 偏移地址定時(shí)器初值頻率值TABL+0TH4CH 10HZTL00HTABL+2TH5CH 11HZTL5DHTABL+4TH6AH 12HZTL00HTABL+6TH75H 13HZTL89HTABL+8TH7FH 14HZTL6DHTABL+194THEDH 97HZTL71HTABL+196THEDH 98HZTLA1HTABL+198THEDH 99HZTLD1H五、程序清單ORG 0000H LJMP MAIN ORG 000BH LJMP TIME_0 ORG 001BH LJMP TIME_1 ;-主程序-MAIN: MOV TMOD,#11H ;置定時(shí)器0、1方式1定時(shí)
36、MOV SP,#6FH ;置堆棧 MOV R7,#8 ;400ms計(jì)算次數(shù) MOV R0,#10 ;10Hz CLR P2.5 MOV P3,#7FH ;檢測(cè)K1鍵 STA1: JB P3.3,$;當(dāng)P3.3為0時(shí),才執(zhí)行下一條指令 JB P3.3,STA1 JNB P3.3,$ ;K1被按下SHE: MOV TH0,#3CH ;重置定時(shí)器初值 MOV TL0,#0B0H MOV TH1,#4CH MOV TL1,#00H MOV P2,#10H ;發(fā)光二極管輸出使能,P2.4=1 MOV R0,#10 SETB TR0 ;開(kāi)定時(shí)器 SETB TR1 MOV IE,#8AH ;中斷使能 MOV
37、 P3,#7FH ;檢測(cè)K2鍵STA2: JB P3.2,$ JB P3.2,STA2 JNB P3.2,$ ;K2被按下 CLR TR0 ;關(guān)定時(shí)器 CLR TR1DD: LCALL DISP ;調(diào)用顯示子程序 MOV P3,#7FH ;再次檢測(cè)K1鍵STA3: JB P3.3,DD LCALL DELAY30MS ;去抖動(dòng) JB P3.3,STA3 JNB P3.3,$ ;K1被按下 AJMP SHE ;重新開(kāi)始 ;-LED動(dòng)態(tài)顯示子程序- DISP: PUSH ACC MOV A,R0 MOV B,#10 DIV AB MOV 31H,A ;十位送緩沖區(qū)31H單元 MOV 30H,B ;
38、個(gè)位送緩沖區(qū)30H單元 SETB RS0 ;換工作寄存器組 MOV R1,#00H ;設(shè)定顯示時(shí)間 MOV R0,#30H ;顯示緩沖區(qū)首址送R0 MOV A,R0 ;顯示各位送A MOV DPTR,#TAB3 ;指向字形表首址 MOVC A,A+DPTR ;查表取得字形碼 MOV P0,A ;字型碼送p0口 MOV P2,#02H DJNZ R1,$ ;延時(shí)0.5ms DJNZ R1,$ ;延時(shí)0.5ms INC R0 ;指向下一緩沖區(qū)地址 MOV A,R0 ;緩沖區(qū)數(shù)據(jù)送A MOV DPTR,#TAB3 ;指向字形表首址 MOVC A,A+DPTR ;查表取得字形碼 MOV P0,A ;字
39、型碼送p0口 MOV P2,#01H DJNZ R1,$ ;延時(shí)0.5ms DJNZ R1,$ MOV P0,#0FFH ;關(guān)發(fā)光二極管 CLR RS0 ;恢復(fù)第0組工作寄存器 POP ACC RET TAB3: DB 0C0H,0F9H,0A4H,0B0H,99H,92H,82H,0F8H,80H,90H ;-T0中斷子程序- TIME_0: CLR EA PUSH ACC PUSH PSW SETB EA MOV TH0,#3CH MOV TL0,#0B0H DJNZ R7,RENM MOV R7,#08H INC R0 ;頻率指針加1 CJNE R0,#100,RENM ;頻率指針未超過(guò)
40、99,繼續(xù)循環(huán) MOV R0,#10 ;頻率指針超過(guò)99,指針回10RENM: CLR EA POP PSW POP ACC SETB EA RETI ;-T1中斷子程序-TIME_1: CLR EA PUSH ACC PUSH PSW SETB EA MOV A,R0 ;查表,重裝各頻率所對(duì)應(yīng)的計(jì)數(shù)初值 MOV DPTR,#TAB1 MOVC A,A+DPTR ;置TH1 MOV TH1,A MOV A,R0 MOV DPTR,#TAB2 MOVC A,A+DPTR ;置TL1 MOV TL1,A CPL P0.0 CLR EA POP PSW POP ACC SETB EA RETI TA
41、B1: DB 00H,00H,00H,00H,00H,00H,00H,00H,00H,00H,4CH,5CH,6AH,75H,7FH,88H,8FH,96H,9CH,0A1H DB 0A6H,0AAH,0AEH,0B1H,0B5H,0B8H,0BAH,0BDH,0BFH,0C1H,0C4H,0C5H,0CFH,0C9H,0CBH DB 0CCH,0CEH,0CFH,0D0H,0D1H,0D3H,0D4H,0D5H,0D6H,0D7H,0D8H,0D8H,0D9H,0DAH,0DBH DB0DCH,0DCH,0DDH,0DEH,0DEH,0DFH,0DFH,0E0H,0E0H,0E1H,0E2H,0E2H,0E6H,0E3H,0E3HDB0E4H,0E4H,0E5H,0E5H,0E5H,0E6H,0E6H,0E7H,0E7H,0E7H,0E8H,0E8H,0E8H,0E8H,0E9HDB0E9H,0E9H,0EAH,0EAH,0EAH,0EAH,0EBH,0EBH,0EBH,0EBH,0ECH,0ECH,0ECH,0ECH,0ECHDB0EDH,0EDH,0EDH,0EDH,0EDH TAB2: DB
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 從容面對(duì)考試-心理健康教育輔導(dǎo)方案
- 浙教版2021-2022學(xué)年度七年級(jí)數(shù)學(xué)上冊(cè)模擬測(cè)試卷 (837)【含簡(jiǎn)略答案】
- 建筑工程重點(diǎn)、難點(diǎn)、關(guān)鍵部位施工及處理措施方案
- 建筑工地工人勞務(wù)合同
- Methenamine-mandelate-生命科學(xué)試劑-MCE
- Magnesium-formate-dihydrate-生命科學(xué)試劑-MCE
- 結(jié)對(duì)幫扶方案
- 浙教版2021-2022學(xué)年度七年級(jí)數(shù)學(xué)上冊(cè)模擬測(cè)試卷 (705)【含簡(jiǎn)略答案】
- 高考中考期間應(yīng)對(duì)高溫雷雨天氣應(yīng)急處置預(yù)案
- 教師排課系統(tǒng)課程設(shè)計(jì)
- GB/T 4436-1995鋁及鋁合金管材外形尺寸及允許偏差
- GB/T 36195-2018畜禽糞便無(wú)害化處理技術(shù)規(guī)范
- GB/T 12008.3-2009塑料聚醚多元醇第3部分:羥值的測(cè)定
- 10M鎖100MHz鎖相頻率源
- 中小學(xué)道德與法治高級(jí)教師職稱評(píng)審答辯題目與答案
- 醫(yī)藥商品學(xué)考試卷子B卷
- 美好的師生情高一作文800字
- 樓長(zhǎng)績(jī)效考核方案
- 建設(shè)項(xiàng)目“三同時(shí)”環(huán)境保護(hù)驗(yàn)收一覽表
- 箱涵清淤專項(xiàng)施工方案
- 2023年沈陽(yáng)桃仙國(guó)際機(jī)場(chǎng)股份有限公司招聘筆試模擬試題及答案解析
評(píng)論
0/150
提交評(píng)論