§13-人機(jī)通道及接口課件_第1頁(yè)
§13-人機(jī)通道及接口課件_第2頁(yè)
§13-人機(jī)通道及接口課件_第3頁(yè)
§13-人機(jī)通道及接口課件_第4頁(yè)
§13-人機(jī)通道及接口課件_第5頁(yè)
已閱讀5頁(yè),還剩59頁(yè)未讀 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

*1§1.3人機(jī)通道配置與接口技術(shù)*2§1.3人機(jī)通道配置與接口技術(shù)單片機(jī)應(yīng)用系統(tǒng)中的人機(jī)通道鍵盤(pán)及其接口LED及其接口鍵盤(pán)、顯示接口實(shí)例撥盤(pán)及其接口*3一、單片機(jī)應(yīng)用系統(tǒng)中的人機(jī)通道人機(jī)通道配置類(lèi)型人機(jī)對(duì)話(huà)接口特點(diǎn)專(zhuān)用性。一般來(lái)說(shuō)單片機(jī)應(yīng)用系統(tǒng)都是專(zhuān)用計(jì)算機(jī)應(yīng)用系統(tǒng)。人機(jī)通道外部設(shè)備配置水平完全根據(jù)系統(tǒng)功能要求而定。

小型價(jià)廉。單片機(jī)應(yīng)用系統(tǒng)本身的特點(diǎn)是低成本,中小規(guī)模、環(huán)境適應(yīng)性強(qiáng)、配置靈活。因此,相應(yīng)的外部設(shè)備以配置小型、微型、廉價(jià)型為原則。數(shù)字邏輯控制。人機(jī)接口中一般都是數(shù)字邏輯控制電路。許多外部設(shè)備都有標(biāo)準(zhǔn)的接口控制與通信要求。*4二、鍵盤(pán)及其接口(一)鍵的輸入(二)獨(dú)立式按鍵(三)行列式鍵盤(pán)(四)鍵盤(pán)掃描方式(五)行列式鍵盤(pán)接口*5(一)鍵的輸入鍵輸入軟件結(jié)構(gòu)使用散轉(zhuǎn)指令:JMP@A+DPTR

*6鍵輸入接口與軟件應(yīng)解決的問(wèn)題鍵開(kāi)關(guān)狀態(tài)的可靠輸入(去抖)

由于機(jī)械觸點(diǎn)的彈性作用,在閉合及斷開(kāi)瞬間均有抖動(dòng)過(guò)程,抖動(dòng)時(shí)間長(zhǎng)短,與開(kāi)關(guān)的機(jī)械特性有關(guān),一般為5~10ms。鍵抖動(dòng)會(huì)引起一次按鍵被誤讀多次,只作一次鍵輸入處理,必須去除抖動(dòng)影響。

*7

解決方法:用R-S觸發(fā)器或單穩(wěn)態(tài)電路構(gòu)成硬件去抖動(dòng)電路軟件延時(shí)去抖:

在檢測(cè)到有鍵按下時(shí),執(zhí)行一個(gè)10ms的延時(shí)程序,然后再確認(rèn)該鍵電平是否仍保持閉合狀態(tài)電平,如保持閉合狀態(tài)電平,則確認(rèn)為真正鍵按下?tīng)顟B(tài),從而消除了抖動(dòng)影響;松開(kāi)時(shí)也采用的方法。

R-S觸發(fā)器電路單穩(wěn)態(tài)電路*8對(duì)按鍵進(jìn)行編碼給定鍵值或直接給出鍵號(hào)

如右圖為鍵號(hào)選擇鍵盤(pán)監(jiān)測(cè)方法

中斷方式與查詢(xún)方式編制好鍵盤(pán)程序

一個(gè)完善的鍵盤(pán)控制程序應(yīng)解決下任務(wù):監(jiān)測(cè)有無(wú)按鍵按下。有鍵按下后,在無(wú)硬件除抖動(dòng)電路時(shí),應(yīng)有軟件延時(shí)方法除去抖動(dòng)影響。有可靠的邏輯處理辦法。如n鍵鎖定,即只處理一個(gè)鍵,其間任何按下又松開(kāi)的鍵不產(chǎn)生影響;不管一次按鍵持續(xù)有多長(zhǎng)時(shí)間,僅執(zhí)行一次按鍵功能程序等。輸出確定的鍵號(hào)以滿(mǎn)足散轉(zhuǎn)指令要求。*9(二)獨(dú)立式按鍵獨(dú)立式按鍵是指直接用I/O口線構(gòu)成的單個(gè)按鍵電路。每個(gè)獨(dú)立式按鍵單獨(dú)占有一根I/O口線,每根I/O口線上的按鍵工作狀態(tài)不會(huì)影響其它I/O口線的工作狀態(tài)。

