當(dāng)前位置:首頁 > 單片機(jī) > 單片機(jī)
[導(dǎo)讀]介紹一種新型的鍵盤顯示驅(qū)動芯片CH451的性能特點和工作原理,給出了CH451鍵盤顯示驅(qū)動芯片與MCS-51單片機(jī)的接口方法與相應(yīng)的軟件驅(qū)動程序。

   摘要:介紹一種新型的鍵盤顯示驅(qū)動芯片CH451的性能特點和工作原理,給出了CH451鍵盤顯示驅(qū)動芯片與MCS-51單片機(jī)的接口方法與相應(yīng)的軟件驅(qū)動程序。

    關(guān)鍵詞:鍵盤顯示控制;單片機(jī);CH451

單片機(jī)在開發(fā)過程中,常常會因為資源不足而不得不大量擴(kuò)展接口芯片以滿足應(yīng)用系統(tǒng)的需要,其中原因之一是人機(jī)界面中的鍵盤顯示占用了系統(tǒng)太多資源,從而造成系統(tǒng)龐大,同時降低了系統(tǒng)的可靠性。在單片機(jī)應(yīng)用系統(tǒng)中,鍵盤顯示通??刹捎靡韵聨追N方式:

(1)采用并行接口的鍵盤顯示專用芯片8279。但8279所需外圍元件多(顯示驅(qū)動、譯碼等)、占用電路板面積大、綜合成本高,在中小系統(tǒng)中常常大材小用;

(2)采用通用并行I/O芯片擴(kuò)展(如用8155等),但此方案同樣需要驅(qū)動顯示,同時鍵盤顯示掃描還需占用CPU大量時間;

(3)采用專用顯示控制器,并用CPU的I/O引腳完成鍵盤輸入(如MC14499、PS7219、MAX7219、ICM7218、TLC5921等,大多是串行接口并有顯示驅(qū)動能力,I/O占用少)。這種接口方式省去了顯示的掃描,而且電路大多也很簡單,通常在系統(tǒng)需要的按鍵較少時比較適用;

(4)采用帶I2C總線的鍵盤顯示芯片(如顯示用SAA1064,鍵盤用PCF8574),不過這種方式對于無I2C總線接口的CPU來說,編程顯得有些不便;

(5)采用串行接口的鍵盤顯示專用芯片,如BC7280/81、HD7279、CH451等。這類芯片占用CPU的資源少,傳輸速度較快,外圍器件要求也較少,在中小系統(tǒng)中都可得到廣泛的應(yīng)用。BC7280/81與HD7279中已有介紹,本文著重介紹CH451的主要特性及接口應(yīng)用方法。

1 CH451的功能與引腳介紹

CH451是一個整合了數(shù)碼管顯示驅(qū)動和鍵盤掃描控制以及μP監(jiān)控的多功能外圍芯片。CH451內(nèi)置RC振蕩電路,可以直接動態(tài)驅(qū)動8位數(shù)碼管或者64位LED,具有BCD譯碼或不譯碼功能,可實現(xiàn)數(shù)據(jù)的左移、右移、左循環(huán)、右循環(huán)、各數(shù)字獨立閃爍等控制功能。CH451內(nèi)置大電流驅(qū)動級,段電流不小于30mA,字電流不小于160mA,并有16 級亮度控制功能;在鍵盤控制方面,該器件內(nèi)置64鍵鍵盤控制器,可實現(xiàn)8×8矩陣鍵盤掃描,并內(nèi)置去抖動電路,可提供按鍵中斷與按鍵釋放標(biāo)志位等功能;在外部接口方面,CH451可選擇簡潔的1線串行接口或高速4線串行接口,且內(nèi)置上電復(fù)位,可提供高電平有效復(fù)位和低電平有效復(fù)位兩種輸出,同時內(nèi)置看門狗電路Watch-Dog。CH451提供有28引腳的DIP28與SOP28封裝以及DIP24S封裝形式,28腳與24腳在功能上稍有差別,它們的引腳定義見表1所列。

表1 CH451的引腳說明

