- 相關(guān)推薦
數(shù)碼管顯示驅(qū)動(dòng)和鍵盤掃描控制器CH451及其應(yīng)用
摘要:介紹一種新型的鍵盤顯示驅(qū)動(dòng)芯片CH451的性能特點(diǎn)和工作原理,給出了CH451鍵盤顯示驅(qū)動(dòng)芯片與MCS-51單片機(jī)的接口方法與相應(yīng)的軟件驅(qū)動(dòng)程序。關(guān)鍵詞:鍵盤顯示控制;單片機(jī);CH451
單片機(jī)在開發(fā)過程中,常常會(huì)因?yàn)橘Y源不足而不得不大量擴(kuò)展接口芯片以滿足應(yīng)用系統(tǒng)的需要,其中原因之一是人機(jī)界面中的鍵盤顯示占用了系統(tǒng)太多資源,從而造成系統(tǒng)龐大,同時(shí)降低了系統(tǒng)的可靠性。在單片機(jī)應(yīng)用系統(tǒng)中,鍵盤顯示通?刹捎靡韵聨追N方式:
(1)采用并行接口的鍵盤顯示專用芯片8279。但8279所需外圍元件多(顯示驅(qū)動(dòng)、譯碼等)、占用電路板面積大、綜合成本高,在中小系統(tǒng)中常常大材小用;
(2)采用通用并行I/O芯片擴(kuò)展(如用8155等),但此方案同樣需要驅(qū)動(dòng)顯示,同時(shí)鍵盤顯示掃描還需占用CPU大量時(shí)間;
(3)采用專用顯示控制器,并用CPU的I/O引腳完成鍵盤輸入(如MC14499、PS7219、MAX7219、ICM7218、TLC5921等,大多是串行接口并有顯示驅(qū)動(dòng)能力,I/O占用少)。這種接口方式省去了顯示的掃描,而且電路大多也很簡(jiǎn)單,通常在系統(tǒng)需要的按鍵較少時(shí)比較適用;
(4)采用帶I2C總線的鍵盤顯示芯片(如顯示用SAA1064,鍵盤用PCF8574),不過這種方式對(duì)于無I2C總線接口的CPU來說,編程顯得有些不便;
(5)采用串行接口的鍵盤顯示專用芯片,如BC7280/81、HD7279、CH451等。這類芯片占用CPU的資源少,傳輸速度較快,外圍器件要求也較少,在中小系統(tǒng)中都可得到廣泛的應(yīng)用。BC7280/81與HD7279中已有介紹,本文著重介紹CH451的主要特性及接口應(yīng)用方法。
1 CH451的功能與引腳介紹
CH451是一個(gè)整合了數(shù)碼管顯示驅(qū)動(dòng)和鍵盤掃描控制以及μP監(jiān)控的多功能外圍芯片。CH451內(nèi)置RC振蕩電路,可以直接動(dòng)態(tài)驅(qū)動(dòng)8位數(shù)碼管或者64位LED,具有BCD譯碼或不譯碼功能,可實(shí)現(xiàn)數(shù)據(jù)的左移、右移、左循環(huán)、右循環(huán)、各數(shù)字獨(dú)立閃爍等控制功能。CH451內(nèi)置大電流驅(qū)動(dòng)級(jí),段電流不小于30mA,字電流不小于160mA,并有16 級(jí)亮度控制功能;在鍵盤控制方面,該器件內(nèi)置64鍵鍵盤控制器,可實(shí)現(xiàn)8×8矩陣鍵盤掃描,并內(nèi)置去抖動(dòng)電路,可提供按鍵中斷與按鍵釋放標(biāo)志位等功能;在外部接口方面,CH451可選擇簡(jiǎn)潔的1線串行接口或高速4線串行接口,且內(nèi)置上電復(fù)位,可提供高電平有效復(fù)位和低電平有效復(fù)位兩種輸出,同時(shí)內(nèi)置看門狗電路Watch-Dog。CH451提供有28引腳的DIP28與SOP28封裝以及DIP24S封裝形式,28腳與24腳在功能上稍有差別,它們的引腳定義見表1所列。
表1 CH451的引腳說明
引 腳 說 明
2。茫龋矗担钡牟僮髅
CH451的操作命令均為12位,其中高4位為標(biāo)識(shí)碼,低8位為參數(shù),各操作命令如下:
●空操作:0000xxxxxxxxB(x可為任意值,下同)
空操作命令對(duì)CH451不產(chǎn)生任何影響。該命令可以在多個(gè)CH451級(jí)聯(lián)的應(yīng)用中透過前級(jí)CH451向后級(jí)CH451發(fā)送操作命令而不影響前級(jí)CH451的狀態(tài)。例如,要將操作命令001000000001B發(fā)送給兩級(jí)級(jí)聯(lián)電路中的后級(jí)CH451(后級(jí)CH451的DIN引腳連接到前級(jí)CH451的DOUT引腳),只要在該操作命令后添加空操作命令000000000000B再發(fā)送,那么,該操作命令將經(jīng)過前級(jí)CH451到達(dá)后級(jí)CH451,而空操作命令留給了前級(jí)CH451。另外,為了在不影響CH451的前提下變化DCLK以清除看門狗計(jì)時(shí)器,也可以發(fā)送空操作命令。在非級(jí)聯(lián)的應(yīng)用中,空操作命令可只發(fā)送高4位。
● 芯片內(nèi)部復(fù)位:001000000001B
內(nèi)部復(fù)位命令可將CH451的各個(gè)寄存器和各種參數(shù)復(fù)位到默認(rèn)的狀態(tài)。芯片上電時(shí),CH451均被復(fù)位,此時(shí)各個(gè)寄存器均復(fù)位為0,各種參數(shù)均恢復(fù)為默認(rèn)值。
● 字?jǐn)?shù)據(jù)移位:0011000000[D1][D0]B
字?jǐn)?shù)據(jù)移位命令共有4個(gè):開環(huán)左移、右移,閉環(huán)左移、右移。D0為0時(shí)為開環(huán),為1時(shí)為閉環(huán),D1為0時(shí)左移,為1時(shí)為右移。開環(huán)左移時(shí)?DIG0引腳對(duì)應(yīng)的單元補(bǔ)00H,此時(shí)不譯碼方式顯示為空格,BCD譯碼方式時(shí)顯示為0;開環(huán)右移時(shí),DIG7引腳對(duì)應(yīng)的單元補(bǔ)00H;而在閉環(huán)時(shí)?DIG0與DIG7頭尾相接,閉環(huán)移位。
● 設(shè)定系統(tǒng)參數(shù):010000000[WDOG][KEYB][DISP]B
該命令用于設(shè)定CH451的系統(tǒng)級(jí)參數(shù)?如看門狗使能WDOG、鍵盤掃描使能KEYB、顯示驅(qū)動(dòng)使能DISP等。各個(gè)參數(shù)均可通過1位數(shù)據(jù)來進(jìn)行控制,將相應(yīng)的數(shù)據(jù)位置為1可啟用該功能,否則關(guān)閉該功能(默認(rèn)值)。
● 設(shè)定顯示參數(shù):0101[MODE][LIMIT][INTENSITY]B
此命令用于設(shè)定CH451的顯示參數(shù),如譯碼方式MODE(1位)、掃描極限LIMIT(3位)、顯示亮度INTENSITY(4位)等。譯碼方式MODE為1時(shí)選擇BCD譯碼方式,為0時(shí)選擇不譯碼方式。CH451默認(rèn)工作于不譯碼方式,此時(shí)8?jìng)(gè)數(shù)據(jù)寄存器中字節(jié)數(shù)據(jù)的位7~位0分別對(duì)應(yīng)8?jìng)(gè)數(shù)碼管的小數(shù)點(diǎn)和段G~段A,當(dāng)數(shù)據(jù)位為1時(shí),對(duì)應(yīng)的數(shù)據(jù)段(或發(fā)光管)點(diǎn)亮;數(shù)據(jù)位為0時(shí)熄滅。CH451工作于BCD譯碼方式主要應(yīng)用于數(shù)碼管驅(qū)動(dòng),單片機(jī)只要給出二進(jìn)制數(shù)的BCD碼,便可由CH451將其譯碼并直接驅(qū)動(dòng)數(shù)碼管以顯示對(duì)應(yīng)的字符。BCD譯碼方式是對(duì)數(shù)據(jù)寄存器中字節(jié)數(shù)據(jù)的位4~位0進(jìn)行兼容BCD的譯碼,可用于控制段驅(qū)動(dòng)引腳SEG6~SEG0的輸出,它們對(duì)應(yīng)于數(shù)碼管的段G~段A,同時(shí)可用字節(jié)數(shù)據(jù)的位7控制段來驅(qū)動(dòng)引腳SEG7的輸出以對(duì)應(yīng)數(shù)碼管的小數(shù)點(diǎn),字節(jié)數(shù)據(jù)的位6和位5不影響BCD譯碼的輸出,它們可以是任意值。將位4~位0進(jìn)行BCD譯碼可顯示以下28?jìng)(gè)字符,其中00000B~01111B分別對(duì)應(yīng)于“0~F”、10000B~11010B分別對(duì)應(yīng)于“ ”?空格? 、“+”?+或加號(hào)? 、“-”?負(fù)號(hào)或減號(hào)? 、“=”?等于號(hào)? 、“?"?左方括號(hào)? 、“?”?右方括號(hào)? 、“_”?下劃線? 、“H” 、“L” 、“P” 、“.”?小數(shù)點(diǎn)? 、其余值為空格。
掃描極限LIMIT控制位001B~111B和000B(默認(rèn)值)可分別設(shè)定掃描極限1~7和8。顯示亮度INTENSITY控制位的0001B~1111B和0000B(默認(rèn)值)則用于分別設(shè)定顯示驅(qū)動(dòng)占空比1/16~15/16 和16/16,以實(shí)現(xiàn)16級(jí)顯示亮度控制。
●設(shè)定閃爍控制:0110[D7S][D6S][D5S][D4S][D3S][D2S][D1S][D0S]B
設(shè)定閃爍控制命令用于設(shè)定CH451的閃爍顯示屬性,其中D7S~D0S 分別對(duì)應(yīng)于8?jìng)(gè)字驅(qū)動(dòng)DIG7~DIG0。閃爍屬性D7S~D0S分別通過1位數(shù)據(jù)控制,將相應(yīng)的數(shù)據(jù)位置為1可使能閃爍顯示,否則為正常顯示,不閃爍(默認(rèn)值)。
●加載字?jǐn)?shù)據(jù):1[DIG_ADDR][DIG_DATA]B
加載字?jǐn)?shù)據(jù)命令用于將字節(jié)數(shù)據(jù)DIG_DATA(8位)寫入DIG_ADDR(3位)指定的數(shù)據(jù)寄存器中。DIG_ADDR的000B~111B分別用于指定數(shù)據(jù)寄存器的地址0~7,并分別對(duì)應(yīng)于DIG0~DIG7引腳驅(qū)動(dòng)的8?jìng)(gè)數(shù)碼管。DIG_DATA為待寫入的字節(jié)數(shù)據(jù)。
●讀取按鍵代碼:0111xxxxxxxxB
讀取按鍵代碼命令用于獲得CH451最近檢測(cè)到的有效按鍵的按鍵代碼。該命令是唯一的具有數(shù)據(jù)返回的命令,CH451通常從DOUT引腳輸出按鍵代碼,按鍵代碼總是7位數(shù)據(jù),最高位是狀態(tài)碼,位5~位0是掃描碼。讀取按鍵代碼命令的位數(shù)據(jù)B7~B0可以是任意值,所以控制器可以將該操作命令縮短為4位數(shù)據(jù)B11~B8。例如,CH451檢測(cè)到有效按鍵并中斷時(shí),如按鍵代碼是5EH,則先向CH451發(fā)出讀取按鍵代碼命令0111B,然后再?gòu)模模希眨垣@得按鍵代碼5EH。
CH451所提供的按鍵代碼為7位,位2~位0是列掃描碼,位5~位3是行掃描碼,位6是狀態(tài)碼(鍵按下為1,鍵釋放為0)。例如,連接DIG3與SEG4的鍵被按下時(shí),按鍵代碼為63H,鍵被釋放后,按鍵代碼是23H。單片機(jī)可以在任何時(shí)候讀取按鍵代碼,但一般在CH451檢測(cè)到有效按鍵而產(chǎn)生鍵盤中斷時(shí)讀取按鍵代碼,此時(shí)按鍵代碼的位6總是1。另外,如果需要了解按鍵何時(shí)釋放,單片機(jī)可以通過查詢方式定期讀取按鍵代碼,直到按鍵代碼的位6為0。表2是連接在DIG7~DIG0與SEG7~SEG0之間的鍵被按下時(shí),CH451所提供的按鍵代碼。這些按鍵代碼具有一定的規(guī)律,如果需要鍵被釋放時(shí)的按鍵代碼,可將表2中的按鍵代碼的位6 置0,也可將表中的按鍵代碼減去40H。應(yīng)注意的是:CH451不支持組合鍵,也就是說,同一時(shí)刻,不能有兩個(gè)或者更多的鍵被按下。
表2 CH451的鍵盤編碼表
3 串行接口應(yīng)用電路
CH451與MCS-51單片機(jī)的連接如圖1所示,其中DOUT引腳最好連接到單片機(jī)的中斷輸入引腳,這樣可用中斷方式響應(yīng)按鍵。如果連接到非中斷輸入引腳,則應(yīng)該使用查詢方式確定CH451是否檢測(cè)到有效按鍵,同時(shí)還可向單片機(jī)提供復(fù)位信號(hào)RESET并帶Watch-Dog功能。CH451的段驅(qū)動(dòng)引腳串接的電阻R1(200Ω)用于限制和均衡段驅(qū)動(dòng)電流。在5V電源電壓下,串接200Ω電阻通常對(duì)應(yīng)13mA段電流。CH451具有64鍵的鍵盤掃描功能,為了防止鍵被按下后在SEG信號(hào)線與DIG信號(hào)線之間形成短路而影響數(shù)碼管顯示,一般應(yīng)在CH451的DIG0~DIG7引腳與鍵盤矩陣之間串接限流電阻R2,其阻值可以從1kΩ至10kΩ。
將P1.0與DIN連接可用于輸入串行數(shù)據(jù),串行數(shù)據(jù)輸入的順序是低位在前,高位在后。另外,在上電復(fù)位后,CH451 默認(rèn)選擇1線串行接口,如需選擇4線串行接口,則應(yīng)在DCLK輸出串行時(shí)鐘之前,先在DIN上輸出一個(gè)低電平脈沖,以通知CH451為4線串行接口。將P1.1與DCLK連接可提供串行時(shí)鐘,以使CH451在其上升沿從DIN輸入數(shù)據(jù),并在其下降沿從DOUT輸出數(shù)據(jù)。LOAD用于加載串行數(shù)據(jù),CH451一般在其上升沿加載移位寄存器中的12位數(shù)據(jù)以作為操作命令進(jìn)行分析并處理。也就是說,LOAD的上升沿是串行數(shù)據(jù)幀的幀完成標(biāo)志,此時(shí)無論移位寄存器中的12位數(shù)據(jù)是否有效,CH451都會(huì)將其當(dāng)作操作命令來處理。應(yīng)注意的是,在級(jí)聯(lián)電路中,單片機(jī)每次輸出的串行數(shù)據(jù)必須是單個(gè)CH451的串行數(shù)據(jù)的位數(shù)乘以級(jí)聯(lián)的級(jí)數(shù)。
下面是該電路的驅(qū)動(dòng)程序:
;主程序需要定義的參數(shù)
DCLK BIT P1.1 ;串行數(shù)據(jù)時(shí)鐘,上升沿激活
DIN BIT P1.0 ;串行數(shù)據(jù)輸入
LOAD BIT P1.2 ;串行命令加載,上升沿激活
DOUT BIT P3.2 ;接INT0,鍵盤中斷和鍵值數(shù)據(jù)輸出
KEY DATA 7FH ;存放鍵盤中斷時(shí)讀取的鍵值
;******* 初始化子程序 *******
INIT? CLR DIN ;先低后高,輸出上升沿通知
CH451選擇4線串行接口
SETB DCLK ;置為默認(rèn)的高電平
SETB DIN
SETB LOAD
SETB DOUT ;置為輸入
MOV B?#04H ;設(shè)置系統(tǒng)參數(shù)命令
MOV A?#07H ; Watch-Dog使能,開鍵盤、顯示功能
LCALL WRITE
MOV B?#03H ;設(shè)置移位命令
MOV A?#00H ;開環(huán)左移
LCALL WRITE
MOV B?#05H ;設(shè)置顯示參數(shù)
MOV A?#00H ;不譯碼,8位顯示,最亮
LCALL WRITE
MOV B?#06H ;設(shè)置閃爍控制
MOV A?#00H ;不閃爍
LCALL WRITE
CLR IT0 ;置外部信號(hào)為低電平觸發(fā)
CLR IE0 ;清中斷標(biāo)志
SETB EX0 ;允許鍵盤中斷
SETB EA
RET
;******* 輸出命令子程序 ******
;入?yún)ⅲ海、ACC待寫的12位?shù)據(jù)? 低8位在ACC中? 高4位在B的低4位中
WRITE? CLR EX0 ;禁止鍵盤中斷
CLR LOAD ;命令開始,此命令可以放在后面
MOV R7?#08H ;將ACC中8位送出
WRITE_8?RRC A ;低位在前,高位在后
CLR DCLK
MOV DIN?C ;送出一位數(shù)據(jù)
SETB DCLK ;產(chǎn)生時(shí)鐘上升沿通知
CH451輸入位數(shù)據(jù)
DJNZ R7? WRITE 8 ;位數(shù)據(jù)未完,繼續(xù)
MOV A?B
MOV R7?#04H ;將B中4位送出
WRITE 4?RRC A ;低位在前?高位在后
CLR DCLK
MOV DIN?C
SETB DCLK
DJNZ R7? WRITE 4
SETB LOAD ;產(chǎn)生加載上升沿通知
CH451處理命令數(shù)據(jù)
SETB EX0 ;允許鍵盤中斷
RET
?******* 輸入鍵值子程序 ******
? 出參? ACC鍵值數(shù)據(jù)
READ? CLR EX0 ;禁止鍵盤中斷
CLR LOAD ;命令開始
MOV A?#07H ;讀取鍵值命令的高4
位0111B
MOV R7?#04H ;忽略12位命令的低
8位
READ 4? RRC A ;低位在前,高位在后
CLR DCLK
MOV DIN?C
SETB DCLK
DJNZ R7? READ 4
SETB LOAD ;產(chǎn)生加載上升沿通知
CH451處理命令數(shù)據(jù)
CLR A ;先清除鍵值單元以便移位
MOV R7?#07H ;讀入7位鍵值
READ_7? MOV C?DOUT ;讀入一位數(shù)據(jù)
CLR DCLK ;產(chǎn)生時(shí)鐘下降沿通知
CH451輸出下一位
RLC A ;數(shù)據(jù)移入ACC,高位
在前,低位在后
SETB DCLK
DJNZ R7? READ_7 ;位數(shù)據(jù)未完繼續(xù)
CLR IE0 ;清中斷標(biāo)志,讀操作
過程中有低電平脈沖
SETB EX0 ;允許鍵盤中斷
RET
4 結(jié)束語(yǔ)
用CH451擴(kuò)展鍵盤顯示接口,具有接口簡(jiǎn)單、占用CPU資源少、外圍器件簡(jiǎn)單、性能價(jià)格比高等優(yōu)點(diǎn),可在各種單片機(jī)系統(tǒng)中得到廣泛的應(yīng)用。
【數(shù)碼管顯示驅(qū)動(dòng)和鍵盤掃描控制器CH451及其應(yīng)用】相關(guān)文章:
工業(yè)設(shè)備中LED顯示和鍵盤掃描設(shè)計(jì)08-06
串行接口鍵盤控制器SK5278及其在單片機(jī)系統(tǒng)中的應(yīng)用08-06
鍵盤事件的掛鉤監(jiān)控原理及其應(yīng)用08-19
初級(jí)啟動(dòng)控制器UCC3960及其應(yīng)用08-06
PDP數(shù)據(jù)驅(qū)動(dòng)模塊STV7610A及其應(yīng)用08-06