影音先锋男人资源在线观看,精品国产日韩亚洲一区91,中文字幕日韩国产,2018av男人天堂,青青伊人精品,久久久久久久综合日本亚洲,国产日韩欧美一区二区三区在线

單片機(jī)原理及接口技術(shù)課后習(xí)題第9章答案

上傳人:jun****875 文檔編號(hào):18003731 上傳時(shí)間:2020-12-11 格式:DOC 頁數(shù):24 大?。?.01MB
收藏 版權(quán)申訴 舉報(bào) 下載
單片機(jī)原理及接口技術(shù)課后習(xí)題第9章答案_第1頁
第1頁 / 共24頁
單片機(jī)原理及接口技術(shù)課后習(xí)題第9章答案_第2頁
第2頁 / 共24頁
單片機(jī)原理及接口技術(shù)課后習(xí)題第9章答案_第3頁
第3頁 / 共24頁

下載文檔到電腦,查找使用更方便

9.9 積分

下載資源

還剩頁未讀,繼續(xù)閱讀

資源描述:

《單片機(jī)原理及接口技術(shù)課后習(xí)題第9章答案》由會(huì)員分享,可在線閱讀,更多相關(guān)《單片機(jī)原理及接口技術(shù)課后習(xí)題第9章答案(24頁珍藏版)》請(qǐng)?jiān)谘b配圖網(wǎng)上搜索。

1、第九章復(fù)習(xí)思考題 1. 計(jì)算機(jī)系統(tǒng)中為什么要設(shè)置輸入輸出接口? 輸入/輸出接口電路是CPU與外設(shè)進(jìn)行數(shù)據(jù)傳輸?shù)臉蛄骸M庠O(shè)輸入給CPU的數(shù)據(jù),首先由外設(shè)傳遞到輸入接口電路,再由CPU從接口獲??;而CPU輸出到外設(shè)的數(shù)據(jù),先由CPU輸出到接口電路,然后與接口相接的外設(shè)獲得數(shù)據(jù)。CPU與外設(shè)之間的信息交換,實(shí)際上是與I/O接口電路之間的信息交換。 2. 簡述輸入輸出接口的作用。 I/O接口電路的作用主要體現(xiàn)在以下幾個(gè)方面:(1)實(shí)現(xiàn)單片機(jī)與外設(shè)之間的速度匹配;(2)實(shí)現(xiàn)輸出數(shù)據(jù)鎖存;(3)實(shí)現(xiàn)輸入數(shù)據(jù)三態(tài)緩沖;(4)實(shí)現(xiàn)數(shù)據(jù)格式轉(zhuǎn)換。 3. 在計(jì)算機(jī)系統(tǒng)中,CPU與輸入輸出接口之間傳輸數(shù)

2、據(jù)的控制方式有哪幾種?各有什么特點(diǎn)? 在計(jì)算機(jī)系統(tǒng)中,CPU與I/O接口之間傳輸數(shù)據(jù)有3種控制方式:無條件方式,條件方式,中斷方式,直接存儲(chǔ)器存取方式。 在無條件方式下,只要CPU執(zhí)行輸入/輸出指令,I/O接口就已經(jīng)為數(shù)據(jù)交換做好了準(zhǔn)備,也就是在輸入數(shù)據(jù)時(shí),外設(shè)傳輸?shù)臄?shù)據(jù)已經(jīng)傳送至輸入接口,數(shù)據(jù)已經(jīng)在輸入接口端準(zhǔn)備好;輸出數(shù)據(jù)時(shí),外設(shè)已經(jīng)把上一次輸出的數(shù)據(jù)取走,輸出接口已經(jīng)準(zhǔn)備好接收新的數(shù)據(jù)。 條件控制方式也稱為查詢方式。CPU進(jìn)行數(shù)據(jù)傳輸時(shí),先讀接口的狀態(tài)信息,根據(jù)狀態(tài)信息判斷接口是否準(zhǔn)備好,如果沒有準(zhǔn)備就緒,CPU將繼續(xù)查詢接口狀態(tài),直到其準(zhǔn)備好后才進(jìn)行數(shù)據(jù)傳輸。 在中斷控

3、制方式下,當(dāng)接口準(zhǔn)備好數(shù)據(jù)傳輸時(shí)向CPU提出中斷請(qǐng)求,如果滿足中斷響應(yīng)條件,CPU則響應(yīng),這時(shí)CPU才暫時(shí)停止執(zhí)行正在執(zhí)行的程序,轉(zhuǎn)去執(zhí)行中斷處理程序進(jìn)行數(shù)據(jù)傳輸。傳輸完數(shù)據(jù)后,返回原來的程序繼續(xù)執(zhí)行。 直接存儲(chǔ)器存取方式即DMA方式,它由硬件完成數(shù)據(jù)交換,不需要CPU的介入,由DMA控制器控制,使數(shù)據(jù)在存儲(chǔ)器與外設(shè)之間直接傳送。 4. 采用74LS273和74LS244為8051單片機(jī)擴(kuò)展8路輸入和8路輸出接口,設(shè)外設(shè)8個(gè)按鈕開關(guān)和8個(gè)LED,每個(gè)按鈕控制1個(gè)LED,設(shè)計(jì)接口電路并編制檢測(cè)控制程序。 圖9.1題3接口電路原理圖 接口電路原理圖如圖9.1 源程序: M

