單片機(jī)-人機(jī)接口_第1頁
單片機(jī)-人機(jī)接口_第2頁
單片機(jī)-人機(jī)接口_第3頁
單片機(jī)-人機(jī)接口_第4頁
單片機(jī)-人機(jī)接口_第5頁
已閱讀5頁,還剩87頁未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

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

文檔簡介

第九章人機(jī)接口鍵盤與顯示第九章人機(jī)接口9.1鍵盤接口9.2LED顯示接口9.3LCD顯示接口人機(jī)接口概述人機(jī)接口是單片機(jī)應(yīng)用系統(tǒng)不可缺少的組成部分,是指人與計算機(jī)系統(tǒng)進(jìn)行信息交互的接口,包括信息的輸入和輸出??刂菩畔⒑驮紨?shù)據(jù)需要通過輸入設(shè)備輸入到計算機(jī)中,計算機(jī)的處理結(jié)果需要通過輸出設(shè)備實現(xiàn)顯示或打印。這里的輸入設(shè)備與輸出設(shè)備構(gòu)成了人—機(jī)界面。人-機(jī)界面中的輸入設(shè)備主要是鍵盤,常用的鍵盤設(shè)備包括獨(dú)立式鍵盤、矩陣式鍵盤等;常用的輸出設(shè)備包括發(fā)光二極管、七段數(shù)碼管、液晶顯示器等。本章重點(diǎn)介紹鍵盤、顯示器接口工作原理和編程方法。

9.1鍵盤接口鍵盤用于實現(xiàn)單片機(jī)應(yīng)用系統(tǒng)中的數(shù)據(jù)和控制命令的輸入,常用的鍵盤大多由若干開關(guān)組成。常見的有按鍵開關(guān),BCD撥碼盤、按鍵陣列等。根據(jù)輸入信息的特點(diǎn),不同的鍵盤有不同的應(yīng)用場合。鍵盤接口就是將這些按鍵開關(guān)連接到單片機(jī)上的電路。9.1.1按鍵與去抖1.鍵盤的分類鍵盤輸入是單片機(jī)應(yīng)用系統(tǒng)中使用最廣泛的一種輸入方式。鍵盤輸入的主要對象是各種按鍵或開關(guān)。這些按鍵或開關(guān)可以獨(dú)立使用,也可以組合成鍵陣使用。在單片機(jī)應(yīng)用系統(tǒng)中,使用較多的按鍵或開關(guān)有帶自鎖和非自鎖的、常開或常閉的以及微動開關(guān)、DIP開關(guān)等。2.按鍵電路及按鍵抖動處理對于圖9-1所示的按鍵電路來說,按下和釋放按鍵K的過程中,輸出Y的電壓波形如圖9-1右所示。圖中的t1和t3分別為鍵的閉合和斷開過程中的抖動期(分別稱為前沿抖動和后沿抖動),抖動時間的長短與開關(guān)的機(jī)械特性有關(guān),一般為10—20ms;t2為穩(wěn)定的閉合期,其時間的長短由按鍵的動作決定,一般為幾百毫秒至幾秒;t0和t4為斷開期。為了保證CPU對鍵閉合的正確確定,必須去除抖動,在鍵的穩(wěn)定閉合和斷開期間讀取鍵的狀態(tài)。圖9-1按鍵及其按下和釋放時的輸出電壓波形左圖是按鍵電路,右圖是按鍵輸出給單片機(jī)的波形去除抖動可以采用硬件和軟件兩種方法硬件方法就是在按鍵輸入通道上加硬件去抖動電路,從根本上避免電壓抖動的產(chǎn)生。比如將按鍵輸出信號經(jīng)過單穩(wěn)態(tài)觸發(fā)器然后再送給單片機(jī),就可以保證按一次鍵只發(fā)出一個脈沖,等等。軟件方法則采用時間延遲,躲過抖動,待電壓穩(wěn)定之后,再進(jìn)行狀態(tài)輸入。由于人的按鍵速度與單片機(jī)的運(yùn)行速度相比要慢很多,所以,軟件延時的方法從技術(shù)上完全可行,而且經(jīng)濟(jì)上更加實惠,因而被越來越多地采用。

