<th id="jklfj"></th>
    <tbody id="jklfj"></tbody>
    <th id="jklfj"></th>
    <progress id="jklfj"></progress>
    <ol id="jklfj"><ruby id="jklfj"><u id="jklfj"></u></ruby></ol>
    <legend id="jklfj"></legend>

    單片機原理及應用習題答案 聯系客服

    MOVX @DPTR,A ACALL DELY INC R1

    MOV A,R2 RR A

    ;字段碼送PB口 ;調用1ms延時

    ;未完,字位碼右移一位

    ;指向下一字符

    JB ACC.0,FINA ;判斷8位顯示完否 MOV R2,A SJMP LOOP RET

    ;轉下一位顯示

    FINA:

    TAB1: DB 6FH,5CH,5CBH,5EH ;good by的字段碼表

    DB 00H,7CH,2EH,00H

    DELY: MOV R7,#02H ;延時子程序 DEL1: MOV R6,#0FFH DEL2: DJNZ R6,DEL2 并編程。

    解:8031擴展的8255 I/O口,連接一個4行6列鍵盤電路如下圖所示。

    P0D0~D7ALEGCEQ0Q1Q7D0~D7A0A1CS

    DJNZ R7,DEL1 RET

    7.8.利用8031擴展的8255 I/O口,連接一個4行6列鍵盤,要求畫出電路圖和鍵盤管理程序流程圖,

    PA5PA4PA3PA2PA1PA0PB00PB1617283945+5V80518255A1011RDWRRSTRDWRRESETPB2121314151617PB31819202122238051單片機與8255A接口的鍵盤電路的連接程序流程圖略,參考程序如下:

    MAIN: MOV R0,#73H

    MOV A,#82H MOVX

    @R0,A

    ;8255控制口

    ;8255控制字(A口輸出,B口輸入)

    在鍵掃描子程序中共調用另外兩個子程序,分別是:DELY 12ms延時子程序,軟件消抖動。 DECI 判斷子程序,判斷是否有鍵閉合。程序如下:

    DECI:MOV R0,#70H ;PA口地址

    MOV A,#00H MOVX @R0,A

    INC R0 CPL A

    ;PB口地址

    ;A取反,無鍵按下則全0

    MOVX A,@R0 ;讀PB口

    ;PA口送00H

    ANL A,#0FH RET

    ;屏蔽A高半字節

    執行DECI子程序的結果是:有閉合鍵則(A)≠0,無閉合鍵則(A)=0。 鍵盤掃描程序: KEYB: ACALL DECI ;檢查有鍵閉合否

    LK1: LK2: LK4:

    LONE: LTWO: LTHR: LKP : LK3:

    NEXT:`

    KND: DELY: DEL1:

    JNZ LK1

    ;A≠0則轉移

    AJMP KEYB

    ACALL DELY ;共12ms去抖動 ACALL DECI ;再檢查有鍵閉合否 JNZ LK2

    ;有鍵閉合,轉LK2

    AJMP KEYB ;無鍵閉合,延時6ms后轉KEYB MOV R2,#FEH ;掃描處值送R2

    MOV R4,#00H ;掃描列號送R4 MOV R0,#70H ;建立PA口地址 MOV A,R2

    MOVX @R0,A ;掃描初值送PA口 INC R0

    ;指向PB口

    MOVX

    A,@R0 ;讀PB口

    JB ACC.0,LONE ;ACC.0=1第1行無鍵閉合,轉LONE MOV A,#00H ;裝第1行行值 AJMP

    LKP

    JB ACC.1,LTWO ;ACC.1=1第2行無鍵閉合,轉LTWO

    MOV A,#06H ;裝第2行行值

    AJMP

    LKP

    JB ACC.2,LTHR ;ACC.2=1,第3行無閉合鍵,轉LTHR

    MOV A,#0CH ;裝第3行行值

    AJMP

    LKP

    JB ACC.3,NEXT ;ACC.3=1,第4行無鍵閉合則轉NEXT

    MOV A,#12H ;裝第4行行值 ADD A,R4 ;計算鍵碼 PUSH ACC

    ;保護鍵碼

    ACALL DECI

    ;查鍵是否繼續閉合,若閉合再延時 JNZ LK3 POP ACC ;若鍵起,則鍵碼送A RET INC R4

    ;掃描列號加1

    MOV A,R2

    JNB ACC.5,KND ;第5位為0,已掃完最高位則轉KND RL A MOV R2,A AJMP LK4

    ;進行下一列掃描 AJMP KEYB ;掃描完畢,開始新的一次

    MOV R7,#18H ;延時12ms子程序(晶振12MHZ)

    DJNZ R6,DEL1

    DJNZ RET

    R7,DELY

    鍵盤掃描程序的運行結果,是把閉合鍵的鍵碼放在累加器A中。然后再根據鍵碼進行其它處理。 7.9.以DAC0832為例說明D/A轉換器單緩沖接口方式的實現。

    解:所謂單緩沖方式就是使0832的兩個寄存器中有一個處于直通方式,而另一個處于

    受控的鎖存方式。在實際應用中,如果只有一路模擬量輸出,或雖有幾路模擬量但并不要求同步輸出的情況下,就可采用單緩沖方式。單緩沖方式如圖7.30所示,DAC0832的ILE接高電平,允許輸入數據鎖存,WR1和WR2都與8051的WR相接,CS和XFER與8051的P2.7(A15)相連,假設無關地址線為1,則0832的口地址為7FFFH。這種連接方法是把0832看作8051的一個帶有數據鎖存功能的輸出設備。CPU把一個8位數據#data寫入DAC寄存器,也就實現了一次D/A轉換,輸出一個與#data對應的模擬量。轉換過程的程序如下:

    DAC0832VccILEVrefDI0~DI7RfbCSIout1XFERIout2WR1AGNDWR2DGND+5VP0ALE8051P2.7WR74LS373G-A+Vout圖7.30 DAC0832單緩沖方式接口

    MOV DPTR,#7FFFH ;指向0832的口地址

    MOV A,#data ;取將要轉換的8位數據量送A MOVX @DPTR,A ;寫入0832,進行一次D/A轉換并輸出

    7.10.以DAC0832為例說明D/A轉換器雙緩沖接口方式的實現。

    解:所謂雙緩沖方式,就是把DAC0832的兩個鎖存器都接成受控鎖存方式。雙緩沖方式DAC0832的連接如圖7.35示。

    為了實現寄存器的可控,應當給寄存器分配一個地址,以便能按地址進行操作。圖中是使用地址譯碼

    圖7.35 DAC0832的雙緩沖方式的連接

    輸出分別接CS和XFER實現的。然后再給WR1和WR2提供寫選通信號。這樣就完成了兩個鎖存器都可控的雙緩沖接口方式。

    由于兩個鎖存器占據兩個地址,因此在程序中需要使用兩條傳送指令,才能完成一個數字量的模擬轉換。假定輸入寄存器地址為FEH,DAC寄存器地址為FFH。則完成一次數/模轉換的程序如下:

    MOV R0,#FEH

    MOVX @R0,A INC R0

    MOVX @R0,A

    ;裝入輸入寄存器地址 ;轉換數據送輸入寄存器 ;產生DAC寄存器地址 ;數據通過DAC寄存器

    7.11.A/D轉換器轉換數據的傳送有幾種方式? 答:A/D轉換器轉換數據的傳送有3種方式: 1.定時傳送方式

    對于一種A/D轉換器來說,轉換時間作為一項技術指標是已知和固定的。例如ADC0809轉換時間為128μs,相當于6MHZ的MCS-51單片機共64個機器周期。

    2.查詢方式

    A/D轉換芯片有表明轉換完成的狀態信號,例如ADC0809的EOC端。因此可以用查詢方式,軟件測試EOC的狀態,即可確知轉換是否完成,并接著進行數據傳送。

    3.中斷方式

    把表明轉換完成的狀態信號EOC作為中斷請求信號,以中斷方式進行數據傳送。 7.12.簡述逐次逼近式A/D轉換的原理。 答:略

    7.13.多片D/A轉換器為什么必須采用雙緩沖接口方式?

    答:雙緩沖方式多用于多路數/模轉換系統,以實現多路模擬信號同步輸出的目的。

    第14題圖 第15題圖

    7.14.使用D/A轉換器產生梯形波,梯形底部在0V,梯形頂部在+2.5V,平頂寬度自定,請編程實現。 解:采用圖7.30 DAC0832單緩沖方式接口,參考程序如下:

    MOV MOV MOVX INC CJNZ LCALL MOV DEC JNZ LCALL MOV DJNZ DJNZ RET

    DPTR,#7FFFH;輸入寄存器地址 A,#00H @DPTR,A A

    ;轉換初值 ;D/A轉換 ;轉換值增量 ;調延時程序

    UP:

    A,#80H,UP;80H為+2.5V輸出對應的數字量 DELAY A,#7FH @DPTR,A A

    A,DOWN DELAY R7,#2 R6,#0FFH R6,DL1 R7,DL2

    DOWN: MOVX

    DELAY: MOV DL2: DL1:

    7.15.使用D/A轉換器產生如圖所示的三角波,請編程實現 解:根據圖7.30,參考程序如下:

    MOV

    DPTR,#7FFFH