4、OV DPTR,#BFFFH ;設(shè)置輸入/輸出口地址 COMT: MOVX A,@DPTR ;讀取開關(guān)狀態(tài) NOP ;延時(shí),總線穩(wěn)定 MOVX @DPTR,A ;輸出,驅(qū)動(dòng)LED顯示 NOP ;延時(shí),總線穩(wěn)定 AJMP CONT 5. 74LS377是8D觸發(fā)器,其功能表見表9.17,其中Di為觸發(fā)器的數(shù)據(jù)輸入端,Qi為觸發(fā)器的數(shù)據(jù)輸出端,是使能控制端,CLK是時(shí)鐘輸入端,Q0為建立穩(wěn)態(tài)輸入條件之前,鎖存器輸出Q的狀態(tài)。采用它為8051單片機(jī)擴(kuò)展1個(gè)8位的并行輸出口。 圖9.2 題5接口電路原理圖 用74LS377擴(kuò)展的輸出

5、口電路如圖9-2所示。用P2.7與74LS377的使能控制端相連,當(dāng)P2.7為0時(shí),74LS377被選中,如果默認(rèn)其他未用的地址線為1,則擴(kuò)展的輸出口地址為7FFFH。由于MCS-51單片機(jī)的接到74LS377的時(shí)鐘輸入端CLK,當(dāng)CPU執(zhí)行寫外部輸出口指令MOVX時(shí),把數(shù)據(jù)輸出到數(shù)據(jù)總線上,在信號(hào)由低變高時(shí),寫出的數(shù)據(jù)被打入74LS377并鎖存。程序如下: MOV DPTR, #7FFFH ;輸出口地址 MOV A, R6 ;取數(shù)據(jù) MOVX @DPTR, A ;輸出, 6. 74LS245是一種具有雙向驅(qū)動(dòng)的8位三態(tài)輸出緩沖器,它的功能表見表9.18,其中為

6、使能端,DIR為方向控制端,A1~A8為A端的數(shù)據(jù)輸入/輸出,B1~B8為B端的數(shù)據(jù)輸入/輸出。當(dāng)為低電平時(shí),DIR為高電平把A端數(shù)據(jù)傳送至B端;DIR為低電平,把B端數(shù)據(jù)傳送至A端。在其他情況下不傳送數(shù)據(jù),并輸出呈高阻態(tài)。采用它為8051單片機(jī)擴(kuò)展1個(gè)8位的輸入口。 (1) (2) 圖9-3 題6采用74LS245擴(kuò)展輸入口的2種電路 圖9-3為采用74LS245擴(kuò)展輸人接口電路。 電路(1)中,DIR上拉為高電平,74LS245數(shù)據(jù)傳送方向強(qiáng)制為B端到A端,當(dāng)P2.0為0時(shí),且為低電平時(shí),使能端為低電平,7

7、4LS245三態(tài)門打開,單片機(jī)CPU讀取外設(shè)輸入的數(shù)據(jù)。其他情況下,74LS245的三態(tài)門呈高阻狀態(tài)。 電路(2)中,只有單片機(jī)讀取外設(shè)數(shù)據(jù)時(shí),P2.0=0使74LS245的使能端有效,如果為低電平,把74LS245數(shù)據(jù)傳送方向置為A端到B端,其A→B方向的三態(tài)門打開,單片機(jī)CPU讀取外設(shè)輸入的數(shù)據(jù)。P2.0=1時(shí),使能端無效,A端和B端處于隔離狀態(tài)。 圖9-3的2個(gè)電路都采用P2.0為片選,其輸入口地址為0FEFFH(默認(rèn)未用地址線為1)。 7. 采用8155芯片為8051單片機(jī)系統(tǒng)擴(kuò)展接口,外設(shè)為開關(guān)組(8個(gè)開關(guān)組成)和8個(gè)LED,每個(gè)開關(guān)控制1個(gè)LED?,F(xiàn)需要讀取開關(guān)組的狀態(tài),

8、并把其狀態(tài)存儲(chǔ)到8155芯片RAM中,若開關(guān)組的開關(guān)全部斷開,則不記錄。設(shè)計(jì)接口電路并編制檢測(cè)程序。 圖9.4 題7接口電路 接口電路如圖9.4所示, 8155的PB口用作讀取開關(guān)組狀態(tài),PA口用作控制LED組,分配地址如下:命令/狀態(tài)寄存器:0100H;PA口:0101H;PB口:0102H; PA和PB口為基本輸入輸出方式。K0控制LED0,K1控制LED1,以此類推。設(shè)存儲(chǔ)開關(guān)狀態(tài)的單元為STATE。程序如下: CMMD EQU 0100H PORTA EQU 0101H PORTB EQU 0102H PORTC EQU 0103H STATE

9、EQU 20H MOV A,#02H ;初始化,工作方式控制字 MOV DPTR,# 0100H ;控制寄存器地址 MOVX @DPTR, A ;設(shè)置工作方式,初始化完成 MOV A,#0FFH MOV DPTR,#0101H MOVX @DPTR,A ;上電后,熄滅LED NOP MOV STATE,#0FFH ;沒有開關(guān)閉合 DETECT: MOV DPTR,#0102H ;PB口地址 MOVX A,@DPTR ;從PB口讀開關(guān)狀態(tài) MOV DPTR,#0101H