9.1.2鍵盤接口鍵盤接口的主要功能是對鍵盤上所按下的鍵進(jìn)行識別。使用專用的硬件進(jìn)行識別的鍵盤稱為編碼鍵盤,使用軟件進(jìn)行識別的鍵盤稱為非編碼鍵盤。這里主要研究非編碼鍵盤的工作原理、接口技術(shù)和接口設(shè)計,按鍵識別常用鍵盤掃描法。1、鍵盤分類單片機(jī)中常用的按鍵式鍵盤可以分為兩類:獨(dú)立連接式和矩陣式。(1)獨(dú)立連接式鍵盤獨(dú)立連接式鍵盤是一種最簡單的鍵盤,每個鍵獨(dú)立地接入一根數(shù)據(jù)輸入線,如圖9-1所示??梢愿鶕?jù)需要使用幾個這樣的電路。前面幾章多次用到,不再贅述(2)矩陣式鍵盤矩陣式鍵盤是指由若干個按鍵組成的開關(guān)矩陣。4行4列矩陣式鍵盤如圖9-2所示。這種鍵盤適合采取動態(tài)掃描的方式進(jìn)行識別,其優(yōu)點(diǎn)是使用較少的I/O口線可以實現(xiàn)對較多鍵的控制。例如,如果把16個鍵排列成4×4的矩陣形式,則使用1個8位I/O口(行、列各用4位)即可完成控制;如果把64個鍵排列成8×8的矩陣形式,則使用2個8位I/O口(行、列各用1個8位I/O口)即可完成控制。圖9-24行4列矩陣式鍵盤2、鍵盤接口的工作原理以圖9-2所示的4行4列的矩陣式鍵盤為例,圖中鍵盤的行線XO~X3通過電阻接+5V,當(dāng)鍵盤上沒有鍵閉合時,所有的掃描線和回送線都斷開,無論掃描線處于何種狀態(tài),回送線都呈高電平。將掃描線輪流接通低電平,稱為掃描。鍵盤接口的工作原理(續(xù)1)當(dāng)鍵盤上某一鍵閉合時,則該鍵所對應(yīng)的掃描線和回送線被短路。例如僅6號鍵被按下時,由于YO~Y3四條掃描線上逐一掃描,未掃描到Y(jié)2線時,回送線的4位數(shù)據(jù)均為高電平,當(dāng)掃描到Y(jié)2線(僅Y2為低時),由于6號鍵處于閉合狀態(tài),回送線Xl也將變?yōu)榈碗娖?,因此可知掃描線Y2與回送線X1相交處的鍵閉合了。鍵盤接口的工作原理(續(xù)2)可見,如果XO~X3均為高電平,說明無鍵閉合;任一條回送線變?yōu)榈碗娖?,則說明該回送線上有鍵閉合。與此鍵相連的掃描線也一定處于低電平(正在掃描)。因此,可以確定掃描線與回送線的編號,這樣閉合按鍵的位置就可確定了。

3、CPU對鍵盤掃描的方式CPU對鍵盤掃描可以采取以下方式:(1)程序控制的隨機(jī)方式。CPU空閑時掃描鍵盤;(2)定時控制方式。每隔一段時間,CPU對鍵盤掃描一次,CPU可以定時響應(yīng)鍵輸入請求;(3)中斷方式。當(dāng)鍵盤上有鍵閉合時,向CPU請求中斷,CPU響應(yīng)鍵盤輸入中斷,對鍵盤掃描以識別哪一個鍵處于閉合狀態(tài),并對鍵輸入的信息進(jìn)行處理。CPU對鍵盤上閉合鍵鍵號的確定,可根據(jù)掃描線和回送線的狀態(tài)計算求得,也可以根據(jù)行線和列線的狀態(tài)查表求得。4、鍵盤掃描程序處理過程對于非編碼鍵盤而言,僅有鍵盤的接口電路是不夠的,還需要編制相應(yīng)的鍵輸入程序,實現(xiàn)對鍵盤輸入內(nèi)容的識別。鍵輸入程序的功能包括以下五部分。(1)判斷鍵盤上是否有鍵閉合即采取程序控制方式、定時控制方式對鍵盤進(jìn)行掃描或采取中斷方式接受鍵盤的中斷信號,判斷是否有鍵閉合。(2)去除鍵的機(jī)械抖動為保證鍵的正確識別,需進(jìn)行去抖動處理。其方法是得知鍵盤上有鍵閉合后延遲一段時間,再判別鍵盤的狀態(tài),若仍有鍵閉合,則認(rèn)為鍵盤上有一個鍵處于穩(wěn)定的閉合期,否則認(rèn)為是鍵的抖動或者是干擾。鍵盤掃描程序處理過程(續(xù))(3)確定閉合鍵的物理位置對于獨(dú)立式按鍵來說,采取逐條I/O口線查詢的方式實現(xiàn)對按鍵物理位置的確定;對于鍵陣來說,需要采取掃描的方式來確定被按鍵的物理位置。(4)得到閉合鍵的編號在得到閉合鍵物理位置的基礎(chǔ)上,根據(jù)給定的按鍵編號規(guī)律,計算得出閉合鍵的編號。(5)確保CPU對鍵的一次閉合僅作一次處理為實現(xiàn)這一功能,可以采用等待閉合鍵釋放以后再處理的方法。9.1.3鍵盤輸入程序設(shè)計舉例【例9-1】獨(dú)立按鍵帶中斷的接口電路為MCS-51單片機(jī)設(shè)計一個含6個按鍵的獨(dú)立式鍵盤。含6個按鍵的獨(dú)立式鍵盤的線路連接如圖9-3所示,6個按鍵經(jīng)上拉電阻拉高后分別接到MCS-51的P1口6條I/O線上(P1.0~P1.5)。在無鍵按下的情況下,P1.0~P1.5線上輸入均為高電平。當(dāng)有鍵按下時,與被按鍵相連的I/O線將得到低電平輸入,其他位按鍵的輸入線上仍維持高電平輸入。圖9-3含6個按鍵獨(dú)立式鍵盤的線路連接