28腳引腳號 24腳引腳號 引腳名稱 類  型

引  腳  說  明

23 2 VCC 電源 正電源,持續(xù)電流不小于200mA
9 15 GND 電源 接地,持續(xù)電流不小于200mA
25 4 LOAD 輸入 4線串行接口的數(shù)據(jù)加協(xié),帶上拉
26 5 DIN 輸入 4線串行接口的數(shù)據(jù)輸入,帶上拉
27 6 DCLK 輸入 串行接口聽數(shù)據(jù)時鐘,帶上拉,可同時用于看門狗的清除輸入
24 3 DOUT 輸出 串行接口的數(shù)據(jù)輸出鍵盤中斷
22~15 1、24~18 DIG7~SEG0 三態(tài)輸出及輸入 數(shù)碼管的段驅(qū)動,高電平有效,鍵盤掃描輸入,高電平有效,帶下拉
1~8 7~14 DIG7~DIG0 輸出 數(shù)碼管的字驅(qū)動,低電平有效,鍵盤掃描輸入,高電平有效,帶下拉
12 不支持 RST 輸出 上電復(fù)位和看門狗復(fù)位,高電平有效
13 不支持 RST 輸出 上電復(fù)位和看門狗復(fù)位,低電平有效
28 不支持 RSTI 輸入 上電復(fù)位門限調(diào)整或手工復(fù)位輸入
14 不支持 ADJ 輸入 段電流上限調(diào)整,帶強(qiáng)下拉
10 不支持 CLK 輸入 外接阻容振蕩
11 不支持 CLKO 輸出 CLK引腳時鐘信號的二分頻輸出
  17 NC   不連接,禁止使用

2 CH451的操作命令

CH451的操作命令均為12位,其中高4位為標(biāo)識碼,低8位為參數(shù),各操作命令如下:

●空操作:0000xxxxxxxxB(x可為任意值,下同)

空操作命令對CH451不產(chǎn)生任何影響。該命令可以在多個CH451級聯(lián)的應(yīng)用中透過前級CH451向后級CH451發(fā)送操作命令而不影響前級CH451的狀態(tài)。例如,要將操作命令001000000001B發(fā)送給兩級級聯(lián)電路中的后級CH451(后級CH451的DIN引腳連接到前級CH451的DOUT引腳),只要在該操作命令后添加空操作命令000000000000B再發(fā)送,那么,該操作命令將經(jīng)過前級CH451到達(dá)后級CH451,而空操作命令留給了前級CH451。另外,為了在不影響CH451的前提下變化DCLK以清除看門狗計時器,也可以發(fā)送空操作命令。在非級聯(lián)的應(yīng)用中,空操作命令可只發(fā)送高4位。

● 芯片內(nèi)部復(fù)位:001000000001B

內(nèi)部復(fù)位命令可將CH451的各個寄存器和各種參數(shù)復(fù)位到默認(rèn)的狀態(tài)。芯片上電時,CH451均被復(fù)位,此時各個寄存器均復(fù)位為0,各種參數(shù)均恢復(fù)為默認(rèn)值。

● 字?jǐn)?shù)據(jù)移位:0011000000[D1][D0]B

字?jǐn)?shù)據(jù)移位命令共有4個:開環(huán)左移、右移,閉環(huán)左移、右移。D0為0時為開環(huán),為1時為閉環(huán),D1為0時左移,為1時為右移。開環(huán)左移時?DIG0引腳對應(yīng)的單元補(bǔ)00H,此時不譯碼方式顯示為空格,BCD譯碼方式時顯示為0;開環(huán)右移時,DIG7引腳對應(yīng)的單元補(bǔ)00H;而在閉環(huán)時?DIG0與DIG7頭尾相接,閉環(huán)移位。

● 設(shè)定系統(tǒng)參數(shù):010000000[WDOG][KEYB][DISP]B