10、 ;PA口地址 MOVX @DPTR,A ;從PA口輸出控制LED指示燈 NOP CJNE A,#0FFH,VALID SJMP DETECT VALID: MOV STATE,A; ;記錄開關(guān)狀態(tài) AJMP DETECT 8. 采用8255芯片為8051單片機(jī)系統(tǒng)擴(kuò)展接口,外設(shè)為開關(guān)組(8個(gè)開關(guān)組成)和8個(gè)LED,每個(gè)開關(guān)對(duì)應(yīng)1個(gè)LED。現(xiàn)需要每隔50ms讀取一次開關(guān)組的狀態(tài),并把其狀態(tài)存儲(chǔ)到內(nèi)部RAM中。設(shè)計(jì)接口電路并編制檢測(cè)程序。假設(shè)系統(tǒng)晶振頻率為12MHz。 圖9.5 單片機(jī)與8255接口電路 圖9.5為接口電路, PA、PB、PC和控

11、制寄存器地址分別為:0000H、0001H、0002H和0003H。根據(jù)開關(guān)K0~K7狀態(tài)控制LED0~LED7的顯示狀態(tài),K0控制LED0,依此類推。設(shè)置8255的工作方式,PA口外接開關(guān),為方式0的輸入,PB口外接LED,為方式0的輸出,則工作方式控制字的標(biāo)志位D7為1,D6~D3(A組):0000, D2~D0(B組):010,組合后的控制字為:10000010,即82H。設(shè)存儲(chǔ)開關(guān)狀態(tài)的單元為STATE,用定時(shí)器/計(jì)數(shù)器T0定時(shí)50ms,工作方式為方式1,初始值為:,即3CB0H PORTA EQU 0100H PORTB EQU 0101H PORTC EQU 01

12、02H CMMD EQU 0103H STATE EQU 20H //mian program ACALL Ini8255; ACLL IniTimer0 WAIT: JBC TF0,DETECT SJMP WAIT DETECT: MOV TH0,#3CH MOV TL0,#0B0H MOV DPTR, #PortB ;PB口地址 MOVX A,@DPTR ;從PB口讀開關(guān)狀態(tài) MOV DPTR, #PortA ;PA口地址 MOVX @DPTR,A ;從PA口輸出控制LED指示燈 NOP

13、MOV STATE,A AJMP WAIT Ini8255: MOV A,#82H ;初始化,工作方式控制字 MOV DPTR,#CMMD ;控制寄存器地址 MOVX @DPTR, A ;設(shè)置工作方式,初始化完成 MOV A,#0FFH MOV DPTR,#PORTA MOVX @DPTR,A ;上電后,熄滅LED NOP RET IniTimer0: MOV TMOD,#01H MOV TH0,#3CH MOV TL0,#0B0H SETB TR0 RE

14、T 9. 簡述矩陣鍵盤的行列掃描和線反轉(zhuǎn)法原理。 (1)行列掃描法: 在按鍵識(shí)別過程時(shí),依次使行線輸出電平,然后檢查列線的輸入電平,如果所有列線的輸入全為高電平,則該行無按鍵按下;如果不全為高電平,則被按下的按鍵在本行,且在輸入電平變?yōu)榈碗娖降牧械慕徊纥c(diǎn)上。 (2)線反轉(zhuǎn)法: 第一步,首先使行線為輸入,列線為輸出。列線全部輸出低電平,那么,行線中變?yōu)榈碗娖降男芯€為按鍵所在的行。 第二步,使行線變?yōu)檩敵?,列線變?yōu)檩斎搿P芯€輸出全部為低電平,那么,列線中變?yōu)榈碗娖降牧芯€為按鍵所在的列。 10. 一個(gè)簡單計(jì)數(shù)器的電路原理圖如圖所示。要求每按一次S鍵,計(jì)數(shù)器計(jì)數(shù)一次,計(jì)數(shù)值送P

15、1口顯示,采用單只數(shù)碼管顯示,計(jì)16次后從0開始。 圖9.6 題10原理圖 1 BIT P3.3 VALUE EQU 20H ORG 0000H LJMP MAIN ORG 1000H MAIN: SETB P3.3 MOV VALUE,#00 ACALL DISP ;初始化顯示0 WAIT0: JB S1,WAIT0; ACALL DEL10MS WAIT1: JB S1,WAIT1 ;判斷按下 WAIT2: JNB S1,WAIT2; ACALL DEL10MS WAIT3: J

16、NB S1,WAIT3 ;判斷釋放 INC VALUE ;加1 ANL VALUE,#00001111B ;僅顯示低位 ACALL DISP ;顯示 SJMP WAIT0 //顯示子程序 DISP: MOV A,VALUE ;取顯示信息 MOV DPTR, #SEG_TAB ;字型碼表的首地址 MOVC A,@A+DPTR ;通過顯示信息查其字型碼 MOV P1,A ;輸出顯示 NOP RET //延時(shí)子程序 DEL10MS:MOV R5,#10 DELX: MOV R6