電路分析由圖9-3可知,P1口的6條I/O線經(jīng)一片74LSll和一片74LS08實現(xiàn)邏輯相與后,將所得信號傳至MCS-51的INT0引腳上。這樣,每當(dāng)有鍵按下時,INT0引腳上將有一個下降沿產(chǎn)生,申請中斷。在中斷服務(wù)程序中,首先延時20ms左右,等待按鍵抖動過后再對各鍵進(jìn)行查詢,找到所按的鍵,并轉(zhuǎn)到相應(yīng)的處理程序中去。6按鍵的程序清單如下:;初始化程序:ORG0000HLJMPMAINORG0003H;外部中斷0中斷服務(wù)入口地址LJMPINTI;轉(zhuǎn)中斷服務(wù)MAIN:SETBEA;開總中斷允許SETBEX0;開INT0中斷SETBIT0;下降沿有效…………中斷服務(wù)程序清單如下:INTI:LCALLD20;延時去抖動,調(diào)用延時程序D20MOVP1,#0FFH;P1口送全1值MOVA,P1;讀P1口各引腳ANLA,#3FH;屏蔽高兩位CJNEA,#3FH,NEXT;驗證是否確實有鍵閉合AJMPINT0;無鍵按下中斷服務(wù)程序清單(續(xù)1)NEXT:JNBACC.5,F(xiàn)UNC5;查詢5號鍵JNBACC.4,F(xiàn)UNC4;查詢4號鍵JNBACC.3,F(xiàn)UNC3;查詢3號鍵JNBACC.2,F(xiàn)UNC2;查詢2號鍵JNBACC.1,F(xiàn)UNCl

;查詢1號鍵JNBACC.0,F(xiàn)UNC0;查詢0號鍵INT0:RETI中斷服務(wù)程序清單(續(xù)2)…………FUNC5:;5號鍵處理程序FUNC51:MOVA,P1;再讀P1口各引腳JNBACC.5,F(xiàn)UNC51;確認(rèn)鍵是否釋放RETIFUNC4: ……;其他鍵處理程序(略)【例題9-2】矩陣式鍵盤用8155實現(xiàn)4行8列鍵盤的接口線路連接如圖9-4所示。8155的PA設(shè)定為輸出口,稱其為掃描線。PC3~PC0設(shè)定為輸入口,稱其為回送線。在這里,8155與MCS-51單片機(jī)的接口采取第8章圖8-15的形式,即PA口的端口地址為7F01H,PC口的端口地址為7F03H。圖中的2個LED數(shù)碼管是自帶譯碼器的模塊,作用是顯示掃描得到的鍵號。圖9-4用8155實現(xiàn)4行8列鍵盤的接口線路連接圖9-5動態(tài)掃描法流程圖鍵值編碼形式如下:·回送線PCO上的8個鍵從左到右依次為00H~07H;·回送線PC1上的8個鍵從左到右依次為08H~0FH;·回送線PC2上的8個鍵從左到右依次為10H~17H;·回送線PC3上的8個鍵從左到右依次為18H~1FH。如果PCO上有鍵閉合,其鍵值為00H+(00H~07H);如果PC1上有鍵閉合,其鍵值為08H+(00H~07H);如果PC2上有鍵閉合,其鍵值為10H+(00H~07H);如果PC3上有鍵閉合,其鍵值為18H+(00H~07H)。其中的(00H~07H)的具體內(nèi)容由掃描線決定,在程序中用R4存放。下面的KSl子程序用于判斷鍵盤上是否有鍵閉合