獨(dú)立式按鍵結(jié)構(gòu)

當(dāng)I/o口內(nèi)部有上拉電阻時(shí),外電路可以不配置上拉電阻。查詢(xún)方式電路中斷方式電路*10獨(dú)立式按鍵結(jié)構(gòu)的優(yōu)缺點(diǎn)優(yōu)點(diǎn):獨(dú)立式按鍵電路配置靈活,軟件結(jié)構(gòu)簡(jiǎn)單;缺點(diǎn):每個(gè)按鍵必須占用一根I/O口線,在按鍵數(shù)量較多時(shí),I/O口線浪費(fèi)較大。故在按鍵數(shù)量不多時(shí),常采用這種按鍵電路。獨(dú)立式按鍵的軟件結(jié)構(gòu)

例:下列程序?yàn)椴樵?xún)方式的鍵盤(pán)程序。程序中沒(méi)有使用散轉(zhuǎn)指令,也沒(méi)有軟件防抖動(dòng)措施。它只包括鍵查詢(xún)、鍵功能程序轉(zhuǎn)移。PP0~PP7為功能程序入口地址標(biāo)號(hào),PROMO~PROM7分別為每個(gè)按鍵的功能程序。設(shè)I/O為P1口*11ORG0000HLJMPSTARTORG0100HSTART:MOVA,#0FFH;置P1為輸入方式MOVP1,AMOVA,Pl;鍵狀態(tài)輸入JNBACC.0,PP0;0號(hào)鍵按下轉(zhuǎn)JNBACC.1,PP1;1號(hào)鍵按下轉(zhuǎn)JNBACC.2,PP2;2號(hào)鍵按下轉(zhuǎn)JNBACC.3,PP3;3號(hào)鍵按下轉(zhuǎn)JNBACC.4,PP4;4號(hào)鍵按下轉(zhuǎn)JNBACC.5,PP5;5號(hào)鍵按下轉(zhuǎn)JNBACC.6,PP6;6號(hào)鍵按下轉(zhuǎn)JNBACC.7,PP7;7號(hào)鍵按下轉(zhuǎn)JMPSTART*12PP0:AJMPPROM0PP1:AJMPPROM1PP2:AJMPPROM2PP3:AJMPPROM3PP4:AJMPPROM4PP5:AJMPPROM5PP6:AJMPPROM6PP7:AJMPPROM7*13各按鍵由軟件設(shè)置了優(yōu)先級(jí),優(yōu)先級(jí)順序依次為0~7。

PROM0:……;0號(hào)鍵功能程序……LJMPSTART;0號(hào)鍵執(zhí)行完返回PROM1:……;1號(hào)鍵功能程序……LJMPSTART;1號(hào)鍵執(zhí)行完返回·

·

··

·

··

·

·PROM7:……;7號(hào)鍵功能程序……LJMPSTART;7號(hào)鍵執(zhí)行完返回*14(三)行列式鍵盤(pán)行列式鍵盤(pán)又叫矩陣式鍵盤(pán)。用I/O口線組成行、列結(jié)構(gòu),按鍵設(shè)置在行列的交點(diǎn)上。鍵盤(pán)工作原理*15行線被鉗位在高電平狀態(tài)判斷有無(wú)按鍵按下

列線送入全掃描字(00H)、然后將行線電平狀態(tài)讀入累加器A中。如果有鍵按下,行輸入不全為1。判斷鍵盤(pán)中哪一個(gè)鍵按下

依次給列線送低電平,然后查所有行線狀態(tài),如果全為1,則所按下之鍵不在此列;如果不全為1,則所按下的鍵必在此列,而且是在與0電平行線相交的交點(diǎn)上的那個(gè)鍵。求每個(gè)鍵的鍵值。

將行、列線按二進(jìn)制順序排列,當(dāng)某一鍵按下時(shí),鍵盤(pán)掃描程序執(zhí)行到給該列置0電平,讀出各行狀態(tài)為非全1狀態(tài),這時(shí)的行、列數(shù)據(jù)組合成鍵值。如圖中鍵盤(pán)鍵值從左到右、從上至下依次是77,7B,7D,7E;B7,BB,BD,BE;…;E7,EB,ED,EE。