該命令用于設(shè)定CH451的系統(tǒng)級參數(shù)?如看門狗使能WDOG、鍵盤掃描使能KEYB、顯示驅(qū)動使能DISP等。各個參數(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時選擇BCD譯碼方式,為0時選擇不譯碼方式。CH451默認(rèn)工作于不譯碼方式,此時8個數(shù)據(jù)寄存器中字節(jié)數(shù)據(jù)的位7~位0分別對應(yīng)8個數(shù)碼管的小數(shù)點和段G~段A,當(dāng)數(shù)據(jù)位為1時,對應(yīng)的數(shù)據(jù)段(或發(fā)光管)點亮;數(shù)據(jù)位為0時熄滅。CH451工作于BCD譯碼方式主要應(yīng)用于數(shù)碼管驅(qū)動,單片機(jī)只要給出二進(jìn)制數(shù)的BCD碼,便可由CH451將其譯碼并直接驅(qū)動數(shù)碼管以顯示對應(yīng)的字符。BCD譯碼方式是對數(shù)據(jù)寄存器中字節(jié)數(shù)據(jù)的位4~位0進(jìn)行兼容BCD的譯碼,可用于控制段驅(qū)動引腳SEG6~SEG0的輸出,它們對應(yīng)于數(shù)碼管的段G~段A,同時可用字節(jié)數(shù)據(jù)的位7控制段來驅(qū)動引腳SEG7的輸出以對應(yīng)數(shù)碼管的小數(shù)點,字節(jié)數(shù)據(jù)的位6和位5不影響BCD譯碼的輸出,它們可以是任意值。將位4~位0進(jìn)行BCD譯碼可顯示以下28個字符,其中00000B~01111B分別對應(yīng)于“0~F”、10000B~11010B分別對應(yīng)于“ ”?空格? 、“+”?+或加號? 、“-”?負(fù)號或減號? 、“=”?等于號? 、“?"?左方括號? 、“?”?右方括號? 、“_”?下劃線? 、“H” 、“L” 、“P” 、“.”?小數(shù)點? 、其余值為空格。

掃描極限LIMIT控制位001B~111B和000B(默認(rèn)值)可分別設(shè)定掃描極限1~7和8。顯示亮度INTENSITY控制位的0001B~1111B和0000B(默認(rèn)值)則用于分別設(shè)定顯示驅(qū)動占空比1/16~15/16 和16/16,以實現(xiàn)16級顯示亮度控制。

●設(shè)定閃爍控制:0110[D7S][D6S][D5S][D4S][D3S][D2S][D1S][D0S]B

設(shè)定閃爍控制命令用于設(shè)定CH451的閃爍顯示屬性,其中D7S~D0S 分別對應(yīng)于8個字驅(qū)動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,并分別對應(yīng)于DIG0~DIG7引腳驅(qū)動的8個數(shù)碼管。DIG_DATA為待寫入的字節(jié)數(shù)據(jù)。

●讀取按鍵代碼:0111xxxxxxxxB

讀取按鍵代碼命令用于獲得CH451最近檢測到的有效按鍵的按鍵代碼。該命令是唯一的具有數(shù)據(jù)返回的命令,CH451通常從DOUT引腳輸出按鍵代碼,按鍵代碼總是7位數(shù)據(jù),最高位是狀態(tài)碼,位5~位0是掃描碼。讀取按鍵代碼命令的位數(shù)據(jù)B7~B0可以是任意值,所以控制器可以將該操作命令縮短為4位數(shù)據(jù)B11~B8。例如,CH451檢測到有效按鍵并中斷時,如按鍵代碼是5EH,則先向CH451發(fā)出讀取按鍵代碼命令0111B,然后再從DOUT獲得按鍵代碼5EH。

CH451所提供的按鍵代碼為7位,位2~位0是列掃描碼,位5~位3是行掃描碼,位6是狀態(tài)碼(鍵按下為1,鍵釋放為0)。例如,連接DIG3與SEG4的鍵被按下時,按鍵代碼為63H,鍵被釋放后,按鍵代碼是23H。單片機(jī)可以在任何時候讀取按鍵代碼,但一般在CH451檢測到有效按鍵而產(chǎn)生鍵盤中斷時讀取按鍵代碼,此時按鍵代碼的位6總是1。另外,如果需要了解按鍵何時釋放,單片機(jī)可以通過查詢方式定期讀取按鍵代碼,直到按鍵代碼的位6為0。表2是連接在DIG7~DIG0與SEG7~SEG0之間的鍵被按下時,CH451所提供的按鍵代碼。這些按鍵代碼具有一定的規(guī)律,如果需要鍵被釋放時的按鍵代碼,可將表2中的按鍵代碼的位6 置0,也可將表中的按鍵代碼減去40H。應(yīng)注意的是:CH451不支持組合鍵,也就是說,同一時刻,不能有兩個或者更多的鍵被按下。

表2 CH451的鍵盤編碼表

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

 

3 串行接口應(yīng)用電路

CH451與MCS-51單片機(jī)的連接如圖1所示,其中DOUT引腳最好連接到單片機(jī)的中斷輸入引腳,這樣可用中斷方式響應(yīng)按鍵。如果連接到非中斷輸入引腳,則應(yīng)該使用查詢方式確定CH451是否檢測到有效按鍵,同時還可向單片機(jī)提供復(fù)位信號RESET并帶Watch-Dog功能。CH451的段驅(qū)動引腳串接的電阻R1(200Ω)用于限制和均衡段驅(qū)動電流。在5V電源電壓下,串接200Ω電阻通常對應(yīng)13mA段電流。CH451具有64鍵的鍵盤掃描功能,為了防止鍵被按下后在SEG信號線與DIG信號線之間形成短路而影響數(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輸出串行時鐘之前,先在DIN上輸出一個低電平脈沖,以通知CH451為4線串行接口。將P1.1與DCLK連接可提供串行時鐘,以使CH451在其上升沿從DIN輸入數(shù)據(jù),并在其下降沿從DOUT輸出數(shù)據(jù)。LOAD用于加載串行數(shù)據(jù),CH451一般在其上升沿加載移位寄存器中的12位數(shù)據(jù)以作為操作命令進(jìn)行分析并處理。也就是說,LOAD的上升沿是串行數(shù)據(jù)幀的幀完成標(biāo)志,此時無論移位寄存器中的12位數(shù)據(jù)是否有效,CH451都會將其當(dāng)作操作命令來處理。應(yīng)注意的是,在級聯(lián)電路中,單片機(jī)每次輸出的串行數(shù)據(jù)必須是單個CH451的串行數(shù)據(jù)的位數(shù)乘以級聯(lián)的級數(shù)。

下面是該電路的驅(qū)動程序:

;主程序需要定義的參數(shù)

DCLK BIT P1.1 ;串行數(shù)據(jù)時鐘,上升沿激活

DIN BIT P1.0 ;串行數(shù)據(jù)輸入

LOAD BIT P1.2 ;串行命令加載,上升沿激活

DOUT BIT P3.2 ;接INT0,鍵盤中斷和鍵值數(shù)據(jù)輸出

KEY DATA 7FH ;存放鍵盤中斷時讀取的鍵值

;******* 初始化子程序 *******

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 ;置外部信號為低電平觸發(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)生時鐘上升沿通知

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)生時鐘下降沿通知

CH451輸出下一位

RLC A ;數(shù)據(jù)移入ACC,高位

在前,低位在后

SETB DCLK

DJNZ R7? READ_7 ;位數(shù)據(jù)未完繼續(xù)

CLR IE0 ;清中斷標(biāo)志,讀操作

過程中有低電平脈沖

SETB EX0 ;允許鍵盤中斷

RET

4 結(jié)束語

用CH451擴(kuò)展鍵盤顯示接口,具有接口簡單、占用CPU資源少、外圍器件簡單、性能價格比高等優(yōu)點,可在各種單片機(jī)系統(tǒng)中得到廣泛的應(yīng)用。

本站聲明: 本文章由作者或相關(guān)機(jī)構(gòu)授權(quán)發(fā)布,目的在于傳遞更多信息,并不代表本站贊同其觀點,本站亦不保證或承諾內(nèi)容真實性等。需要轉(zhuǎn)載請聯(lián)系該專欄作者,如若文章內(nèi)容侵犯您的權(quán)益,請及時聯(lián)系本站刪除。
換一批
延伸閱讀

9月2日消息,不造車的華為或?qū)⒋呱龈蟮莫毥谦F公司,隨著阿維塔和賽力斯的入局,華為引望愈發(fā)顯得引人矚目。

