




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
“單片機與控制技術”
多媒體課程課件武漢工程大學電氣信息學院自動化研究所楊寧教授主
編
第8章人—機接口8.1鍵盤接口方法8.1.1非編碼鍵盤鍵盤是由若干個按鍵組成的開關矩陣,它是單片機最簡單的信息輸入裝置,操作員通過鍵盤向單片機系統輸入數據或命令,實現簡單的人-機通信,按鍵是以開關的狀態來設置控制功能和輸入數據。若鍵盤上閉合鍵的識別是由專用硬件實現的,稱為編碼鍵盤;若靠軟件實現的便為非編碼鍵盤。非編碼鍵盤是由一些按鍵排列成的一個行、列矩陣。按鍵的作用只是簡單地實現開關的接通或斷開,但必須有一套相應的程序與之配合,來解決按鍵的識別,防止抖動以及鍵值的產生等工作。因此,鍵盤接口電路和軟件程序必須解決以下一些問題。(1)檢查是否有鍵按下。(2)若有鍵按下,判斷是哪一個鍵并確定其鍵號或鍵值。(3)去抖動。目前,按鍵是利用機械觸點,一個電壓信號通過機械觸點的閉合、斷開過程。波形如圖8.1.1所示。(4)處理多鍵同時按下。對于同時有兩個以上的鍵被按下的情況,有三種處理方法:第一,“雙鍵同時按下”。第二,“N鍵鎖定”。(5)鍵輸入軟件處理。圖8.1.2是單片機鍵輸入處理流程圖。圖8.1.1按鍵閉合及斷開時的電壓抖動圖8.1.2單片機鍵輸入處理流程圖在圖8.1.3中;用P1口8根I/O線連接8個按鍵。圖8.1.3中鍵值輸入采用查詢方式。不包括延時去抖動程序。只包括按鍵查詢、鍵功能轉移和8個鍵號處理程序入口等三部分。程序清單如下:START:MOVA,#0FFH;置P1為輸入狀態,讀引腳MOVP1,A;P1口鎖存器寫1,讀引腳有效MOVA,P1;輸入按鍵狀態供查詢用JNBACC.0,P10;0號鍵按下轉JNBACC.1,P11;1號鍵按下轉JNBACC.2,P12;2號鍵按下轉JNBACC.3,P13;3號鍵按下轉JNBACC.4,P14;4號鍵按下轉JNBACC.5,P15;5號鍵按下轉JNBACC.6,P16;6號鍵按下轉JNBACC.7,P17;7號鍵按下轉JMPSTART;返回接著查詢P10:LJMPPORT0;轉0~7號鍵處理程序入口P11:LJMPPORT1;…P17:LJMPPORT7;以下是各功能鍵處理程序結構:PORT0:…;0號鍵處理程序…LJMPSTART;從0號鍵程序執行完返回PORT1:…;1號鍵處理程序…LJMPSTART;返回…PORT7:…;7號鍵處理和程序…LJMPSTART;返回2.矩陣式連接非編碼鍵盤矩陣式又稱為行列式鍵盤。(1)矩陣式鍵盤工作原理4行×4列鍵盤工作原理如圖8.1.4所示。圖8.1.44×4簡單鍵盤結構列線Y行線X01111011→100000100=84HCPU操作時,先輸出行有效信號,再輸入列信號,經過拼裝、求反得到鍵值,由于這種對應是唯一的,所以可用來識別鍵盤上所有的鍵,根據上述關系可求出其它鍵的鍵值如下:鍵盤上的字符0123456789ABCDEF鍵字81H82H42H22H84H44H24H88H48H28H18H14H12H11H21H41H
(2)矩陣式非編碼鍵盤接口及程序設計鍵盤接口如圖8.1.5所示。設A口地址0101H,C口地址0103H。圖8.1.5用8155作矩陣式非編碼鍵盤接口電路
1.子程序鍵盤掃描程序中要調用兩個子程序:DIRLED顯示器顯示子程序(程序略)。該程序具有延時功能,其延時時間為6ms。KS1判斷子程序。該程序判斷是否有鍵閉合。程序如下:KS1: MOV DPTR, #0101H;MOV A, #00H;A口送00HMOVX @DPTR, A;INC DPTR;INC DPTR;建立C口地址MOVX A, @DPTR;讀C口CPL A,;A取反,無鍵按下則全0ANL A, #0FH;屏蔽A高半字節RET執行KS1判斷子程序的結果是:有鍵閉合則(A)≠0,無鍵閉合則(A)=0。2.鍵盤掃描程序KEY1: ACALL KS1 ;檢查有鍵閉合否JNZ LK1 ;A非0則轉移NI: ACALL DIR ;顯示一次(延時6ms)AJMP KEY1 LK1: ACALL DIR ;有鍵閉合二次延時ACALL DIR ;共12ms去抖動ACALL KS1 ;再檢查有鍵閉合否JNZ LK2 LK2ACALL DIR AJMP KEY1 ;無鍵閉合,延時6ms后轉KEY1LK2: MOV R2, #0FEH ;掃描初值送R2MOV R4,#00H;掃描行號送R4LK4: MOV DPTR,#0101H;設A口地址MOV A,R2MOVX @DPTR,A;掃描初值送A口INC DPTRINC DPTR ;指向C口MOVX A,@DPTR;讀C口JB ACC.0,LONE;ACC.0=1,第1列無鍵閉合,轉LONEMOV A,#00H ;裝第1列列值AJMP LKPLONE:JB ACC.1,LTWO;ACC.1=1,第2列無鍵閉合,轉LTWOMOV A,#08H ;裝第2列列值AJMP LKPLTWO:JB ACC.2,LTHR;ACC.2=1,第3列無鍵閉合,轉LTHRMOV A,#10H ;裝第3列列值AJMP LKPLTHR:JB ACC.3,NEXT;ACC.3=1,第4列無鍵閉合,轉NEXTMOV A,#18H ;裝第4列列值LKP:ADD A,R4 ;計算鍵值PUSH A ;保護鍵值LK3:ACALL DIR ;延時6msACALL KS1 ;查鍵是否繼續閉合,若閉合再延時JNZ LK3 ;若鍵起,鍵值送APOP ARETNEXT: INC R4 ;掃描行號加1MOV A,R2JNB ACC.7,KND;第7位為0,已掃完最高列,轉KNDRL A ;循環左移1位MOV R2,AAJMP LK4 ;掃描下一行KND: AJMP KEY1 ;掃描完畢,開始新的一次掃描8.1.2編碼鍵盤表8.1.1具有優先級的8位編碼器CD4532BD真值表狀輸輸入編碼輸出EinI7I6I5I4I3I2I1I0GSO2O1O0Eout0××××××××00000100000000000011×××××××1100001××××××10100101×××××100101001××××1000101101×××10000110001××100000110101×10000001110011000000011110圖8.1.6是一種采用兩片CD4532B構成的16個按鍵的
為了消除鍵盤按下時產生的抖動干擾,該接口電路還設置了單穩態電路(B1、B2、R2和C2)與延時電路(A4、R3和C1),電路中E、F、G和H這四點的波形如圖8.1.7所示。圖8.1.7消抖電路波形圖8.2數碼顯示方法8.2.1發光二極管LED顯示1.7段LED顯示器結構與原理圖8.2.17段LED顯示器件2.LED顯示器兩種顯示方式點亮LED顯示器有兩種方式:靜態顯示和動態顯示。下面以共陰極接法為例說明。表8.2.1LED段選碼和顯示字符之間關系顯示字符共陰極段選碼共陽極段選碼顯示字符共陰極段選碼共陽極段選碼03FHC0HA77H88H106HF9HB7CH83H25BHA4HC39HC6H34FHB0HD5EHA1H466H99HE79H86H56DH92HF71H8EH67DH82HP73H82H707HF8H·80H7FH87FH80H=·C8H37H96FH90H“全滅”00HFFH
(1)LED靜態顯示方式所謂靜態顯示就是將N位共陰極LED顯示器的陰極連在一起接地,每一位LED的8位段選線與一個8位并行口相連,當顯示某一個字符時,相應的發光二極管就恒定地導通或截止。一個4位靜態顯示電路如圖8.2.2所示。圖8.2.24位靜態LED顯示電路
(2)LED動態顯示方式所謂動態顯示就是用掃描方式一位一位地輪流點亮LED顯示器的各個位。圖8.2.3是一個8位動態顯示原理圖。按圖8.2.3從左向右的順序輪流顯示8位LED的位選碼為左1→7FH→BFH→DFH→EFH→F7H→FBH→FDH→FEH→循環圖8.2.38位LED動態顯示原理圖用8031右移循環指令可實現:MOVA,#7FH;點亮左1LED的位選碼LOOP:MOVX@DPTR,A;從I/O(2)口輸出位選碼RRA;右移一位,指向下一個LED位LCALLDELAY;調延時3ms子程序LJMPLOOP;返回顯示下一位LED3.用硬件譯碼的8位靜態LED顯示接口電路(1)MC14495使用功能介紹該芯片為16條引腳。內部結構如圖8.2.4所示。由圖8.2.4可見:4位鎖存器對A、B、C和D端輸入的BCD碼進行鎖存。由選通線LE控制鎖存器,當LE=0時,允許輸入數據,在LE=1時,鎖存輸入數據。輸入譯碼電路將輸入的BCD碼:0000~1001、1010~1111譯成7段a、b、c、d、e、f、g輸出,0~9、A~F等16個字符。電路特點是用字母A、B、C、D、E、F、來顯示對應的十進制數10、11、12、13、14、15。引腳h+i為輸入數據值指示端:當輸入值>10時h+i=1;輸入數值<10時,h+i=0。當輸入ABCD=1111(15)時,VCR=0。驅動器輸出10mA電流,并有內部輸出限流電阻,可直接與顯示器相連接,故LED不須外加限流電阻。MC14495輸入、輸出及顯示字符關系由表4.2.2所示。圖8.2.4MC14495BCD-7段16鎖存譯碼驅動器
(2)MC14495與8031單片機和顯示器接口使用8片MC14495和8位7段LED顯示器與8031單片機接口電路如圖8.2.5。
由圖8.2.5可見:8個7段LED采用共陰極接法。用P1口的低4位輸出BCD待顯示的數字到A、B、C、D公共輸入端。由P1口高4位P1.4~P1.7控制74LS138譯碼器的輸出Y0~Y7分別決定MC14495哪一個輸入鎖存器LE有效。這樣由P1口一次輸出8位代碼即可完成一位LED靜態顯示圖8.2.5使用MC14495的8位靜態LED顯示接口表8.2.2MC14495輸入、輸出及顯示字符表輸入狀態輸出段選碼引腳顯示字符DCBAh+igfedcba0000001111110000100000110100100101101120011010011113010001101101401010111110150110000001116011101111111710000110111181001011111009101011110111A101111111100B110010111001C110111011110D111011111001E111111110001F若使1#LED顯示0字符,則P1口輸出10000000B=80H,用程序實現:MOVA,#80H;選中1#LED,顯示0字符MOVP1,A;輸出,Y0=0,ABCD=0000其它位的選擇和顯示0~F字符可根據需要按上述規律編寫。
4.用軟件譯碼的8位動態LED顯示接口電路(1)軟件譯碼的動態顯示硬件接口設計8位7段LED顯示器需要兩個8位并行輸出口,一個輸出段選碼,另一個輸出8位位選碼。用8031擴展一片8155I/O接口可滿足要求,用PB口輸出段選碼,PA口由動態掃描方式輸出位選碼,用7407作為驅動器,實現上述功能的硬件接口電路如圖8.2.6所示。圖8.2.6通過8155擴展I/O口控制的8位LED動態顯示接口電路
(2)8位動態LED顯示程序設計動態顯示程序設計要點有三方面:1.8155初始化2.代碼轉換3.碼的形成。如圖8.2.7所示。圖8.2.7LED數字顯示緩沖區
圖8.2.88位動態LED顯示子程序流程圖根據圖8.2.8編寫的程序清單如下:DIS:MOVA,#03H;8155命令字PA、PB口基本輸出MOVDPTR,#7F00H;8155I/O命令口地址MOVX@DPTR,A;寫入8155方式命令字MOVR0,#10H;送片內顯示緩沖區RAM首地址MOVR3,#7FH;位選碼,最左一位先亮MOVA,R3;暫存于A中LD0:MOVDPTR,#7F01H;指向PA口地址MOVX@DPTR,A;從PA口輸出位選碼MOVA,@R0;取待顯示數據送AMOVDPTR,#TABLE;指向換碼表首地址MOVCA,@A+DPTR;取出對應段選碼MOVDPTR,#7F02H;指向PB口地址MOVX@DPTR,A;從PB口輸出段選碼ACALLDL1;調用延時1ms子程序MOVA,R3;JNBACC.0,LD1;判斷8位LED顯示完轉(Acc.0=0)RRA;未顯示完右移一位,變成下一位位選碼MOVR3,A;暫存INCR0;指向下一個RAM顯示地址LJMPLD0;轉回,顯示下一個數碼LD1:RET;以下是待顯示數據對應的段選碼換碼表:TABLE:DB3FH;對應字符0DB06H;對應字符1DB5BH;對應字符2DB4FH;對應字符3DB66H;對應字符4DB6DH;對應字符5DB7DH;對應字符6DB07H;對應字符7DB7FH;對應字符8DB6FH;對應字符9DB77H;對應字符ADB7CH;對應字符BDB39H;對應字符CDB5EH;對應字符DDB79H;對應字符EDB71H;對應字符F以下是軟件延時1ms子程序(相對于8031為6MHz時鐘):DL1:MOVR7,#64H;DLAY:NOP;2usNOP;2usNOP;2usDJNZR7,DLAY;4usRET述程序設計成子程序,一次只能從左向右顯示一次。為了使顯示字符穩定下來,必須反復調用該程序。8.2.2液晶顯示器LCD顯示1.LCD的基本結構及工作原理液晶顯示器的結構如圖8.2.9所示圖8.2.9液晶顯示器基本結構2.LCD的驅動方式圖8.2.10LCD交流驅動原理圖(a)驅動電路(b)驅動波形(c)真值表圖8.2.11七段液晶顯示器電極配置及譯碼驅動電路表8.2.3七段LCD譯碼及數字顯示DCBAabcdefg顯示字符000011111100000101100001001011011012001111010013010001100114010110110115011010111116011111100007100011111118100111110119
設8031片內RAM2OH――23H四個單元為顯示緩沖區,每個顯示緩沖區內為4位分離的BCD碼,其顯示子程序如下:LDIR:MOVR0,#20H;顯示緩沖區首址送R0MOVR3,#00H;位選碼送R3MOVR4,#04H;位數送R4LOOP:MOVA,R3;位選碼送ASWAPA;位選碼置入高四位MOVR2,A;保存位選碼MOVA,@R0;取顯示碼ORLA,R2;位選碼與BCD碼組合ORLA,#80H;ACC。7置1MOVP1,A;輸出組合碼ANLP1,#7FH;清P1。7位ORLP1,#80H;P1。7再置1INCR3;指向下一位顯示數INCR0;指向下一位顯示緩沖單元DJNZR4,LOOP;四位未顯示完返回RET圖8.2.12給出了4位液晶顯示電路接口圖。圖8.2.12四位LCD靜態顯示電路8.3鍵盤顯示專用接口8.3.1串行口硬件譯碼鍵盤顯示器接口MOS-LED譯碼驅動器MC148.3.1所示圖8.3.1MC14499管腳配置圖8.3.3串行硬件譯碼顯示、鍵盤接口D:串行數據輸入端;a,b,c,d,e,f,g:七段顯示譯碼輸出;Ⅰ,Ⅱ,Ⅲ,Ⅳ:字位選擇端,用來產生LED選通信號;OSC:振蕩器外接電容端,外接電容使片內振蕩器產生200~800HZ掃描信號以防止LED顯示器閃爍;CLK:時鐘輸入端,用以提供串行接收的控制時鐘,標準時鐘頻率為250KHZ;EN:使能端,EN=0時,MC14499允許接收輸入;EN=1時,片內的位移寄存器將數據送入鎖存器中鎖存。設要顯示數據的BCD碼按千、百、十、個位次序依次存放在@R0、@R0+1尋址的高低8位中。程序清單如下:顯示子程序:DIS:MOVSCON,;設置串行口工作方式0MOVR0,#AD;待顯示字節地址(千位百位)MOVR2,#02H;待顯示字節數CLRP1.7
;啟動MC1449,EN=0LOOP:MOVA,@R0MOVSBUF,A;發送一個顯示WAIT1:JNBTI,WAIT1;未完等待CLRTI
;清標志INCR0
;修改地址DJNZR2,LOOP;發送下一個字節SETBP1.7
;關閉MC1449,EN=1鍵盤掃描子程序KEY:MOVA,#00H;送全掃描字MOVSBUF,ALOOP1:JNBTI,LOOP1;未送完等待CLRTI
;送完清標志KEY1:JBP1.0,KEY1
;等待鍵按下ACALLTIME;去抖延時JBP1.0,KEY1;是抖動返回MOVR7,#08H;置列線數MOVR6,#0FEH;置列掃描字MOVR4,#00H;置鍵初值MOVA,R6;KEY2:MOVSBUF,A;LOOP2:JNBTI,LOOP2;未完等待CLRTI;送完清標志JNBP1.0,KEY3;該列鍵按下,轉該鍵處理MOVA,R6;該列無鍵按下,轉下列掃描RLAMOVR6,AINCR4;鍵號加1DJNZR7,KEY2;8列未掃描完,繼續ACALLDIS;8列掃完,調用一次顯示AJMPKEY;未查到,重新鍵掃描KEY3:MOVA,#00H;再掃描MOVSBUF,ALOOP3:JNBTI,LOOP3CLRTILOOP4:JNBP1.0,LOOP4;等待鍵釋放RETTIME:MOVR7,#0AH;返回結束,出口狀態R4的內容為鍵值TM1:MOVR6,#0FFH;延時10ms子程序TM0:DJNZR7,TM0DJNZR7,TM1RET8.3.28279可編程鍵盤/顯示器通用接口8279主要特性如下:(1)能同時執行鍵盤與顯示器的管理操作。(2)掃描式鍵盤工作方式,可設置8×8=64個按鍵。(3)能自動消除按鍵去抖動及多個鍵同時按下保護。(4)可與8位或16位LED顯示器連接。(5)由鍵盤輸入產生中斷信號,可向CPU申請中斷。(6)和8位或16位單片機接線簡單、容易。1.8279片內結構和工作原理8279片內結構如圖8.3.4所示。各部分工作原理如下:(1)數據緩沖器和I/O控制器I/O控制器實現讀、寫、片選和信息類型的控制。A0用以區分信息特性。當A0=1時,CPU寫入8279的信息為命令字,讀出的為狀態字;當A0=0時,CPU對8279寫入或讀出的均為數據。(2)定時與控制寄存器及定時與控制定時與控制寄存器用來寄存鍵盤及顯示器的工作方式、鎖存操作命令字,通過譯碼產生相應的控制信號,對8279的各個部件完成一定的控制功能。圖8.3.48279的片內結構(3)掃描計數器.一種為編碼方式另一種是譯碼方式(4)鍵輸入控制回復緩沖器和去抖動控制。(5)FIFORAM(6)顯示RAM2.8279引腳功能8279采用40條引腳。分三部分:連接鍵盤;連接顯示器;連接CPU。引腳功能如圖8.3.5所示。圖8.3.58279引腳邏輯功能(1)與CPU連接的引腳8279與CPU連接的引腳有:D7~D08位數據總線;RD、WR;片選線CS等。與一般芯片功能相同。A0——數據類型選型輸入線。A0與CS連接P0、P2口的兩根線可確定8279地址。CLK——時鐘輸入線。為8279片內提供時鐘輸入,可連接8031的ALE端作為時鐘輸入。IRQ——中斷請求輸出線,高電平有效。RESET——復位輸入線。當RESET=1時,8279復位,其復位狀態為:選擇16個LED顯示位;選擇編碼掃描鍵盤、雙鍵鎖字;程序時鐘選擇為對CLK輸入進行N分頻。BD——消隱控制輸出線,低電平有效,顯示器切換或用消隱命令時,將顯示消隱。(2)與鍵盤連接線RL0~RL7——鍵盤回復輸入線。是對矩陣鍵盤行(或列)掃描由列(或行)輸入的信號線。SHIFT——偏移輸入線,鍵入和選通方式中不用此腳,可接地。CNTL/STB——控制或選通線。上升沿時讀入回復輸入線RL0~RL7上的數據。(3)與LED顯示器連接線OUTB3~0、OUTA3~0——顯示數據段選碼輸出線。OUTB3~0是低4位連接8段LED的d、c、b、a段;OUTA3~0是高4位,連接LED的dp、g、f、e段。SL3~SL0——掃描輸出線。用來掃描鍵盤和顯示器(輸出位選碼)。可以編程設定為編碼:4中取1輸出或譯碼輸出16中取1。3.8279的操作命令字CPU通過對8279的編程來選擇操作方式。8279共有8條命令字,在實際操作中不一定每一次都使用。(1)鍵盤/顯示器方式命令字命令格式如下:D7D6D5D4D3D2D1D0000DDKKK
其中D7D6D5D=000為該字特征位;D4D3(DD)——用來設定顯示方式。其定義如下:D4D3顯示器方式008個LED顯示字符,左入口輸入開始0116個LED顯示字符,左入口輸入開始(復位后狀態)108個LED顯示字符,右入口輸入開始1116個LED顯示字符,右入口輸入開始D2D1D0(KKK)——鍵盤工作方式選擇位。用來設定8種鍵盤(附帶顯示器)工作方式。見表4.3.1所示:表8.3.1D2D1D0操作方式000外部編碼掃描鍵盤(16取1),雙鍵互鎖001內部譯碼掃描鍵盤(4取1),雙鍵互鎖010外部編碼掃描鍵盤N鍵依次讀出011內部譯碼掃描鍵盤N鍵依次讀出100外部編碼掃描傳感器矩陣方式101內部譯碼掃描傳感器矩陣方式110選通輸入方式,外部編碼顯示掃描111選通輸入方式,內部譯碼顯示掃描雙鍵互鎖:就是當鍵盤中同時有兩個鍵被按下時,任何一個鍵的編值均不能進入FIFORAM中,直至僅剩一個鍵保持閉合時,該鍵的鍵值才能進入到FIFORAM中,這種工作方式可以避免誤操作信號進入CPU而發生的故障。N鍵依次讀出方式:是N個鍵同時按下的保護方法。當有若干個鍵同時按下時,在鍵盤的掃描過程中根據發現它們的順序進行識別。依次將它們的狀態送入FIFORAM中。(2)時鐘編程命令字8279內部時鐘由外部輸入時鐘CLK經過分頻后產生內部要求的100kHz基本頻率。分頻系數由時鐘編程命令字確定,其格式如下所示:D7D6D5D4D3D2D1D0001PPPPP
D7D6D5——001為時鐘編程命令字的特征位。D4~D0(ppppp)——分頻系數。用來設定對外部輸入CLK端時鐘進行N=2~31分頻。按式N=CLK(頻率)/100KHz計算。例如CLK=2MHz,則N=20,設定ppppp=10100(N=20),時鐘編程命令字為00110100B=34H,可由CPU指令寫入該寄存器。(3)讀鍵字RAM命令該命令字只在讀鍵字方式時使用。格式為:D7D6D5D4D3D2D1D0010AI-任意AAA
D7D6D5=010為該字特征位。CPU在讀鍵字RAM之前,必須用這條命令來設定RAM的8個地址(每個地址一個字節)。D2D1D0(AAA)——為讀鍵字RAM中的8個字節地址。D4(AI)——自動增量特征位。若AI=1,CPU則從RAM起始地址開始依次讀出,每次讀出后,地址自動加1;AI=0時,CPU僅讀出一個RAM中單元的內容。(4)讀顯示緩沖器RAM命令字CPU在讀(檢查)顯示數據之前,必須先輸出讀顯示緩沖器RAM命令字。用來設定將要讀出的顯示RAM地址。格式:D7D6D5D4D3D2D1D0011AI-AAAA
D7D6D5=011為讀顯示RAM命令字特征位。D3~D0(AAAA)——用來尋址顯示RAM中存儲單元。由于位顯示RAM有16個字節單元,故需要4位數尋址。D4(AI)——自動增量特征位。當AI=1時,CPU每次讀出RAM數據后地址自動加1,指向下一個地址(5)寫顯示緩沖器RAM命令字當CPU要執行寫入8279顯示緩沖區RAM數據之前,先用該命令字給出要寫入顯示RAM地址。該命令字格式為:D7D6D5D4D3D2D1D0100AI-AAAA
D7D6D5=100為寫顯示RAM命令字特征位。D3~D0(AAAA)——用來尋址顯示緩沖器RAM的16位存儲單元。若AI=1,CPU除在第一次寫入RAM時必須給出地址外,以后每次寫入,地址自動加1,直至所有顯示緩沖器RAM數據全部寫完。(6)顯示器禁止寫入/熄滅命令字命令字格式為:D7D6D5D4D3D2D1D0101任意-IWAIWBIWAIWB
D7D6D5=101為該字特征位。D3D2(IWA,IWB)——表示禁止寫入A、B組顯示RAM。由于顯示寄存器分成A、B兩組,可以單獨送數,故用兩位來分別禁止。當IWA=D3=1,IWB=D2=0時,則A組的顯示RAM禁止寫入,但不影響B組的RAM寫入。D1D0(BLA、BLB)——LED熄滅設置位。當D1D0=11時,則同時熄滅A、B兩組LED顯示。當D1D0=00時恢復顯示。(7)清除命令字該命令字用來清除讀鍵字RAM和顯示緩沖器RAM。其格式如下:D7D6D5D4D3D2D1D0110CD-CDCDCFCA
D7D6D5=110為清除命令字特征位。D4D3D2(CDCDCD)——用來設定清除顯示RAM方式。共有4種方式,見下表:D4D3D2清除方式10×將顯示RAM全部清0110將顯示RAM清成20H(A組=0010;B組=0000)111將顯示RAM全部置10××不清除(CA=0);若CA=1時,則D3D2仍有效D1(CF)——用來置空鍵字RAM。當CF=1時,執行清除命令后,鍵字RAM被置空,使中斷輸出線IRQ復位。同時,RAM的讀出地址也被置0。D0(CA)——是總清除的特征位。它兼有CD和CF的聯合效用。當CA=1時,對顯示RAM的清除方式由D3D2的編碼確定。清除顯示緩沖器RAM大約需160μs。在此時間,顯示無效,CPU不能向顯示緩沖器RAM寫入數據。上述用于確定8279操作方式的命令字用戶在使用時要注意以下幾點:(1)由于是寫入命令字,要求數據類型選擇線A0=1,因此8個寫入命令字占用一個口地址。(2)所有命令字類型皆由D7D6D5特征位確定區別。在CPU寫入8279后能自動尋址相應的命令寄存器,與寫入的先后順序無關。(3)每次進行8279初始化不一定要求寫入所有的控制命令字。而是根據要求寫入相關的命令字。4.鍵盤輸入數據格式在鍵盤掃描方式下,進入鍵字RAM中的鍵輸入數據對應于該鍵所在鍵盤上的行、列位置。鍵輸入數據的格式如下:D7D6D5D4D3D2D1D000-SCANRETURND7D6=00;表示引腳CNTL和SHIFT均接地,可與鍵盤的8×8=64個按鍵配合工作。D2D1D0(RETURN)——表示輸入鍵所在的列號。由RL0~RL7的狀態決定。D5D4D3(SCAN)——表示輸入鍵所在行號,由掃描計數值SL2~SL0的狀態確定。上述鍵盤輸入數據格式組成按鍵的鍵值。圖8.3.6給出了8×8鍵盤鍵號與鍵值。在鍵盤輸入格式中,用D5D4D3表示SL2~SL0的8個譯碼狀態,用D2D1D0表示RL7~RL0的8位狀態。圖8.3.68279的8×8鍵盤的鍵號與鍵值8.3.38279接口和編程方法1.硬件設計采用2行×8列=16個鍵盤。數字鍵為0~9,命令鍵采用A、B、C、D、E、F。雙鍵互鎖。鍵值與鍵號相同:00H~0FH。顯示器采用8位8段LED,編碼掃描(8中取1)。8279的OUTA0-OUTA3依次連接顯示器a、b、c、d、e、f、g、dp段。這樣可保證顯示器所需要的段選碼和程序中所列出的段選碼表相一致。電路如圖8.3.7所示。圖8.3.7實用8279鍵盤/顯示器接口電路2.軟件設計軟件程序包括:8279初始化程序,8279鍵盤經中斷處理程序,8279顯示程序,鍵盤散轉分類程序。(1)8279初始化程序1)清除命令字。本命令碼為D1H,D7D6D5=110為特征位;D4為清除顯示有效。D0=1為全清,包括:顯示RAM、顯示器熄滅等。2)設置顯示器/鍵盤工作方式。本命令字碼為00H。選擇8位LED顯示器,左入口、雙鍵互鎖。3)時鐘編程命令字。由ALE輸入到CLK端為2MHz,則分頻系數為N=2MHz/100KHz=20,因此本命令字為34H。
`4)允許INT1中斷。根據上述分析,8279初始化程序框圖如圖8.3.8所示。圖8.3.88279初始化程序框圖(2)8279鍵盤中斷程序若操作人員有按鍵,則鍵值自動進入8279FIFORAM中,然后8279的引腳IRQ=1,向INT1申請中斷。在中斷程序中,CPU先向8279寫入讀FIFORAM命令字40H,再讀出鍵值送A中。中斷返回后執行鍵盤分類程序。8279鍵盤中斷程序框圖如圖4.3.9。(3)8279顯示子程序顯示子程序框圖如圖8.3.10所示。圖8.3.98279鍵盤中斷程序框圖
圖8.3.108279顯示子程序框圖根據上述分析,可編出8279鍵盤、顯示器初始化及管理程序如下。初始化主程序:ORG0000HLJMPSTARTORG0100HSTART:MOVSP,#50H;設置堆棧指針MOVDPTR,#7FFFH;指向8279命令口地址MOVA,#0D1H;總清除顯示RAM命令字MOVX@DPTR,A;總清除命令字寫入8279LP1:MOVXA,@DPTR;讀8279內狀態字JBACC.7,LP1;等待清除顯示RAMMOVA,#00H;設置鍵盤/顯示器工作方式命令字MOVX@DPTR,A;命令字寫入8279MOVA,#34H;對CLK20分頻為100KHz命令字MOVX@DPTR,A;分頻命令字寫入8279MOVDPTR,#DISBH;顯示提示符“bh–706”代碼表首地址LCALLDIS;轉提示符顯示子程序MOV20H,#80H;20H為鍵盤數據緩沖單元,設D7=1為空SETBIT1;下降沿觸發中斷SETBEA;開放CPU中斷SETBEX1;允許中斷ATD:MOVB,#03H;擴展程序入口地址表間隔RDKEY:MOVA,20H;取鍵盤數據緩沖器內容JNBACC.7,K0;ACC.7=0,已有鍵值轉K0SETBEASJMPRDKEY;鍵盤數據緩沖單元20H空,等待按鍵中斷K0:MOV20H,#80H;鍵盤數據緩沖單元,置空標志,D7=1CLREA;關CPU中斷,處理鍵值分類MOVDPTR,#K1;K1為鍵功能程序入口地址表首地址MULABJMP@A+DPTR;鍵功能程序散轉操作者按鍵后,鍵號碼的行、列進入8279FIFORAM單元,同時IRQ=1,向INT1=0申請中斷,CPU執行下面讀鍵值中斷服務程序:ORG 0013H ;INT1中斷矢量LJMP INT1 ORG 1000H INT1:MOV A,#40H ;讀RAM鍵值命令字MOV DPTR,#7FFFH;8279命令字口地址MOVX @DPTR,A ;命令字寫入8279MOV DPTR,#7FFEH;指向8279數據口地址MOVX A,@DPTR ;將RAM中鍵值讀入AMOV 20H,A ;鍵值送緩沖單元20H,D7=0RETI ;中斷返回以下為鍵盤散轉程序:K1:LJMPG0;轉0鍵處理程序入口LJMPG1;轉1鍵處理程序入口……LJMPG9;轉9鍵處理程序入口LJMPGA;轉A鍵處理程序入口……LJMPGF;轉F鍵處理程序入口以下為16個功能鍵處理程序結構:G0:……;0鍵功能處理程序……LJMPATD;返回G1:……;1鍵功能處理程序……LJMPATD;返回……GF:……;F鍵功能處理程序……LJMPATD;返回以下為顯示子程序:DIS:PUSHDPH;提示符顯示代碼地址入棧保護PUSHDPLMOVR2,#08H;顯示器LED位數送R2MOVA,#90H;寫顯示RAM命令字MOVDPTR,#7FFFH;8279命令口地址MOVX@DPTR,A;將命令字寫入8279POPDPL;回恢復地址POPDPHTI:MOVA,#00H;采用固定偏移量查提示符表MOVCA,@A+DPTR;查提示符代碼表相對偏移量PUSHDPHMOVDPTR,#TABA,@A+DPTR;指向段選碼表首地址MOVCA,@A+DPTR
;取段選碼送APUSHDPLMOVDPTR,#7FFEH;指向8279數據口地址MOVX@DPTR,A;段選碼寫入8279顯示RAM中POPDPLPOPDPHINCDPTR;指向下一個提示符代碼地址DJNZR2,TI;8位LED未顯示完,繼續送RET;送完返回以下為提示符“bH706”段選碼查表的相對偏移量:DISBH:DB0BH,11H,13H,07H,00H,06H,13H,13H
以下為顯示段碼、字符和偏移量對應表TAB:DB3FH;000HDB06H;101HDB5BH;202HDB4FH;303HDB66H;404HDB6DH;505HDB7DH;606HDB07H;707HDB7FH;808HDB6FH;909HDB77H;A0AHDBTC1H;b0BHDB39H;C0CHDB5EH;D0DHDB79H;E0EHDB71H;F0FHDB73H;P10HDB76H;H11HDBFFH;曰12HDB00H;熄滅LED13HEND8.4微型打印機及接口電路8.4.1GP16微型打印機及接口GP16打印機的工作原理GP16為一種早期的智能微型打印機,機芯為Model-150-??16行針打。機內控制器由8039單片機構成。GP16-??為改進型,控制器由8031單片機實現。GP16微型打印機只有16根能外接口信號錢和3個控制開關,使用+5電源,可以打印字符串,數據和圖表。圖8.4.1為其接線示意圖。K1K2K33333GP16微型打印機+5V+5VIO00IO01IO02IO03IO04IO05IO06IO07CSWRRDBUSY地地圖8.4.1GP16微型打印機接線示意圖IO0.0~IO0.7:雙向三態數據總線,是CPU與打印機之間命令,數據和狀態信息傳輸線。CS:設備選擇線,低電平有效。BUSY:打印狀態輸出線,BUSY輸出高電平表示GP16處于忙狀態,不能接收CPU命令或數據。該信號可供CPU查詢或向CPU發中斷請求信號。K1:空走紙開關;K2:復位停機開關;K3:自檢開關。GP16的打印命令占兩個字節,格式為:
命令中的點行n是選擇字符行之間的行距參數,字符本身占距7個點行,所以打印點行數應大于或等于8,若n=10則行距為3個點行數。打印行數NNH是指需要打印(或空走紙)的字符行數。表8.4.1是GP16的命令編碼表。命令功能操作碼空走紙1000字符串打印1001十六進制數據打印1010圖形打印1011空走紙命令(8nNNH)執行空走紙命令時,打印機自動空走紙NN╳n點行。其間忙狀態(BUSY)置1,執行完后清零。打印字符串命令(9nNNH)執行完該命令后,打印機等待CPU寫入字符數據,當接收完16個字符(一行)后,轉入打印,打印一行需時約一秒。若收到非法字符作空格處理。若收到換行(OAH)碼,作停機處理。打完本行即停止印。當打印完規定的NNH行數后,忙狀態(BUSY)清零。GP16可打印的字符編碼如表8.4.2所示。(3)十六進制數據打印命令(AnNNH)本指令通常用來直接打印內存數據。當GP16接收到數據打印命令后,把CPU寫入的數據字節分兩次打印,先打印高4位,后打印低4位,一行打印4個字節數據。行首為相對地址。(4)圖形打印(BnNNH)GP16接收到CPU的圖形打印命令和行數以后,等待主機送來一行96個字節的數據便進行打印。把這些數據所確定的圖形打印出來,然后再接受CPU的另一組圖形數據,直到規定的行數打印完為止。GP16還有一個狀態字可供CPU查詢,格式為:錯忙D7D0D0為忙位(BUSY),當CPU輸入的數據命令沒處理完時,或處于自檢狀態時均置1,空閑時置0。D7為錯誤位,當接收到非法命令時置1,接收到正確命令后復位。表8.4.2GP16打印的字符編碼2.MCS-51單片機和GP16的接口電路GP16打印機其控制電路中自身有三態鎖存器,在CS和WR控制下能鎖存CPU總線數據,故GP16可以直接和MCS-51單片機數據總線相連。接線如圖8.4.2所示。打印機地址為7FFFH。此種接法即可用于中斷方式,以可用于查詢工作方式。下面通過一個例子來說明打印程序的編制方法。圖8.4.2GP16與8031數據總線的接口方法設8031RAM內20H~28H中分別存放一、二、三區水源壓力的數據,單位為KPa。壓力數據的前兩個字節為整數部分,后一個字節為小數部分。壓力數據均以壓縮的BCD碼形式存放,要求打印格式如下:一#:_××××.××Kpa__二#:_××××.××Kpa__三#:_××××.××Kpa__為了節省數據緩沖單元,常把表格中重復且固定不變的字符,如本例中“#:_”、“Kpa”以數據表格形式存放在EPROM中,而單次出現的常數可在程序中設置代碼,如本例中的一、二、三字樣。下面給出以查詢方式編出的程序清單:PRINT:MOV DPTR,#7FFFH ;送地址WAIT0:MOVX A,@DPTR ;取打印機狀態字ANL A,#81H ;保留D7、D0位JNZ WAIT0 ;“忙”或“錯”時返回WAIT1:MOV A,#9CH ;送打印字符串命令,點行數為9CHMOVX @DPTR,AWAIT2: MOVX A,@DPTR ;查詢打印機狀態字JB ACC.7,WAIT1;有“錯”重新送打印命令JB ACC.0,WAIT2 ;“忙”再查詢MOV A,#03H ;送打印行數NNHWAIT3: MOVX A,@DPTR ;查“忙”JB ACC.0,WAIT3 ;“忙”等待MOV R1,#20H ;打印數據緩沖區首址送R1MOV R7,#00H ;行數初值送R7@DPTR,ALOOP2:MOVA,R7ADD
A,#81H
;構成一、二、三的代碼、分別是81H,82H,83HMOVX @DPTR,A ;送打印字符WAIT4: MOVX A,@DPTR ;查狀態碼JB ACC.0,WAIT4 ;“忙”等待MOV R4,#e1 ;符號代碼表TAB1首址偏移量送R4LOOP0: MOV A,R4;MOVC A,@A+PC ;取表中字符代碼MOVX @DPTR,A ;送打印WAIT5: MOVX A,@DPTR ;查狀態JB ACC.0,WAIT5 ;“忙“等待INC R4 ;指向下一個字符MOV
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 婦科護理試題庫及答案
- 了解考點分析紡織品設計師證書考試試題及答案
- 2024年紡織行業數字營銷的實施案例試題及答案
- 刺猬原理面試題及答案
- 廣告設計師考試2024年操作技能試題及答案
- 助理廣告師效果監測試題及答案解讀
- 2024年國際商業美術設計師考試試題及答案解讀
- 寶安美術面試題及答案
- 2024廣告設計師考試重點試題及答案
- 2024年紡織品檢驗員技能提升措施試題及答案
- 期中階段測試卷(試題)-2024-2025學年統編版二年級語文上冊
- 大學生防艾健康教育學習通超星期末考試答案章節答案2024年
- 工商企業管理畢業論文范文(4篇)
- 《建筑電氣》 課件全套 武校剛 第1-9章 緒論、建筑電氣中的導線 - 建筑電氣施工圖設計與識讀
- 頭腦特工隊-Inside-Out中英文字幕對照
- DL/T5210.1-2012電力建設施工質量驗收及評定規程第1部分:土建工程
- 人工牛黃質量評價新方法的探索
- 《解放思想-實事求是-團結一致向前看》課件
- 法醫學概論考試題庫及答案(二)
- 幼兒園學前班數學《基數和序數》課件
- 施工現場安全隱患檢查表
評論
0/150
提交評論