17、,#200 DEL0: NOP NOP NOP DJNZ R6,DEL0 DJNZ R5,DELX RET SEG_TAB: DB 0C0H, 0F9H, 0A4H, 0B0H, 99H, 92H, 82H, 0F8H, 80H, 90H DB 88H, 83H, 0C6H, 0A1H, 86H, 8EH ;以下為顯示字型碼表,0~9,A~F END 11. 簡述LED數(shù)碼管的靜態(tài)顯示和動(dòng)態(tài)顯示原理。 (1)靜態(tài)顯示:在多位靜態(tài)顯示時(shí),各個(gè)LED數(shù)碼管相互獨(dú)立,公共端COM接地(共陰極)或接正電源(共陽極)

18、。每個(gè)數(shù)碼管的8個(gè)顯示字段控制端分別與一個(gè)8位并行輸出口相連,只要輸出口輸出字型碼,LED數(shù)碼管就立即顯示出相應(yīng)的字符,并保持到輸出口輸出新的字型碼。 (2)動(dòng)態(tài)顯示:多位LED數(shù)碼管動(dòng)態(tài)顯示方式是各個(gè)LED數(shù)碼管一位一位地輪流顯示。在硬件電路上,各個(gè)數(shù)碼管的顯示字段控制端并聯(lián)在一起,由一個(gè)8位并行輸出口控制;各個(gè)的LED數(shù)碼管的公共端作為顯示位的位選線,由另外的輸出口控制。動(dòng)態(tài)顯示時(shí),各個(gè)數(shù)碼管分時(shí)輪流地被選通,即在某一時(shí)刻只選通一個(gè)數(shù)碼管,并送出相應(yīng)的字型碼,并讓該數(shù)碼管穩(wěn)定地顯示一段短暫的時(shí)間,在下一時(shí)刻選通另一位數(shù)碼管,并送出相應(yīng)的字型碼顯示,并保持顯示一段時(shí)間,如此循環(huán),即可以在

19、各個(gè)數(shù)碼管上顯示需要顯示的字符。 圖9.7 LED數(shù)碼管靜態(tài)顯示原理 圖9.8 LED數(shù)碼管動(dòng)態(tài)顯示原理 12. 用P1和P3口作為輸出口,設(shè)計(jì)一個(gè)5位的LED數(shù)碼管顯示系統(tǒng),并在顯示器上顯示“HELLO”。 圖 9.9 題12接口電路圖 接口電路圖如圖9.9所示,用2片74LS245提高接口的驅(qū)動(dòng)能力,LED數(shù)碼管為共陰型。程序如下: SEG_OUT EQU P3 BIT_OUT EQU P1 //==================================== ORG 0000H LJMP STAR

20、T ORG 0030H START: MOV SP,#60H MOV 20H,#40H //顯示" HELLO" 對(duì)應(yīng)字型表序號(hào)編碼:40 12 23 MOV 21H,#12H MOV 22H,#23H MOV R1,#30H MOV R0,#20H CALL SPLIT INC R0 INC R1 CALL SPLIT INC R0 INC R1 CALL SPLIT RED: ACALL DSPLY1 SJMP RED //===============================

21、==== SPLIT: MOV A,@R0 ANL A,#0F0H SWAP A MOV @R1,A INC R1 MOV A,@R0 ANL A,#0FH MOV @R1,A RET //=========================================== //6位顯示 DSPLY1: MOV R0, #30H ;顯示緩沖區(qū)地址 MOV R2, #11111110B ;顯示起始位置 REDO: ACALL DISP ;顯示1位

22、 MOV A, R2 ;計(jì)算下一個(gè)顯示位置 RL A MOV R2, A INC R0 ;修改顯示緩沖區(qū)地址指針 XRL A, #10111111B ;6位顯示完否 JNZ REDO ;未完,繼續(xù)顯示 RET ;返回 //========================================== ;顯示一位子程序 DISP

23、: MOV DPTR, #LED_SEG ;字型碼表首地址 MOV A, @R0 ;取顯示數(shù)據(jù) MOVC A, @A+DPTR ;求顯示數(shù)據(jù)的字型碼 MOV SEG_OUT, A ;輸出字型碼 MOV A, R2 ;取顯示位置 MOV BIT_OUT, A ;顯示 ACALL DL1MS MOV A,#0FFH ;穩(wěn)定顯示1ms MOV BIT_OUT,A RET ;字型碼表 LED_SEG:

24、DB 76H ; H 序號(hào):00 DB 79H ; E 序號(hào):01 DB 38H ; L 序號(hào):02 DB 3FH ; 0 序號(hào):03 DB 00H ; BLANK 序號(hào):04 DL1MS: MOV R5,#200; 12M時(shí)延時(shí)1ms DEL: NOP NOP NOP DJNZ R5,DEL RET END 13. 一個(gè)顯示電路如圖9.60所示。請(qǐng)采用串行口方式0實(shí)現(xiàn)LED數(shù)碼管的動(dòng)態(tài)顯示,在顯示器上自左向右動(dòng)態(tài)顯示“654321”,每個(gè)字符保持時(shí)間為0.1s。 圖9.10 習(xí)題13原

25、題電路圖 ORG 0000H LJMP START ORG 0030H START: MOV SP,#60H MOV 20H,#12H //顯示數(shù)據(jù) MOV 21H,#34H MOV 22H,#56H MOV R1,#30H MOV R0,#20H CALL SPLIT //分離BCD碼 INC R0 INC R1 CALL SPLIT INC R0 INC R1 CALL SPLIT RED: ACALL DISPLY SJMP RED //============