關(guān)鍵字: 阿維塔 塞力斯 華為

加利福尼亞州圣克拉拉縣2024年8月30日 /美通社/ -- 數(shù)字化轉(zhuǎn)型技術(shù)解決方案公司Trianz今天宣布,該公司與Amazon Web Services (AWS)簽訂了...

關(guān)鍵字: AWS AN BSP 數(shù)字化

倫敦2024年8月29日 /美通社/ -- 英國汽車技術(shù)公司SODA.Auto推出其旗艦產(chǎn)品SODA V,這是全球首款涵蓋汽車工程師從創(chuàng)意到認(rèn)證的所有需求的工具,可用于創(chuàng)建軟件定義汽車。 SODA V工具的開發(fā)耗時1.5...

關(guān)鍵字: 汽車 人工智能 智能驅(qū)動 BSP

北京2024年8月28日 /美通社/ -- 越來越多用戶希望企業(yè)業(yè)務(wù)能7×24不間斷運行,同時企業(yè)卻面臨越來越多業(yè)務(wù)中斷的風(fēng)險,如企業(yè)系統(tǒng)復(fù)雜性的增加,頻繁的功能更新和發(fā)布等。如何確保業(yè)務(wù)連續(xù)性,提升韌性,成...

關(guān)鍵字: 亞馬遜 解密 控制平面 BSP

