




版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請進行舉報或認領(lǐng)
文檔簡介
第5章
I/O口應用-顯示與開關(guān)/鍵盤輸入1
內(nèi)容概要2單片機片內(nèi)的I/O口常見的顯示器件常見的輸入器件發(fā)光二極管LED數(shù)碼管LCD液晶屏開關(guān)鍵盤撥盤開關(guān)3發(fā)光二極管4LED數(shù)碼管5LCD液晶屏6常見的輸入器件
5.1單片機控制發(fā)光二極管顯示第2章介紹了單片機片內(nèi)4個I/O端口P0口~P3口的內(nèi)部電路以及外部引腳特性。如果P0口作為通用I/O使用,由于漏極開路,需要外接上拉電阻。而P1~P3口內(nèi)部已有30kΩ左右的上拉電阻。下面首先討論P1~P3口如何與LED發(fā)光二極管連接。發(fā)光二極管常用來指示系統(tǒng)工作狀態(tài),制作節(jié)日彩燈、廣告牌匾等。大部分發(fā)光二極管工作電流1~5mA之間,其內(nèi)阻為20~100Ω。電流越大,亮度也越高。為保證發(fā)光二極管正常工作,同時減少功耗,限流電阻選擇十分重要,若供電電壓為+5V,則限流電阻可選1~3kΩ。5.1.1單片機與發(fā)光二極管的連接單片機通過并行端口P1~P3直接驅(qū)動發(fā)光二極管,電路如圖5-1所示。P0口與P1、P2、P3口相比,P0口每位可驅(qū)動8個LSTTL輸入,而P1~P3口每一位的驅(qū)動能力,只有P0口的一半。當P0口的某位為高電平時,可提供400μA的拉電流(見圖5-1(a));當P0口某位為低電平(0.45V)時,可提供3.2mA的灌電流(見圖5-1(b)),而P1~P3口內(nèi)部有30kΩ左右的上拉電阻,如果高電平輸出,則從P1、P2和P3口輸出的拉電流Id僅為幾百μA,驅(qū)動能力較弱,亮度較差,如圖5-1(a)所示。9圖5-1發(fā)光二極管與單片機并行口的連接如果端口引腳為低電平,能使灌電流Id從單片機的外部流入內(nèi)部,則將大大增加流過的灌電流值,如圖5-1(b)所示。所以,AT89S51單片機任何一個端口要想獲得較大的驅(qū)動能力,要采用低電平輸出。如果一定要高電平驅(qū)動,可在單片機與發(fā)光二極管之間加驅(qū)動電路,如74LS04、74LS244等。10115.1.2單片機I/O端口控制發(fā)光二極管的編程發(fā)光二極管與單片機的I/O端口的連接,如圖5-1(b)所示。如要點亮某發(fā)光二極管,只需該I/O端口位寫入“0”即可。下面通過一個例子介紹如何對I/O端口編程實現(xiàn)對發(fā)光二極管亮滅的控制。
【例5-1】制作一個單片機控制的流水燈,原理電路見圖5-2,8個發(fā)光二極管LED0~LED7經(jīng)限流電阻分別接至P1口的P1.0~P1.7引腳上,陽極共同接高電平。編寫程序,每次點亮一個發(fā)光二極管,控制發(fā)光二極管由上至下的反復循環(huán)流水點亮。說明:本例采用了Proteus環(huán)境下的虛擬仿真,7.5版本元件庫中沒有AT89S51單片機,采用的是AT89C51來代替AT89S51,以下同。參考程序如下:
1213圖5-2單片機控制的流水燈 ORG0100HSTART:MOVR2,#8 MOVA,#0FEH;FEH為點亮P1.0腳發(fā)光二極管需寫入;P1口的控制碼LOOP:MOVP1,A;控制碼寫入P1口,點亮相應的LED LCALL DELAY;調(diào)用延時子程序
RLA ;控制碼循環(huán)左移,點亮下一位
DJNZR2,LOOP;判斷左移是否超過8位,未超過繼續(xù)循環(huán)
LJMP START;左移循環(huán)已8次,再重新進行下一次循環(huán)點亮1415DELAY:MOVR5,#20 ;延時子程序,延時約0.2sD1: MOV R6,#20D2: MOV R7,#248D3: DJNZ R7,D3;R7不為0則原地跳轉(zhuǎn)
DJNZ R6,D2 DJNZ R5,D1 RET END5.2開關(guān)狀態(tài)檢測檢測開關(guān)處于閉合狀態(tài)還是打開狀態(tài),只需把開關(guān)一端接到I/O端口的引腳上,另一端接地,然后通過檢測I/O端口引腳的電平來實現(xiàn)。
【例5-2】
如圖5-3所示,利用單片機、1個開關(guān)k和1個發(fā)光二極管LED,構(gòu)成一個簡單的檢測開關(guān)k是否閉合的系統(tǒng)。圖5-3中,開關(guān)k的一端接到單片機P3.0引腳上,并通過上拉電阻接到+5V上,開關(guān)的另一端接地,當開關(guān)打開時,P3.0引腳為高電平,當開關(guān)閉合時,P3.0引腳為低電平。16圖5-3開關(guān)、LED發(fā)光二極管與P1口的連接單片機對開關(guān)狀態(tài)的檢測是由程序檢測P3.0引腳的輸入電平是高還是低。當開關(guān)閉合,即P3.0腳為低電平;當開關(guān)打開,P3.0引腳為高電平。P1.0引腳接發(fā)光二極管的陰極LED,當開關(guān)k閉合時,LED點亮;開關(guān)打開時,LED熄滅。開關(guān)k與LED沒有任何電氣上的聯(lián)系。19參考程序如下:
ORG0100HSTART:JBP3.0,NOLIG;判P3.0高還是低,P3.0高;開關(guān)打開,跳NOLIG CLR P1.0;P3.0為低,開關(guān)閉合,則;P1.0輸出0,點亮LED SJMP STARTNOLIG:SETB P1.0;開關(guān)為打開狀態(tài),P1.0置1;LED熄滅
SJMP START;返回
END5.3單片機控制LED數(shù)碼管的顯示5.3.1LED數(shù)碼管顯示原理LED數(shù)碼管是常見的顯示器件。LED數(shù)碼管為“8”字型的,共計8段(包括小數(shù)點段在內(nèi))或7段(不包括小數(shù)點段),每一段對應一個發(fā)光二極管,有共陽極和共陰極兩種,如圖5-4所示。共陽極數(shù)碼管的陽極連接在一起,公共陽極接到+5V上;共陰極數(shù)碼管的陰極連接在一起,通常此公共陰極接地。對于共陰極數(shù)碼管,當某個發(fā)光二極管的陽極為高電平時,發(fā)光二極管點亮,相應的段被顯示。同樣,共陽極數(shù)碼管的陽極連接在一起接+5V,當某個發(fā)光二極管的陰極接低電平時,該發(fā)光二極管被點亮,相應的段被顯示。2021圖5-48段LED數(shù)碼管結(jié)構(gòu)及外形為了使LED數(shù)碼管顯示不同的字符,要把某些段點亮,就要為數(shù)碼管的各段提供一個字節(jié)的二進制代碼,即段碼。習慣上以“a”段對應字型碼字節(jié)的最低位。各種字符的段碼如表5-1所示。如要在數(shù)碼管上顯示某一字符,只需將該字符的段碼加到各段上即可。
2223例如某存儲單元中的數(shù)為“02H”,想在共陽極數(shù)碼管上顯示“2”,需要把“2”的段碼“A4H”加到數(shù)碼管各段。通常采用的方法是將欲顯示的字符的段碼作成一個表,根據(jù)顯示的字符從表中查找到相應的段碼,然后單片機把該段碼輸出到數(shù)碼管的各個段上,同時數(shù)碼管的公共端接+5V,此時在數(shù)碼管上顯示出字符“2”。
24【例5-3】用單片機控制一個8段LED數(shù)碼管,如圖5-5所示。要求數(shù)碼管反復循環(huán)顯示單個數(shù)字:0~9。圖5-5控制數(shù)碼管循環(huán)顯示單個數(shù)字圖5-5中,采用了共陽極數(shù)碼管,R1~R7為限流電阻。單片機P0口輸出段碼,數(shù)碼管的公共段接+5v。欲顯示的數(shù)字0~9的字型碼由于無規(guī)律可循,只能采用查表的方式來完成要求,這樣可按著數(shù)字0~9的順序,把每個數(shù)字的字型碼按順序排好,形成一個段碼表。根據(jù)要顯示的數(shù)字,查找到相應的段碼,從而控制LED數(shù)碼管顯示相應的字符。讀者通過本例應掌握段碼查表程序的編寫。
26參考程序如下:ORG 0100HSTART:MOV DPTR,#TABLE
;指針指向表頭地址S1:MOVA,#00H ;設(shè)置地址偏移量
MOVCA,@A+DPTR
;查表取得段碼,送A CJNEA,#01H,S2;判斷A中段碼是否為結(jié)束符01H,不是則跳S2繼續(xù)顯示LJMP START ;是結(jié)束符01H,重新從;開始顯示S2: MOV P0,A ;段碼送LED顯示
LCALL DELAY
INC DPTR
;指針加1 LJMP S1DELAY:MOV R5,#20 ;延時子程序D2: MOV R6,#20D1: MOV R7,#248D3: DJNZ R7,D3 DJNZ R6,D1 DJNZ R5,D2 RET 28TABLE:DB0c0h,0f9h,0a4h,0b0h,99h,92h,82h,0f8h,80h,90h;共陽極數(shù)碼管段碼表DB 01H;結(jié)束符
END程序設(shè)計中,為達到反復循環(huán)顯示數(shù)字0~9的目的,在段碼表中設(shè)置了一個結(jié)束符01H,來控制反復循環(huán)顯示。295.3.2LED數(shù)碼管的顯示方式1.靜態(tài)顯示方式靜態(tài)顯示就是指無論多少位LED數(shù)碼管,都同時處于顯示狀態(tài)。多位LED數(shù)碼管工作于靜態(tài)顯示方式時,各位的共陰極(或共陽極)連接在一起并接地(或接+5V);每位數(shù)碼管的段碼線(a~dp)分別與一個單片機控制的8位I/O口鎖存器輸出相連。如果送往各個LED數(shù)碼管所顯示字符的段碼一經(jīng)確定,則相應I/O口鎖存器鎖存的段碼輸出將維持不變,直到送入下一個顯示字符的段碼。因此,靜態(tài)顯示方式的顯示無閃爍,亮度較高,軟件控制比較容易。3031圖5-6所示為4位LED數(shù)碼管靜態(tài)顯示電路,各個數(shù)碼管可獨立顯示,只要向控制各位I/O口鎖存器寫入相應的顯示段碼,該位就能保持相應的顯示字符。這樣在同一時間,每一位顯示的字符可以各不相同。但是,靜態(tài)顯示方式占用I/O口線較多。對于圖5-6所示電路,要占用4個8位I/O口(或鎖存器)。如果數(shù)碼管數(shù)目增多,則還需要增加I/O口的數(shù)目。在實際的系統(tǒng)設(shè)計中,如果顯示位數(shù)較少,可采用靜態(tài)顯示方式。但顯示位數(shù)較多時,為了降低成本,一般采用動態(tài)顯示方式。圖5-64位LED靜態(tài)顯示的示意圖2.動態(tài)掃描顯示方式顯示位數(shù)較多時,靜態(tài)顯示所占用的I/O口多,為節(jié)省I/O口與驅(qū)動電路的數(shù)目,常采用動態(tài)掃描顯示方式。將所有LED數(shù)碼管顯示器的段碼線的相應段并聯(lián)在一起,由一個8位I/O端口控制,而各顯示位的公共端分別由另一單獨的I/O端口線控制。34圖5-7所示為一個4位8段LED數(shù)碼管動態(tài)掃描顯示電路的示意圖。其中單片機向I/O(1)端口發(fā)出欲顯示字符的段碼,而顯示器的位點亮控制使用I/O(2)端口中的4位口線,來控制數(shù)碼管公共端的電平,每一時刻,只有1位位選線有效,即選中某一位顯示,其他各位位選線都無效,不顯示。每隔一定時間逐位地輪流點亮各數(shù)碼管(掃描),由于數(shù)碼管的余輝和人眼的“視覺暫留”作用,只要控制好每位數(shù)碼管點亮顯示的時間和間隔,則可造成“多位同時亮”的假象,達到4位同時顯示的效果。圖5-74位LED數(shù)碼管動態(tài)顯示示意圖各位數(shù)碼管輪流點亮的時間間隔(掃描間隔)應根據(jù)實際情況而定。發(fā)光二極管從導通到發(fā)光有一定的延時,如果點亮時間太短,發(fā)光太弱,人眼無法看清;時間太長,產(chǎn)生閃爍現(xiàn)象,而且此時間越長,占用單片機時間也越多。另外,顯示位數(shù)增多,也將占用單片機的大量時間,因此動態(tài)顯示的實質(zhì)是以執(zhí)行程序的時間來換取I/O端口數(shù)目的減少。為克服動態(tài)顯示的弊病,可采用5.6.4小節(jié)介紹的專用的鍵盤/顯示器芯片,由芯片內(nèi)部硬件掃描電路自動完成顯示數(shù)據(jù)的掃描刷新。
365.3.3LED數(shù)碼管靜態(tài)顯示設(shè)計【例5-4】用AT89S51設(shè)計一個2位LED數(shù)碼管顯示的“秒表”,顯示時間為00~99秒,每秒自動加1。原理電路如圖5-8所示。電路采用單片機的P2口、P3口分別控制兩個LED數(shù)碼管作為“秒表”的時間顯示。顯示數(shù)字的段碼采用查表方法?!懊搿庇嫊r產(chǎn)生采用軟件延時的方法。由本例可見,采用靜態(tài)顯示,需要一個數(shù)碼管對應一個I/O端口。當數(shù)碼管的數(shù)目較多時,需要占用較多的I/O端口。但是軟件編程比較簡單,只需向P2口、P3口輸出顯示數(shù)字的段碼即可,且顯示不閃爍。38圖5-82位LED數(shù)碼管靜態(tài)顯示的秒表3940425.3.4LED數(shù)碼管動態(tài)顯示設(shè)計下面介紹單片機控制數(shù)碼管動態(tài)顯示的案例?!纠?-5】圖5-9所示的動態(tài)掃描顯示電路,由單片機控制8只共陽極數(shù)碼管,同時在數(shù)碼管上同時顯示8個數(shù)字1~8。電路中P0口輸出顯示字符的段碼,P2口輸出點亮某位的位選碼。由于8位數(shù)碼管的各段是并聯(lián)的,P0端口一次只能送出一個顯示段碼,即一次只能點亮1位數(shù)碼管。單片機先控制左邊第1個數(shù)碼管顯示1,經(jīng)過延時后,再控制左邊第2個數(shù)碼管顯示2,……,直至第8個數(shù)碼管顯示8,反復循環(huán)上述過程。圖5-9數(shù)碼管采用動態(tài)顯示方式同時顯示數(shù)字1~8單片機對8個數(shù)碼管進行快速位選掃描,只要位選掃描速度選擇適當,雖然是每次只點亮一位數(shù)碼管,但由于數(shù)碼管的余輝和人眼的“視覺暫留”作用,只要控制好每位數(shù)碼管顯示的時間和間隔,則可造成“多位同時亮”的假象,達到8位數(shù)碼管同時顯示字符的效果。44455.4單片機控制LED點陣顯示器顯示LED點陣顯示器應用非常廣泛,在許多公共場合,如商場、銀行、車站、機場、醫(yī)院隨處可見。不僅能顯示文字、圖形,還能播放動畫、圖像、視頻等信號。LED點陣顯示器分為圖文顯示器和視頻顯示器,有單色顯示,還有彩色顯示。下面僅介紹單片機如何來控制單色LED點陣顯示器的顯示。5.4.1LED點陣顯示器結(jié)構(gòu)與顯示原理由若干個發(fā)光二極管按矩陣方式排列而成。陣列點數(shù)可分為5×7、5×8、6×8、8×8點陣;按發(fā)光顏色可分為單色、雙色、三色;按極性排列可分為共陰極和共陽極。471.LED點陣結(jié)構(gòu)以8×8LED點陣顯示器為例,外形見圖5-10,內(nèi)部結(jié)構(gòu)見圖5-11,由64個發(fā)光二極管組成,且每個發(fā)光二極管是處于行線(R0~R7)和列線(C0~C7)之間交叉點上.2.LED點陣顯示原理
LED點陣顯示器顯示的一個字符是由點陣中被點亮的LED所構(gòu)成。下面以發(fā)光二極管陽極接行線,陰極接列線的點陣顯示器,即圖5-11的結(jié)構(gòu)來說明??梢钥闯?,點亮點陣中的一個發(fā)光二極管的條件是:所在行為高電平,所在列為低電平。當然,行與列也是相對的,如把圖5-11中的行列互換,則點亮點陣中的一個發(fā)光二極管的條件是:對應的行為低電平,對應的列為高電平。
圖5-108×8LED點陣顯示器外形圖5-118×8LED點陣顯示器(共陰極)的結(jié)構(gòu)如果在很短時間內(nèi)依次點亮很多個發(fā)光二極管,LED點陣就可以顯示一個穩(wěn)定的字符、數(shù)字或其他圖形。因此控制LED點陣顯示,實質(zhì)上就是控制加到行線和列線上的電平編碼來控制點亮某些發(fā)光二極管(點),從而顯示出由不同發(fā)光的點組成的各種字符。
8×8LED點陣顯示模塊中的每個發(fā)光二極管均放置在行線和列線的交叉點上,當對應的某一行置1電平,某一列為0電平時,該發(fā)光二極管被點亮。下面以8×8LED點陣顯示器顯示字符“7”為例,見圖5-12。圖5-128×8LED點陣顯示器顯示字符“7”顯示過程如下:先給8×8LED點陣的第1行送高電平(行線高電平有效),同時給所有列線送高電平(列線低電平有效),從而第1行發(fā)光二極管全滅;
延時一段時間,再給第2行送高電平,同時給所有列線送“11000001”,列線為0的發(fā)光二極管點亮,從而點亮5個發(fā)光二極管,顯示出字符“7”的第一橫;
延時一段時間后,再給第3行送高電平,同時加到列線的編碼為“11111101”,點亮1個發(fā)光二極管;……;
延時一段時間后,再給第8行送高電平,同時給列線送“11111011”,顯示出字符“7”的最下面的一行,點亮1個發(fā)光二極管。然后再重新循環(huán)上述操作,利用人眼的視覺暫留效應,一個穩(wěn)定的字符“7”就顯示出來,如圖5-12所示。
16×16LED點陣顯示器的結(jié)構(gòu)與8×8LED點陣顯示模塊內(nèi)部結(jié)構(gòu)及顯示原理是類似的,只不過行和列均為16。16×16LED點陣顯示器是由4個8×8LED點陣顯示器組成,且每個發(fā)光二極管也是放置在行線和列線的交叉點上,當對應的某一列置0電平,某一行置1電平時,該發(fā)光二極管點亮。下面以16×16LED點陣顯示器顯示字符“子”為例,見圖5-13。圖5-1316×16LED點陣顯示器顯示字符“子”顯示過程如下:先給LED點陣的第1行送高電平(行線高電平有效),同時給所有列線送高電平(列線低電平有效),從而第1行發(fā)光二極管全滅;延時一段時間后,再給第2行送高電平,同時給所有列線送“1100000000001111”,列線為0的發(fā)光二極管點亮,從而點亮10個發(fā)光二極管,顯示出漢字“子”的第一橫;延時一段時間后,再給第3行送高電平,同時加到列線的編碼為“1111111111011111”,點亮1個發(fā)光二極管……;
延時一段時間后,再給第16行送高電平,同時給列線送“1111110111111111”,顯示出漢字“子”的最下面的一行,點亮1個發(fā)光二極管。然后再重新循環(huán)上述操作,利用人眼視覺暫留效應,一個穩(wěn)定字符“子”顯示出來,見圖5-13。5.4.2控制16×16LED點陣顯示屏的案例單片機控制16×16點陣顯示屏顯示字符案例?!纠?-8】如圖5-14,利用單片機及74LS154(4-16譯碼器)、74LS07、16×16LED點陣顯示屏來實現(xiàn)字符顯示,編寫程序,循環(huán)顯示字符“電子技術(shù)”。圖5-14控制16×16LED點陣顯示器(共陰極)顯示字符
圖中16×16LED點陣顯示屏16行行線R0~R15電平,由P1口低4位經(jīng)4-16譯碼器74HC154的16條譯碼輸出線L0~L15經(jīng)驅(qū)動后的輸出來控制。16列列線C0~C15的電平由P0口和P2口控制。剩下問題是如何確定顯示字符的點陣編碼,以及控制好每一屏逐行顯示的掃描速度(刷新頻率)。
66掃描顯示時,單片機通過P1口低4位經(jīng)4-16譯碼器74HC154的16條譯碼輸出線L0~L15經(jīng)驅(qū)動后的輸出來控制,逐行為高電平,來進行掃描。由P0口與P2口控制列碼C0~C15的輸出,從而顯示出某行應當點亮的發(fā)光二極管。下面以顯示漢字“子”為例,說明其顯示過程。由程序可看出,漢字“子”的前3行發(fā)光二級管的列碼為“FFH,FFH,03H,F0H,FFH,FBH,……”,第一行的列碼為“FFH,FFH”,由P0口與P2口輸出,沒有點亮的發(fā)光二極管。第二行的列碼為“03H,F0H”,通過P0口與P2口輸出后,由圖5-14的電路可看出,H03加到列線C7~C0的二進制編碼為“00000011”,這里要注意加到8個發(fā)光二極管上的對應位置。按照圖5-13和圖5-14的連線關(guān)系,加到從左到右發(fā)光二極管應為C0~C7的二進制編碼為“11000000”,
即最左邊的2個發(fā)光二極管不亮,其余的6個發(fā)光二極管點亮。同理,P2口輸出的HF0加到列線C15~C8的二進制編碼為“11110000”,即加到C8~C15的二進制編碼為“00001111”,所以第二行的最右邊的4個發(fā)光二極管不亮,如圖5-13所示。對應通過P0口與P2口輸出加到第3行16個發(fā)光二極管的列碼為“FFH,FBH,”,對應于從左到右的C0~C15的二進制編碼為“1111111110111111”,從而第3行左邊數(shù)第11個發(fā)光二極管被點亮,其余均熄滅,如圖5-14所示。其余各行點亮的發(fā)光二極管,也是由16×16點陣的列碼來決定的。
5.5單片機控制液晶顯示模塊1602LCD的顯示液晶顯示器(LiquidCrystalDisplay,LCD)具有省電、體積小、抗干擾能力強等優(yōu)點,LCD顯示器分為字段型、字符型和點陣圖形型。(1)字段型。以長條狀組成字符顯示,主要用于數(shù)字顯示,也可用于顯示西文字母或某些字符,廣泛用于電子表、計算器、數(shù)字儀表中。(2)字符型。專門用于顯示字母、數(shù)字、符號等。一個字符由57或510的點陣組成,在單片機系統(tǒng)中已廣泛使用。(3)點陣圖形型。廣泛用于圖形顯示,如筆記本電腦彩色電視和游戲機等。它是在平板上排列的多行列的矩陣式的晶格點,點大小與多少決定了顯示的清晰度。5.5.1LCD1602液晶顯示模塊簡介最常見的字符型液晶顯示模塊。單片機系統(tǒng)中常用。由于LCD顯示面板較為脆弱,廠商已將LCD控制器、驅(qū)動器、RAM、ROM和液晶顯示器用PCB連接到一起,稱為液晶顯示模塊(LCdModule,LCM),用戶只需購買現(xiàn)成的液晶顯示模塊即可。單片機只需向LCD顯示模塊寫入相應命令和數(shù)據(jù)就可顯示需要的內(nèi)容。1.字符型液晶顯示模塊LCD1602特性與引腳字符型LCD模塊常用的有16字×1行、16字×2行、20字×2行、20字×4行等模塊,型號常用×××1602、×××1604、×××2002、×××2004來表示,其中×××為商標名稱,16代表液晶顯示器每行可顯示16個字符,02表示顯示2行。LCD1602內(nèi)部具有字符庫ROM(CGROM),能顯示出192個字符(5×7點陣),如圖5-15所示。圖5-15ROM字符庫的內(nèi)容由字符庫可看出顯示器顯示的數(shù)字和字母部分代碼,恰是ASCII碼表中編碼。單片機控制LCD1602顯示字符,只需將待顯示字符的ASCII碼寫入內(nèi)部的顯示數(shù)據(jù)RAM(DDRAM),用內(nèi)部控制電路就可將字符在顯示器上顯示出來。例如,顯示字符“A”,單片機只需將字符“A”的ASCII碼41H寫入DDRAM,控制電路就會將對應的字符庫ROM(CGROM)中的字符“A”的點陣數(shù)據(jù)找出來顯示在LCD上。模塊內(nèi)有80字節(jié)數(shù)據(jù)顯示RAM(DDRAM),除顯示192個字符(57點陣)的字符庫ROM(CGROM)外,還有64字節(jié)的自定義字符RAM(CGRAM),用戶可自行定義8個5×7點陣字符。LCD1602工作電壓4.5~5.5V,典型5V,工作電流2mA。標準的14引腳(無背光)或16個引腳(有背光)的外形及引腳分布如圖5-16所示。
(a)LCD1602的外形(b)LCD1602的引腳圖5-16LCD1602外形及引腳引腳包括8條數(shù)據(jù)線、3條控制線和3條電源線,見表5-2。通過單片機向模塊寫入命令和數(shù)據(jù),就可對顯示方式和顯示內(nèi)容做出選擇。2.LCD1602字符的顯示及命令字顯示字符首先要解決待顯示字符的ASCII碼產(chǎn)生。用戶只需在C51程序中寫入欲顯示的字符常量或字符串常量,C51程序在編譯后會自動生成其標準的ASCII碼,然后將生成的ASCII碼送入顯示用數(shù)據(jù)存儲器DDRAM,內(nèi)部控制電路就會自動將該ASCII碼對應的字符在LCD1602顯示出來。讓液晶顯示器顯示字符,首先對其進行初始化設(shè)置還必須對有、無光標、光標移動方向、光標是否閃爍及字符移動方向等進行設(shè)置,才能獲得所需顯示效果。對LCD1602的初始化、讀、寫、光標設(shè)置、顯示數(shù)據(jù)的指針設(shè)置等,都是單片機向LCD1602寫入命令字來實現(xiàn)。命令字見表5-3。
表5-3中11個命令功能說明如下:命令1:清屏,光標返回地址00H位置(顯示屏的左上角)命令2:光標返回到地址00H位置(顯示屏的左上角)。命令3:光標和顯示模式設(shè)置。I/D—地址指針加1或減1選擇位。I/D=1,讀或?qū)懸粋€字符后地址指針加1;I/D=0,讀或?qū)懸粋€字符后地址指針減1。S—屏幕上所有字符移動方向是否有效的控制位。S=1,當寫入一字符時,整屏顯示左移(I/D=1)或右移(I/D=0);S=0,整屏顯示不移動。命令4:顯示開/關(guān)及光標設(shè)置。D—屏幕整體顯示控制位,D=0關(guān)顯示,D=1開顯示。C—光標有無控制位,C=0無光標,C=1有光標。B—光標閃爍控制位,B=0不閃爍,B=1閃爍。命令5:光標或字符移位。S/C—光標或字符移位選擇控制位。S/C=1移動顯示的字符,S/C=0移動光標。R/L—移位方向選擇控制位。0:左移,1:右移。命令6:功能設(shè)置命令。DL—傳輸數(shù)據(jù)的有效長度選擇控制位。1:8位數(shù)據(jù)線接口;0:4位數(shù)據(jù)線接口。N—顯示器行數(shù)選擇控制位。0:單行顯示,1:兩行顯示。F—字符顯示的點陣控制位。0:顯示5×7點陣字符,1:顯示5×10點陣字符。命令7:CGRAM地址設(shè)置。命令8:DDRAM地址設(shè)置。LCD內(nèi)部有一個數(shù)據(jù)地址指針,用戶可通過它訪問內(nèi)部全部80字節(jié)的數(shù)據(jù)顯示RAM。命令格式為:80H+地址碼。其中,80H為命令碼。命令9:讀忙標志或地址。BF—忙標志。BF=1,表示LCD忙,此時LCD不能接受命令或數(shù)據(jù);BF=0,表示LCD不忙。命令10:寫數(shù)據(jù)。命令11:讀數(shù)據(jù)。例如,將顯示模式設(shè)置為“16×2顯示,5×7點陣,8位數(shù)據(jù)接口”,只需要向1602寫入光標和顯示模式設(shè)置命令(命令6)“00111000B”,即38H即可。再如,要求液晶顯示器開顯示,顯示光標且光標閃爍,那么根據(jù)顯示開關(guān)及光標設(shè)置命令(命令4),只要令D=1,C=1和B=1,也就是寫入命令“00001111B”,即0FH,就可實現(xiàn)所需的顯示模式。3.字符顯示位置的確定LCD1602內(nèi)部有80字節(jié)DDRAM,與顯示屏上字符顯示位置一一對應,圖5-17給出LCD1602顯示RAM地址與字符顯示位置的對應關(guān)系。
圖5-17LCD內(nèi)部顯示RAM的地址映射圖當向DDRAM的00H~0FH(第1行)、40H~4FH(第2行)地址的任一處寫數(shù)據(jù)時,LCD立即顯示出來,該區(qū)域也稱為可顯示區(qū)域。而當寫入10H~27H或50H~67H地址處時,字符不會顯示出來,該區(qū)域也稱為隱藏區(qū)域。如果要顯示寫入到隱藏區(qū)域的字符,需要通過字符移位命令(命令5)將它們移入到可顯示區(qū)域方可正常顯示。需說明的是,在向DDRAM寫入字符時,首先要設(shè)置DDRAM定位數(shù)據(jù)指針,此操作可通過命令8完成。例如,要寫字符到DDRAM的40H處,則命令8的格式為:80H+40H=C0H,其中80H為命令代碼,40H是要寫入字符處的地址。4.LCD1602的復位LCD1602上電后復位狀態(tài)為:清除屏幕顯示設(shè)置為8位數(shù)據(jù)長度,單行顯示,5×7點陣字符。顯示屏、光標、閃爍功能均關(guān)閉。輸入方式為整屏顯示不移動,I/D=1。LCD1602的一般初始化設(shè)置為:寫入命令01H(命令1),顯示清屏,數(shù)據(jù)指針清0。寫入命令38H(命令6),顯示模式設(shè)置(16×2顯示5×7點陣,8位數(shù)據(jù)接口)。寫入命令0CH(命令4),設(shè)置開顯示,不顯示光標。寫入命令06H(命令3),寫一個字符后地址指針加1寫入命令08H,顯示關(guān)閉。在進行上述設(shè)置及對數(shù)據(jù)進行讀取時,通常需要檢測忙標志位BF,如果為1,則說明忙,要等待;如果BF為0則可進行下一步操作。
LCD1602的讀寫操作規(guī)定見表5-4。LCD1602與AT89S51的接口電路見圖5-18。圖5-18單片機與LCD1602接口電路由圖5-18可看出,單片機的P3.0、P3.1和P3.2引腳分別與LCD1602的RS、R/和E這3個引腳連接,只需通過指令對這3個引腳置“1”或清“0”,就可實現(xiàn)對LCD1602的讀寫操作控制。單片機的P2口與LCD1602的D0~D7相連,進行命令或數(shù)據(jù)的傳送。具體來說,顯示一個字符的操作過程為“讀忙標志位BF→寫命令→寫顯示字符→自動顯示”。895.5.2單片機控制字符型LCD1602的顯示案例下面通過一個具體案例介紹單片機如何控制LCD1602顯示字符?!纠?-7】用AT89C51單片機控制LCD1602,使其顯示兩行文字:“Welcomto”與“HarbinInstitute”,Proteus的虛擬仿真原理電路如圖5-19所示。在Proteus中,LCD1602液晶顯示器的對應仿真模型為LM016L(相當于14腳的LCD1602,即表5-2中的1~14腳)。LM016L的符號與引腳如圖5-20所示,與14引腳LCD1602液晶顯示器的引腳信號相同,引腳功能說明見表5-2。
圖5-19單片機與字符型LCD接口電路與仿真92圖5-20字符型液晶顯示器LCD引腳939596程序說明:(1)程序中調(diào)用了3個子程序,即檢測LCD1602“忙”標志、向LCD1602寫入命令、向LCD1602寫入數(shù)據(jù),3個子程序中包括了相應的控制信號產(chǎn)生,使用時只需調(diào)用即可。(2)顯示兩行字符時,分別使用了相應的顯示位置的設(shè)置命令(命令8)。第一行的顯示位置從03H開始;第二行的顯示位置從40H開始。(3)使用了R0寄存器來控制兩行分別顯示字符的個數(shù)
975.6鍵盤接口設(shè)計
鍵盤——向單片機輸入數(shù)據(jù)、命令等功能,是人機對話的主要手段。由若干按鍵按照一定規(guī)則組成。每一個按鍵實質(zhì)上是一個按鍵開關(guān),按構(gòu)造可分為有觸點開關(guān)按鍵和無觸點按鍵。
有觸點開關(guān)按鍵常見的有:觸摸式鍵盤、薄膜鍵盤、導電橡膠、按鍵式鍵盤等,最常用按鍵式鍵盤。
無觸點開關(guān)按鍵有電容式按鍵、光電式按鍵、磁感應按鍵等。下面介紹按鍵式開關(guān)鍵盤工作原理、方式以及與鍵盤接口設(shè)計與軟件編程。985.6.1鍵盤接口設(shè)計應解決的問題1.鍵盤的任務(wù)任務(wù)3項。(1)判別是否有鍵按下?若有,進入第(2)步。(2)識別哪一個鍵被按下,并求出相應的鍵值。(3)根據(jù)鍵值,找到相應鍵值處理程序入口。2.鍵盤輸入特點鍵盤一個按鍵實質(zhì)就是一個按鈕開關(guān)。圖5-21(a)所示按鍵開關(guān)的兩端分別連接在行線和列線上,列線接地,行線通過電阻接到+5V上。鍵盤開關(guān)機械觸點的斷開、閉合,其行線電壓輸出波形如圖5-21(b)所示。圖5-21(b)所示的t1和t3分別為鍵的閉合和斷開過程中的抖動期(呈現(xiàn)一串負脈沖),抖動時間長短與開關(guān)機械特性有關(guān),一般為5~10ms,t2為穩(wěn)定的閉合期,其時間由按鍵動作確定,一般為十分之幾秒到幾秒,t0、t4為斷開期。100101圖5-21鍵盤開關(guān)及其行線波形3.按鍵的識別按鍵閉合與否,反應在行線輸出電壓上就是高電平或低電平,對行線電平高低狀態(tài)檢測,便可確認按鍵是否按下與松開。為了確保單片機對一次按鍵動作只確認一次按鍵有效,必須消除抖動期t1和t3的影響。4.如何消除按鍵的抖動兩種去抖動方法。一種是用軟件延時來消除按鍵抖動基本思想:在檢測到有鍵按下時,該鍵所對應的行線為低電平,執(zhí)行一段延時10ms的子程序后,確認該行線電平是否仍為低電平,如果仍為低電平,則確認該行確實有鍵按下。當按鍵松開時,行線的低電平變?yōu)楦唠娖剑瑘?zhí)行一段延時10ms的子程序后,檢測該行線為高電平,說明按鍵確實已經(jīng)松開。
102采取以上措施,可消除兩個抖動期t1和t3的影響。另一種去除按鍵抖動的方法是采用專用的鍵盤/顯示器接口芯片,這類芯片中都有自動去抖動的硬件電路。常見的鍵盤有:獨立式鍵盤和矩陣式鍵盤兩種結(jié)構(gòu)。1035.6.2獨立式鍵盤的設(shè)計獨立式鍵盤特點各鍵相互獨立,每個按鍵各接一條I/O口線,通過檢測I/O輸入線的電平狀態(tài),易判斷哪個按鍵被按下。圖5-22為一獨立式鍵盤,8個按鍵k1~k8分別接到單片機的P1.0~P1.7引腳上,圖中上拉電阻保證按鍵未按下時,保證對應I/O口線為穩(wěn)定高電平。當某一按鍵按下時,對應I/O口線就變成低電平,與其他按鍵相連的I/O口線仍為高電平。因此,只需讀入I/O口線狀態(tài),判別是否為低電平,就很容易識別出哪個鍵被按下。可見獨立式鍵盤優(yōu)點是電路簡單,各條檢測線獨立,識別按鍵號的軟件編寫簡單。如按鍵數(shù)目較多,要占用較多I/O口線。因此獨立式鍵盤適于按鍵數(shù)目較少場合。
104圖5-22獨立式鍵盤的接口電路1.獨立式鍵盤的查詢工作方式【例5-10】對圖5-23所示獨立式鍵盤,用查詢方式實現(xiàn)鍵盤掃描根據(jù)按下不同按鍵,對其進行處理。獨立式鍵盤查詢方式的參考程序如下: 106108對應8個按鍵的鍵處理子程序Pkey0~Pkey7,要根據(jù)按鍵功能的具體要求來編寫。但是需要注意的是,進入鍵處理子程序后,應先判斷按下的按鍵是否松開,確認松開后,再進行按鍵功能的處理。所以指令“JNBP1.x,Pkeyx”(x=0~7)用來判斷按鍵是否松開。2.獨立式鍵盤的中斷掃描方式上面介紹的獨立式鍵盤的查詢方式,即使鍵盤無按鍵按下,也要查詢。為提高鍵盤掃描的工作效率,可采用中斷掃描方式,即只有在按鍵按下時,才進行掃描查詢與處理,因此中斷掃描方式的鍵盤實時性強,工作效率高。
【例5-9】設(shè)計一個采用中斷方式的獨立式鍵盤,只有在鍵盤有按鍵按下時,才向單片機發(fā)出中斷請求。單片機進入中斷服務(wù)程序后,再對按下的鍵進行查詢。中斷方式的獨立式鍵盤的原理電路見圖5-23。圖中P1.0~P1.7口線接上拉電阻至+5V,當鍵盤中沒有按鍵按下時P1.0~P1.7口線均為高電平。
圖5-23中斷掃描方式的獨立式鍵盤的接口電路當某個按鍵按下時,按鍵所在行的行線為低電平,經(jīng)過8輸入與非門74LS30的輸出以及74LS04反相后向單片機的中斷請求輸入引腳發(fā)出低電平的外部中斷請求信號,單片機響應中斷,進入外部中斷的中斷服務(wù)子程序,在中斷服務(wù)子程序中,再進行按鍵的查詢掃描,根據(jù)掃描結(jié)果跳向按下鍵的鍵處理程序。
1121131145.6.3矩陣式鍵盤的設(shè)計
按鍵數(shù)目較多的場合常采用矩陣式(也稱行列式)鍵盤。鍵盤由行線和列線組成,按鍵位于行、列的交叉點上。如圖5-24所示,一個4×4的行列結(jié)構(gòu)可構(gòu)成一個16個按鍵k0~k15的鍵盤,需要一個8位的并行I/O口。如果采用8×8的行列結(jié)構(gòu),可構(gòu)成一個8×8=64鍵的鍵盤,只需要兩個8位的并行I/O口。很明顯,在按鍵數(shù)目較多的場合,矩陣式鍵盤要比獨立式鍵盤節(jié)省較多的I/O口線。116圖5-24矩陣式(行列式)鍵盤的接口電路
對圖5-24的矩陣式鍵盤的查詢掃描,一般包括以下4個步驟。(1)首先判別整個鍵盤有無按鍵按下,方法為單片機驅(qū)動列線P1.4~P1.7輸出全“0”,然后讀行線P1.0~P1.3的狀態(tài),若為全“1”,則鍵盤上沒有閉合鍵,若P1.0~P1.3不全為“1”,則有鍵按下。(2)去除鍵的抖動,當判別出可能有鍵按下時,軟件延時一段時間(10ms左右)再判別鍵盤的狀態(tài),若仍有鍵閉合,則認為鍵盤上有確定的鍵按下,否則是鍵抖動。(3)求出按下鍵的鍵號,圖5-24中的16個按鍵,鍵號依次為0,1,…15。各行的首鍵號分別為0,4,8,12,列號依次為0,1,2,3。行線通過上拉電阻接+5V,當無鍵按下時,行線為高電平,當有按鍵按下時,對應的行線與列線短接,行線的電平將由此行線相連的列線電平?jīng)Q定。117如果把行線設(shè)置為單片機的輸入口線,列線設(shè)置為單片機的輸出口線,則按鍵號的識別過程是:先令0列線P1.4為低電平“0”,其余3根列線都為高電平,逐行檢查行線狀態(tài)。如果行線P1.0~P1.3都為高電平“1”,則P1.4這一列上沒有按鍵閉合,若P1.0~P1.3中有一行為低電平,則該行線與列線交叉的按鍵按下。如果P1.4這一列上沒有按鍵閉合,接著再使P1.5為低電平,其余列線為高電平。用同樣的方法檢查P1.5這一列上有無按鍵閉合,以此類推。這樣采用逐列掃描(只有一列為低),然后讀入各行線的電平,即可求出按下鍵的鍵號N為:N=行的首鍵號+列號。各行的首鍵號分別為0,4,8,12,列號依次為0,1,2,3。編程時設(shè)置1個列號計數(shù)器,初值為0,每掃描1列,列號計數(shù)器加1。118(4)判閉合鍵是否松開,如果松開則將鍵號送入A中保存,單片機根據(jù)按下鍵的鍵號,對該鍵的一次閉合僅作一次鍵功能處理。1.矩陣式鍵盤的查詢掃描的編程【例5-10】對圖5-24的矩陣式鍵盤,編寫鍵盤的查詢掃描程序。查詢掃描的參考程序如下。119120121122上述的鍵盤掃描程序?qū)聪骆I的鍵號存于累加器A中,如果想要把鍵號顯示出來,只需在P2口接一個共陽極數(shù)碼管,通過下面的程序,將存于累加器A中的鍵號,通過查表的方法,將鍵值的段碼通過P2口輸出給數(shù)碼管即可。參考的顯示子程序如下。
查詢掃描鍵盤無論是否有鍵按下,都需要進行掃描。為提高鍵盤掃描的工作效率,可采用中斷掃描方式。2.矩陣式鍵盤的中斷掃描查詢方式采用中斷掃描方式,只有在鍵盤有按鍵按下時,才會向單片機發(fā)出中斷請求,單片機執(zhí)行中斷服務(wù)子程序去掃描查詢鍵盤,識別出按下的鍵號。如果無鍵按下,單片機將不會掃描鍵盤。該方式的優(yōu)點是,實時性強,工作效率高?!纠?-11】矩陣式鍵盤的中斷查詢掃描方式的設(shè)計,接口電路如圖5-25所示。
鍵盤的列線與P1口的高4位相連,行線與P1口的低4位相連。圖中的4輸入與門74LS21用于產(chǎn)生按鍵中斷,其輸入端與鍵盤各行線相連,經(jīng)上拉電阻接至+5V,輸出端接至單片機的外部中斷請求輸入引腳。圖5-25矩陣式(行列式)鍵盤的中斷方式的接口電路當鍵盤沒有按鍵按下時,與門各輸入端均為高電平,無中斷請求,單片機將不會掃描鍵盤。當有按鍵按下時,相應的列線為低電平,與門74LS21輸出也為低電平,向單片機發(fā)出中斷請求,若單片機外部中斷允許,就會向單片機發(fā)出中斷請求,單片機響應該中斷請求,轉(zhuǎn)去執(zhí)行【例5-10】的查詢掃描程序,這里不再贅述。中斷掃描方式的參考程序如下:查詢掃描可以采用定時查詢也可以采用實時查詢。
定時查詢是單片機對鍵盤掃描每隔一定時間對鍵盤掃描一次。通常利用單片機的定時器產(chǎn)生定時中斷,進入定時中斷服務(wù)程序后對鍵盤進行掃描。由于每次按鍵的時間一般不會小于100ms,所以為了不漏判有效的按鍵,定時中斷的周期一般應小于100ms。
實時查詢是單片機一直調(diào)用查詢掃描子程序,反復掃描鍵盤。如果查詢時間過短,雖能及時響應鍵盤的輸入,但也會影響其他任務(wù)的進行。如果查詢時間過長,有可能出現(xiàn)鍵盤輸入的漏判現(xiàn)象。所以要根據(jù)單片機系統(tǒng)的繁忙程度和鍵盤的操作頻率,來調(diào)整鍵盤的掃描查詢時間。5.6.4單片機與專用鍵盤/顯示器芯片HD7279的接口設(shè)計單片機通過專用可編程鍵盤/顯示器接口芯片與鍵盤/顯示器連接,由于片內(nèi)有硬件掃描電路,可對鍵盤/顯示器自動進行掃描,直接得到閉合鍵的鍵號,省去了編寫鍵盤/顯示器動態(tài)掃描程序以及鍵盤去抖動程序以及計算閉合鍵鍵號的繁瑣工作。目前各種專用鍵盤/顯示器接口芯片種類繁多,早期流行的是Intel公司的并行接口的專用鍵盤/顯示器芯片8279,目前流行的鍵盤/顯示器接口芯片與單片機的接口多采用串行連接方式,占用I/O口線少。常見的專用鍵盤/顯示器芯片有:HD7279,ZLG7289A,CH451)等。這些接口芯片對所驅(qū)動的LED數(shù)碼管全都采用動態(tài)掃描方式,并可對鍵盤自動掃描,直接得到閉合鍵的鍵號(編碼鍵盤),且自動去除按鍵抖動。
專用鍵盤/顯示器接口芯片HD7279與單片機間采用串行連接,功能強,具有一定的抗干擾能力,可控制與驅(qū)動8位LED數(shù)碼管顯示以及實現(xiàn)8×8的鍵盤管理。由于其外圍電路簡單,價格低廉,目前在鍵盤/顯示器接口的設(shè)計中得到較為廣泛的應用。1.HD7279A簡介HD7279A能同時驅(qū)動8個共陰極LED數(shù)碼管(或64個獨立的LED發(fā)光二極管)和8×8的編碼鍵盤。對LED數(shù)碼管采用的是動態(tài)掃描的循環(huán)顯示方式,特性如下:與單片機間采用串行接口方式,僅占用4條口線,接口簡單;具有自動按鍵去抖動并識別有效鍵值的功能;內(nèi)部含有譯碼器,可直接接收BCD碼或十六進制碼,同時具有兩種譯碼方式,實現(xiàn)LED數(shù)碼管的位尋址和段尋址,可方便地控制每位LED數(shù)碼管中任意一段是否發(fā)光;內(nèi)部含有驅(qū)動器,可以直接驅(qū)動不超過25.4mm的LED數(shù)碼管;多種控制命令,如消隱、閃爍、左移、右移和段尋址、位尋址等;含有片選信號輸入端,容易實現(xiàn)多于8位數(shù)碼管顯示器或多于64鍵的鍵盤控制。(1)引腳說明與電氣特性HD7279A為28引腳雙列直插(DIP)式封裝,單一+5V供電,引腳見圖5-26,引腳功能見表5-5。圖5-26HD7279A的引腳DIG0~DIG7:位驅(qū)動輸出端,可分別連接8只LED數(shù)碼管的共陰極;段驅(qū)動輸出端SA~SG分別連接至LED數(shù)碼管的a~g段的陽極,而DP引腳連至小數(shù)點dp的陽極。DIG0~DIG7、DP和SA~SG還分別是64鍵鍵盤的列線和行線,完成對鍵盤的譯碼和鍵值識別。88矩陣鍵盤中的每個鍵值可用讀鍵盤命令讀出,鍵值的范圍是00H~3FH。HD7279A與單片機連接僅需4條口線:CS*、DATA、CLK和KEY*。CS*:當單片機訪問HD7279A芯片(寫入命令、顯示數(shù)據(jù)、位地址、段地址或讀出鍵值等)時,應將置低電平。DATA:串行數(shù)據(jù)輸入/輸出端,當單片機向HD7279A芯片發(fā)送數(shù)據(jù)時,DATA為輸入端;當單片機從HD7279A讀鍵號時,DATA輸出鍵號。
CLK:數(shù)據(jù)串行傳送的同步時鐘輸入端,時鐘的上升沿將數(shù)據(jù)寫入HD7279A中或從HD7279A中讀出數(shù)據(jù)。KEY*:按鍵信號輸出端,無鍵按下為高電平,有鍵按下為低電平,且一直保持到該鍵釋放為止。RESET*:復位端,通常該端接+5V。若對可靠性要求較高,則可外接復位電路,或直接由單片機控制。RC:該腳外接振蕩元件,其典型值為R=1.5k,C=15pF。NC:懸空。HD7279A電氣特性見表5-6。(2)控制命令控制命令由6條不帶數(shù)據(jù)的單字節(jié)純命令、7條帶數(shù)據(jù)的命令和1條讀鍵盤命令組成。①純命令(6條)所有純命令都是單字節(jié)命令,見表5-7。②帶數(shù)據(jù)命令(7條)均由雙字節(jié)組成,第1字節(jié)為命令標志碼(有的還有位地址),第2字節(jié)為顯示內(nèi)容。a.方式0譯碼顯示命令:139a2、a1、a0—8只數(shù)碼管位地址,表示顯示數(shù)據(jù)應送給哪一位數(shù)碼管,000:最低位數(shù)碼管,111:最高位數(shù)碼管。d3、d2、d1、d0—顯示數(shù)據(jù),HD7279A收到這些數(shù)據(jù)后,將按表5-6所示的規(guī)則譯碼和顯示。dp—小數(shù)點顯示控制位,1:小數(shù)點顯示,0:小數(shù)點不顯示。:無用位。例如,命令第1字節(jié)為80H,第2字節(jié)為08H,則L1位(最低位)數(shù)碼管顯示8,小數(shù)點dp熄滅;命令第1字節(jié)為87H,第2字節(jié)為8EH,則L8位(最高位)LED顯示內(nèi)容為P,小數(shù)點dp點亮。b.方式1譯碼顯示命令:142該命令與方式0譯碼顯示的含義基本相同,不同的是譯碼方式為1,數(shù)碼管顯示的內(nèi)容與十六進制相對應,如表5-9所示。例如,命令第1字節(jié)為C8H,第2字節(jié)為09H,則L1位數(shù)碼管顯示9,小數(shù)點dp熄滅;命令第1字節(jié)為C9H,第2字節(jié)為8FH,則L2位數(shù)碼管顯示F,小數(shù)點dp點亮。c.不譯碼顯示命令:144命令中的a2、a1、a0為顯示位的位地址,第2字節(jié)為LED顯示內(nèi)容,其中dp和A~G分別代表數(shù)碼管的小數(shù)點和對應的段,當取值為1時,該段點亮;取值為0時,該段熄滅。該命令可在指定位上顯示字符。例如,若命令第1字節(jié)為95H,第2字節(jié)為3EH,則在L6位LED上顯示字符U,小數(shù)點dp熄滅。d.閃爍控制命令:該命令規(guī)定了每個數(shù)碼管的閃爍屬性。d8~d1分別對應L8~L1位數(shù)碼管,其值為1時,數(shù)碼管不閃爍;其值為0時,數(shù)碼管閃爍。該命令的默認值是所有數(shù)碼管均不閃爍。例如,命令第1字節(jié)為88H,第2字節(jié)為97H,則L7、L6、L4位數(shù)碼管閃爍。146e.消隱控制命令:該命令規(guī)定了每個數(shù)碼管的消隱屬性。d8~d1分別對應L8~L1位數(shù)碼管,其值為1時,數(shù)碼管顯示;值為0時消隱。應注意至少要有1個LED數(shù)碼管保持顯示,如果全部消隱,則該命令無效。例如,命令第1字節(jié)為98H,第2字節(jié)為81H,則L7~L2位的6位數(shù)碼管消隱。f.段點亮命令:該命令是點亮某位數(shù)碼管中的某一段?!痢翞闊o影響位,d5~d0取值為00H~3FH,所對應的點亮段見表5-10。例如,命令第1字節(jié)E0H,第2字節(jié)00H,則點亮L1位數(shù)碼管的g段;如果第2字節(jié)為19H,則點亮L4位數(shù)碼管的f段;再如第2字節(jié)為35H,則點亮L7位LED的b段g.段關(guān)閉命令:關(guān)閉某個數(shù)碼管中的某一段?!痢翞闊o影響位,d5~d0的取值為00H~3FH,所對應的關(guān)閉段同表5-8,僅僅是將點亮段變?yōu)殛P(guān)閉段。例如,命令第1字節(jié)為C0H,第2字節(jié)為00H,則關(guān)閉L1位LED的g段;第2字節(jié)為10H,則關(guān)閉L3位LED的g段。③讀取鍵值命令本命令是從HD7279A讀出當前按下的鍵值,格式如下:
命令的第1字節(jié)為15H,表示單片機寫到HD7279A的是讀鍵值命令,而第2字節(jié)d7~d0為從HD7279A中讀出的按鍵值,其范圍為00H~3FH。當按鍵按下時,HD7279A的KEY*腳從高電平變?yōu)榈碗娖?,并保持到按鍵釋放為止。在此期間,若HD7279A收到來自單片機的讀鍵盤命令15H,則HD7279A向單片機發(fā)出當前的按鍵代碼。應注意,HD7279A只給其中1個按下鍵的代碼,不適合2個或2個以上鍵同時按下的場合。如果確實需要雙鍵組合使用,可在單片機某位I/O引腳接1個鍵,與HD7279A所連鍵盤共同組
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會有圖紙預覽,若沒有圖紙預覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲空間,僅對用戶上傳內(nèi)容的表現(xiàn)方式做保護處理,對用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對任何下載內(nèi)容負責。
- 6. 下載文件中如有侵權(quán)或不適當內(nèi)容,請與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準確性、安全性和完整性, 同時也不承擔用戶因使用這些下載資源對自己和他人造成任何形式的傷害或損失。
最新文檔
- 農(nóng)業(yè)行業(yè)會計的個人工作計劃
- 急救心理支持服務(wù)計劃
- 制定公司市場競爭優(yōu)勢策略的工作計劃
- 圖書服務(wù)改進計劃
- 第一單元第2節(jié)認識更大的數(shù)(教案)-北師大版四年級上冊數(shù)學
- 一年級信息技術(shù)下冊 作品展示 2教學實錄 河大版
- 如何評估與優(yōu)化秘書工作計劃
- 市場調(diào)查與需求分析計劃
- 2025年大環(huán)內(nèi)酯類藥合作協(xié)議書
- 2025年液體氣體過濾、凈化機械項目發(fā)展計劃
- 境外放款合同協(xié)議書
- 用所給詞的適當形式填空(專項訓練)人教PEP版英語六年級上冊
- 《醫(yī)療和疾控機構(gòu)后勤安全生產(chǎn)工作管理指南2023版》
- 弟子規(guī)帶拼音全文課件省公共課一等獎全國賽課獲獎?wù)n件
- 七年級數(shù)學下冊第一次月考(壓軸30題9種題型)(解析版)
- HG/T 6238-2023 硫酸鎳鈷錳 (正式版)
- (高清版)JTGT D31-05-2017 黃土地區(qū)公路路基設(shè)計與施工技術(shù)規(guī)范
- JT-T-283-1995船用柴油機渦輪增壓器修理技術(shù)要求
- 人教版小學數(shù)學四年級下冊第三單元《+乘法分配率》說課
- 猜猜我有多愛你-繪本故事
- 2024年陜西省初中學業(yè)水平考試地理示范卷
評論
0/150
提交評論