26、======================= SPLIT: MOV A,@R0 ANL A,#0F0H SWAP A MOV @R1,A INC R1 MOV A,@R0 ANL A,#0FH MOV @R1,A RET //================================ DISPLY: MOV R0, #30H ;顯示緩沖區(qū)首地址 MOV R2, #05H ;顯示位置,最右端1位 NEXT: ACALL DISP11 ;顯示

27、INC R0 ;修改顯示緩沖區(qū)地址指針 DEC R2 ;計(jì)算下一位顯示位置 CJNE R2, #0FFH, NEXT ;6位顯示完否? RET ;顯示完返回 ;顯示1位子程序 DISP11: MOV A, @R0 ;取顯示數(shù)據(jù) MOV DPTR, #SEG_TAB MOVC A, @A+DPTR ;取顯示數(shù)據(jù)的字型碼 MOV SBUF, A ;輸出字型

28、碼 GOON: JBC TI, DPLY AJMP GOON DPLY: MOV A, R2 MOV P1, A ;輸出顯示位置 ACALL DL100MS ;延時(shí) MOV P1,#07H RET ;字型碼表 SEG_TAB:DB 0C0H, 0F9H, 0A4H, 0B0H, 99H, 92H, 82H, 0F8H, 80H, 90H DB 88H, 83H, 0C6H, 0A1H, 86H, 8EH //=

29、=================================== DL1MS: MOV R5,#200; 12M時(shí)延時(shí)1ms DEL: NOP NOP NOP DJNZ R5,DEL RET DL100MS:MOV R6,#100 DELX0: ACALL DL1MS DJNZ R6,DELX0 RET END 14. 采用8155或8255擴(kuò)展I/O口,設(shè)計(jì)一個(gè)顯示電路顯示“654321”。 圖9.11 采用8255擴(kuò)展的LED數(shù)碼管動(dòng)態(tài)顯示接口電路 圖9.11為采用8255擴(kuò)展的LED數(shù)碼管動(dòng)態(tài)顯示

30、接口電路。圖中PA口用于輸出字型碼,PB口用于輸出顯示位置,LED數(shù)碼管為共陰型,顯示位置采用譯碼器譯碼的方式實(shí)現(xiàn)。在電路中采用同相緩沖器74LS07提高PA口的驅(qū)動(dòng)能力,同相驅(qū)動(dòng)器SN75451用于驅(qū)動(dòng)顯示器的公共端。電路中8255的PA和PB口處于基本輸入/輸出方式的輸出模式,PA口地址為0000H,PB口為0001H,命令寄存器地址為0003H。定義SEG_OUT為PA口地址,BIT_OUT為PB口地址。程序如下: //定義區(qū) SEG_OUT EQU 0000H //PortA 輸出字型碼 BIT_OUT EQU 0001H //PortB輸出位控碼 PortC

31、EQU 0002H// CMMD EQU 0003H//命令寄存器地址 //======================== ORG 0000H LJMP START ORG 0030H START: MOV SP,#60H MOV DPTR,#CMMD //8255初始化 MOV A,#10000000B //方式0,A/B/C口為輸出 MOVX @DPTR,A NOP NOP MOV 20H,#12H //顯示數(shù)據(jù) MOV 21H,#24H MOV 22H,#56H MOV R1,#30H

32、 MOV R0,#20H CALL SPLIT INC R0 INC R1 CALL SPLIT INC R0 INC R1 CALL SPLIT RED: ACALL DSPLY2 SJMP RED //=================================== SPLIT: MOV A,@R0 ANL A,#0F0H SWAP A MOV @R1,A INC R1 MOV A,@R0 ANL A,#0FH MOV @R1,A RET //==============

33、============================= //6位顯示 DSPLY2: MOV R0, #30H ;顯示緩沖區(qū)首地址 MOV R2, #00000000B ;顯示起始位置 REDO: ACALL DISP ;顯示1位 INC R2 ;計(jì)算下一次的顯示位置 INC R0 ;修改顯示緩沖區(qū)指針 CJNE R2, #06H, REDO ;6位顯示完否? RET ;顯示結(jié)束返回 //===============

34、=========================== ;顯示一位子程序 DISP: MOV DPTR, #LED_SEG ;字型碼表首地址 MOV A, @R0 ;取顯示數(shù)據(jù) MOVC A, @A+DPTR ;求顯示數(shù)據(jù)的字型碼 MOV DPTR, #SEG_OUT ;字型碼輸出口地址 MOVX @DPTR, A ;輸出字型碼 MOV A, R2 ;取顯示位置 MOV DPTR, #BIT_OUT ;顯示位置輸出口地址

35、 MOVX @DPTR, A ;顯示 ACALL DL1MS MOV A,#0FFH ;穩(wěn)定顯示1ms MOVX @DPTR, A RET ;字型碼表 LED_SEG: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H ;0,1,2,3,4,5,6,7 DB 7FH,6FH,77H,7CH,39H,5EH,79H,71H ;8,9,A,B,C,D,E,F DB 3EH, 50H, 40H, 08H, 00H ;U,