這種負(fù)邏輯表示不夠直觀,采取行、列線加反相器或軟件求反方法把鍵盤(pán)改成正邏輯,這時(shí)鍵值依次為88,84,82,81;48,44,42,41;…:18,14,12,11。不論是正邏輯還是負(fù)邏輯,這種鍵值表示方式分散度大且不等距,用于散轉(zhuǎn)指令不太方便。對(duì)于不是4×4或8×4、8×8的鍵盤(pán),使用也不容易。故在許多場(chǎng)合下,采用依次排列的鍵值的方法。這時(shí)的鍵值與鍵號(hào)相一致。*16鍵盤(pán)工作方式鍵盤(pán)工作方式

編程掃描方式、定時(shí)掃描方式和中斷掃描方式三種編程掃描工作方式

利用CPU在完成其它工作的空余,調(diào)用鍵盤(pán)掃描子程序,來(lái)響應(yīng)鍵輸入要求。在執(zhí)行鍵功能程序時(shí),CPU不再響應(yīng)鍵輸入要求。4×4鍵盤(pán)為例*17圖9-64×4矩陣鍵盤(pán)接口圖*18鍵值與鍵號(hào)相一致,依次排列為0~F,共16個(gè)鍵,按鍵掃描的工作過(guò)程如下:

①判斷鍵盤(pán)中是否有鍵按下;②進(jìn)行行掃描,判斷是哪一個(gè)鍵按下,若有鍵按下,則調(diào)用延時(shí)子程序去抖動(dòng);③讀取按鍵的位置碼;④將按鍵的位置碼轉(zhuǎn)換為鍵值(鍵的順序號(hào))0、1、2…、F。下圖所示為4×4鍵盤(pán)掃描流程圖。*19圖4×4鍵盤(pán)掃描流程圖*20鍵的位置碼及鍵值的譯碼過(guò)程

上述行掃描過(guò)程結(jié)束后得到的行號(hào)存放在R0中,列號(hào)存放在R2中。鍵值(號(hào))的獲得(譯碼)通常采用計(jì)數(shù)譯碼法。這種方法根據(jù)矩陣鍵盤(pán)的結(jié)構(gòu)特點(diǎn),每個(gè)按鍵的值=行號(hào)×每行的按鍵個(gè)數(shù)+列號(hào),即鍵號(hào)(值)=行首鍵號(hào)+列號(hào),第0行的鍵值為:0行×4+列號(hào)(0~3)為0、1、2、3;第1行的鍵值為:1行×4+列號(hào)(0~3)為4、5、6、7;第2行的鍵值為:2行×4+列號(hào)(0~3)為8、9、A、B;第3行的鍵值為:3行×4+列號(hào)(0~3)為C、D、E、F。4×4鍵盤(pán)行首鍵號(hào)為0、4、8、C,列號(hào)為0,1,2,3。所以鍵值譯碼子程序?yàn)镈ECODE,該子程序出口:鍵值在A中。*21(3)鍵盤(pán)掃描子程序(參見(jiàn)圖9-7)出口:鍵值(鍵號(hào))在A中Funtion:鍵盤(pán)掃描InputParameter:OutputParameter:A—KEYNO.ResourceUsed:R7,R0,R1,A,B…StackLength:4KEY: MOV P1,#0F0H;令所有行為低電平

MOV R7,#0FFH;設(shè)置計(jì)數(shù)常數(shù)KEY1:NOP DJNZ R7,KEY1;延時(shí)

MOV A,P1;讀取P1口的列值

CPL A;求反后,有高電平就有鍵按下

ANL A,#0F0H;判別有鍵值按下嗎?

JZ EKEY;無(wú)鍵按下時(shí)退出

LCALL DEL20ms;延時(shí)20ms去抖動(dòng)SKEY: MOV A,#00;下面進(jìn)行行掃描,1行1行掃

MOV R0,A;R0作為行計(jì)數(shù)器,開(kāi)始為0 MOV R1,A;R1作為列計(jì)數(shù)器,開(kāi)始為0 MOV R3#0FEH;R3為行掃描字暫存,低4位為行掃描字SKEY2:MOV A,R3 MOV P1,A;輸出行掃描字,高4位全1 NOP NOP NOP;3個(gè)NOP操作使P1口輸出穩(wěn)定*22

MOV A,P1;讀列值

MOV R1,A;暫存列值

CPL A;高電平則有鍵閉合