KSl:MOVDPTR,#7F01H;將PA口地址送DPTR,PA口作為掃描線MOVA,#00H;所有掃描線均為低電平MOVX@DPTR,A;PA口向列線輸出00HINCDPTRINCDPTR;指向PC口MOVXA,@DPTR;取回送線狀態(tài)CPLA;行線狀態(tài)取反ANLA,#0FH;屏蔽A的高半字節(jié),低半字節(jié)有按鍵信息RET;返回掃描鍵盤、識別按鍵子程序KEY下面的KEY子程序用于掃描鍵盤、識別按鍵的鍵碼。該程序應(yīng)該在按鍵抖動消除之后執(zhí)行。如果有鍵按下,則返回鍵碼在累加器A中,如果沒有鍵按下,則累加器A中返回FFH。程序中的DIR子程序是一個延時子程序。程序清單如下:KEY:ACALLKSl

;檢查是否有鍵閉合JNZLKl

;A非0,說明有鍵按下AJMPKND;無按鍵返回掃描鍵盤、識別按鍵子程序KEY(續(xù)1)LKl:ACALLDIRACALLDIR;有鍵閉合延時2×6ms=12ms,以去抖動ACALLKSl

;延時12ms以后,再檢查是否有鍵閉合JNZLK2;有鍵閉合,轉(zhuǎn)LK2AJMPKND;無按鍵返回LK2:MOVR2,#0FEH;掃描初值送R2,設(shè)定PA0為當(dāng)前掃描線MOVR4,#00H;回送初值送R4LK4:MOVDPTR,#7F01H;指向PA口MOVA,R2MOVX@DPTR,A;掃描初值送PA口掃描鍵盤、識別按鍵子程序KEY(續(xù)2)INCDPTRINCDPTR;指向PC口MOVA,@DPTR;取回送線狀態(tài)JBAcc.0,LONE;Acc.0=1,第0行無鍵閉合,轉(zhuǎn)LONEMOVA,#00H;裝第0行行值A(chǔ)JMPLKP;轉(zhuǎn)計算鍵碼LONE:JBAcc.1,LTWO;Acc.1=1,第1行無鍵閉合,轉(zhuǎn)LTWOMOVA,#08H;裝第1行行值A(chǔ)JMPLKP;轉(zhuǎn)計算鍵碼掃描鍵盤、識別按鍵子程序KEY(續(xù)3)LTWO:JBAcc.2,LTHR;Acc.2=1,第2行無鍵閉合,轉(zhuǎn)LTHRMOVA,#10H;裝第2行行值A(chǔ)JMPLKPLTHR:JBAcc.3,NEXT;Acc.3=1,第3行無鍵閉合,轉(zhuǎn)NEXTMOVA,#18H;裝第3行行值LKP:ADDA,R4;計算鍵碼PUSHAcc;保存鍵碼LK3:ACALLDIR;延時6msACALLKSl

;判斷鍵是否繼續(xù)閉合,若閉合再延時JNZLK3POPAcc;若鍵起,則鍵碼送ARET掃描鍵盤、識別按鍵子程序KEY(續(xù)4)NEXT:INCR4;列號加1MOVA,R2JNBAcc.7,KND;第7位為0,已掃描到最高列,轉(zhuǎn)KNDRLA;循環(huán)右移一位MOVR2,AAJMPLK4;進(jìn)行下一列掃描KND:MOVA,#0FFH;無按鍵返回碼RET;返回DIR:…………;延時子程序(略)鍵盤掃描程序的運(yùn)行結(jié)果,是把被按鍵的鍵碼放在累加器A中,以后再根據(jù)鍵碼進(jìn)行相應(yīng)的處理。測試程序,將得到的鍵號在LED數(shù)碼管上顯示出來。Test:MOVDPTR,#7F00H;數(shù)據(jù)指針指向8155控制字寄存器

MOVA,#03H;設(shè)定A.B口輸出方式,C口輸入

MOVX@DPTR,A;寫入命令LP1:LCALLKEY;調(diào)用鍵盤掃描子程序

CPLA;返回的鍵值在A,取反是為了判斷

JZLP1;沒有按鍵就繼續(xù)掃描

CPLA;有按鍵就恢復(fù)鍵值

MOVDPTR,#07F02H;數(shù)據(jù)指針指向PB口地址