36、 r, -, _, BLANK //====================================== DL1MS: MOV R5,#200; 12M時(shí)延時(shí)1ms DEL: NOP NOP NOP DJNZ R5,DEL RET END 15. 一個(gè)單片機(jī)的鍵盤顯示系統(tǒng)采用34矩陣式鍵盤、8位LED數(shù)碼管顯示器。12個(gè)按鍵定義為數(shù)字鍵0~9、功能鍵ENTER和STOP。系統(tǒng)工作時(shí),鍵入一組數(shù)值,按下ENTER鍵后,新數(shù)值替換原來的顯示值在顯示器上循環(huán)顯示,按下STOP鍵,循環(huán)顯示終止,顯示數(shù)據(jù)被清除。設(shè)計(jì)硬件電路和編寫相應(yīng)的程序。 圖

37、9.12 題15原理圖 //defination SEG_OUT EQU P2 //字型輸出 BIT_OUT EQU P3 //位控輸出 DISPBUF EQU 40H //顯示緩沖區(qū)40H~47H SETPTR EQU 38H //設(shè)定數(shù)據(jù)時(shí)的存指針的單元 HOLDTIME EQU 39H //ENTER時(shí),存儲(chǔ)每位穩(wěn)定時(shí)間的單元 DLETIME EQU 255 //enter穩(wěn)定時(shí)間 BIT_CODE EQU 3AH //ENTER時(shí)存字型的單元 BIT_LOC EQU 3BH //ENTER時(shí)存位

38、控的單元 ETR_FLAG BIT 28H.0 //ENTER按下標(biāo)志 STP_FLAG BIT 28H.1 //STOP按下標(biāo)志 //============================ ORG 0000H LJMP START ORG 0030H START: MOV SP,#60H //======================ENTER按下的初始化================= CLR ETR_FLAG CLR STP_FLAG MOV HOLDTIME,#DLETIME //ENTER按下時(shí),每

39、位的保持時(shí)間 MOV BIT_CODE,#DISPBUF MOV BIT_LOC,#01111111B //===========清顯示緩沖區(qū)========= MOV R0,#DISPBUF MOV R3,#8 ACALL CLRRAM; MOV SETPTR,#DISPBUF //設(shè)定指針初始化,未鍵入數(shù)據(jù)時(shí),顯示“-” MOV DISPBUF,#12H SCANK: MOV P1,#0FH //鍵盤掃描 MOV A,P1 ANL A,#00000111B XRL A,#00000111B JZ NON0

40、 ACALL DL20MS //消抖 MOV P1,#0FH MOV A,P1 ANL A,#00000111B XRL A,#00000111B JZ NON0 //鍵按下 //此處判斷哪個(gè)鍵按下 MOV R3,#11101111B CONTI: MOV P1,R3 MOV A,P1 // 逐行掃描 ANL A,#00000111B XRL A,#00000111B JNZ FOUND MOV A,R3 RL A MOV R3,A XRL A,#11

41、111110B JNZ CONTI NON0: JMP NON //沒有鍵按下 FOUND: MOV P1,#00000111B MOV A,P1 ANL A,#00001111B MOV R4,A //暫存列編碼 MOV A,R3 ANL A,#11110000B //取行編碼 ORL A,R4 MOV R4,A // 存特征碼,等待鍵釋放 NO_RLSE:MOV P1,#0FH //鍵釋放 MOV A,P1 ANL A,#00000111B XRL A,#00000111B JNZ NO_RLSE

42、 ACALL DL20MS //消抖 MOV P1,#0FH MOV A,P1 ANL A,#00000111B XRL A,#00000111B JNZ NO_RLSE MOV A,R4 CJNE A,#0E6H,NUM2 MOV R4,#01H JMP GODISP //1 NUM2: CJNE A,#0E5H,NUM3 MOV R4,#02H //2 JMP GODISP NUM3: CJNE A,#0E3H,NUM4 MOV R4,#03H //3

43、 JMP GODISP NUM4: CJNE A,#0D6H,NUM5 MOV R4,#04H //4 JMP GODISP NUM5: CJNE A,#0D5H,NUM6 MOV R4,#05H //5 JMP GODISP NUM6: CJNE A,#0D3H,NUM7 MOV R4,#06H JMP GODISP //6 NUM7: CJNE A,#0B6H,NUM8 MOV R4,#07H JMP GODISP //7 NUM8: CJNE A,#0B5H,NUM9 MOV

44、R4,#08H JMP GODISP //8 NUM9: CJNE A,#0B3H,ENTER MOV R4,#09H JMP GODISP //9 ENTER: CJNE A,#076H,NUM0 MOV R4,#0AH //ENTER JMP ETR_DISP //ENTER按下,循環(huán)顯示 NUM0: CJNE A,#075H,STOP MOV R4,#00H //0 JMP GODISP STOP: CJNE A,#073H,NUMX MOV R4,#0

45、BH JMP STP_DISP // STOP按下 NUMX: JMP NON //沒有按鍵按下 GODISP: CLR ETR_FLAG CLR STP_FLAG MOV R0,SETPTR MOV A,R4 MOV @R0,A INC R0 MOV SETPTR,R0 CJNE R0,#DISPBUF+8,GOON MOV SETPTR,#DISPBUF GOON: JMP RED NON: JB ETR_FLAG,ETR_DISP //無鍵按下,之前ENTER按下 JB