ANL A,#0F0H;取列值S123: JNZ SKEY3;有鍵按下轉(zhuǎn)SKEY3 INC R0;無(wú)鍵按下時(shí)進(jìn)行下一行掃描,行計(jì)數(shù)器加1 SETB C;準(zhǔn)備將行掃描左移1位,形成下一行掃描字,C=1保證輸出行掃描字中高4位全為1,為列輸入作準(zhǔn)備,低4位中只有1位為0 MOV A,R3;R3帶進(jìn)位C左移1位

RLC A MOV R3,A;形成下一行掃描字→R3 MOV A,R0 CJNE A,#04H,SKEY2;最后一行掃(4次)完了嗎?EKEY: RET*23;列號(hào)譯碼SKEY3:MOV A,R1 JNB ACC.4,SKEY5 JNB ACC.5,SKEY6 JNB ACC.6,SKEY7 JNB ACC.7,SKEY8 AJMP EKEYSKEY5:MOV A,#00H MOV R2,A;存0列號(hào)

AJMP DKEYSKEY6:MOV A,#01H MOV R2,A;存1列號(hào)

AJMP DKEYSKEY7:MOV A,#02H MOV R2,A;存2列號(hào)

AJMP DKEYSKEY8:MOV A,#03H MOV R2,A;存3列號(hào)

AJMP DKEY*24;鍵位置譯碼DKEY: MOV A,R0;取行號(hào)

ACALL DECODE AJMP EKEY;鍵值(鍵號(hào))譯碼DECODE:MOV A,R0;取行號(hào)送A MOV B,#04H;每一行按鍵個(gè)數(shù)

MUL AB;行號(hào)×按鍵數(shù)

ADD A,R2;行號(hào)×按鍵數(shù)+列號(hào)=鍵值(號(hào)),在A中

RET*253.鍵操作及功能處理若圖中為4×8的32鍵,設(shè)0、1、2、…、E、F共16個(gè)鍵為數(shù)字鍵;其他16個(gè)鍵為功能鍵,鍵值為16~31,即10H~1FH,各功能鍵入口程序地址標(biāo)號(hào)分別為AAA、BBB、…、PPP。當(dāng)對(duì)鍵盤(pán)進(jìn)行掃描并求得鍵值后,還必須做進(jìn)一步處理。方法是首先判別其是功能鍵還是數(shù)字鍵。若為數(shù)字鍵,則送顯示緩沖區(qū)進(jìn)行顯示;若為功能鍵,則由散轉(zhuǎn)指令“JMP@A+DPTR”轉(zhuǎn)到相應(yīng)的功能鍵處理程序,完成相應(yīng)的操作。完成上述任務(wù)的子程序流程圖如圖9-10所示。圖9-10求功能鍵地址轉(zhuǎn)換程序流程圖*26功能鍵地址轉(zhuǎn)移程序如下:BUFF EQU 30HKEYADR:MOV A,BUFF;鍵值→A CJNE A,#0FH,KYARD1 AJMP DIGPRO;等于F,轉(zhuǎn)數(shù)字鍵處理KYARD1:JC DIGPRO;小于F,轉(zhuǎn)數(shù)字鍵處理KEYTBL:MOV DPTR,#JMPTBL;送功能鍵地址表指針

CLR C;清進(jìn)位位

SUBB A,#10H;功能鍵值(10H~1FH)減16 RL A;(A)×2,使(A)為偶數(shù):0、2、4、… JMP @A+DPTR;轉(zhuǎn)相應(yīng)的功能鍵處理程序*27JMPTBL:AJMP AAA;AJMP BBB;AJMP CCC;AJMP DDD; AJMP EEE; AJMP FFF;AJMP GGG;AJMP HHH;AJMP III;AJMP JJJ;AJMP KKK;AJMP LLL;AJMP MMM;AJMP NNN;AJMP OOO;AJMP PPP;均為2字節(jié),轉(zhuǎn)到16個(gè)功能鍵的相應(yīng)入口地址。(A)=0、2、4、6…散轉(zhuǎn)到AAA、BBB、CCC、DDD、…、PPP*28定時(shí)掃描方式定時(shí)掃描工作方式定時(shí)掃描工作方式是利用單片機(jī)內(nèi)部定時(shí)器產(chǎn)生定時(shí)中斷(例如10ms),CPU響應(yīng)中斷后對(duì)鍵盤(pán)進(jìn)行掃描、并在有鍵按下時(shí)轉(zhuǎn)入鍵功能處理程序。定時(shí)掃描工作方式的鍵盤(pán)硬件電路與編程掃描工作方式相同。其軟件框如圖所示。KM--去抖標(biāo)志,