MOVX@DPTR,A;從PB輸出鍵值數(shù)據(jù),驅(qū)動LED數(shù)碼管

SJMPLP1;循環(huán)程序在光盤中,PROTEUS仿真項目:8155KEY.DSN9.2LED顯示接口

顯示接口用于實現(xiàn)單片機(jī)應(yīng)用系統(tǒng)中的數(shù)據(jù)輸出和狀態(tài)的反饋,常用的有LED、LED數(shù)碼管、LCD液晶顯示接口等。9.2.1LED顯示與驅(qū)動

發(fā)光二極管簡稱LED(LightEmittingDiode)。由LED組成的顯示器,是單片機(jī)系統(tǒng)中常用的輸出設(shè)備。LED顯示器件的種類很多,但都是由單個的LED發(fā)光二極管組成。從顏色上來劃分,可以有紅、橙紅、黃、綠、藍(lán)等顏色的LED顯示器;從LED的發(fā)光強(qiáng)度來劃分,可分為普通亮度、高亮度、超高亮度等;從LED器件的外觀來劃分,可分為“8”字形的七段數(shù)碼管、米字形數(shù)碼管、點(diǎn)陣塊、矩形平面顯示器、數(shù)字筆畫顯示器等。9.2.1LED顯示與驅(qū)動

其中數(shù)碼管又可從結(jié)構(gòu)上分為單、雙、三、四位字;從尺寸上又可分為0.3英寸(1英寸=2.54cm)、0.36英寸、0.4英寸、……5.0英寸等類型。常用的LED數(shù)碼管尺寸為0.5英寸。將若干LED按不同的規(guī)則進(jìn)行排列,可以構(gòu)成不同的LED顯示器,常見的有LED數(shù)碼管顯示器和LED點(diǎn)陣模塊顯示器等。1.LED數(shù)碼管顯示器如果要顯示十進(jìn)制或十六進(jìn)制數(shù)字及某些簡單字符,可選用數(shù)碼管顯示器。這種顯示器能顯示的字符較少,形狀有些失真,但控制簡單,使用方便。其結(jié)構(gòu)圖和用法見第1.3節(jié)。2.LED點(diǎn)陣模塊顯示器LED點(diǎn)陣模塊顯示器是指由發(fā)光二極管排成一個,n×m的點(diǎn)陣,每個發(fā)光二極管構(gòu)成點(diǎn)陣中的一個點(diǎn)。這種顯示器顯示的字形逼真,能顯示的字符比較多,但控制比較復(fù)雜。常用的點(diǎn)陣模塊顯示器常用的點(diǎn)陣模塊顯示器有7行5列、8行5列、8行8列等類型。單個LED點(diǎn)陣顯示器可以顯示各種字母、數(shù)字和常用的符號。圖9-6為由7行5列共35個LED構(gòu)成的顯示器顯示字母“A”的情況。用多個點(diǎn)陣式LED模塊顯示器可以組成更大的LED顯示器,用于顯示漢字、圖形和表格。直到顯示動態(tài)圖像、視頻。圖9-6LED點(diǎn)陣模塊顯示字母“A”的情況

3.LED的驅(qū)動接口單個LED實際上是一個壓降為1.2—1.5V的發(fā)光二極管(某些型號的LED電壓可達(dá)3V),相同型號的LED顯示管的壓降基本相同,通過LED的電流決定了它的發(fā)光強(qiáng)度。圖9-7為單個LED的驅(qū)動接口電路。圖9-7單個LED的驅(qū)動接口電路9.2.2LED數(shù)碼管靜態(tài)顯示LED數(shù)碼管顯示器常用的工作方式有靜態(tài)顯示方式和動態(tài)顯示方式兩種。1、靜態(tài)顯示方式概述靜態(tài)顯示,是指當(dāng)顯示器顯示某一字符時,LED數(shù)碼極管的位選恒定地選中。例如顯示字符“0”時,顯示器的a、b、c、d、e、f導(dǎo)通,g、dp截止。在這種顯示方式下,每一個LED數(shù)碼管顯示器都需要一個8位的輸出口進(jìn)行控制。由于單片機(jī)本身提供的I/O口有限,在實際使用中通常通過擴(kuò)展I/O口的形式解決輸出口數(shù)量不足的問題。2、編程舉例【例9-3】