46、 STP_FLAG,STP_DISP //無鍵按下,之前STOP按下 //無鍵按下,之前有數(shù)字鍵按下 RED: MOV R0,#DISPBUF ACALL DSPLY1 //顯示鍵入的數(shù)據(jù) JMP SCANK ETR_DISP:MOV SETPTR,#DISPBUF //enter件按下,設(shè)定數(shù)據(jù)循環(huán)顯示 SETB ETR_FLAG MOV R0,BIT_CODE MOV R2,BIT_LOC ;顯示起始位置 ACALL DISP ;顯示1位

47、 DJNZ HOLDTIME, SKIP0 MOV HOLDTIME,#DLETIME MOV A, BIT_LOC ;計(jì)算下一個(gè)顯示位置 RR A MOV BIT_LOC,A INC BIT_CODE ;修改顯示緩沖區(qū)地址指針 XRL A,#01111111B ;8位顯示完否 JNZ SKIP0 MOV BIT_CODE,#DISPBUF MOV BIT_LOC,#01111111B MOV HOLDT

48、IME,#DLETIME ;未完,繼續(xù)顯示 SKIP0: JMP SCANK ;返回 //STOP處理 STP_DISP: MOV SETPTR,#DISPBUF SETB STP_FLAG MOV R0,#DISPBUF MOV R3,#8 ACALL CLRRAM; //清顯示緩沖區(qū)內(nèi)容 MOV DISPBUF,#12H MOV R0,#DISPBUF //最左邊顯示“-” ACALL DSPLY1 JMP SCANK //============================

49、=============== //8位顯示 DSPLY1: MOV R2, #01111111B ;顯示起始位置 REDO: ACALL DISP ;顯示1位 MOV A, R2 ;計(jì)算下一個(gè)顯示位置 RR A MOV R2, A INC R0 ;修改顯示緩沖區(qū)地址指針 XRL A, #01111111B ;8位顯示完否 JNZ RE

50、DO ;未完,繼續(xù)顯示 RET ;返回 //========================================== ;顯示一位子程序 DISP: MOV DPTR, #LED_SEG ;字型碼表首地址 MOV A, @R0 ;取顯示數(shù)據(jù) MOVC A, @A+DPTR ;求顯示數(shù)據(jù)的字型碼 MOV SEG_OUT, A ;輸出字型碼 MOV A, R2 ;取顯示位置 MOV BIT_OUT, A

51、 ;顯示 ACALL DL1MS MOV A,#0FFH ;穩(wěn)定顯示1ms MOV BIT_OUT,A RET ;字型碼表 LED_SEG: DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H ;0,1,2,3,4,5,6,7 DB 7FH,6FH,77H,7CH,39H,5EH,79H,71H ;8,9,A,B,C,D,E,F DB 3EH, 50H, 40H, 08H, 00H ;U, r, -, -, BLANK D

52、L1MS: MOV R5,#200; 12M時(shí)延時(shí)1ms DEL: NOP NOP NOP DJNZ R5,DEL RET DL20MS: MOV R7,#20; 12M時(shí)延時(shí)20ms DEL00: ACALL DL1MS DJNZ R7,DEL00 RET CLRRAM: MOV @R0,#14H //不顯示 INC R0 DJNZ R3,CLRRAM RET END 16. 簡述A/D和的作用。 A/D把模擬量變成數(shù)字量。 D/A把數(shù)字量轉(zhuǎn)換成模擬量。 17. 在檢測(cè)系統(tǒng)中,通常采用均值濾

53、波的方法來消除檢測(cè)數(shù)據(jù)的隨機(jī)干擾,即連續(xù)采樣多次,取平均值作為測(cè)量值。采用ADC0809設(shè)計(jì)一個(gè)檢測(cè)系統(tǒng),對(duì)IN5通道接入的模擬采樣8次,把它們的均值存放在30H單元。 圖9.12 題17的MCS-51單片機(jī)與ADC0809的接口電路 18. 采用ADC0809設(shè)計(jì)一個(gè)8路巡回檢測(cè)系統(tǒng),每隔50ms對(duì)8個(gè)回路檢測(cè)1次,并把采樣值存儲(chǔ)在40H開始的區(qū)域。系統(tǒng)晶振頻率為12MHz。 接口電路與題17相同。程序流程圖見圖9.13。程序如下: ORG 0000H LJMP START ORG 000BH LJMP Timer0Interrupt START: MOV SP

54、,#60H LCALL InitTimer0 MOV R0,#40H ;置數(shù)據(jù)區(qū)首地址指針 MOV R6,#00H ;指向模擬量輸入通道0,通道地址的低八位 LOOP: NOP LJMP LOOP InitTimer0: ;定時(shí)器0,定時(shí)50ms MOV TMOD, #01H MOV TH0, #3CH MOV TL0, #0B0H SETB EA SETB ET0 SETB TR0 RET Timer0Interrupt: PUSH DPH PUSH DPL PUSH ACC MOV TH0, #3

55、CH MOV TL0, #0B0H MOV DPH, #0BFH ;P2.6=0,通道地址的高八位 MOV DPL,R6 ;模擬通道0 MOVX @DPTR,A ;啟動(dòng)A/D 轉(zhuǎn)換。 WAITAD: JB P3.3, WAITAD MOVX A,@DPTR ;讀A/D 轉(zhuǎn)換結(jié)果 MOV @R0,A ;存轉(zhuǎn)換結(jié)果 INC R0 ;修改數(shù)據(jù)區(qū)指針 INC R6 ;模擬通道地址加1 CJNE R6,#08,EXIT ;8個(gè)通道全采樣完了嗎? MOV R6,#00H ;8路巡檢結(jié)束,重新采樣模擬量輸入通道IN0 MOV R0