KP--處理標(biāo)志*29定時(shí)掃描工作方式在本質(zhì)上是中斷方式,因此,圖是一個(gè)中斷服務(wù)程序框圖。在單片機(jī)的片內(nèi)RAM位尋址區(qū)設(shè)置去抖動(dòng)標(biāo)志KM和處理標(biāo)志KP兩個(gè)標(biāo)志位。KM=0表示未去抖,KM=1表示己去抖;KM=0表示未按鍵的相應(yīng)操作,KM=1表示己執(zhí)行按鍵的相應(yīng)操作(鍵處理)主程序初始化KM、KP為0。當(dāng)鍵盤(pán)中無(wú)鍵按下,KM、KP置零,返回。當(dāng)鍵盤(pán)中有鍵按下時(shí),先檢查KM標(biāo)志,KM=0時(shí),表示尚未作去抖動(dòng)影響處理,此時(shí)中斷返回同時(shí)KM置1。因?yàn)橹袛喾祷睾笠?jīng)10ms才可能再次中斷,相當(dāng)于實(shí)現(xiàn)了10ms延時(shí)效果,因而程序中不需要延時(shí)。當(dāng)再次定時(shí)中斷后檢查KP標(biāo)志,由于開(kāi)始時(shí)KP=0,程序進(jìn)入查找鍵號(hào),并使KP置1,執(zhí)行鍵功能程序,然后返回。在KM,KP均為1時(shí),表示鍵處理完畢,再次定時(shí)中斷時(shí),都返回原來(lái)CPU狀態(tài)。*302.中斷掃描方式中斷掃描方式為了提高CPU的效率,可以采用中斷掃描工作方式,即只有在鍵盤(pán)有鍵按下時(shí)才產(chǎn)生中斷申請(qǐng);CPU響應(yīng)中斷,進(jìn)入中斷服務(wù)程序進(jìn)行鍵盤(pán)掃描,并做相應(yīng)處理。中斷掃描工作方式的鍵盤(pán)接口如圖所示。P1.4~P1.7作鍵掃描輸出線,P1.0~P1.3作輸入線。掃描時(shí),使P1.4~P1.7位清0。當(dāng)有鍵按下時(shí),INT1端為低電平,向CPU發(fā)出中斷申請(qǐng)。若CPU開(kāi)放外部中斷,則響應(yīng)中斷請(qǐng)求,進(jìn)入中斷服務(wù)程序。圖中斷方式鍵盤(pán)接口*31(四)鍵盤(pán)掃描方式當(dāng)鍵盤(pán)有鍵按下時(shí),要逐行或逐列掃描,以判定是那一個(gè)按鍵按下。通常掃描方式有兩種,即掃描法和反轉(zhuǎn)法。*32掃描法掃描法是在判定有鍵按下后逐列(或行)置低電平,同時(shí)讀入行(或列)狀態(tài),如果行(或列)狀態(tài)出現(xiàn)非全l狀態(tài),這時(shí)0狀態(tài)的行、列交點(diǎn)的鍵就是所按下的鍵。掃描法的特點(diǎn)就是逐行(或列)掃描查詢(xún)。這時(shí),相應(yīng)的行(或列)應(yīng)有上拉電阻接高電平。左圖行線上拉接+5v,列線逐列掃描。右圖列線上拉接+5v,行線逐行掃描。

*33反轉(zhuǎn)法*34反轉(zhuǎn)法圖中硬件采用中斷工作方式。用一個(gè)8位I/O口構(gòu)成4X4鍵盤(pán)。假定圖中所畫(huà)的線為所按下的鍵。第一步:將D3~D0編程為列輸入線,D7~D4編程為行輸出線,并使I/O輸出數(shù)據(jù)為0×H(即保證行輸出信號(hào)D7~D4為0000B)。若有鍵按下,與門(mén)的輸出端變?yōu)榈碗娖剑駽PU申請(qǐng)中斷,表示鍵盤(pán)中有鍵按下。與此同時(shí),D3~D0的數(shù)據(jù)輸入到內(nèi)存中某一單元N中存放。其中0位對(duì)應(yīng)的是被按下鍵的列位置;第二步:將第一步中的傳送方向反轉(zhuǎn)過(guò)來(lái),即將D7~D4編程為輸入線,D3~D0編程為輸出線。使I/O口輸出數(shù)據(jù)為N單元中的數(shù)(即D3~D0為按下鍵的列位置),然后讀入I/O數(shù)據(jù),并送入內(nèi)存N+1單元中存放,該數(shù)據(jù)的D7~D4位中0電平對(duì)應(yīng)的位是按下鍵的行位置。最后:將N單元中的D3~D0與N+1單元中的D7~D4拼接起來(lái)就是按下鍵的鍵值。圖中按下鍵的鍵值為01111101=7DH。*35(五)行列式鍵盤(pán)接口單片機(jī)的任何并行I/O口(前面己講)擴(kuò)展并行I/O口(如使用8255、8155等)(前面己講)專(zhuān)用鍵盤(pán)、顯示接口芯片(如8279等)串行口I/O口擴(kuò)展鍵盤(pán)接口由于8031的串行口在方式0工作狀態(tài)下,可以方便地通過(guò)移位寄存器擴(kuò)展并行輸出口。因此,可以將這些并行口線作為列線,與P3口的行線構(gòu)成行列式鍵盤(pán)。如圖所示。每占用一根P3口線可增加八個(gè)按鍵,圖中為2X8鍵盤(pán)。