通過在串行口上擴(kuò)展多片串行輸入并行輸出的移位寄存器74LSl64作為靜態(tài)顯示器接口的方法,設(shè)計3位靜態(tài)顯示器接口,并寫出顯示更新子程序,實現(xiàn)將7FH~7DH三個單元的數(shù)值分別在LED2~LED0上顯示出來。接口方式如圖9-8所示。三個共陽極數(shù)碼管的公共端均接Vcc。段碼通過串行口,采用串—并轉(zhuǎn)換原理,分別送出三個數(shù)碼管的段碼。圖中,先送出的段碼字節(jié)在LED2數(shù)碼管上顯示。圖9-8使用串行口擴(kuò)展的靜態(tài)LED顯示接口

顯示程序清單如下:DISP:MOVR5,#03H;顯示3個字符MOVR1,#7FH;7FH~7DH存放要顯示的數(shù)據(jù)DLO:MOVA,@R1;取出要顯示的數(shù)據(jù)MOVDPTR,#STAB;指向段數(shù)據(jù)表MOVCA,@A+DPTR;查表取字形數(shù)據(jù)MOVSBUF,A;送出數(shù)據(jù),進(jìn)行顯示JNBT1,$;全部輸出否CLRT1;全部輸出,清中斷標(biāo)志DECR1;再取下一個數(shù)據(jù)DJNZR5,DL0;循環(huán)3次RET;返回STAB:DB0C0H,0F9H,0A4H,0B0H,99H;段數(shù)據(jù)表……靜態(tài)顯示的優(yōu)點(diǎn):顯示穩(wěn)定;在發(fā)光二極管導(dǎo)通電流一定的情況下顯示器的亮度大;系統(tǒng)運(yùn)行過程中,在需要更新顯示內(nèi)容時,CPU才去執(zhí)行顯示更新子程序,這樣節(jié)約了CPU的時間,提高了CPU的工作效率。參看仿真文件:595.DSN,串行口擴(kuò)展并行口靜態(tài)顯示6位計數(shù)器,也可以參看第十章的0809ADC+.DSN,其中用到了串行口擴(kuò)展并行口的靜態(tài)數(shù)碼管顯示9.2.3LED數(shù)碼管動態(tài)顯示編程舉例1、動態(tài)顯示方式概述2、編程舉例為了節(jié)約I/O口線和硬件開支,常采用動態(tài)顯示方式。1、動態(tài)顯示方式概述動態(tài)顯示方式是指逐位輪流點(diǎn)亮每位顯示器(稱為掃描),即每個數(shù)碼管的位選被輪流選中,多個數(shù)碼管公用一組段選,段選數(shù)據(jù)僅對位選選中的數(shù)碼管有效。對于每一位顯示器來說,每隔一段時間點(diǎn)亮一次。顯示器的亮度既與導(dǎo)通電流有關(guān);也與點(diǎn)亮?xí)r間和間隔時間的比例有關(guān)。通過調(diào)整電流和時間參數(shù),可以實現(xiàn)既保證亮度又保證顯示。若顯示器的位數(shù)不大于8位,則顯示器的公共端只需一個8位I/O口進(jìn)行動態(tài)掃描(稱為掃描口),控制每位顯示器所顯示的字形也需一個8位口(稱為段碼輸出)。2、編程舉例【例9-4】

設(shè)計8位共陰極數(shù)碼管動態(tài)顯示電路,并寫出與之對應(yīng)的動態(tài)掃描顯示子程序。要求在這8只顯示器上顯示片內(nèi)RAM70H~77H單元的內(nèi)容(均為分離的BCD碼)。8位動態(tài)顯示器接口邏輯如圖9-9所示。在本例題的程序中,雖然每個數(shù)碼管每次點(diǎn)亮?xí)r間僅為1ms,只要主程序在指定時間間隔內(nèi)往復(fù)循環(huán)調(diào)用顯示程序,從視覺角度來看8只顯示器就處于同時點(diǎn)亮狀態(tài)。圖9-9(a)8位動態(tài)掃描式顯示電路在此系統(tǒng)中,使用了單片機(jī)的P1口和P2口,其中P2口作為掃描口,P1口作為段碼輸出口。在進(jìn)行掃描時,P2口的8位依次置1,經(jīng)過ULN2803反相后,依次選中了從左至右的顯示器。圖中使用了ULN2803,低電平驅(qū)動能力很強(qiáng),每一個引腳灌電流可達(dá)50毫安以上,只需一片即可驅(qū)動8位數(shù)碼管。ULN2803的內(nèi)部結(jié)構(gòu)和引腳如圖9-9b所示。但由于它是反相驅(qū)動,單片機(jī)輸出的位選信號是高電平。段碼輸出驅(qū)動采用了74HCT245,它是8位同相驅(qū)動器。圖9-9(b)ULN2803引腳和內(nèi)部結(jié)構(gòu)動態(tài)掃描子程序清單如下:此程序之前應(yīng)將要顯示的內(nèi)容裝入顯示緩沖區(qū)70H-77H,內(nèi)容為分離BCD碼。DISP1:MOVR0,#70H;指向緩沖區(qū)末地址

