版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、第九章復(fù)習(xí)思考題1. 計(jì)算機(jī)系統(tǒng)中為什么要設(shè)置輸入輸出接口?輸入/輸出接口電路是CPU與外設(shè)進(jìn)行數(shù)據(jù)傳輸?shù)臉蛄?。外設(shè)輸入給CPU的數(shù)據(jù),首先由外設(shè)傳遞到輸入接口電路,再由CPU從接口獲??;而CPU輸出到外設(shè)的數(shù)據(jù),先由CPU輸出到接口電路,然后與接口相接的外設(shè)獲得數(shù)據(jù)。CPU與外設(shè)之間的信息交換,實(shí)際上是與I/O接口電路之間的信息交換。2. 簡(jiǎn)述輸入輸出接口的作用。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ù)據(jù)的控制方式有哪幾種?
2、各有什么特點(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ù)傳輸。在中斷控制方式下,當(dāng)接口準(zhǔn)備好數(shù)據(jù)傳輸時(shí)向CPU提出中
3、斷請(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 源程序:MOV DPTR,#BFFFH;設(shè)置輸入/輸出口地址COMT:MOVX A,DPT
4、R;讀取開關(guān)狀態(tài)NOP;延時(shí),總線穩(wěn)定MOVX DPTR,A;輸出,驅(qū)動(dòng)LED顯示NOP;延時(shí),總線穩(wěn)定AJMP CONT5. 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ò)展的輸出口電路如圖9-2所示。用P2.7與74LS377的使能控制端相連,當(dāng)P2.7為0時(shí),74LS377被選中,如果默認(rèn)其他未用的地址線為1,則擴(kuò)展的輸出口地址為7FFFH。由于MCS-5
5、1單片機(jī)的接到74LS377的時(shí)鐘輸入端CLK,當(dāng)CPU執(zhí)行寫外部輸出口指令MOVX時(shí),把數(shù)據(jù)輸出到數(shù)據(jù)總線上,在信號(hào)由低變高時(shí),寫出的數(shù)據(jù)被打入74LS377并鎖存。程序如下:MOVDPTR,#7FFFH;輸出口地址MOVA,R6;取數(shù)據(jù)MOVXDPTR,A;輸出,6. 74LS245是一種具有雙向驅(qū)動(dòng)的8位三態(tài)輸出緩沖器,它的功能表見表9.18,其中為使能端,DIR為方向控制端,A1A8為A端的數(shù)據(jù)輸入/輸出,B1B8為B端的數(shù)據(jù)輸入/輸出。當(dāng)為低電平時(shí),DIR為高電平把A端數(shù)據(jù)傳送至B端;DIR為低電平,把B端數(shù)據(jù)傳送至A端。在其他情況下不傳送數(shù)據(jù),并輸出呈高阻態(tài)。采用它為8051單片機(jī)
6、擴(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í),使能端為低電平,74LS245三態(tài)門打開,單片機(jī)CPU讀取外設(shè)輸入的數(shù)據(jù)。其他情況下,74LS245的三態(tài)門呈高阻狀態(tài)。電路(2)中,只有單片機(jī)讀取外設(shè)數(shù)據(jù)時(shí),P2.00使74LS245的使能端有效,如果為低電平,把74LS245數(shù)據(jù)傳送方向置為A端到B端,其AB方向的三態(tài)門打開,單片機(jī)CPU讀取外設(shè)輸入的數(shù)據(jù)。P2.01時(shí),使能端無效,A端和B端處于
7、隔離狀態(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),并把其狀態(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控制LED
8、1,以此類推。設(shè)存儲(chǔ)開關(guān)狀態(tài)的單元為STATE。程序如下:CMMD EQU 0100HPORTA EQU 0101HPORTB EQU 0102HPORTC EQU 0103HSTATE EQU 20HMOVA,#02H ;初始化,工作方式控制字MOVDPTR,# 0100H ;控制寄存器地址MOVX DPTR,A ;設(shè)置工作方式,初始化完成MOV A,#0FFHMOV DPTR,#0101HMOVX DPTR,A ;上電后,熄滅LED NOP MOV STATE,#0FFH;沒有開關(guān)閉合DETECT: MOVDPTR,#0102H ;PB口地址MOVX A,DPTR ;從PB口讀開關(guān)狀態(tài)MO
9、VDPTR,#0101H ;PA口地址MOVX DPTR,A ;從PA口輸出控制LED指示燈NOPCJNE A,#0FFH,VALIDSJMP DETECTVALID:MOV STATE,A;記錄開關(guān)狀態(tài)AJMP DETECT8. 采用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和控制寄存器地址分別為:0000H、0001H、0002
10、H和0003H。根據(jù)開關(guān)K0K7狀態(tài)控制LED0LED7的顯示狀態(tài),K0控制LED0,依此類推。設(shè)置8255的工作方式,PA口外接開關(guān),為方式0的輸入,PB口外接LED,為方式0的輸出,則工作方式控制字的標(biāo)志位D7為1,D6D3(A組):0000, D2D0(B組):010,組合后的控制字為:10000010,即82H。設(shè)存儲(chǔ)開關(guān)狀態(tài)的單元為STATE,用定時(shí)器/計(jì)數(shù)器T0定時(shí)50ms,工作方式為方式1,初始值為:,即3CB0HPORTA EQU 0100HPORTB EQU 0101HPORTC EQU 0102HCMMD EQU 0103H STATE EQU 20H/mian progr
11、amACALL Ini8255;ACLL IniTimer0WAIT:JBC TF0,DETECTSJMP WAITDETECT:MOV TH0,#3CHMOV TL0,#0B0HMOVDPTR, #PortB ;PB口地址MOVX A,DPTR ;從PB口讀開關(guān)狀態(tài)MOVDPTR, #PortA ;PA口地址MOVX DPTR,A ;從PA口輸出控制LED指示燈NOPMOV STATE,AAJMP WAITIni8255: MOVA,#82H ;初始化,工作方式控制字MOVDPTR,#CMMD ;控制寄存器地址MOVX DPTR,A ;設(shè)置工作方式,初始化完成MOV A,#0FFHMOV D
12、PTR,#PORTAMOVX DPTR,A ;上電后,熄滅LED NOPRETIniTimer0:MOV TMOD,#01HMOV TH0,#3CHMOV TL0,#0B0HSETB TR0RET9. 簡(jiǎn)述矩陣鍵盤的行列掃描和線反轉(zhuǎn)法原理。(1)行列掃描法:在按鍵識(shí)別過程時(shí),依次使行線輸出電平,然后檢查列線的輸入電平,如果所有列線的輸入全為高電平,則該行無按鍵按下;如果不全為高電平,則被按下的按鍵在本行,且在輸入電平變?yōu)榈碗娖降牧械慕徊纥c(diǎn)上。(2)線反轉(zhuǎn)法:第一步,首先使行線為輸入,列線為輸出。列線全部輸出低電平,那么,行線中變?yōu)榈碗娖降男芯€為按鍵所在的行。第二步,使行線變?yōu)檩敵?,列線變?yōu)檩斎?/p>
13、。行線輸出全部為低電平,那么,列線中變?yōu)榈碗娖降牧芯€為按鍵所在的列。10. 一個(gè)簡(jiǎn)單計(jì)數(shù)器的電路原理圖如圖所示。要求每按一次S鍵,計(jì)數(shù)器計(jì)數(shù)一次,計(jì)數(shù)值送P1口顯示,采用單只數(shù)碼管顯示,計(jì)16次后從0開始。圖9.6 題10原理圖1BITP3.3VALUE EQU 20HORG 0000HLJMP MAINORG 1000HMAIN: SETB P3.3MOV VALUE,#00ACALL DISP;初始化顯示0WAIT0:JB S1,WAIT0;ACALL DEL10MSWAIT1:JB S1,WAIT1;判斷按下WAIT2:JNB S1,WAIT2;ACALL DEL10MSWAIT3:JN
14、B S1,WAIT3;判斷釋放INC VALUE;加1ANLVALUE,#00001111B;僅顯示低位ACALL DISP;顯示SJMP WAIT0/顯示子程序DISP:MOV A,VALUE;取顯示信息MOV DPTR, #SEG_TAB;字型碼表的首地址MOVC A,A+DPTR;通過顯示信息查其字型碼MOV P1,A;輸出顯示NOPRET/延時(shí)子程序DEL10MS:MOV R5,#10DELX:MOV R6,#200DEL0:NOPNOPNOPDJNZ R6,DEL0DJNZ R5,DELXRETSEG_TAB: DB 0C0H, 0F9H, 0A4H, 0B0H, 99H, 92H,
15、 82H, 0F8H, 80H, 90H DB 88H, 83H, 0C6H, 0A1H, 86H, 8EH ;以下為顯示字型碼表,09,AFEND11. 簡(jiǎn)述LED數(shù)碼管的靜態(tài)顯示和動(dòng)態(tài)顯示原理。(1)靜態(tài)顯示:在多位靜態(tài)顯示時(shí),各個(gè)LED數(shù)碼管相互獨(dú)立,公共端COM接地(共陰極)或接正電源(共陽(yáng)極)。每個(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位并
16、行輸出口控制;各個(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),即可以在各個(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)能力,L
17、ED數(shù)碼管為共陰型。程序如下:SEG_OUT EQU P3BIT_OUT EQU P1/=ORG 0000HLJMP STARTORG 0030HSTART:MOV SP,#60HMOV20H,#40H /顯示" HELLO" 對(duì)應(yīng)字型表序號(hào)編碼:40 12 23MOV 21H,#12HMOV 22H,#23H MOV R1,#30HMOV R0,#20HCALL SPLITINC R0INC R1CALL SPLITINC R0INC R1CALL SPLITRED:ACALL DSPLY1SJMP RED/=SPLIT:MOV A,R0ANL A,#0F0HSWAP A
18、MOV R1,AINC R1MOV A,R0ANL A,#0FHMOV R1,ARET/=/6位顯示DSPLY1:MOV R0, #30H;顯示緩沖區(qū)地址 MOV R2, #11111110B;顯示起始位置REDO: ACALL DISP;顯示1位 MOV A,R2;計(jì)算下一個(gè)顯示位置 RL A MOV R2, A INC R0 ;修改顯示緩沖區(qū)地址指針 XRL A, #10111111B;6位顯示完否 JNZ REDO;未完,繼續(xù)顯示 RET ;返回/=;顯示一位子程序DISP: MOV DPTR,#LED_SEG;字型碼表首地址 MOV A,R0;取顯示數(shù)據(jù) MOVCA,A+DPTR;求顯
19、示數(shù)據(jù)的字型碼 MOV SEG_OUT,A;輸出字型碼 MOV A,R2;取顯示位置 MOVBIT_OUT,A;顯示 ACALL DL1MSMOV A,#0FFH;穩(wěn)定顯示1ms MOV BIT_OUT,ARET;字型碼表LED_SEG:DB 76H ; H序號(hào):00DB 79H; E序號(hào):01DB 38H ; L序號(hào):02DB 3FH; 0序號(hào):03DB 00H ; BLANK序號(hào):04DL1MS:MOV R5,#200;12M時(shí)延時(shí)1msDEL:NOPNOPNOPDJNZ R5,DELRETEND13. 一個(gè)顯示電路如圖9.60所示。請(qǐng)采用串行口方式0實(shí)現(xiàn)LED數(shù)碼管的動(dòng)態(tài)顯示,在顯示器上
20、自左向右動(dòng)態(tài)顯示“654321”,每個(gè)字符保持時(shí)間為0.1s。圖9.10 習(xí)題13原題電路圖ORG 0000HLJMP STARTORG 0030HSTART:MOV SP,#60HMOV20H,#12H /顯示數(shù)據(jù)MOV 21H,#34HMOV 22H,#56H MOV R1,#30HMOV R0,#20HCALL SPLIT/分離BCD碼INC R0INC R1CALL SPLITINC R0INC R1CALL SPLIT RED:ACALL DISPLYSJMP RED/=SPLIT:MOV A,R0ANL A,#0F0HSWAP AMOV R1,AINC R1MOV A,R0ANL
21、A,#0FHMOV R1,ARET/=DISPLY:MOV R0, #30H;顯示緩沖區(qū)首地址 MOV R2, #05H;顯示位置,最右端1位NEXT: ACALL DISP11;顯示 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;輸出字型碼GOON: JBC TI, DPLY AJMP GOONDPLY: MOV A, R
22、2 MOV P1, A;輸出顯示位置 ACALL DL100MS;延時(shí) MOV P1,#07HRET;字型碼表SEG_TAB:DB 0C0H, 0F9H, 0A4H, 0B0H, 99H, 92H, 82H, 0F8H, 80H, 90H DB 88H, 83H, 0C6H, 0A1H, 86H, 8EH/=DL1MS:MOV R5,#200;12M時(shí)延時(shí)1msDEL:NOPNOPNOPDJNZ R5,DELRETDL100MS:MOV R6,#100DELX0:ACALL DL1MSDJNZ R6,DELX0RETEND14. 采用8155或8255擴(kuò)展I/O口,設(shè)計(jì)一個(gè)顯示電路顯示“654
23、321”。 圖9.11 采用8255擴(kuò)展的LED數(shù)碼管動(dòng)態(tài)顯示接口電路圖9.11為采用8255擴(kuò)展的LED數(shù)碼管動(dòng)態(tài)顯示接口電路。圖中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
24、 輸出字型碼BIT_OUT EQU 0001H /PortB輸出位控碼PortC EQU 0002H/CMMD EQU 0003H/命令寄存器地址/=ORG 0000HLJMP STARTORG 0030HSTART:MOV SP,#60HMOV DPTR,#CMMD /8255初始化MOV A,#10000000B /方式0,A/B/C口為輸出MOVX DPTR,ANOPNOPMOV20H,#12H /顯示數(shù)據(jù)MOV 21H,#24HMOV 22H,#56H MOV R1,#30HMOV R0,#20HCALL SPLITINC R0INC R1CALL SPLITINC R0INC R1C
25、ALL SPLITRED:ACALL DSPLY2SJMP RED/=SPLIT:MOV A,R0ANL A,#0F0HSWAP AMOV R1,AINC R1MOV A,R0ANL A,#0FHMOV R1,ARET/=/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é)束返回/=;顯示一位子程序DISP: MOV DPTR,#LED_SEG;字
26、型碼表首地址 MOV A,R0;取顯示數(shù)據(jù) MOVCA,A+DPTR;求顯示數(shù)據(jù)的字型碼 MOV DPTR,#SEG_OUT;字型碼輸出口地址 MOVX DPTR,A;輸出字型碼 MOV A,R2;取顯示位置 MOV DPTR,#BIT_OUT;顯示位置輸出口地址 MOVXDPTR,A;顯示 ACALL DL1MSMOV A,#0FFH;穩(wěn)定顯示1ms MOVXDPTR,ARET;字型碼表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,71
27、H ;'8,9,A,B,C,D,E,F' DB 3EH, 50H, 40H, 08H, 00H ;'U, r, , _, BLANK/=DL1MS:MOV R5,#200;12M時(shí)延時(shí)1msDEL:NOPNOPNOPDJNZ R5,DELRETEND15. 一個(gè)單片機(jī)的鍵盤顯示系統(tǒng)采用3×4矩陣式鍵盤、8位LED數(shù)碼管顯示器。12個(gè)按鍵定義為數(shù)字鍵09、功能鍵ENTER和STOP。系統(tǒng)工作時(shí),鍵入一組數(shù)值,按下ENTER鍵后,新數(shù)值替換原來的顯示值在顯示器上循環(huán)顯示,按下STOP鍵,循環(huán)顯示終止,顯示數(shù)據(jù)被清除。設(shè)計(jì)硬件電路和編寫相應(yīng)的程序。圖9.12 題15
28、原理圖/defination SEG_OUT EQU P2/字型輸出BIT_OUT EQU P3/位控輸出DISPBUFEQU 40H/顯示緩沖區(qū)40H47HSETPTREQU 38H/設(shè)定數(shù)據(jù)時(shí)的存指針的單元 HOLDTIMEEQU 39H/ENTER時(shí),存儲(chǔ)每位穩(wěn)定時(shí)間的單元DLETIMEEQU 255/enter穩(wěn)定時(shí)間BIT_CODEEQU 3AH/ENTER時(shí)存字型的單元BIT_LOCEQU 3BH/ENTER時(shí)存位控的單元ETR_FLAG BIT 28H.0/ENTER按下標(biāo)志STP_FLAGBIT 28H.1/STOP按下標(biāo)志/= ORG 0000HLJMP STARTORG 0
29、030HSTART:MOV SP,#60H/=ENTER按下的初始化=CLR ETR_FLAGCLR STP_FLAGMOV HOLDTIME,#DLETIME/ENTER按下時(shí),每位的保持時(shí)間MOV BIT_CODE,#DISPBUFMOV BIT_LOC,#01111111B/=清顯示緩沖區(qū)=MOV R0,#DISPBUFMOV R3,#8ACALL CLRRAM;MOVSETPTR,#DISPBUF/設(shè)定指針初始化,未鍵入數(shù)據(jù)時(shí),顯示“-”MOV DISPBUF,#12HSCANK:MOV P1,#0FH/鍵盤掃描MOV A,P1ANL A,#00000111BXRL A,#000001
30、11BJZ NON0ACALL DL20MS /消抖MOV P1,#0FHMOV A,P1ANL A,#00000111BXRL A,#00000111BJZ NON0 /鍵按下 /此處判斷哪個(gè)鍵按下MOV R3,#11101111BCONTI:MOV P1,R3MOV A,P1/逐行掃描ANL A,#00000111BXRL A,#00000111BJNZ FOUNDMOV A,R3RL AMOV R3,AXRL A,#11111110BJNZ CONTINON0:JMP NON/沒有鍵按下FOUND:MOV P1,#00000111BMOVA,P1ANL A,#00001111BMOV R
31、4,A/暫存列編碼MOV A,R3ANL A,#11110000B/取行編碼ORL A,R4MOV R4,A/ 存特征碼,等待鍵釋放NO_RLSE:MOV P1,#0FH /鍵釋放MOV A,P1ANL A,#00000111BXRL A,#00000111BJNZ NO_RLSEACALL DL20MS /消抖MOV P1,#0FHMOV A,P1ANL A,#00000111BXRL A,#00000111BJNZ NO_RLSEMOV A,R4CJNE A,#0E6H,NUM2MOV R4,#01HJMP GODISP /1NUM2:CJNE A,#0E5H,NUM3MOV R4,#02
32、H /2JMP GODISPNUM3:CJNE A,#0E3H,NUM4MOV R4,#03H /3JMP GODISPNUM4:CJNE A,#0D6H,NUM5MOV R4,#04H /4JMP GODISPNUM5:CJNE A,#0D5H,NUM6MOV R4,#05H/5JMP GODISPNUM6:CJNE A,#0D3H,NUM7MOV R4,#06HJMP GODISP /6NUM7:CJNE A,#0B6H,NUM8MOV R4,#07HJMP GODISP /7NUM8:CJNE A,#0B5H,NUM9MOV R4,#08HJMP GODISP /8NUM9:CJNE A
33、,#0B3H,ENTERMOV R4,#09HJMP GODISP /9ENTER:CJNE A,#076H,NUM0MOV R4,#0AH /ENTERJMP ETR_DISP /ENTER按下,循環(huán)顯示NUM0:CJNE A,#075H,STOPMOV R4,#00H/0JMP GODISPSTOP:CJNE A,#073H,NUMXMOV R4,#0BHJMP STP_DISP / STOP按下NUMX: JMP NON/沒有按鍵按下GODISP:CLR ETR_FLAGCLR STP_FLAGMOV R0,SETPTRMOV A,R4MOV R0,AINC R0MOV SETPTR,R
34、0CJNE R0,#DISPBUF+8,GOON MOV SETPTR,#DISPBUFGOON:JMP REDNON: JB ETR_FLAG,ETR_DISP /無鍵按下,之前ENTER按下JB STP_FLAG,STP_DISP /無鍵按下,之前STOP按下 /無鍵按下,之前有數(shù)字鍵按下RED:MOV R0,#DISPBUFACALL DSPLY1 /顯示鍵入的數(shù)據(jù)JMP SCANKETR_DISP:MOV SETPTR,#DISPBUF/enter件按下,設(shè)定數(shù)據(jù)循環(huán)顯示SETB ETR_FLAG MOV R0,BIT_CODEMOV R2,BIT_LOC ;顯示起始位置ACALL D
35、ISP;顯示1位 DJNZ HOLDTIME, SKIP0MOVHOLDTIME,#DLETIMEMOV A, BIT_LOC;計(jì)算下一個(gè)顯示位置 RR A MOV BIT_LOC,A INC BIT_CODE ;修改顯示緩沖區(qū)地址指針 XRL A,#01111111B;8位顯示完否 JNZ SKIP0MOV BIT_CODE,#DISPBUFMOV BIT_LOC,#01111111BMOVHOLDTIME,#DLETIME;未完,繼續(xù)顯示SKIP0: JMP SCANK ;返回/STOP處理STP_DISP: MOV SETPTR,#DISPBUFSETB STP_FLAGMOV R0,#
36、DISPBUFMOV R3,#8ACALL CLRRAM; /清顯示緩沖區(qū)內(nèi)容MOV DISPBUF,#12HMOV R0,#DISPBUF /最左邊顯示“-”ACALL DSPLY1JMP SCANK/=/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 REDO;未完,繼續(xù)顯示 RET ;返回/=;顯示一位子程序DISP: MOV DPTR,#LED_SEG;字
37、型碼表首地址 MOV A,R0;取顯示數(shù)據(jù) MOVCA,A+DPTR;求顯示數(shù)據(jù)的字型碼 MOV SEG_OUT,A;輸出字型碼 MOV A,R2;取顯示位置 MOVBIT_OUT,A;顯示 ACALL DL1MSMOV A,#0FFH;穩(wěn)定顯示1ms MOV BIT_OUT,ARET;字型碼表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, 0
38、8H, 00H ;'U, r, , -, BLANKDL1MS:MOV R5,#200;12M時(shí)延時(shí)1msDEL:NOPNOPNOPDJNZ R5,DELRETDL20MS:MOV R7,#20;12M時(shí)延時(shí)20msDEL00:ACALL DL1MSDJNZ R7,DEL00RETCLRRAM:MOV R0,#14H /不顯示INC R0DJNZ R3,CLRRAMRETEND16. 簡(jiǎn)述A/D和的作用。A/D把模擬量變成數(shù)字量。D/A把數(shù)字量轉(zhuǎn)換成模擬量。17. 在檢測(cè)系統(tǒng)中,通常采用均值濾波的方法來消除檢測(cè)數(shù)據(jù)的隨機(jī)干擾,即連續(xù)采樣多次,取平均值作為測(cè)量值。采用ADC0809設(shè)計(jì)一
39、個(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 0000HLJMP STARTORG 000BHLJMP Timer0InterruptSTART:MOV SP,#60HLCALL InitTimer0MOV R0,#40H ;置數(shù)據(jù)區(qū)首地址指針MOV R6,#00H ;指向模擬量輸入通道0,通道地址
40、的低八位LOOP:NOPLJMP LOOPInitTimer0:;定時(shí)器0,定時(shí)50msMOV TMOD, #01HMOV TH0, #3CHMOV TL0, #0B0HSETB EASETB ET0SETB TR0RETTimer0Interrupt: PUSH DPH PUSH DPL PUSH ACCMOV TH0, #3CHMOV TL0, #0B0HMOV DPH, #0BFH ;P2.6=0,通道地址的高八位MOV DPL,R6 ;模擬通道0MOVX DPTR,A;啟動(dòng)A/D 轉(zhuǎn)換。WAITAD:JB P3.3, WAITADMOVX A,DPTR ;讀A/D 轉(zhuǎn)換結(jié)果MOV R0,A;存轉(zhuǎn)換結(jié)果INC R0;修改數(shù)據(jù)區(qū)指針I(yè)NC R6;模擬通道地址加1CJNE R6,#08,EXIT ;8個(gè)通道全采樣完了嗎?MOV R6,#00H;8路巡檢結(jié)束,重新采樣模擬量輸入通道IN0MOV R0,#40H ;重設(shè)數(shù)據(jù)區(qū)首地址指針EXIT:POP ACC POP DPL POP DPH RETIEND19. 采用2片ADC0809為8051單片機(jī)擴(kuò)展16路模擬量輸入通道。圖9.13 地址分析:IC2:P2.7=1,P2.6=0,8個(gè)通道地址為:IN0:8000H;IN1:8001HIN2:8002
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝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ù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 2025年六安市葉集區(qū)人民醫(yī)院招聘2人考試歷年真題匯編附答案
- 2025年溫州平陽(yáng)縣第二人民醫(yī)院醫(yī)共體公開招聘工作人員13人備考題庫(kù)附答案
- 2025年甘肅省平?jīng)鋈A亭市城鎮(zhèn)公益性崗位專場(chǎng)招聘會(huì)備考題庫(kù)(115人)附答案
- 2025年馬鞍山市民政局下屬事業(yè)單位招聘編外聘用人員3名考試模擬卷附答案
- 2025年黑龍江省神經(jīng)精神病醫(yī)院引進(jìn)高層次人才(博士)招聘4人備考題庫(kù)附答案
- 2025廣東廣州市黃埔區(qū)人民政府黃埔街道辦事處黨建組織員招聘1人(公共基礎(chǔ)知識(shí))綜合能力測(cè)試題附答案
- 2026廣東藍(lán)海豚旅運(yùn)股份有限公司招聘1人筆試備考試題及答案解析
- 2026北京協(xié)和醫(yī)院內(nèi)科ICU合同制科研助理招聘筆試模擬試題及答案解析
- 2026年1月西安醫(yī)學(xué)高等??茖W(xué)校附屬醫(yī)院招聘(58人)筆試模擬試題及答案解析
- (拓展拔高)2025-2026學(xué)年下學(xué)期人教統(tǒng)編版小學(xué)語文四年級(jí)第三單元練習(xí)卷
- 五育融合課件
- 海姆立克急救課件 (完整版)
- 2025年互聯(lián)網(wǎng)營(yíng)銷游戲化營(yíng)銷案例解析可行性研究報(bào)告
- DB31∕T 1048-2020“上海品牌”認(rèn)證通 用要求
- 意識(shí)障礙的判斷及護(hù)理
- 病理性賭博的識(shí)別和干預(yù)
- 2025年宿遷市泗陽(yáng)縣保安員招聘考試題庫(kù)附答案解析
- 校園文化建設(shè)協(xié)議合同
- 2025年廣東省中考物理試卷及答案
- 2026屆高三語文聯(lián)考作文題目導(dǎo)寫分析及范文:當(dāng)語言與真實(shí)經(jīng)驗(yàn)脫鉤
- 皮革項(xiàng)目商業(yè)計(jì)劃書
評(píng)論
0/150
提交評(píng)論