*36三、LED顯示及其接口N位LED顯示器有N根位選線和8×N根段選線。根據(jù)顯示方式不同,位選線與段選線的連接方法不同。段選線控制顯示何種字符,位選線控制顯示位的亮、暗。LED顯示器有靜態(tài)顯示與動(dòng)態(tài)顯示兩種方式。*37LED靜態(tài)顯示方式LED靜態(tài)顯示方式LED的共陰極或共陽(yáng)極連接在一起接地或+5V;每位的段選線(a—dp)與一個(gè)8位并行口相連。如圖,該電路每一位可獨(dú)立顯示,只要在該位的段選線上保持段選碼電平,該位就能保持相應(yīng)的顯示字符。由于每一位由一個(gè)8位輸出口控制段選碼,故在同一時(shí)間里每一位顯示的字符可以各不相同。N位靜態(tài)顯示器要求有NX8根I/O口線,占用I/O資源較多。*38LED靜態(tài)顯示方式靜態(tài)顯示器的亮度較高。這種顯示方式編程容易,管理也較簡(jiǎn)單,在顯示位數(shù)較多的情況下,一般都采用動(dòng)態(tài)顯示方式。*39LED動(dòng)態(tài)顯示方式LED(LightEmittingDiode)動(dòng)態(tài)顯示方式

多位LED顯示時(shí),將所有位的段選線并聯(lián)在一起,由一個(gè)8位I/O口控制。而共陰(或共陽(yáng))極公共端K分別由相應(yīng)的I/O線控制,實(shí)現(xiàn)各位的分時(shí)選通。圖9-12所示為6位共陰極LED動(dòng)態(tài)顯示接口電路。*40LED與89C51接口及顯示子程序LED與89C51接口及顯示子程序下圖中,P0口輸出段選碼,P1口輸出位選碼,位選碼占用輸出口的線數(shù)決定于顯示器位數(shù),比如6位就要占6條。75452(或7406)是反相驅(qū)動(dòng)器(30V高電壓,OC門(mén)),這是因?yàn)?9C51P1口正邏輯輸出的位控與共陰極LED要求的低電平點(diǎn)亮正好相反,即當(dāng)P1口位控線輸出高電平時(shí),點(diǎn)亮一位LED。7407是同相OC門(mén),作段選碼驅(qū)動(dòng)器。逐位輪流點(diǎn)亮各個(gè)LED,每一位保持1ms,在10~20ms之內(nèi)再一次點(diǎn)亮,重復(fù)不止。這樣,利用人的視覺(jué)暫留,好像6位LED同時(shí)點(diǎn)亮一樣。掃描顯示子程序流程如圖所示。*41圖6只LED動(dòng)態(tài)顯示接口*42圖DIS顯示子程序流程圖*43DIS顯示子程序清單如下:DIS: MOV R0,#7EH;顯示緩沖區(qū)末地址→R0 MOV R2,#01H;位控字,先點(diǎn)亮最低位(右邊)

MOV A,R2 MOV DPTR,#TAB;字型表頭地址→DPTRLP0: MOV P1,A MOV A,@R0;取顯示數(shù)據(jù)

MOVC A,@A+DPTR;取出字形碼

MOV P0,A;送出顯示

ACALL D1MS;調(diào)延時(shí)子程序

DEC R0;數(shù)據(jù)緩沖區(qū)地址減1 MOV A,R2 JB ACC.5,LP1;掃描到最左面的顯示器了嗎? RL A;沒(méi)有到,左移1位