MOVR2,#01H;開始選擇最低位所接數(shù)碼管DISP2:MOVA,@R0;取要顯示的數(shù)據(jù)

LCALLSEG7;查表取得字型碼,即段碼

MOVP1,A;輸出段碼

MOVP2,R2;輸出位選信號

LCALLD1MS;延時1ms程序(續(xù))

MOVP2,#0;關(guān)閉顯示

INCR0;調(diào)整指針

MOVA,R2;讀回掃描字即位選信號

CLRC;清進(jìn)位標(biāo)志

RLCA;掃描字右移選擇下一位

MOVR2,A;保存掃描字

JCPASS;一次顯示結(jié)束

AJMPDISP2;沒結(jié)束繼續(xù)顯示PASS:AJMPDISP1;從頭開始查表獲取字形段碼的子程序及字型碼表SEG7:INCAMOVCA,@A+PCRET;顯示子程序用的字形表;高電平有效,字形筆畫a連接最低位TABLE:DB3fH,06H,5bH,4fH;"0“,"1“,"2“,"3"DB66H,6dH,7dH,07H;"4“,"5“,"6“,"7"DB7fH,6fH,77H,7cH;"8“,"9“,"A“,"B"DB39H,5eH,79H,71H;"C“,"D“,"E“,"F"延時子程序清單:(略)參看仿真文件:動態(tài)8位b.DSN9.3LCD顯示接口9.3.1LCD液晶顯示器簡介

液晶顯示器簡稱LCD(LiquidCrystalDiode3)。這類顯示器具有體積小,重量輕,功耗極低,顯示內(nèi)容豐富等特點(diǎn),在單片機(jī)應(yīng)用系統(tǒng)中有著日益廣泛的應(yīng)用。1.LCD的結(jié)構(gòu)和工作原理液晶顯示器的結(jié)構(gòu)如圖9-10所示。工作原理LCD是通過在上、下玻璃電極之間封入液晶材料,利用晶體分子排列和光學(xué)上的偏振原理產(chǎn)生顯示效果的。同時,上、下電極的電平狀態(tài)將決定LCD的顯示內(nèi)容,根據(jù)需要,將電極做成各種文字、數(shù)字、圖形后,就可以獲得各種狀態(tài)顯示。通常情況下,圖中的上電極又稱為段電極,下電極又稱為背電極。2.LCD的分類及特點(diǎn)LCD顯示器有段式和點(diǎn)陣式兩種,點(diǎn)陣式又可分為字符型和圖像型。段式LCD顯示器類似于LED數(shù)碼管顯示器。每個顯示器的段電極包括a、b、c、d、e、f和g七個筆畫(筆段)和一個小數(shù)點(diǎn)dp??梢燥@示數(shù)字和簡單的字符,每個數(shù)字和字符與其字形碼(段碼)對應(yīng)。這個和LED數(shù)碼管相似點(diǎn)陣式LCD顯示器點(diǎn)陣式LCD顯示器的段電極與背電極呈正交帶狀分布(如圖9-11所示),液晶位于正交的帶狀電極間。點(diǎn)陣式LCD的控制一般采用行掃描方式,如圖9-12所示為顯示字符“A”的情況。通過兩個移位寄存器控制所掃描的點(diǎn)。圖中的移位寄存器1控制掃描的行位置,同一時刻只有一個數(shù)據(jù)位為“1’’,相對應(yīng)的行處于被掃描狀態(tài),這時,移位寄存器2可以將相應(yīng)的列數(shù)據(jù)送入點(diǎn)陣中,這樣逐行循環(huán)掃描,可以得到顯示的結(jié)果為字符“A”。圖9-11點(diǎn)陣式LCD顯示器的正交帶狀分布

