




版權說明:本文檔由用戶提供并上傳,收益歸屬內容提供方,若內容存在侵權,請進行舉報或認領
文檔簡介
第10章MCS-51與鍵盤、顯示器、撥盤、打印機的接口設計
信息技術教研室溫川雪第10章MCS-51與鍵盤、顯示器、撥盤、打印機的接1輸入外設:鍵盤、BCD碼撥盤等;輸出外設:LED顯示器、LCD顯示器、打印機等。10.1LED顯示器接口原理LED(LightEmittingDiode):發光二極管的縮寫。顯示器前面冠以“LED”。10.1.1LED顯示器的結構常用的LED顯示器為8段(或7段,8段比7段多了一個小數點“dp”段)。輸入外設:鍵盤、BCD碼撥盤等;輸出外設:LED顯示器、LC2MCS與鍵盤、顯示器、課件3為使LED顯示不同的符號或數字,要為LED提供段碼(或稱字型碼)。提供給LED顯示器的段碼(字型碼)正好是一個字節(8段)。各段與字節中各位對應關系如下:按上述格式,8段LED的段碼如表10-1所示。為使LED顯示不同的符號或數字,要為LED提供段碼提供給LE4顯示字符共陰極段碼共陽極段碼顯示字符共陰極段碼共陽極段碼03FHC0Hc39HC6H106HF9Hd5EHA1H25BHA4HE79H86H34FHB0HF71H8EH466H99HP73H8CH56DH92HU3EHC1H67DH82HT31HCEH707HF8Hy6EH91H87FH80HH76H89H96FH90HL38HC7HA77FH88H“滅”00HFFHb7CH83H………表10-1LED段碼(8段)顯示字符共陰極段碼共陽極段碼顯示字符共陰極段碼共陽極段碼035表10-1只列出了部分段碼,可根據實際情況選用。另外,段碼是相對的,它由各字段在字節中所處的位決定。例如表10-1中8段LED段碼是按格式:而形成的,“0”的段碼為3FH(共陰)。反之,如將格式改為下列格式:則“0”的段碼為7EH(共陰)。字型及段碼由設計者自行設定,習慣上還是以“a”段對應段碼的最低位。表10-1只列出了部分段碼,可根據實際情況選用。另外,段碼是6N個LED顯示塊有N位位選線和8×N根段碼線。10.1.2LED顯示器工作原理圖10-2是4位LED顯示器的結構原理圖。N個LED顯示塊有N位位選線和8×N根段碼線。10.1.27段碼線控制顯示的字型,位選線控制該顯示位的亮或暗。靜態顯示和動態顯示兩種顯示方式。1.靜態顯示方式段碼線控制顯示的字型,位選線控制該顯示位的亮或暗。靜態顯示和8各位的公共端連接在一起(接地或+5V)。每位的段碼線(a~dp)分別與一個8位的鎖存器輸出相連。顯示字符一確定,相應鎖存器的段碼輸出將維持不變,直到送入另一個段碼為止。顯示的亮度高。2.動態顯示方式所有位的段碼線相應段并在一起,由一個8位I/O口控制,形成段碼線的多路復用,各位的公共端分別由相應的I/O線控制.各位的公共端連接在一起(接地或+5V)。每位的段碼線(9圖10-4:4位8段LED動態顯示電路。其中段碼線占用一個8位I/O口,而位選線占用一個4位I/O口。圖10-4:4位8段LED動態顯示電路。其中段碼線占用一個810動態顯示接口動態顯示接口11此時同時向6位LED燈管輸出相同的字符,如何能實現顯示多個不同字符?掃描顯示方式(ScanDisplayMode):
某一時刻只選通一盞燈(其他5位是熄滅的),同時,段選線上輸出相應要顯示的字符的段碼。下一時刻,位選信號選通下一位LED,同時,段選線上輸出相應要顯示的字符的段碼。000001?此時同時向6位LED燈管輸出相同的字符,如何能實現顯示多個不121段碼39H字符C11111位選信號3EH字符U7FH字符83FH字符040H字符-73H字符P位選信號輪流選中每位LED燈,同時段碼輸出對應顯示器要顯示的字符。只要實現間隔足夠短,由于LED顯示器的余輝和人眼視覺殘留作用,造成多位同時點亮的假象。SegmentCodeDigitSelectSignal1段碼39H字符C11111位選信號3EH字符U7FH字符8131段碼00H無顯示39H字符C73H字符P3EH字符U11111位控信號1段碼00H無顯示39H字符C73H字符P3EH字符U11114圖10-5為8位LED動態顯示2003.10.10的過程。圖10-5為8位LED動態顯示2003.10.10的過程。15MOVDPTR,#TAB;表首地址MOVCA,@A+DPTR;查表段碼MOVDPTR,#A口地址MOVX@DPTR,A;輸出段碼MOVA,R4;取位碼MOVXDPTR,#C口地址MOVX@DPTR,A;輸出位碼……RLA;左移位碼MOVR4,A;保存新位碼……TAB:DB00H,00H,00H,00H,00HDB39H,73H,3EH,40HDB7FH,3FH,6DH,06H
DB00H,00H,00H,00H,00HMOVDPTR,#TAB;表首地址TAB:1610.2鍵盤接口原理1.鍵盤輸入的特點鍵盤:一組按鍵開關的集合。行線電壓信號通過鍵盤開關機械觸點的斷開、閉合,輸出波形如圖10-6。10.2鍵盤接口原理1.鍵盤輸入的特點鍵盤:一組按鍵開172.按鍵的確認檢測行線電平高電平:斷開;低電平:閉合,常用軟件來消除按鍵抖動。基本思想:檢測到有鍵按下,鍵對應的行線為低,軟件延時10ms后,行線如仍為低,則確認該行有鍵按下。3.如何消除按鍵的抖動
當鍵松開時,行線變高,軟件延時10ms后,行線仍為高,說明按鍵已松開。采取以上措施,躲開了兩個抖動期t1和t3的影響。2.按鍵的確認檢測行線電平常用軟件來消除按鍵抖動。基1810.2.2鍵盤接口的工作原理獨立式按鍵接口和行列式鍵盤接口。1.獨立式鍵盤接口各鍵相互獨立,每個按鍵各接一根輸入線,通過檢測輸入線的電平狀態可很容易判斷那個鍵被按下。此種接口適于鍵數較少或操作速度較高的場合。圖10-7(a)為中斷方式的獨立式鍵盤工作電路圖10-7(b)為查詢方式的獨立式鍵盤工作電路。10.2.2鍵盤接口的工作原理獨立式按鍵接口和行列式鍵盤19MCS與鍵盤、顯示器、課件20圖10-8為8255A擴展I/O口的獨立式按鍵接口電路。圖10-8為8255A擴展I/O口的獨立式按鍵接口電路。21圖10-9用三態緩沖器擴展的I/O口的按鍵接口電路。圖10-9用三態緩沖器擴展的I/O口的按鍵接口電路。22對圖10-9獨立式鍵盤編程,軟件消抖,查詢方式檢測鍵的狀態。僅有一鍵按下時才有效才處理。KEYIN:MOVDPTR,#0BFFFH;鍵盤端口地址BFFFH MOVXA,@DPTR ;讀鍵盤狀態 ANLA,#1FH ;屏蔽高三位MOVR3,A ;保存鍵盤狀態值LCALLDELAY10 ;延時10ms去鍵盤抖動MOVXA,@DPTR ;再讀鍵盤狀態ANLA,#1FH ;屏蔽高三位CJNEA,R3,RETURN;兩次不同,抖動引起轉RETURN CJNEA,#1EH,KEY2;相等,有鍵按下,不等轉KEY2對圖10-9獨立式鍵盤編程,軟件消抖,查詢方式檢測鍵的狀23 LJMPPKEY1 ;是K1鍵按下,轉K1鍵處理 ;子程序PKEY1KEY2:CJNEA,#1DH,KEY3;S2鍵未按下,轉KEY3 LJMPPKEY2 ;S2鍵按下,轉PKEY2處理KEY3: CJNEA,#1BH,KEY4 ;S3未按下,轉KEY4 LJMPPKEY3;S3按下,轉PKEY3處理KEY4:CJNEA,#17H,KEY5;S4鍵未按下,轉KEY5
LJMPPKEY4;S4按下,轉PKEY4處理KEY5: CJNEA,#0FH,PASS;S5未按下,轉RETURN LJMPPKEY5;S5按下,轉PKEY5處理RETURN:RET;重鍵或無鍵按下,從子程序返回識別和編程簡單,用在按鍵數較少的場合。 LJMPPKEY1 ;是K1鍵按下,轉K1鍵處理 242.行列式(矩陣式)鍵盤接口用于按鍵數目較多的場合,由行線和列線組成,按鍵位于行、列的交叉點上。如圖10-10所示。2.行列式(矩陣式)鍵盤接口用于按鍵數目較多的場合251111無鍵按下當有鍵按下時,行線電平由列線的電平來決定無鍵按下,該行線為高電平。00000
011110111101列輸出行輸入逐列置低電平,其余各列置為高電平檢查各行電平變化如檢查出在某行線電平為低,對應此時列線低電平出現位置,交叉點處為按鍵按下處1111無鍵按下當有鍵按下時26
按鍵數目較多的場合,行列式鍵盤與獨立式鍵盤相比,要節省很多的I/O口線。10.2.3鍵盤的工作方式單片機在忙于各項工作任務時,如何兼顧鍵盤的輸入,取決于鍵盤的工作方式。原則:即要保證能及時響應按鍵操作,又不要過多占用CPU的工作時間。通常,鍵盤工作方式有3種,即編程掃描、定時掃描和中斷掃描。1.編程掃描方式只有當單片機空閑時,才調用鍵盤掃描子程序,掃描鍵盤。按鍵數目較多的場合,行列式鍵盤與獨立式鍵盤相比,要節27工作過程:(1)在鍵盤掃描子程序中,先判斷有無鍵按下。方法:PA口8位輸出全0,讀PC口低4位狀態,若PC0~PC3為全1,則說明鍵盤無鍵按下;若不全為1,則說明鍵盤可能有鍵按下。工作過程:(1)在鍵盤掃描子程序中,先判斷有無鍵按下。方法:28(2)用軟件來消除按鍵抖動的影響。如有鍵按下,則進行下一步。(3)求按下鍵的鍵號。(4)等待按鍵釋放后,再進行按鍵功能的處理操作。2.定時掃描工作方式利用單片機內的定時器,產生10ms的定時中斷,對鍵盤進行掃描。3.中斷工作方式只有在鍵盤有鍵按下時,才執行鍵盤掃描程序,如無鍵按下,單片機將不理睬鍵盤。(2)用軟件來消除按鍵抖動的影響。如有鍵按下,則(3)求按下29MCS與鍵盤、顯示器、課件30鍵盤所做的工作分為三個層次,如圖10-13。第1層:單片機如何來監視鍵盤的輸入。三種工作方式:①編程掃描②定時掃描③中斷掃描。第2層:確定具體按鍵的鍵號。體現在按鍵的識別方法上就是:①掃描法;②線反轉法。第3層:執行鍵處理程序。鍵盤所做的工作分為三個層次,如圖10-13。第1層:3110.3鍵盤/顯示器接口設計實例10.3.1利用8155H芯片實現鍵盤/顯示器接口10.3鍵盤/顯示器接口設計實例10.3.1利用815328031外擴一片8155H。RAM地址:7E00H~7EFFH。I/O口地址:7F00H~7F05H。
PA口為輸出口,控制鍵盤列線的掃描,同時又是6位共陰極顯示器的位掃描口。
PB口作為顯示器段碼輸出口,PC口作為鍵盤的行線狀態的輸入口。75452:反相驅動器,7407:同相驅動器。1.動態顯示程序設計8031內部RAM6個顯示緩沖單元:79H~7EH,存放要顯示的6位數據。8155H的PB口輸出相應位的段碼,依次改變PA口輸出為高的位使某一位顯示某一字符,其它位為暗。動態地顯示出由緩沖區中顯示數據所確定的字符。程序流程如圖10-15。8031外擴一片8155H。RAM地址:7E00H~33位碼→PA口查表取段碼段碼→PB口位碼左移移完一遍?結束位碼→PA口查表取段碼段碼→PB口位碼左移移完一遍?結束34參考程序:DIR:MOVR0,#79H ;置緩沖器指針初值MOVR3,#01H ;位選碼的初值送R3MOVA,R3LD0:MOVDPTR,#7F01H;位選碼→PA口(PA.0位);最左邊LED亮MOVX@DPTR,AINCDPTR ;數據指針指向PB口MOVA,@R0;顯示數據→AADDA,#0DH;加偏移量(下條指令到表首間;所有指令占的單元數)MOVCA,@A+PC;根據顯示數據來查表取段碼參考程序:DIR:MOVR0,#79H ;置緩沖器指35DIR1:
MOVX@DPTR,A ;段碼→8155HPB口ACALLDL1ms;該位顯示1msINCR0 ;指針指向下一個數據單元MOVA,R3 ;位選碼送入A中JBAcc.5,LD1;判斷是否掃描到最右邊的;LED,如到最右邊則返回RLA;位選碼向左移一位,準備讓;右邊的下一位LED亮MOVR3,A ;位選碼送R3中保存AJMPLD0;LD1:RET;DSEG:DB3FH,06H,5BH,4FH,66H,6DH;共陰極段碼表 DB7DH,07H,7FH,6FH,77H,7CHDB39H,5EH,79H,71H,73H,3EHDIR1:MOVX@DPTR,A ;段碼→815536DB31H,6EH,1CH,23H,40H,03HDB18H,00HDL1ms: MOVR7,#02H ;延時1ms子程序DL: MOVR6,#0FFHDL6: DJNZR6,DL6DJNZR7,DLRET2.鍵盤程序設計(1)判別鍵盤上有無鍵閉合(2)去除鍵的機械抖動(3)判別閉合鍵的鍵號(4)使CPU對鍵的一次閉合僅作一次處理DB31H,6EH,1CH,23H,40H,03HDB37(1)判別鍵盤上有無鍵閉合PA0~7輸出全“0”,讀PC口的狀態,若PC0~PC3為全“1”,則鍵盤上沒有閉合鍵,若PC0~3不全為“1”,則有鍵處于閉合狀態。(2)去除鍵的機械抖動延遲一定時間再判別鍵盤狀態,仍有閉合,則處于穩定閉合期,否則是抖動(3)判別閉合鍵的鍵號PA7PA6PA5PA4PA3PA2PA1PA0PC3PC2PC1PC0111111101111111111011101111110111111011111111111….….(1)判別鍵盤上有無鍵閉合PA0~7輸出全“0”,讀PC口的38閉合的鍵號:N=行首鍵號+列號=8+1=9(4)使CPU對鍵的一次閉合僅作一次處理處理方法:等待閉合鍵釋放以后再作處理。閉合的鍵號:(4)使CPU對鍵的一次閉合僅作一次處理處理方39鍵盤子程序如下:KEYI:ACALLKS1 ;調用判有無鍵閉合子程序JNZLK1;有鍵閉合,跳LK1NI:ACALLDIR ;無鍵閉合,調用顯示子程序,延;遲6ms后,跳KEYIAJMPKEYILK1:ACALLDIR ;可能有鍵閉合,軟件延遲12ms去抖ACALLDIRACALLKS1;調用判有無鍵閉合子程序JNZLK2 ;經去抖,判鍵確實閉合,跳LK2ACALLDIR ;調用顯示子程序延遲6msAJMPKEYI ;抖動引起,跳KEYILK2:MOVR2,#0FEH ;列選碼→R2MOVR4,#00H ;R4為列號計數器鍵盤子程序如下:KEYI:ACALLKS1 40LK4:MOVDPTR,#7F01H;列選碼→8155H的PA口MOVA,R2;MOVX@DPTR,A;INCDPTR ;數據指針增2,指向PC口INCDPTR;MOVXA,@DPTR ;讀8155HPC口JBAcc.0,LONE ;0行線為高,無鍵閉合,跳LONE,轉判1行MOVA,#00H ;0行有鍵閉合,首鍵號0→AAJMPLKP ;跳LKP,計算鍵號LONE:JBAcc.1,LTW0;1行線為高,無鍵閉合,跳LTW0,;轉判2行MOVA,#08H;1行有鍵閉合,首鍵號8→AAJMPLKP LK4:MOVDPTR,#7F01H;列選碼→8141LTW0:JBA.2,LTHR;2行線為高,無鍵閉合,跳 ;LTHR,轉判3行
MOVA,#10H;2行有鍵閉合,首鍵號10H→AAJMPLKP ;跳LKP,計算鍵號LTHR:JBAcc.3,NEXT;3行線為高,無鍵;閉合,跳NEXT,準備下一列掃描MOVA,#18H ;3行有鍵閉合,首鍵號18H→ALKP:ADDA,R4;計算鍵號:首鍵號+列號=鍵號PUSHA ;鍵號進棧保護LK3:ACALLDIR ;調用顯示子程序,延時6msACALLKS1 ;調用判有無鍵閉合子程序,延時 ;6ms JNZLK3 ;判鍵釋放否,未釋放,則循環
POPA ;鍵已釋放,鍵號出棧→ARETLTW0:JBA.2,LTHR;2行線為高,42NEXT:INCR4;列計數器加1,為下一列掃描作準備MOVA,R2;判是否已掃到最后一列(最右一列)JNBAcc.7,KND;鍵掃描已掃到最后一列,跳KND, ;重新進行整個鍵盤掃描RLA ;鍵掃描未掃到最后一列,,位選碼左移 ;一位MOVR2,A;位選碼→R2AJMPLK4;KND:AJMPKEYI;KS1:MOVDPTR,#7F01H;判有無鍵閉合子程序,全“0”→ ;掃描口(PA口)MOVA,#00H ;即列線全為低電平MOVX@DPTR,A;INCDPTR ;DPTR增2,指向PC口NEXT:INCR4;列計數器加1,為下一列掃描43INCDPTR ;指針增1,指向PC口MOVXA,@DPTR;從PC口讀行線的狀態CPLA ;行線取反,如無鍵按下,則A為0;ANLA,#0FH;屏蔽無用的高4位RET10.3.2利用8031的串行口實現鍵盤/顯示器接口串口未作它用,可用來外擴鍵盤/顯示器。串口為方式0輸出,串口外接移位寄存器74LS164。接口電路如圖10-17。74LS164(0)~74LS164(7):作為8位LED的段碼輸出,8031的P3.4、P3.5:兩行鍵的行狀態輸入P3.3(TXD):同步移位脈沖輸出控制線,INCDPTR ;指針增1,指向PC口MOVX44MCS與鍵盤、顯示器、課件45優點:亮度大,容易做到顯示不閃爍,且CPU不必頻繁的為顯示服務,從而使單片機有更多的時間處理其它事務。顯示子程序:DIR:SETBP3.3 ;P3.3=1允許TXD腳同步移位 ;脈沖輸出MOVR7,#08H;送出的段碼個數,R7為段 ;碼個數計數器MOVR0,#7FH;7FH~78H為顯示數據緩沖區DL0: MOVA,@R0 ;取出要顯示的數送AADDA,#0DH;加上偏移量MOVCA,@A+PC;查段碼表SEGTAG,取出段碼MOVSBUF,A;將段碼送SBUF
優點:亮度大,容易做到顯示不閃爍,且CPU不必顯示46DL1:JNBTI,DL1 ;輸出段碼,查詢TI狀態,1個字節 ;的段碼輸出完否?CLRTI ;1個字節的段碼輸出完,清TI標志DECR0 ;指向下一個顯示數據單元 DJNZR7,DL0 ;段碼個數計數器R7是否為0,如不 ;為0,繼續送段碼CLRP3.3 ;8個段碼輸出完畢,關顯示器輸出RET ;返回SEGTAB:DB0C0H,0F9H,0A4H,0B0H,99H ;共陽極段碼表,;0,1,2,3,4DB92H,82H,0F8H,90H ;5,6,7,8,9DB88H,83H,0C6H,0A1H,86H ;A,B,C,D,EDB8FH,0BFH,8CH,0FFH,0FFH ;F,-,P,暗DL1:JNBTI,DL1 ;輸出段碼,查詢TI47鍵盤掃描子程序:KEYI:MOVA,#00H ;判有無鍵按下,使所有列線為0 ;的編碼送AMOVSBUF,A ;掃描鍵盤的(8)號74LS164輸 ;出為00H,使所有列線為0KL0:JNBTI,KL0 ;串行輸出完否?CLRTI ;串行輸出完畢,清TIKL1:JNBP3.4,PK1 ;第1行有閉合鍵嗎?如有,跳 ;PK1進行處理JBP3.5,KL1 ;在第2行鍵中有閉合鍵嗎?無閉 ;合鍵跳KL1PK1:ACALLDL10 ;調用延時10ms子程序DL10,軟 ;件消除抖動JNBP3.4,PK2 ;判是否抖動引起的?鍵盤掃描子程序:KEYI:MOVA,#00H ;判有無鍵48JBP3.5,KL1PK2: MOVR7,#08H ;不是抖動引起的MOVR6,#0FEH ;判別是哪一個鍵按下,FEH為最 ;左一列為低MOVA,R6 ;KL5:MOVSBUF,A ;列掃描碼從串行口輸出KL2:JNBTI,KL2 ;等待串行口發送完CLRTI ;串行口發送完畢,清TI標志JNBP3.4,PKONE ;讀第1行線狀態,第1行有鍵閉;合,跳PKONE處理JBP3.5,NEXT;讀第2行狀態,是第2行某鍵否?MOVR3,#00H;掃描的列序號初始值為0MOVR4,#08H ;第2行鍵中有鍵被按下,行首鍵 ;號08H送R4AJMPPK3;JBP3.5,KL1PK2: MOVR7,#08H49PKONE:MOVR4,#00H;第1行有鍵按下,行首鍵號00H送R4PK3: MOVSBUF,#00H;等待鍵釋放,發送00H使所有列 ;線為低KL3:JNBTI,KL3;CLRTI ;發送完畢,清標志KL4:JNBP3.4,KL4;判行線狀態JNBP3.5,KL4;MOVA,R4 ;兩行線均為高,說明鍵已釋放ADDA,R3 ;計算得到鍵碼→ARETPKONE:MOVR4,#00H;第1行有鍵按下,50NEXT:MOVA,R6 ;列掃描碼左移一位,判下列鍵RLA;MOVR6,A ;記住列掃描碼于R6中DJNZR7,KL5 ;列計數器R7減1,8列鍵都檢查;完?……AJMPKEYI ;8列鍵掃描完畢,開始下一個鍵 ;盤掃描周期NEXT:MOVA,R6 ;列掃描碼左移一位51作業:現有8031單片機,74LS373鎖存器,1片2764EPROM和兩片6116RAM,請使用它們組成1個單片機應用系統。作業:現有8031單片機,74LS373鎖存器,1片276452第10章MCS-51與鍵盤、顯示器、撥盤、打印機的接口設計
信息技術教研室溫川雪第10章MCS-51與鍵盤、顯示器、撥盤、打印機的接53輸入外設:鍵盤、BCD碼撥盤等;輸出外設:LED顯示器、LCD顯示器、打印機等。10.1LED顯示器接口原理LED(LightEmittingDiode):發光二極管的縮寫。顯示器前面冠以“LED”。10.1.1LED顯示器的結構常用的LED顯示器為8段(或7段,8段比7段多了一個小數點“dp”段)。輸入外設:鍵盤、BCD碼撥盤等;輸出外設:LED顯示器、LC54MCS與鍵盤、顯示器、課件55為使LED顯示不同的符號或數字,要為LED提供段碼(或稱字型碼)。提供給LED顯示器的段碼(字型碼)正好是一個字節(8段)。各段與字節中各位對應關系如下:按上述格式,8段LED的段碼如表10-1所示。為使LED顯示不同的符號或數字,要為LED提供段碼提供給LE56顯示字符共陰極段碼共陽極段碼顯示字符共陰極段碼共陽極段碼03FHC0Hc39HC6H106HF9Hd5EHA1H25BHA4HE79H86H34FHB0HF71H8EH466H99HP73H8CH56DH92HU3EHC1H67DH82HT31HCEH707HF8Hy6EH91H87FH80HH76H89H96FH90HL38HC7HA77FH88H“滅”00HFFHb7CH83H………表10-1LED段碼(8段)顯示字符共陰極段碼共陽極段碼顯示字符共陰極段碼共陽極段碼0357表10-1只列出了部分段碼,可根據實際情況選用。另外,段碼是相對的,它由各字段在字節中所處的位決定。例如表10-1中8段LED段碼是按格式:而形成的,“0”的段碼為3FH(共陰)。反之,如將格式改為下列格式:則“0”的段碼為7EH(共陰)。字型及段碼由設計者自行設定,習慣上還是以“a”段對應段碼的最低位。表10-1只列出了部分段碼,可根據實際情況選用。另外,段碼是58N個LED顯示塊有N位位選線和8×N根段碼線。10.1.2LED顯示器工作原理圖10-2是4位LED顯示器的結構原理圖。N個LED顯示塊有N位位選線和8×N根段碼線。10.1.259段碼線控制顯示的字型,位選線控制該顯示位的亮或暗。靜態顯示和動態顯示兩種顯示方式。1.靜態顯示方式段碼線控制顯示的字型,位選線控制該顯示位的亮或暗。靜態顯示和60各位的公共端連接在一起(接地或+5V)。每位的段碼線(a~dp)分別與一個8位的鎖存器輸出相連。顯示字符一確定,相應鎖存器的段碼輸出將維持不變,直到送入另一個段碼為止。顯示的亮度高。2.動態顯示方式所有位的段碼線相應段并在一起,由一個8位I/O口控制,形成段碼線的多路復用,各位的公共端分別由相應的I/O線控制.各位的公共端連接在一起(接地或+5V)。每位的段碼線(61圖10-4:4位8段LED動態顯示電路。其中段碼線占用一個8位I/O口,而位選線占用一個4位I/O口。圖10-4:4位8段LED動態顯示電路。其中段碼線占用一個862動態顯示接口動態顯示接口63此時同時向6位LED燈管輸出相同的字符,如何能實現顯示多個不同字符?掃描顯示方式(ScanDisplayMode):
某一時刻只選通一盞燈(其他5位是熄滅的),同時,段選線上輸出相應要顯示的字符的段碼。下一時刻,位選信號選通下一位LED,同時,段選線上輸出相應要顯示的字符的段碼。000001?此時同時向6位LED燈管輸出相同的字符,如何能實現顯示多個不641段碼39H字符C11111位選信號3EH字符U7FH字符83FH字符040H字符-73H字符P位選信號輪流選中每位LED燈,同時段碼輸出對應顯示器要顯示的字符。只要實現間隔足夠短,由于LED顯示器的余輝和人眼視覺殘留作用,造成多位同時點亮的假象。SegmentCodeDigitSelectSignal1段碼39H字符C11111位選信號3EH字符U7FH字符8651段碼00H無顯示39H字符C73H字符P3EH字符U11111位控信號1段碼00H無顯示39H字符C73H字符P3EH字符U11166圖10-5為8位LED動態顯示2003.10.10的過程。圖10-5為8位LED動態顯示2003.10.10的過程。67MOVDPTR,#TAB;表首地址MOVCA,@A+DPTR;查表段碼MOVDPTR,#A口地址MOVX@DPTR,A;輸出段碼MOVA,R4;取位碼MOVXDPTR,#C口地址MOVX@DPTR,A;輸出位碼……RLA;左移位碼MOVR4,A;保存新位碼……TAB:DB00H,00H,00H,00H,00HDB39H,73H,3EH,40HDB7FH,3FH,6DH,06H
DB00H,00H,00H,00H,00HMOVDPTR,#TAB;表首地址TAB:6810.2鍵盤接口原理1.鍵盤輸入的特點鍵盤:一組按鍵開關的集合。行線電壓信號通過鍵盤開關機械觸點的斷開、閉合,輸出波形如圖10-6。10.2鍵盤接口原理1.鍵盤輸入的特點鍵盤:一組按鍵開692.按鍵的確認檢測行線電平高電平:斷開;低電平:閉合,常用軟件來消除按鍵抖動。基本思想:檢測到有鍵按下,鍵對應的行線為低,軟件延時10ms后,行線如仍為低,則確認該行有鍵按下。3.如何消除按鍵的抖動
當鍵松開時,行線變高,軟件延時10ms后,行線仍為高,說明按鍵已松開。采取以上措施,躲開了兩個抖動期t1和t3的影響。2.按鍵的確認檢測行線電平常用軟件來消除按鍵抖動。基7010.2.2鍵盤接口的工作原理獨立式按鍵接口和行列式鍵盤接口。1.獨立式鍵盤接口各鍵相互獨立,每個按鍵各接一根輸入線,通過檢測輸入線的電平狀態可很容易判斷那個鍵被按下。此種接口適于鍵數較少或操作速度較高的場合。圖10-7(a)為中斷方式的獨立式鍵盤工作電路圖10-7(b)為查詢方式的獨立式鍵盤工作電路。10.2.2鍵盤接口的工作原理獨立式按鍵接口和行列式鍵盤71MCS與鍵盤、顯示器、課件72圖10-8為8255A擴展I/O口的獨立式按鍵接口電路。圖10-8為8255A擴展I/O口的獨立式按鍵接口電路。73圖10-9用三態緩沖器擴展的I/O口的按鍵接口電路。圖10-9用三態緩沖器擴展的I/O口的按鍵接口電路。74對圖10-9獨立式鍵盤編程,軟件消抖,查詢方式檢測鍵的狀態。僅有一鍵按下時才有效才處理。KEYIN:MOVDPTR,#0BFFFH;鍵盤端口地址BFFFH MOVXA,@DPTR ;讀鍵盤狀態 ANLA,#1FH ;屏蔽高三位MOVR3,A ;保存鍵盤狀態值LCALLDELAY10 ;延時10ms去鍵盤抖動MOVXA,@DPTR ;再讀鍵盤狀態ANLA,#1FH ;屏蔽高三位CJNEA,R3,RETURN;兩次不同,抖動引起轉RETURN CJNEA,#1EH,KEY2;相等,有鍵按下,不等轉KEY2對圖10-9獨立式鍵盤編程,軟件消抖,查詢方式檢測鍵的狀75 LJMPPKEY1 ;是K1鍵按下,轉K1鍵處理 ;子程序PKEY1KEY2:CJNEA,#1DH,KEY3;S2鍵未按下,轉KEY3 LJMPPKEY2 ;S2鍵按下,轉PKEY2處理KEY3: CJNEA,#1BH,KEY4 ;S3未按下,轉KEY4 LJMPPKEY3;S3按下,轉PKEY3處理KEY4:CJNEA,#17H,KEY5;S4鍵未按下,轉KEY5
LJMPPKEY4;S4按下,轉PKEY4處理KEY5: CJNEA,#0FH,PASS;S5未按下,轉RETURN LJMPPKEY5;S5按下,轉PKEY5處理RETURN:RET;重鍵或無鍵按下,從子程序返回識別和編程簡單,用在按鍵數較少的場合。 LJMPPKEY1 ;是K1鍵按下,轉K1鍵處理 762.行列式(矩陣式)鍵盤接口用于按鍵數目較多的場合,由行線和列線組成,按鍵位于行、列的交叉點上。如圖10-10所示。2.行列式(矩陣式)鍵盤接口用于按鍵數目較多的場合771111無鍵按下當有鍵按下時,行線電平由列線的電平來決定無鍵按下,該行線為高電平。00000
011110111101列輸出行輸入逐列置低電平,其余各列置為高電平檢查各行電平變化如檢查出在某行線電平為低,對應此時列線低電平出現位置,交叉點處為按鍵按下處1111無鍵按下當有鍵按下時78
按鍵數目較多的場合,行列式鍵盤與獨立式鍵盤相比,要節省很多的I/O口線。10.2.3鍵盤的工作方式單片機在忙于各項工作任務時,如何兼顧鍵盤的輸入,取決于鍵盤的工作方式。原則:即要保證能及時響應按鍵操作,又不要過多占用CPU的工作時間。通常,鍵盤工作方式有3種,即編程掃描、定時掃描和中斷掃描。1.編程掃描方式只有當單片機空閑時,才調用鍵盤掃描子程序,掃描鍵盤。按鍵數目較多的場合,行列式鍵盤與獨立式鍵盤相比,要節79工作過程:(1)在鍵盤掃描子程序中,先判斷有無鍵按下。方法:PA口8位輸出全0,讀PC口低4位狀態,若PC0~PC3為全1,則說明鍵盤無鍵按下;若不全為1,則說明鍵盤可能有鍵按下。工作過程:(1)在鍵盤掃描子程序中,先判斷有無鍵按下。方法:80(2)用軟件來消除按鍵抖動的影響。如有鍵按下,則進行下一步。(3)求按下鍵的鍵號。(4)等待按鍵釋放后,再進行按鍵功能的處理操作。2.定時掃描工作方式利用單片機內的定時器,產生10ms的定時中斷,對鍵盤進行掃描。3.中斷工作方式只有在鍵盤有鍵按下時,才執行鍵盤掃描程序,如無鍵按下,單片機將不理睬鍵盤。(2)用軟件來消除按鍵抖動的影響。如有鍵按下,則(3)求按下81MCS與鍵盤、顯示器、課件82鍵盤所做的工作分為三個層次,如圖10-13。第1層:單片機如何來監視鍵盤的輸入。三種工作方式:①編程掃描②定時掃描③中斷掃描。第2層:確定具體按鍵的鍵號。體現在按鍵的識別方法上就是:①掃描法;②線反轉法。第3層:執行鍵處理程序。鍵盤所做的工作分為三個層次,如圖10-13。第1層:8310.3鍵盤/顯示器接口設計實例10.3.1利用8155H芯片實現鍵盤/顯示器接口10.3鍵盤/顯示器接口設計實例10.3.1利用815848031外擴一片8155H。RAM地址:7E00H~7EFFH。I/O口地址:7F00H~7F05H。
PA口為輸出口,控制鍵盤列線的掃描,同時又是6位共陰極顯示器的位掃描口。
PB口作為顯示器段碼輸出口,PC口作為鍵盤的行線狀態的輸入口。75452:反相驅動器,7407:同相驅動器。1.動態顯示程序設計8031內部RAM6個顯示緩沖單元:79H~7EH,存放要顯示的6位數據。8155H的PB口輸出相應位的段碼,依次改變PA口輸出為高的位使某一位顯示某一字符,其它位為暗。動態地顯示出由緩沖區中顯示數據所確定的字符。程序流程如圖10-15。8031外擴一片8155H。RAM地址:7E00H~85位碼→PA口查表取段碼段碼→PB口位碼左移移完一遍?結束位碼→PA口查表取段碼段碼→PB口位碼左移移完一遍?結束86參考程序:DIR:MOVR0,#79H ;置緩沖器指針初值MOVR3,#01H ;位選碼的初值送R3MOVA,R3LD0:MOVDPTR,#7F01H;位選碼→PA口(PA.0位);最左邊LED亮MOVX@DPTR,AINCDPTR ;數據指針指向PB口MOVA,@R0;顯示數據→AADDA,#0DH;加偏移量(下條指令到表首間;所有指令占的單元數)MOVCA,@A+PC;根據顯示數據來查表取段碼參考程序:DIR:MOVR0,#79H ;置緩沖器指87DIR1:
MOVX@DPTR,A ;段碼→8155HPB口ACALLDL1ms;該位顯示1msINCR0 ;指針指向下一個數據單元MOVA,R3 ;位選碼送入A中JBAcc.5,LD1;判斷是否掃描到最右邊的;LED,如到最右邊則返回RLA;位選碼向左移一位,準備讓;右邊的下一位LED亮MOVR3,A ;位選碼送R3中保存AJMPLD0;LD1:RET;DSEG:DB3FH,06H,5BH,4FH,66H,6DH;共陰極段碼表 DB7DH,07H,7FH,6FH,77H,7CHDB39H,5EH,79H,71H,73H,3EHDIR1:MOVX@DPTR,A ;段碼→815588DB31H,6EH,1CH,23H,40H,03HDB18H,00HDL1ms: MOVR7,#02H ;延時1ms子程序DL: MOVR6,#0FFHDL6: DJNZR6,DL6DJNZR7,DLRET2.鍵盤程序設計(1)判別鍵盤上有無鍵閉合(2)去除鍵的機械抖動(3)判別閉合鍵的鍵號(4)使CPU對鍵的一次閉合僅作一次處理DB31H,6EH,1CH,23H,40H,03HDB89(1)判別鍵盤上有無鍵閉合PA0~7輸出全“0”,讀PC口的狀態,若PC0~PC3為全“1”,則鍵盤上沒有閉合鍵,若PC0~3不全為“1”,則有鍵處于閉合狀態。(2)去除鍵的機械抖動延遲一定時間再判別鍵盤狀態,仍有閉合,則處于穩定閉合期,否則是抖動(3)判別閉合鍵的鍵號PA7PA6PA5PA4PA3PA2PA1PA0PC3PC2PC1PC0111111101111111111011101111110111111011111111111….….(1)判別鍵盤上有無鍵閉合PA0~7輸出全“0”,讀PC口的90閉合的鍵號:N=行首鍵號+列號=8+1=9(4)使CPU對鍵的一次閉合僅作一次處理處理方法:等待閉合鍵釋放以后再作處理。閉合的鍵號:(4)使CPU對鍵的一次閉合僅作一次處理處理方91鍵盤子程序如下:KEYI:ACALLKS1 ;調用判有無鍵閉合子程序JNZLK1;有鍵閉合,跳LK1NI:ACALLDIR ;無鍵閉合,調用顯示子程序,延;遲6ms后,跳KEYIAJMPKEYILK1:ACALLDIR ;可能有鍵閉合,軟件延遲12ms去抖ACALLDIRACALLKS1;調用判有無鍵閉合子程序JNZLK2 ;經去抖,判鍵確實閉合,跳LK2ACALLDIR ;調用顯示子程序延遲6msAJMPKEYI ;抖動引起,跳KEYILK2:MOVR2,#0FEH ;列選碼→R2MOVR4,#00H ;R4為列號計數器鍵盤子程序如下:KEYI:ACALLKS1 92LK4:MOVDPTR,#7F01H;列選碼→8155H的PA口MOVA,R2;MOVX@DPTR,A;INCDPTR ;數據指針增2,指向PC口INCDPTR;MOVXA,@DPTR ;讀8155HPC口JBAcc.0,LONE ;0行線為高,無鍵閉合,跳LONE,轉判1行MOVA,#00H ;0行有鍵閉合,首鍵號0→AAJMPLKP ;跳LKP,計算鍵號LONE:JBAcc.1,LTW0;1行線為高,無鍵閉合,跳LTW0,;轉判2行MOVA,#08H;1行有鍵閉合,首鍵號8→AAJMPLKP LK4:MOVDPTR,#7F01H;列選碼→8193LTW0:JBA.2,LTHR;2行線為高,無鍵閉合,跳 ;LTHR,轉判3行
MOVA,#10H;2行有鍵閉合,首鍵號10H→AAJMPLKP ;跳LKP,計算鍵號LTHR:JBAcc.3,NEXT;3行線為高,無鍵;閉合,跳NEXT,準備下一列掃描MOVA,#18H ;3行有鍵閉合,首鍵號18H→ALKP:ADDA,R4;計算鍵號:首鍵號+列號=鍵號PUSHA ;鍵號進棧保護LK3:ACALLDIR ;調用顯示子程序,延時6msACALLKS1 ;調用判有無鍵閉合子程序,延時 ;6ms JNZLK3 ;判鍵釋放否,未釋放,則循環
POPA ;鍵已釋放,鍵號出棧→ARETLTW0:JBA.2,LTHR;2行線為高,94NEXT:INCR4;列計數器加1,為下一列掃描作準備MOVA,R2;判是否已掃到最后一列(最右一列)JNBAcc.7,KND;鍵掃描已掃到最后一列,跳KND, ;重新進行整個鍵盤掃描RLA ;鍵掃描未掃到最后一列,,位選碼左移 ;一位MOVR2,A;位選碼→R2AJMPLK4;KND:AJMPKEYI;KS1:MOVDPTR,#7F01H;判有無鍵閉合子程序,全“0”→ ;掃描口(PA口)MOVA,#00H ;即列線全為低電平MOVX@DPTR,A;INCDPTR ;DPTR增2,指向PC口NEXT:INCR4;列計數器加1,為下一列掃描95INCDPTR ;指針增1,指向PC口MOVXA,@DPTR;從PC口讀行線的狀態CPLA ;行線取反,如無鍵按下,則A為0;ANLA,#0FH;屏蔽無用的高4位RET10.3.2利用8031的串行口實現鍵盤/顯示器接口串口未作它用,可用來外擴鍵盤/顯示器。串口為方式0輸出,串口外接移位寄存器74LS164。接口電路如
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯系上傳者。文件的所有權益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網頁內容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經權益所有人同意不得將文件中的內容挪作商業或盈利用途。
- 5. 人人文庫網僅提供信息存儲空間,僅對用戶上傳內容的表現方式做保護處理,對用戶上傳分享的文檔內容本身不做任何修改或編輯,并不能對任何下載內容負責。
- 6. 下載文件中如有侵權或不適當內容,請與我們聯系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 項目共建合同協議
- 嚴琦的離婚賠償合同
- 智能辦公設備采購合同書
- 建筑設計委托合同范本
- 建筑設計服務合同條款
- 【安永】2025靈活應對變局重新平衡風險管理優先事項研究報告
- Brand KPIs for pet supply online shop Time for Paws in the United Kingdom-外文版培訓課件(2025.2)
- 幼兒表演性舞蹈《邊走邊唱》
- 人教版數學一年級下冊-05認識人民幣-01簡單的計算-教學反思03(4篇)教案
- 2025年深圳地鐵某區間土建工程勞務分包總價承包合同
- 無機保溫砂漿外墻外保溫系統施工工藝課件
- 產品追溯記錄表
- 高三二輪復習:產業轉移以富士康的企業轉移為例課件
- 政府信息資源管理
- 中小微企業劃型證明
- 西南交大區段站工作組織課程設計2018
- 《監察機關監督執法工作規定》測試題試題含答案
- Q∕GDW 12154-2021 電力安全工器具試驗檢測中心建設規范
- 初中文言文專項訓練十篇(含答案)
- 煤礦頂板事故防治(1)
- 漏電保護器試跳記錄表
評論
0/150
提交評論