MOV R2,A AJMP LP0LP1: RETTAB: DB 3FH,06H,5BH,4FH,66H,6DH DB 7DH,07H,7FH,6FH,77H,7CH DB 39H,5EH,79H,71H,40H,00HD1MS: MOV R7,#02H;延時(shí)1ms子程序DL: MOV R6,#0FFHDL1: DJNZ R6,DL1 DJNZ R7,DL RET*44可作為專(zhuān)用顯示及鍵盤(pán)子系統(tǒng),89C51通過(guò)串行口與主CPU系統(tǒng)通信。*45LED與8255接口及顯示子程序LED與8255接口及顯示子程序?qū)ⅰ癓ED與89C51接口”中的89C51改為8255;使用PA、PB口即可加對(duì)8255的初始化,即規(guī)定PA口、PB口為基本輸入或輸出。*46

串行口控制的鍵盤(pán)/LED顯示器接口電路串行口控制的鍵盤(pán)/LED顯示器接口電路89C51的串行口RXD和TXD為一個(gè)全雙工串行通信口,但工作在方式0下可作同步移位寄存器用,其數(shù)據(jù)由RXD(P3.0)端串行輸出或輸入;而同步移位時(shí)鐘由TXD(P3.1)端串行輸出,在同步時(shí)鐘作用下,實(shí)現(xiàn)由串行到并行的數(shù)據(jù)通信。在不需要使用串行通信的場(chǎng)合,利用串行口加外圍芯片74HC164就可構(gòu)成一個(gè)或多個(gè)并行輸入/輸出口,用于串并轉(zhuǎn)換、并串轉(zhuǎn)換、鍵盤(pán)驅(qū)動(dòng)或顯示器LED驅(qū)動(dòng)。*4774HC164是串行輸入、并行輸出移位寄存器,并帶有清除端。其引腳如圖所示。其中:Q0~Q7:并行輸出端。A、B:串行輸入端。CLR:清除端,零電平時(shí),使74LS164輸出清0。CLK:時(shí)鐘脈沖輸入端,在脈沖的上升沿實(shí)現(xiàn)移位。當(dāng)CLK=0、CLR=1時(shí),74HC164保持原來(lái)的數(shù)據(jù)狀態(tài)。圖74HC164引腳圖*481.硬件電路如圖所示,圖中“與”門(mén)的作用是避免鍵盤(pán)操作時(shí)對(duì)顯示器的影響,即僅當(dāng)P1.2=1時(shí),才開(kāi)放顯示器傳送。圖串行控制鍵盤(pán)掃描和顯示器接口電路*492.程序清單KEY: MOV A,#00H;向串行口數(shù)據(jù)緩沖器送全0 MOV SBUF,AKL0: JNB TI,KL0;等待8位數(shù)據(jù)發(fā)送完畢

CLR TI;清中斷標(biāo)志KL1: JNB P1.0,PK1;第1行有鍵按下嗎? JB P1.1,KL1;第2行有鍵按下嗎?若無(wú)則繼續(xù)掃描PK1: ACALL D10MS;有鍵按下,延時(shí)10ms,消除鍵抖動(dòng)

JNB P1.0,PK2;確定是否鍵抖動(dòng)引起

JB P1.1,KL1PK2: MOV R7,#08H;不是鍵抖動(dòng)引起則逐列掃描

MOV R6,#0FEH;選中第0列

MOV R3,#00H;記下列號(hào)初值*50PL5: MOV A,R6;使某一列為低

MOV SUBF,AKL2: JNB TI,KL2 CLR TI JNB P1.0,PK4;是第1行嗎? JNB P1.1,PK5;是第2行嗎? MOV A,R6;不是本列,則繼續(xù)下一列

RL A MOV R6,A INC R3;列號(hào)加1 DJNZ R7,PL5;若8列掃描完仍未找到,則退出,等待執(zhí)行下一次掃描

RETPK5: MOV R4,#08H;是第2行,則R4送初值08H AJMP PK3;轉(zhuǎn)鍵處理PK4: MOV R4,#00H;是第1行,則R4送初值00HPK3: MOV A,#00H;等待鍵釋放

MOV SBUF,AKL3: JNB TI,KL3 CLR TI*51KL4: JNB P1.0,KL4 JNB P1.1,KL4 MOV A,R4;取鍵號(hào)

ADD A,R3 SUBB A,#0AH;是命令鍵嗎? JNC KL6;轉(zhuǎn)命令鍵處理程序

MOV DPTR,#TABL;字形碼表初值送DPTR ADD A,#0AH;恢復(fù)鍵號(hào)