圖9-12點(diǎn)陣式LCD顯示“A"的情況3.LCD顯示模塊LCD顯示模塊(LiquidCrystalDispayModule,簡稱LCM)是把LCD顯示屏、背景光源、線路板和驅(qū)動集成電路等部件構(gòu)造成一個整體作為一個獨(dú)立部件使用,其內(nèi)部結(jié)構(gòu)如圖9-13所示。LCD顯示模塊只留一個接口與外部通信。顯示模塊通過這個接口接收顯示的命令和數(shù)據(jù),并按指令和數(shù)據(jù)的要求進(jìn)行顯示;外部電路通過這個接口讀出顯示模塊的工作狀態(tài)和顯示數(shù)據(jù)。LCD顯示模塊一般帶有內(nèi)部顯示RAM和字符發(fā)生器,只要輸入ASCII碼就可以進(jìn)行顯示。圖9-13LCD顯示模塊的內(nèi)部結(jié)構(gòu)9.3.2常見LCD顯示模塊FM1602介紹1602一般是14到16引腳,如圖9-14所示。

1.基本特性

1602是常見的字符型點(diǎn)陣液晶顯示器模塊,它可以顯示2行,每行16個字符,每個字符8×5點(diǎn)。一般是黃綠色背景,黑色字符。字符尺寸為3×5毫米。1602引腳功能1602采用標(biāo)準(zhǔn)的16腳接口,其中:第1腳:Vss

為電源地第2腳:VDD接5V正電源第3腳:VEE為液晶顯示器對比度調(diào)整端,接正電源時對比度最弱,接地電源時對比度最高,對比度過高時會產(chǎn)生“鬼影”,使用時可以通過一個10K的電位器調(diào)整對比度。第4腳:RS為寄存器選擇,高電平時選擇數(shù)據(jù)寄存器、低電平時選擇指令寄存器。1602引腳功能(續(xù))第5腳:RW為讀寫信號線,高電平時進(jìn)行讀操作,低電平時進(jìn)行寫操作。當(dāng)RS和RW共同為低電平時可以寫入指令或者顯示地址,當(dāng)RS為低電平RW為高電平時可以讀忙信號,當(dāng)RS為高電平RW為低電平時可以寫入數(shù)據(jù)。第6腳:E端為使能端,當(dāng)E端由高電平跳變成低電平時,液晶模塊執(zhí)行命令。第7~14腳:D0~D7為8位雙向數(shù)據(jù)線。第15~16腳:空腳,也有的產(chǎn)品15腳為BLA,背光電源正極,一般需要一個限流電阻再接正5V;16腳為BLK,背光電源地。液晶模塊1602與單片機(jī)的連接如圖9-15所示。顯示原理1602液晶模塊內(nèi)部的字符發(fā)生存儲器(CGROM)已經(jīng)存儲了160個不同的點(diǎn)陣字符圖形,稱為字符庫,如表9-1所示。這些字符有:阿拉伯?dāng)?shù)字、英文字母的大小寫、常用的符號、和日文假名等,每一個字符都有一個固定的代碼,比如大寫的英文字母“A”的代碼是01000001B(41H),顯示時,模塊根據(jù)代碼41H把存儲的點(diǎn)陣字符圖形顯示出來,我們就能看到字母“A”字符庫見書表9-1.2、控制命令1602液晶模塊內(nèi)部的控制器共有11條控制指令,如表9-2所示。表9-21602指令表(見書)指令表使用方法在執(zhí)行每條指令之前一定要確認(rèn)模塊的忙標(biāo)志為低電平,表示不忙,否則此指令失效。要顯示字符時要先輸入顯示字符地址,也就是告訴模塊在哪里顯示字符,第一行的地址是80H~8FH第二行的地址是C0H~CFH9.3.3.1602編程舉例【例9-5】LCD1602測試程序LCD液晶顯示測試方法:在整個屏幕顯示同一個字符一秒,下一秒換下一個字符。測試所有可顯示字符測試電路如圖9-16所示:圖9-16LCD1602與AT89C51的接線匯編語言測試LCD1602顯示程序:

;1602測試接口程序(MCS51模擬口線方式);單片機(jī)的晶振頻率為12MHzRSPINEQUP3.5;寄存器,1=數(shù)據(jù),0-指令RWPINEQUP3.6;讀寫,1=讀,0=寫EPINEQUP3.7;使能E,下降沿執(zhí)行DBUSEQUP1;8位數(shù)據(jù)接口XPOSEQU20H;列方向地址指針(用于LCDPOS子程序)YPOSEQU21H;行方向地址指針(用于LCDPOS子程序)

匯編語言測試LCD1602顯示程序(續(xù))

ORG0000HJMPSTARTSTART:MOVSP,#60HCLREP

溫馨提示

  • 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負(fù)責(zé)。
  • 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請與我們聯(lián)系,我們立即糾正。
  • 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時也不承擔(dān)用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。

評論

0/150

提交評論