8月30日消息,據(jù)媒體報道,騰訊和網(wǎng)易近期正在縮減他們對日本游戲市場的投資。

關(guān)鍵字: 騰訊 編碼器 CPU

8月28日消息,今天上午,2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會開幕式在貴陽舉行,華為董事、質(zhì)量流程IT總裁陶景文發(fā)表了演講。

關(guān)鍵字: 華為 12nm EDA 半導(dǎo)體

8月28日消息,在2024中國國際大數(shù)據(jù)產(chǎn)業(yè)博覽會上,華為常務(wù)董事、華為云CEO張平安發(fā)表演講稱,數(shù)字世界的話語權(quán)最終是由生態(tài)的繁榮決定的。

關(guān)鍵字: 華為 12nm 手機(jī) 衛(wèi)星通信

要點: 有效應(yīng)對環(huán)境變化,經(jīng)營業(yè)績穩(wěn)中有升 落實提質(zhì)增效舉措,毛利潤率延續(xù)升勢 戰(zhàn)略布局成效顯著,戰(zhàn)新業(yè)務(wù)引領(lǐng)增長 以科技創(chuàng)新為引領(lǐng),提升企業(yè)核心競爭力 堅持高質(zhì)量發(fā)展策略,塑強(qiáng)核心競爭優(yōu)勢...

關(guān)鍵字: 通信 BSP 電信運營商 數(shù)字經(jīng)濟(jì)

北京2024年8月27日 /美通社/ -- 8月21日,由中央廣播電視總臺與中國電影電視技術(shù)學(xué)會聯(lián)合牽頭組建的NVI技術(shù)創(chuàng)新聯(lián)盟在BIRTV2024超高清全產(chǎn)業(yè)鏈發(fā)展研討會上宣布正式成立。 活動現(xiàn)場 NVI技術(shù)創(chuàng)新聯(lián)...

關(guān)鍵字: VI 傳輸協(xié)議 音頻 BSP

北京2024年8月27日 /美通社/ -- 在8月23日舉辦的2024年長三角生態(tài)綠色一體化發(fā)展示范區(qū)聯(lián)合招商會上,軟通動力信息技術(shù)(集團(tuán))股份有限公司(以下簡稱"軟通動力")與長三角投資(上海)有限...

關(guān)鍵字: BSP 信息技術(shù)
關(guān)閉
關(guān)閉