MOVC A,@A+DPTR;取字形碼數(shù)據(jù)

MOV R0,60H;取顯示緩沖區(qū)指針

MOV @R0,A;將字形碼入顯示緩沖區(qū)

INC R0;顯示緩沖區(qū)地址加1 CJNE R0,#60H,KD;判是否到最高位

MOV 60H,#58H;保存顯示緩沖區(qū)地址

SJMP KD1KD: MOV 60H,R0KD1: ACALL LED;調(diào)用送顯示子程序

RET*52KL6: MOV B,#03H;修正命令鍵地址轉(zhuǎn)移表指針

MUL AB MOV DPTR,KTAB;地址轉(zhuǎn)移表首地址送DPTR JMP @A+DPTR;根據(jù)指針跳轉(zhuǎn)KTAB: LJMP K1;K1、K3…為各命令鍵服務(wù)程序首地址

LJMP K3 ┊TABL: DB C0H,F(xiàn)9H,A4H,B0H;0~9字形碼轉(zhuǎn)換

DB 99H,92H,82H,F(xiàn)8H DB 80H,90HLED: SETB P1.2;開(kāi)放顯示器控制

MOV R7,#08H;顯示位數(shù)R7 MOV R0,#58H;先送最低位LED1: MOV A,@R0;送顯示器數(shù)據(jù)

MOV SBUF,ALED2: JNB TI,LED2 CLR TI INC R0;繼續(xù)下一位

DJNZ R7,LED1;全部送完

CLR P1.2;關(guān)閉顯示器控制

RET*53硬件譯碼顯示接口以上均為軟件譯碼下面為硬件譯碼實(shí)例:MC14495:BCD-七段十六進(jìn)制鎖存、譯碼驅(qū)動(dòng)芯片*54MC14499有輸出限流電阻,故LED不須外加限流電阻。當(dāng)輸入數(shù)據(jù)≥10時(shí),h+i端輸出“1’’電平。輸入數(shù)據(jù)為15時(shí),電路輸出端為0電平(其它輸入狀態(tài)時(shí)為高阻)。電路內(nèi)部還有一個(gè)290Ω的限流電阻。為選通端,為0時(shí),A、B、C、D數(shù)據(jù)→鎖存器→譯碼器→驅(qū)動(dòng)器→LED;在上升沿鎖存A、B、C、D數(shù)據(jù);在1時(shí),保持剛才鎖存的數(shù)據(jù)。

*55MC14495真值表

驅(qū)動(dòng)電路

*56MC14495接口實(shí)例當(dāng)給P1.7高電平時(shí),開(kāi)顯示,由P1.4、P1.5、P1.6控制LE依次選中一位LED然后由P1.0~P1.3送入BCD碼,在使LE轉(zhuǎn)高電平時(shí)鎖存該位數(shù)據(jù)并譯碼、驅(qū)動(dòng)顯示。*57五、撥盤(pán)及其接口用途:輸入少量的控制參數(shù)撥盤(pán)種類(lèi)很多,作為人機(jī)接口使用的最方便的撥盤(pán)是十進(jìn)制輸入、BCD碼輸出的BCD碼撥盤(pán)。四片BCD碼撥盤(pán)拼接的4位十進(jìn)制輸入撥盤(pán)組。每片撥盤(pán)具有0~9十個(gè)位置,每個(gè)位置都有相應(yīng)的數(shù)字顯示,代表?yè)鼙P(pán)輸入的十進(jìn)制數(shù)。因此,每片撥盤(pán)可代表一位十進(jìn)制數(shù)。需要幾位十進(jìn)制數(shù)可選擇幾片BCD碼撥盤(pán)拼接。BCD碼撥盤(pán)后面有5個(gè)接點(diǎn),其中A為輸入控制線,另外4根是BCD碼輸出信號(hào)線。撥盤(pán)撥到不同位置時(shí),輸入控制線A分別與4根BCD碼輸出線中的某根或某幾根接通。其接通的BCD碼輸出線狀態(tài)正好與撥盤(pán)指示的十進(jìn)制數(shù)相一致。*58A接高電平,8421端外接下拉電阻輸出狀態(tài)為1時(shí),表示該輸出線與A相通撥盤(pán)輸入控制端輸

態(tài)A8421010000l10001210010310011410100510101610110710111811000911001*59A接低電平,8421端外接上拉電阻撥盤(pán)輸入控制端輸

態(tài)A8421001111l011102011013011004010115010106010017010008

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
  • 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。

評(píng)論

0/150

提交評(píng)論