56、,#40H ;重設(shè)數(shù)據(jù)區(qū)首地址指針 EXIT: POP ACC POP DPL POP DPH RETI END 19. 采用2片ADC0809為8051單片機(jī)擴(kuò)展16路模擬量輸入通道。 圖9.13 地址分析: IC2:P2.7=1,P2.6=0,8個(gè)通道地址為: IN0:8000H; IN1:8001H IN2:8002H; IN3:8003H IN4:8004H; IN5:8005H IN6:8006H; IN7:8007H IC3:P2.7=0,P2.6=1,8個(gè)通道地址為: IN0:4000H; IN1:4001H

57、 IN2:4002H; IN3:4003H IN4:4004H; IN5:4005H IN6:4006H; IN7:4007H 圖9.14 2片ADC0809為8051單片機(jī)接口電路圖 20. 用8051單片機(jī)和DAC0832設(shè)計(jì)一個(gè)應(yīng)用系統(tǒng),輸出連續(xù)的三角波。 接口電路和程序框圖見圖9.15。 ORG 0020H MOV DPTR,#7FFFH ;指向0832 LOOP: MOV R2,#0FFH ;循環(huán)次數(shù) MOV A,#00H ;賦初值 LOOP1:MOVX @DPTR,A ;D/

58、A轉(zhuǎn)換輸出 INC A DJNZ R2,LOOP1 MOV R2,#0FEH LOOP2:DEC A MOVX @DPTR,A DJNZ R2,LOOP2 ALMP LOOP END (a)接口電路 (b)程序流程框圖 圖9.15 題20接口電路和程序流程框圖 21. 用8051單片機(jī)和DAC0832設(shè)計(jì)一個(gè)應(yīng)用系統(tǒng),連續(xù)輸出周期為5.12秒的三

59、角波(提示:每10ms轉(zhuǎn)換1次,三角波的周期等于定時(shí)時(shí)間轉(zhuǎn)換次數(shù))。 接口電路如圖9.15。程序框圖見圖9.16 圖9.16 題21程序流程圖 ORG 0000H LJMP START ORG 000BH LJMP Timer0Interrupt START: MOV SP, #60H LCALL InitTimer0 ;定時(shí)初始化 MOV R6,#0 ;三角波DA轉(zhuǎn)換值,起始值為0 MOV R7,#0 ;三角波上升下降標(biāo)志,0 = 上升,1 = 下降 LOOP: ;主處理程序 NOP NOP ALMP LOOP I

60、nitTimer0: MOV TMOD,#01H MOV TH0, #0D8H MOV TL0, #0F0H SETB EA SETB ET0 SETB TR0 RET Timer0Interrupt: MOV TH0, #0D8H MOV TL0, #0F0H CJNE R7, #0, LOOP1 INC R6 CJNE R6, #0FFH, LOOP01 MOV R7, #1 LOOP01: MOV DPTR, #7FFFH ;指向0832 MOV A, R6 MOVX @DPTR,A ;D/A轉(zhuǎn)換輸出 SJMP RET0 LOOP1: D

61、EC R6 CJNE R6, #0, LOOP11 MOV R7, #0 LOOP11: MOV DPTR, #7FFFH ;指向0832 MOV A, R6 MOVX @DPTR,A ;D/A轉(zhuǎn)換輸出 SJMP RET0 RET0: RETI END 22. 用8051單片機(jī)和DAC0832設(shè)計(jì)一個(gè)應(yīng)用系統(tǒng),輸出占空比為50%的雙極性方波,幅值在–5~+5V之間。 接口電路見圖9.17,程序流程框圖見圖9.18。 根據(jù)圖9.17接口電路的連接關(guān)系,可以推導(dǎo)出下列公式: 程序流程框圖見圖9.17。 程序如下: ORG 1000H START: MOV DPTR,#7FFFH LOOP: MOV A,#00H MOVX @DPTR,A CALL DELAY10MS MOV A,#0FFH MOV @DPTR,A CALL DELAY10MS JMP LOOP 圖9.17 接口電路圖 圖9.18 程序流程圖

展開閱讀全文
溫馨提示:
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ì)自己和他人造成任何形式的傷害或損失。

相關(guān)資源

更多
正為您匹配相似的精品文檔
關(guān)于我們 - 網(wǎng)站聲明 - 網(wǎng)站地圖 - 資源地圖 - 友情鏈接 - 網(wǎng)站客服 - 聯(lián)系我們

copyright@ 2023-2025  zhuangpeitu.com 裝配圖網(wǎng)版權(quán)所有   聯(lián)系電話:18123376007

備案號(hào):ICP2024067431號(hào)-1 川公網(wǎng)安備51140202000466號(hào)


本站為文檔C2C交易模式,即用戶上傳的文檔直接被用戶下載,本站只是中間服務(wù)平臺(tái),本站所有文檔下載所得的收益歸上傳人(含作者)所有。裝配圖網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)上載內(nèi)容本身不做任何修改或編輯。若文檔所含內(nèi)容侵犯了您的版權(quán)或隱私,請(qǐng)立即通知裝配圖網(wǎng),我們立即給予刪除!