0
  • 聊天消息
  • 系統(tǒng)消息
  • 評(píng)論與回復(fù)
登錄后你可以
  • 下載海量資料
  • 學(xué)習(xí)在線課程
  • 觀看技術(shù)視頻
  • 寫文章/發(fā)帖/加入社區(qū)
會(huì)員中心
創(chuàng)作中心

完善資料讓更多小伙伴認(rèn)識(shí)你,還能領(lǐng)取20積分哦,立即完善>

3天內(nèi)不再提示

鍵盤與數(shù)碼管接口典型應(yīng)用電路及寄存器

UtFs_Zlgmcu7890 ? 來(lái)源:互聯(lián)網(wǎng) ? 作者:佚名 ? 2018-01-22 09:27 ? 次閱讀

周立功教授新書《面向AMetal框架與接口編程(上)》,對(duì)AMetal框架進(jìn)行了詳細(xì)介紹,通過(guò)閱讀這本書,你可以學(xué)到高度復(fù)用的軟件設(shè)計(jì)原則和面向接口編程的開發(fā)思想,聚焦自己的“核心域”,改變自己的編程思維,實(shí)現(xiàn)企業(yè)和個(gè)人的共同進(jìn)步。

第六章為重用外設(shè)驅(qū)動(dòng)代碼,本文內(nèi)容為6.5 鍵盤與數(shù)碼管接口。

6.5 鍵盤與數(shù)碼管接口

>>> 6.5.1 ZLG72128 接口

當(dāng)矩陣擴(kuò)大到一定數(shù)目時(shí),逐行掃描的方法會(huì)顯得費(fèi)時(shí),如果需要對(duì)2 個(gè)以上的按鍵“同時(shí)”操作時(shí),則處理起來(lái)更是麻煩。ZLG72128 是ZLG 自行設(shè)計(jì)的數(shù)碼管顯示驅(qū)動(dòng)與鍵盤掃描管理芯片,能夠直接驅(qū)動(dòng)12 位共陰式數(shù)碼管(或96 只獨(dú)立的LED),同時(shí)還可以掃描管理多達(dá)32 個(gè)按鍵,其中的8 個(gè)按鍵如同電腦鍵盤上的Ctrl、Shift 和Alt 鍵一樣可以作為功能鍵使用。

另外,ZLG72128 內(nèi)部還設(shè)置有連擊計(jì)數(shù)器,能夠使某鍵按下后不松手而連續(xù)有效。該芯片為工業(yè)級(jí)芯片,抗干擾能力強(qiáng),在工業(yè)測(cè)控中已有大量應(yīng)用。

1. 特點(diǎn)

  • 直接驅(qū)動(dòng)12 位1 英寸以下的共陰式數(shù)碼管或96 只獨(dú)立的LED;

  • 能夠管理多達(dá)32 個(gè)按鍵,其中的8 個(gè)按鍵可以用作功能鍵,自動(dòng)消除抖動(dòng);

  • 利用功率電路可以方便地驅(qū)動(dòng)1 英寸以上的大型數(shù)碼管;

  • 具有位閃爍、位消隱、段點(diǎn)亮、段熄滅、功能鍵、連擊鍵計(jì)數(shù)等強(qiáng)大功能;

  • 具有10 種數(shù)字和21 種字母的譯碼顯示功能,亦可直接向顯示緩存寫入顯示數(shù)據(jù);

  • 軟件配置支持0~12 個(gè)數(shù)碼管顯示模式;

  • MCU 之間采用I2C串行總線接口;

  • 工作電壓范圍:3.0~5.5V;

  • 工作溫度范圍:-40~+85℃;

  • 封裝:TSSOP28。

2. 典型應(yīng)用電路

如圖6.12 所示為ZLG72128 的管腳排列圖,其相應(yīng)的管腳功能說(shuō)明詳見表6.34。

表6.34 引腳功能表

圖6.12 ZLG72128 管腳排列圖

如圖6.13 所示為按鍵電路,ZLG72128 能夠管理多達(dá)32 個(gè)按鍵(4 行8 列),行線分別連接COM8 ~ COM11 引腳,列線分別連接COM0 ~ COM7。特別地,前3 行按鍵(共計(jì)24個(gè)按鍵)是普通按鍵,按鍵按下時(shí)會(huì)通過(guò)INT 引腳通知用戶,按鍵釋放時(shí)不做任何通知。最后一行按鍵(共計(jì)8 個(gè)按鍵)是功能鍵,其以一個(gè)8 位數(shù)據(jù)表示8 個(gè)鍵值的狀態(tài),F(xiàn)0 ~ F7分別對(duì)應(yīng)bit0 ~ bit 7。按下時(shí)相應(yīng)位為0,釋放時(shí)相應(yīng)位為1,只要表示這8 個(gè)按鍵的8 位數(shù)據(jù)值發(fā)生變化,則會(huì)通過(guò)INT 引腳通知用戶,因此對(duì)于功能按鍵,按鍵按下或釋放用戶均能夠得到通知。

注意,需要在鍵盤電路與ZLG72128 芯片引腳之間連接一個(gè)電阻,其典型值為1KΩ。在多數(shù)應(yīng)用中可能不需要這么多的鍵,這時(shí)既可以按行也可以按列裁減鍵盤。需要注意的是,該按鍵電路對(duì)于3 個(gè)或3 個(gè)以上鍵按下的情況是不適用的。

圖6.13 按鍵電路

如圖6.14 所示是針對(duì)2 個(gè)或2 個(gè)以上功能鍵與普通鍵搭配使用的情況下的按鍵電路,在功能鍵與普通鍵之間加了一個(gè)二極管,注意:二極管應(yīng)該盡量選擇導(dǎo)通壓降較小的。

圖6.14 多個(gè)功能鍵復(fù)用按鍵電路

如圖6.15 所示為ZLG72128 的典型應(yīng)用電路原理圖,用戶在使用芯片驅(qū)動(dòng)數(shù)碼管與管理按鍵時(shí),可參考該電路進(jìn)行電路設(shè)計(jì)。ZLG72128 只能直接驅(qū)動(dòng)12 位共陰式數(shù)碼管驅(qū)動(dòng),在數(shù)碼管的段與ZLG72128 芯片引腳之間需要接一個(gè)限流電阻,其典型值為270Ω。如果需要增大數(shù)碼管的亮度,則可以適當(dāng)減小電阻值。ZLG72128 的驅(qū)動(dòng)能力畢竟有限,當(dāng)使用大型數(shù)碼管時(shí),則可能顯示亮度不夠,這時(shí)可以適當(dāng)減小數(shù)碼管的限流電阻值以增加亮度,阻值最小為200Ω,如果亮度依舊不夠,就必須加入功率驅(qū)動(dòng)電路,詳見ZLG72128 用戶手冊(cè)(http://www.zlgmcu.com)。

為了使ZLG72128 芯片電源穩(wěn)定,一般在VCC 和GND 之間接入一個(gè)47~470μF 的電解電容。按照I2C總線協(xié)議的要求,信號(hào)線SCL 和SDA 上必須分別接上拉電阻,其典型值是4.7KΩ。當(dāng)通信速率大于100kbps 時(shí),建議減小上拉電阻的值。芯片復(fù)位引腳RST 是低電平有效,可以將其接入到MCU 的I/O 來(lái)控制其復(fù)位。KEY_INT 引腳可輸出按鍵中斷請(qǐng)求信號(hào)(低電平有效),可以連接到MCU 的I/O 來(lái)獲取按鍵按下或釋放事件。

圖6.15 ZLG72128 典型應(yīng)用電路

3. 寄存器詳解

ZLG72128 內(nèi)部有12 個(gè)顯示緩沖寄存器DispBuf0~DispBuf11,它們直接決定數(shù)碼管顯示的內(nèi)容。ZLG72128 提供有2 種顯示控制方式,一種是直接向顯存寫入字型數(shù)據(jù),另一種是通過(guò)向命令緩沖寄存器寫入控制指令實(shí)現(xiàn)自動(dòng)譯碼顯示。訪問(wèn)這些寄存器需要通過(guò)I2C總線接口來(lái)實(shí)現(xiàn),ZLG72128 的I2C總線器件地址是60H(寫操作)和61H(讀操作),訪問(wèn)

內(nèi)部寄存器要通過(guò)“子地址”實(shí)現(xiàn)。

(1)系統(tǒng)寄存器SystemReg(地址:00H)

系統(tǒng)寄存器的第0 位(LSB)稱作KeyAvi,標(biāo)志著按鍵是否有效,0-沒(méi)有按鍵被按下,1-有某個(gè)按鍵被按下。SystemReg 寄存器的其它位暫時(shí)沒(méi)有定義。當(dāng)按下某個(gè)鍵時(shí),ZLG72128 的KEY_INT 引腳會(huì)產(chǎn)生一個(gè)低電平的中斷請(qǐng)求信號(hào)。當(dāng)讀取鍵值后,中斷信號(hào)就會(huì)自動(dòng)撤銷(變?yōu)楦唠娖剑?,而KeyAvi 也同時(shí)予以反映。正常情況下MCU 只需要判斷KEY_INT 引腳即可。通過(guò)不斷查詢KeyAvi 位也能判斷是否有鍵按下,這樣就可以節(jié)省微控制器的一根I/O 口線,但是I2C總線處于頻繁的活動(dòng)狀態(tài),多消耗電流且不利于抗干擾。

(2)鍵值寄存器Key(地址:01H)

如果K1~K24 的某個(gè)普通鍵被按下,則微控制器可以從鍵值寄存器Key 中讀取相應(yīng)的鍵值1~24。如果微控制器發(fā)現(xiàn)ZLG72128 的KEY_INT 引腳產(chǎn)生了中斷請(qǐng)求,而從Key 中讀到的鍵值是0,則表示按下的可能是功能鍵。鍵值寄存器Key 的值在被讀走后自動(dòng)變成0。

(3)連擊計(jì)數(shù)器RepeatCnt(地址:02H)

ZLG72128 為K1~K24 提供了連擊計(jì)數(shù)功能。所謂連擊是指按住某個(gè)普通鍵不松手,經(jīng)過(guò)兩秒鐘的延遲后,開始連續(xù)有效,連續(xù)有效間隔時(shí)間約兩百毫秒。這一特性跟電腦上的鍵盤很類似。在微控制器能夠及時(shí)響應(yīng)按鍵中斷并及時(shí)讀取鍵值的前提下,當(dāng)按住某個(gè)普通鍵一直不松手時(shí):首先會(huì)產(chǎn)生一次中斷信號(hào),這時(shí)連擊計(jì)數(shù)器RepeatCnt 的值仍然是0;經(jīng)過(guò)兩秒延遲后,會(huì)連續(xù)產(chǎn)生中斷信號(hào),每中斷一次RepeatCnt 就自動(dòng)加1;當(dāng)RepeatCnt 計(jì)數(shù)到255 時(shí)就不再增加,而中斷信號(hào)繼續(xù)有效。在此期間,鍵值寄存器的值每次都會(huì)產(chǎn)生。

(4)功能鍵寄存器FunctionKey(地址:03H)

ZLG72128 提供的8 個(gè)功能鍵F0~F7。功能鍵常常是配合普通鍵一起使用的,就像電腦鍵盤上的Shift、Ctrl 和Alt 鍵。當(dāng)然功能鍵也可以單獨(dú)去使用,就像電腦鍵盤上的F1~F12。當(dāng)按下某個(gè)功能鍵時(shí),在KEY_INT 引腳也會(huì)像按普通鍵那樣產(chǎn)生中斷信號(hào)。功能鍵的鍵值是被保存在FunctionKey 寄存器中的。功能鍵寄存器FunctionKey 的初始值是FFH,每一個(gè)位對(duì)應(yīng)一個(gè)功能鍵,第0 位(LSB)對(duì)應(yīng)F0,第1 位對(duì)應(yīng)F1,依此類推,第7 位(MSB)對(duì)應(yīng)F7。某一功能鍵被按下時(shí),相應(yīng)的FunctionKey 位就清零。功能鍵還有一個(gè)特性就是“二次中斷”,按下時(shí)產(chǎn)生一次中斷信號(hào),抬起時(shí)又會(huì)產(chǎn)生一次中斷信號(hào);而普通鍵只會(huì)在被按下時(shí)產(chǎn)生一次中斷。

(5)命令緩沖區(qū)CmdBuf0 和CmdBuf1(地址:07H 和08H)

通過(guò)向命令緩沖區(qū)寫入相關(guān)的控制命令可以實(shí)現(xiàn)段尋址、下載顯示數(shù)據(jù)功能。

(6)閃爍控制寄存器FlashOnOff(地址:0BH)

FlashOnOff 寄存器決定閃爍頻率和占空比。復(fù)位值為0111 0111B。高4 位表示閃爍時(shí)亮的持續(xù)時(shí)間,低4 位表示閃爍時(shí)滅的持續(xù)時(shí)間。改變FlashOnOff 的值,可以同時(shí)改變閃爍頻率和占空比。FlashOnOff 取值00H 時(shí)可獲得最快的閃爍速度,亮滅時(shí)間計(jì)算公式如下:

T = N × 50 + 150mS

T 為閃爍時(shí)亮或滅的持續(xù)時(shí)間,N 為寄存器的高4 位或低4 位的值,取值0~15.最快閃爍頻率為3.33Hz(周期為300mS),最慢閃爍頻率為0.55Hz(周期為1.8S)。特別說(shuō)明:?jiǎn)为?dú)設(shè)置FlashOnOff 寄存器的值,不會(huì)看到顯示閃爍,而應(yīng)該配合閃爍控制命令一起使用。

(7)消隱寄存器DispCtrl0(地址:0CH)和DispCtrl1(地址:0DH)

如表6.35 所示為消隱寄存器,DispCtrl0、DispCtrl1 寄存器決定哪些位是否顯示,對(duì)應(yīng)數(shù)碼管的1~12 位。寄存器位為1 時(shí),對(duì)應(yīng)數(shù)碼管位不顯示。復(fù)位值都是0x00,即數(shù)碼管的12 個(gè)位都掃描顯示。

表6.35 消隱寄存器

在實(shí)際應(yīng)用中可能需要顯示的位數(shù)不足12 位,例如只顯示8 位,這時(shí)可以把DispCtrl0的值設(shè)置為0x0F,把DispCtrl1 的值設(shè)置為0x00,則數(shù)碼管的第0~7 位被掃描顯示,而第8~12 位不會(huì)顯示。

(8)閃爍寄存器Flash0(地址:0EH)和Flash1(地址:0FH)

如表6.36 所示為閃爍寄存器,F(xiàn)lash0、Flash 1 寄存器決定哪些位是否閃爍,對(duì)應(yīng)數(shù)碼管的1~12 位。寄存器位為1 時(shí),對(duì)應(yīng)數(shù)碼管位閃爍。復(fù)位值都是0x00,即數(shù)碼管的12 個(gè)位都不閃爍。

表6.36 閃爍寄存器

在實(shí)際應(yīng)用中可能需要某些位閃爍,例如最后2 位閃爍,這時(shí)可以把Flash0 的值設(shè)置為0x00,把Flash1 的值設(shè)置為0x03,則數(shù)碼管的第1、2 位閃爍,而第3~12 位不會(huì)閃爍。

(9)顯示緩沖區(qū)DispBuf0~DispBuf11(地址:10H~1BH)

DispBuf0~DispBuf11 這12 個(gè)寄存器的取值直接決定了數(shù)碼管的顯示內(nèi)容。每個(gè)寄存器的8 個(gè)位分別對(duì)應(yīng)數(shù)碼管的a、b、c、d、e、f、g、dp 段,MSB 對(duì)應(yīng)a,LSB 對(duì)應(yīng)dp。例如大寫字母H 的字型數(shù)據(jù)為6EH(不帶小數(shù)點(diǎn))或6FH(帶小數(shù)點(diǎn))。

4. 控制命令詳解

寄存器CmdBuf0(地址:07H)和CmdBuf1(地址:08H)共同組成命令緩沖區(qū)。通過(guò)向命令緩沖區(qū)寫入相關(guān)的控制命令可以實(shí)現(xiàn)段尋址、下載顯示數(shù)據(jù)、控制閃爍等功能。

(1)段尋址(SegOnOff)

如表6.37 所示為段尋址寄存器,在段尋址命令中12 位數(shù)碼管被看成是96 個(gè)段,每一個(gè)段實(shí)際上就是一個(gè)獨(dú)立的LED。

雙字節(jié)命令在指令格式中,CmdBuff0 的高4 位“0001”是命令碼,CmdBuff0 的最低位on 位表示該段是否點(diǎn)亮,0—熄滅,1—點(diǎn)亮。CmdBuff0 的B3B2B1B0 是位地址,取值0~11。S3S2S1S0 是4 位段地址,取值0~7,對(duì)應(yīng)數(shù)碼管的a、b、c、d、e、f、g、dp。

表6.37 段尋址寄存器

(2)下載數(shù)據(jù)并譯碼(Download

如表6.38 所示為下載數(shù)據(jù)及譯碼寄存器,雙字節(jié)命令在指令格式中,CmdBuff0 的高4位“0010”是命令碼A3A2A1A0 是數(shù)碼管顯示數(shù)據(jù)的位地址,位地址編號(hào)按從左到右的順序依次為11、10、9、8、……、0,dp 控制小數(shù)點(diǎn)是否點(diǎn)亮,0-熄滅,1-點(diǎn)亮。Flash 表示是否要閃爍,0-正常顯示,1-閃爍。d4d3d2d1d0 是要顯示的數(shù)據(jù),包括10 種數(shù)字和21種字母,顯示數(shù)據(jù)按照表6.39 中的規(guī)則進(jìn)行譯碼。

表6.38 下載數(shù)據(jù)、譯碼寄存器

表6.39 下載數(shù)據(jù)并譯碼命令的數(shù)據(jù)表

(3)復(fù)位命令(Reset)

單字節(jié)命令,在指令格式中,CmdBuf0 的高4 位的“0011”是命令碼,其功能是將所有LED 熄滅,詳見表6.40。

表6.40 復(fù)位命令寄存器

(4)測(cè)試命令(Test)

單字節(jié)命令,在指令格式中,CmdBuf0 的高4 位的“0100”是命令碼,其功能是將所有LED 按照0.5S 的速率閃爍,詳見表6.41。

表6.41 測(cè)試命令寄存器

(5)左移命令(ShiftLeft)

單字節(jié)命令,在指令格式中,CmdBuf0 的高4 位的“0101”是命令碼,詳見表6.42。功能是以數(shù)碼管的位為單位的,左移n 位。左移后右邊空出的位不顯示任何內(nèi)容,即全部LED熄滅狀態(tài)。n 的取值范圍1~11,大于11 的值無(wú)效,n 的值由CmdBuf0 的低4 位決定,按下列公式計(jì)算:

n = (b3×8)+( b2×4)+ (b1×2)+ b0

表6.42 左移命令寄存器

(6)循環(huán)左移命令(CyclicShiftLeft)

單字節(jié)命令,在指令格式中,CmdBuf0 的高4 位的“0110”是命令碼,詳見表6.43。功能是以數(shù)碼管的位為單位的,循環(huán)左移n 位。

左移后右邊顯示從最左邊移出的內(nèi)容。n 的取值范圍1~11,大于11 的值無(wú)效,n 的值由CmdBuf0 的低4 位決定,按下列公式計(jì)算:

n = (b3×8)+( b2×4)+ (b1×2)+ b0

表6.43 循環(huán)左移命令寄存器

(7)右移命令(ShiftRight)

單字節(jié)命令,在指令格式中,CmdBuf0 的高4 位的“0111”是命令碼,詳見表6.44。功能是以數(shù)碼管的位為單位的,右移n 位。

右移后左邊空出的位不顯示任何內(nèi)容,即全部LED 熄滅狀態(tài)。n 的取值范圍1~11,大于11 的值無(wú)效,n 的值由CmdBuf0 的低4 位決定,按下列公式計(jì)算:

n = (b3×8)+( b2×4)+ (b1×2)+ b0

表6.44 右移命令寄存器

(8)循環(huán)右移命令(CyclicShiftRight)

單字節(jié)命令,在指令格式中,CmdBuf0 的高4 位的“1000”是命令碼,詳見表6.45。功能是以數(shù)碼管的位為單位的,循環(huán)右移n 位。右移后左邊顯示從最右邊移出的內(nèi)容,n 的取值范圍1~11,大于11 的值無(wú)效,n 的值由CmdBuf0 的低4 位決定,按下列公式計(jì)算:

n = (b3×8)+( b2×4)+ (b1×2)+ b0

表6.45 循環(huán)右移命令寄存器

(9)數(shù)碼管掃描位數(shù)設(shè)置指令 (Scanning)

單字節(jié)命令,在指令格式中CmdBuf0 的高4 位的“1001”是命令碼,設(shè)置數(shù)碼管掃描位數(shù)n,詳見表6.46。n 的取值為0~12,大于12 按12 位進(jìn)行掃描。掃描位數(shù)n 以位選端第1位開始到位選端第n 位掃描有效。n 的值由CmdBuf0 的低四位決定,按下列公式計(jì)算。

n = (b3×8)+( b2×4)+ (b1×2)+ b0

表6.46 掃描位數(shù)設(shè)置寄存器

在使用過(guò)程中,如果不需要12 位數(shù)碼管顯示,從最高位開始裁剪,同時(shí)將數(shù)碼掃描位數(shù)設(shè)置成相應(yīng)的數(shù)碼管位數(shù)。數(shù)碼管的掃描位數(shù)減少后,有用的顯示位由于分配的掃描時(shí)間更多,因而顯示亮度得以提高。

>>> 6.5.2 ZLG72128 初始化

AMetal 已經(jīng)提供了ZLG72128 的驅(qū)動(dòng)函數(shù),使用其它各功能函數(shù)管理數(shù)碼管和按鍵前,必須先完成ZLG72128 的初始化。其初始化函數(shù)(am_zlg72128.h)的原型為:

該函數(shù)意在獲取ZLG72128 的實(shí)例句柄。其中,p_dev 是指向am_zlg72128_dev_t 類型實(shí)例的指針,p_devinfo 是指向am_zlg72128_devinfo_t 類型實(shí)例信息的指針。

  • 實(shí)例

定義am_zlg72128_dev_t 類型(am_zlg72128.h)實(shí)例如下:

其中,g_zlg72128_dev 為用戶自定義的實(shí)例,其地址作為p_dev 的實(shí)參傳遞。

  • 實(shí)例信息

實(shí)例信息描述了中斷引腳相關(guān)的信息, 其類型am_zlg72128_devinfo_t 的定義(am_zlg72128.h)如下:

其中,use_int_pin 表示是否使用ZLG72128 的中斷輸出引腳(KEY_INT)。若該值為TRUE,表明需要使用中斷引腳,此時(shí)int_pin 指定與主控制器(如LPC824)連接的引腳號(hào),按鍵鍵值將在引腳中斷中獲?。蝗粼撝禐镕ALSE,表明不使用中斷引腳,此時(shí)interval_ms 指定查詢鍵值的時(shí)間間隔。

一般地,只要主控器的I/O 資源不是非常緊缺,均會(huì)使用中斷引腳。若為節(jié)省一個(gè)I/O中斷資源,可將use_int_pin 設(shè)置為FALSE,此時(shí)將不占用IO 中斷資源,而系統(tǒng)將會(huì)以查詢的方式從ZLG72128 中獲取鍵值,這就會(huì)耗費(fèi)一定的CPU 資源,因?yàn)槊扛粢欢螘r(shí)間就要主動(dòng)查詢一次鍵值。假設(shè)使用ZLG72128 的中斷引腳,主控制器使用LPC824,ZLG72128 的KEY_INT 引腳與LPC824 的PIO0_17 連接。其實(shí)例信息定義如下:

  • I2C句柄i2c_handle

若使用LPC824 的I2C1 與ZLG72128 通信,則I2C句柄可以通過(guò)LPC82x 的I2C1 實(shí)例初始化函數(shù)am_lpc82x_i2c1_inst_init()獲得。即:

獲得的I2C句柄即可直接作為i2c_handle 的實(shí)參傳遞。

  • 實(shí)例句柄

am_zlg72128_init()函數(shù)的返回值為ZLG72128 實(shí)例的句柄,該句柄將作為其它功能接口(數(shù)碼管顯示、按鍵管理等)的第一個(gè)參數(shù)(handle)的實(shí)參。

其類型am_zlg72128_handle_t(am_zlg72128.h)定義如下:

若返回值為NULL,說(shuō)明初始化失??;若返回值不為NULL,說(shuō)明返回一個(gè)有效的handle。

基于模塊化編程思想,將初始化相關(guān)的實(shí)例、實(shí)例信息等的定義存放到對(duì)應(yīng)的配置文件中,通過(guò)頭文件引出實(shí)例初始化函數(shù)接口,源文件和頭文件的程序范例分別詳見程序清單6.111 和程序清單6.112。

程序清單6.111 ZLG72128 實(shí)例初始化函數(shù)實(shí)現(xiàn)(am_hwconf_zlg72128.c)

程序清單6.112 ZLG72128 實(shí)例初始化函數(shù)聲明(am_hwconf_zlg72128.h)

后續(xù)只需要使用無(wú)參數(shù)的實(shí)例初始化函數(shù)即可獲取到ZLG72128 的實(shí)例句柄。即:

>>> 6.5.3 按鍵管理接口函數(shù)

ZLG72128 支持32 個(gè)鍵(4 行8 列矩陣鍵盤),其中,前3 行為普通鍵,同一時(shí)刻只能有一個(gè)普通鍵按下。最后一行為功能鍵,多個(gè)功能鍵可以同時(shí)按下。按鍵管理僅一個(gè)注冊(cè)按鍵回調(diào)接口函數(shù)。

為了在檢測(cè)到按鍵事件(有鍵按下)時(shí),及時(shí)將按鍵事件通知用戶,需要用戶注冊(cè)一個(gè)回調(diào)函數(shù),當(dāng)有按鍵事件發(fā)生時(shí),將自動(dòng)調(diào)用用戶注冊(cè)的回調(diào)函數(shù)。其函數(shù)原型為:

其中,pfn_key_cb 為注冊(cè)的按鍵回調(diào)函數(shù),p_arg 為回調(diào)函數(shù)的第一個(gè)參數(shù)的值,即當(dāng)檢測(cè)到按鍵事件自動(dòng)調(diào)用回調(diào)函數(shù)時(shí),將p_arg 的值作為回調(diào)函數(shù)的第一個(gè)參數(shù)的值。

回調(diào)函數(shù)的類型am_zlg72128_key_cb_t(am_zlg72128.h)定義如下:

由此可見,回調(diào)函數(shù)有4 個(gè)參數(shù),用戶可以通過(guò)這些參數(shù)獲取按鍵相關(guān)的信息。特別地,第一個(gè)參數(shù)p_arg 為用戶自定義的參數(shù),其值即為注冊(cè)回調(diào)函數(shù)時(shí)p_arg 參數(shù)設(shè)置的值。

key_val、repeat_cnt、funkey_val 表示按鍵事件的相關(guān)信息,ZLG72128 可能的按鍵事件有以下3 種:

  • 有普通鍵按下(普通鍵釋放不作為按鍵事件)

當(dāng)有普通鍵按下時(shí),key_val 表示按下鍵的鍵值,鍵值的有效范圍為1 ~ 24,普通鍵的鍵值已在am_zlg72128.h 中定義為宏,宏名為AM_ZLG72128_KEY_X_Y,其中X 表示行號(hào)(1 ~ 3),Y 表示列號(hào)(1 ~ 8),如第2 行第5 個(gè)鍵的鍵值為:AM_ZLG72128_KEY_2_5。

  • 普通鍵一直按下(處于連擊狀態(tài))

普通鍵按下保持時(shí)間超過(guò)2s 后進(jìn)入連擊狀態(tài),處于連擊狀態(tài)時(shí),每隔200ms 左右會(huì)產(chǎn)生一個(gè)按鍵事件,并使用一個(gè)連擊計(jì)數(shù)器對(duì)產(chǎn)生的按鍵事件計(jì)數(shù),每產(chǎn)生一個(gè)按鍵事件連擊計(jì)數(shù)器的值加1,由于連擊計(jì)數(shù)器的位寬為8 位,因此,當(dāng)值達(dá)到255 后不再加1,但同樣還會(huì)繼續(xù)產(chǎn)生按鍵事件,直到鍵釋放,連擊計(jì)數(shù)器清0。處于連擊狀態(tài)時(shí),key_val 表示按下鍵的鍵值,repeat_cnt 表示連擊計(jì)數(shù)器的值。

  • 功能鍵狀態(tài)發(fā)生變化(功能鍵按下或釋放都會(huì)造成狀態(tài)改變)

funkey_val 的值表示所有功能鍵的狀態(tài)。最后一行最多8 個(gè)鍵,從左至右分別為F0 ~ F7,與funkey_val 的bit0 ~ bit7 一一對(duì)應(yīng),位值為0 表示對(duì)應(yīng)功能鍵按下,位值為1 表示對(duì)應(yīng)功能鍵未按下。當(dāng)無(wú)任何功能鍵按下時(shí),funkey_val 的值為0xFF。只要funkey_val 的值發(fā)生改變,就會(huì)產(chǎn)生一個(gè)按鍵事件,功能鍵不提供連擊功能。可以使用am_zlg72128.h 中的宏

AM_ZLG72128_FUNKEY_CHECK(funkey_val, funkey_num)來(lái)簡(jiǎn)單判斷某一功能鍵是否按下。funkey_num 用于表示需要檢測(cè)的功能鍵, 值已經(jīng)定義為宏, F0 ~ F7 分別為AM_ZLG72128_FUNKEY_0 ~ AM_ZLG72128_FUNKEY_7。若對(duì)應(yīng)鍵按下,則宏值為TURE;反之,則宏值FALSE。例如,通過(guò)funkey_val 判斷F0 是否按下可以使用如下語(yǔ)句:

功能鍵類似PC 機(jī)上的Ctrl、Alt、Shift 等按鍵,使用普通鍵和功能鍵很容易實(shí)現(xiàn)組合鍵應(yīng)用,注冊(cè)按鍵回調(diào)函數(shù)的范例程序詳見程序清單6.113。

程序清單6.113 ZLG72128 注冊(cè)按鍵回調(diào)函數(shù)使用范例

若只按下第一行第一個(gè)鍵,則LED0 狀態(tài)翻轉(zhuǎn),若按下第一行第一個(gè)鍵的同時(shí),也按下了功能鍵F0,則LED1 狀態(tài)翻轉(zhuǎn),該示例簡(jiǎn)單的展示了組合鍵的使用方法。

>>> 6.5.4 數(shù)碼管顯示接口函數(shù)

ZLG72128 支持12 位共陰式數(shù)碼管,以及閃爍、位移等功能,雖然接口函數(shù)種類繁多,但各個(gè)接口函數(shù)的功能較為簡(jiǎn)單,下面將一一介紹各個(gè)接口函數(shù)的使用方法。

1. 閃爍持續(xù)時(shí)間

當(dāng)數(shù)碼管閃爍時(shí),設(shè)置其點(diǎn)亮和熄滅持續(xù)時(shí)間的函數(shù)原型為:

上電時(shí),數(shù)碼管點(diǎn)亮和熄滅的持續(xù)時(shí)間默認(rèn)值為500ms。on_ms 和off_ms 有效的時(shí)間值為150、200、250、……、800、850、900,即150ms ~ 900ms,且時(shí)間間隔為50ms。若時(shí)間間隔不是這些值,應(yīng)該選擇一個(gè)最接近的值。比如,設(shè)置數(shù)碼管以最快的頻率閃爍,即亮、滅時(shí)間最短為150ms,其使用方法如下:

注:僅設(shè)置閃爍時(shí)間還不能立即看到閃爍現(xiàn)象,必須打開某位的閃爍開關(guān)后才能看到閃爍現(xiàn)象,詳見am_zlg72128_digitron_flash_ctrl()函數(shù)介紹。

2. 閃爍控制

控制數(shù)碼管是否閃爍的函數(shù)原型為:

其中,ctrl_val 為控制值,bit0 ~ bit11 為有效位,分別對(duì)應(yīng)數(shù)碼管0 ~ 11,位值為0 時(shí)不閃爍,位值為1 時(shí)閃爍。上電默認(rèn)值為0x0000,即所有數(shù)碼管均不閃爍。比如,控制所有數(shù)碼管閃爍,其使用方法如下:

注:由于初始時(shí)可能數(shù)碼管未顯示任何內(nèi)容,這段代碼可能看不到閃爍現(xiàn)象,因此可以在設(shè)置前,使用后續(xù)相關(guān)API 使數(shù)碼管顯示一些實(shí)際有效的內(nèi)容。

3. 顯示屬性(開或關(guān))

顯示屬性是指控制哪些數(shù)碼管顯示,哪些數(shù)碼管不顯示。在默認(rèn)情況下,所有數(shù)碼管均處于打開顯示狀態(tài),掃描12 位數(shù)碼管。而實(shí)際上,可能需要顯示的位數(shù)并不足12 位,此時(shí)可以使用該函數(shù)關(guān)閉某些位的顯示。其函數(shù)原型為:

其中,ctrl_val 為控制值,bit0 ~ bit11 為有效位,分別對(duì)應(yīng)數(shù)碼管0 ~ 11,位值為0 時(shí)打開顯示,位值為1 時(shí)關(guān)閉顯示。上電的默認(rèn)值為0x0000,即所有位均正常顯示。比如,只使用了數(shù)碼管0 ~ 7,基于此,可以關(guān)閉數(shù)碼管8 ~ 11,其使用方法如下:

注:使用該函數(shù)控制顯示屬性時(shí),對(duì)應(yīng)數(shù)碼管的段碼內(nèi)容并不會(huì)改變。

4. 顯示字符

在指定位置顯示字符,ZLG72128 已經(jīng)提供了0 ~ 9 這10 個(gè)數(shù)字和常見的21 種字母的自動(dòng)譯碼顯示,無(wú)需應(yīng)用再自行譯碼。其函數(shù)原型為:

顯示的字符必須是ZLG72128 已經(jīng)支持的可以自動(dòng)完成譯碼的字符,包括字符'0'~'9'與AbCdEFGHiJLopqrtUychT(區(qū)分大小寫)。注意,若要顯示數(shù)字1,則ch 參數(shù)應(yīng)為字符'1',而不是數(shù)字1。

若指定的字符不支持,則返回-AM_ENOTSUP。只要成功顯示,則返回AM_OK。若需要顯示一些自定義的圖形,使用 am_zlg72128_digitron_dispbuf_set() 直接設(shè)置顯示的段碼。

比如,在數(shù)碼管0 顯示字符F,不顯示小數(shù)點(diǎn),不閃爍,其使用方法如下:

5. 顯示字符串

指定字符串顯示的起始位置,開始顯示一個(gè)字符串。其函數(shù)原型為:

字符串顯示遇到字符結(jié)束標(biāo)志'\0'將自動(dòng)結(jié)束,或當(dāng)超過(guò)有效的字符顯示區(qū)域時(shí),也會(huì)自動(dòng)結(jié)束。顯示的字符應(yīng)確保是ZLG72128 能夠自動(dòng)完成譯碼的,包括字符'0'~'9'與AbCdEFGHiJLopqrtUychT(區(qū)分大小寫)。如遇到有不支持的字符,對(duì)應(yīng)位置將不顯示任何內(nèi)容。比如,從數(shù)碼管0 開始,顯示字符串“0123456789”,其使用方法如下:

6. 顯示0~9 的數(shù)字

在指定位置顯示0~9 的數(shù)字,其函數(shù)原型為:

該函數(shù)僅用于顯示一個(gè)0~9 的數(shù)字,若數(shù)字大于9,應(yīng)自行根據(jù)需要分別顯示各個(gè)位。

注意,num 參數(shù)為數(shù)字0~9,不是字符'0'~'9'。比如,在數(shù)碼管0 顯示數(shù)字8,不顯示小數(shù)點(diǎn),不閃爍。其使用方法如下:

7. 直接設(shè)置數(shù)碼管顯示段碼

該函數(shù)用于設(shè)置各個(gè)數(shù)碼管顯示的段碼,當(dāng)需要顯示一些不能自動(dòng)譯碼顯示的圖形或字符時(shí),可以使用該函數(shù)靈活的顯示各種各樣的圖形。其函數(shù)原型為:

該函數(shù)一次可以設(shè)置多個(gè)連續(xù)數(shù)碼管顯示的緩沖區(qū)內(nèi)容,起始顯示位置由start_pos 指定,有效值為0 ~ 11,連續(xù)顯示數(shù)碼管的個(gè)數(shù)由參數(shù)num 指定。該函數(shù)將依次設(shè)置start_pos~ (start_pos + num -1)的各個(gè)數(shù)碼管的顯示內(nèi)容。

段碼為8 位,bit0~bit7 分別對(duì)應(yīng)段a ~ dp。位值為1 時(shí),對(duì)應(yīng)段點(diǎn)亮,位值為0 時(shí),對(duì)應(yīng)段熄滅。如顯示數(shù)字1,則需要點(diǎn)亮段b 和段c,這就需要bit1 和bit2 為1,因此段碼為00000110,即0x06。其它顯示圖形可以以此類推。比如,在數(shù)碼管0 ~ 9 顯示數(shù)字0~9,可以使用該函數(shù)直接設(shè)置各個(gè)數(shù)碼管顯示的段碼,使用方法如下:

8. 直接控制段的點(diǎn)亮或熄滅

雖然已經(jīng)提供了直接設(shè)置顯示段碼的函數(shù),但為了更加靈活的顯示一個(gè)圖形,或控制圖形的變換。ZLG72128 支持直接控制某個(gè)段的亮滅。其函數(shù)原型為:

pos 用于指定數(shù)碼管的位置,有效值為0~11。seg 表明要控制的段,有效值為0~7,分別對(duì)應(yīng)a ~ dp。各個(gè)段已經(jīng)在am_zlg72128.h 文件中使用宏的形式定義好了。建議不要直接使用立即數(shù)0~7,而應(yīng)使用與a ~ dp 相對(duì)應(yīng)的宏AM_ZLG72128_DIGITRON_SEG_A ~AM_ZLG72128_DIGITRON_SEG_DP。比如,在當(dāng)前顯示的基礎(chǔ)上,需要在數(shù)碼管0 顯示出小數(shù)點(diǎn),其它內(nèi)容不變,此時(shí)就可以直接使用該函數(shù)控制點(diǎn)亮數(shù)碼管0 的dp 段,其使用方法如下:

注:一次只能控制一個(gè)段。

9. 顯示移位控制

ZLG72128 支持移位控制,可以使所有數(shù)碼管根據(jù)命令進(jìn)行移位。共支持4 種移位方式,左移、循環(huán)左移、右移和循環(huán)右移。其函數(shù)原型為:

dir 指定移位方向,表示方向的宏值已經(jīng)在am_zlg72128.h 文件中使用宏的形式定義好了,應(yīng)直接使用宏值作為dir 參數(shù)的值,左移為AM_ZLG72128_DIGITRON_SHIFT_LEFT,右移為AM_ZLG72128_DIGITRON_SHIFT_RIGHT。

is_cyclic 為TRUE 時(shí)表明是循環(huán)移位,否則不是循環(huán)移位。如果不是循環(huán)移位,則移位后,右邊空出的位(左移)或左邊空出的位(右移)將不顯示任何內(nèi)容。若是循環(huán)移動(dòng),則空出的位將會(huì)顯示被移除位的內(nèi)容。num 指定移動(dòng)的位數(shù),一次可以移動(dòng) 0 ~ 11 位。大于11 的值將視為無(wú)效值。比如,要將當(dāng)前數(shù)碼管顯示循環(huán)左移一位,其使用方法如下:

實(shí)際中,可能會(huì)發(fā)現(xiàn)移位方向與傳入的命令恰恰相反,這是由于硬件設(shè)計(jì)的不同造成的。常見的,可能有以下兩種硬件設(shè)計(jì)方式:

  • 最右邊為數(shù)碼管0,從左至右為:11、10、9、8、7、6、5、4、3、2、1、0

  • 最左邊為數(shù)碼管0,從左至右為:0、1、2、3、4、5、6、7、8、9、10、11

這主要取決于硬件設(shè)計(jì)時(shí) COM0 ~ COM11 引腳所對(duì)應(yīng)數(shù)碼管所處的物理位置。此處左移和右移的概念是以ZLG72128 典型應(yīng)用電路為參考的,其COM0 對(duì)應(yīng)的是最右邊的數(shù)碼管,即最右邊為數(shù)碼管0。那么左移和右移的概念分別為:

左移:數(shù)碼管0(最右側(cè)數(shù)碼管)顯示切換到1,數(shù)碼管1 顯示切換到2,……,數(shù)碼管10 顯示切換到11。

右移:數(shù)碼管11(最左側(cè)數(shù)碼管)顯示切換到10,數(shù)碼管1 顯示切換到2,……,數(shù)碼管10 顯示切換到11。

若硬件電路設(shè)計(jì)數(shù)碼管位置是相反的(如COM0 對(duì)應(yīng)的是最左邊的數(shù)碼管),則移位效果恰恰是相反的,此處只需要稍微注意即可。

10. 復(fù)位顯示

復(fù)位顯示將數(shù)碼管顯示的內(nèi)容清空,即所有數(shù)碼管不顯示任何內(nèi)容。其函數(shù)原型為:

11. 測(cè)試命令

測(cè)試命令主要用于測(cè)試數(shù)碼管的硬件電路是否連接正常。其函數(shù)原型為:

執(zhí)行測(cè)試命令后,數(shù)碼管段顯示“8.8.8.8.8.8.8.8.8.8.8.8.”,并以0.5s 的速率閃爍。

12. 數(shù)碼管顯示測(cè)試

為了判斷數(shù)碼管是否工作正常,實(shí)現(xiàn)一個(gè)簡(jiǎn)單的數(shù)碼管顯示測(cè)試:系統(tǒng)啟動(dòng)時(shí),數(shù)碼管進(jìn)入測(cè)試狀態(tài),數(shù)碼管所有段全部點(diǎn)亮,即顯示“8.8.8.8.8.8.8.8.8.8.8.8.”,并以0.5s 的速率閃爍。歷時(shí)3 秒后,清空顯示內(nèi)容。

由于ZLG72128 自帶數(shù)碼管測(cè)試命令,所以該項(xiàng)功能很容易實(shí)現(xiàn),直接調(diào)用測(cè)試命令接口,延時(shí)3s 后,復(fù)位數(shù)碼管顯示即可。范例程序詳見程序清單6.114。

程序清單6.114 數(shù)碼管顯示測(cè)試范例程序

13. 單個(gè)普通鍵測(cè)試

為了測(cè)試各個(gè)普通鍵是否工作正常,實(shí)現(xiàn)一個(gè)簡(jiǎn)單的按鍵測(cè)試:按下任何一個(gè)普通鍵,數(shù)碼管顯示當(dāng)前鍵的鍵值(1~24)。

對(duì)于普通鍵,當(dāng)鍵按下時(shí),可以通過(guò)按鍵回調(diào)函數(shù)直接獲取到鍵值(1~24),獲取到鍵值后,使用數(shù)碼管顯示接口將該值顯示出來(lái)即可。范例程序詳見程序清單6.115。

程序清單6.115 普通按鍵測(cè)試范例程序

14. 組合鍵使用

ZLG72128 有8 個(gè)功能鍵,功能鍵如同電腦鍵盤的Ctrl、Shift 和Alt 鍵,與其它普通按鍵組合可以實(shí)現(xiàn)豐富的功能,如Ctrl+S(保存),Ctrl+A(全選),Ctrl+Z(撤銷)等。

這里,以功能鍵F0 為例,展示其如何與普通按鍵組合使用。為方便觀察,定義下列操作及對(duì)應(yīng)的現(xiàn)象:

  • F0 + K1:數(shù)碼管顯示循環(huán)左移;

  • F0 + K2:數(shù)碼管顯示循環(huán)右移;

  • F0 + K3:所有閃爍顯示打開/關(guān)閉。

各種組合鍵對(duì)應(yīng)的功能都有相應(yīng)的API,相應(yīng)的范例程序詳見程序清單6.116。

程序清單6.116 組合鍵使用范例程序

至此,各個(gè)功能的處理函數(shù)都編寫好了。但對(duì)于按鍵事件的處理,還有關(guān)鍵的一步就是獲取到鍵值。通過(guò)上述對(duì)ZLG72128 接口函數(shù)的介紹可知,如需獲取鍵值,只需要注冊(cè)按鍵回調(diào)函數(shù),然后在回調(diào)函數(shù)中即可通過(guò)傳遞給回調(diào)函數(shù)的參數(shù)獲得鍵值。

按照常規(guī)思維,獲取鍵值后,可能直接在回調(diào)函數(shù)中調(diào)用相關(guān)處理函數(shù)對(duì)按鍵作相應(yīng)處理,但這是非常不妥的。這是因?yàn)?,回調(diào)函數(shù)一般都是在中斷環(huán)境中執(zhí)行的,如果回調(diào)函數(shù)的處理占用了很長(zhǎng)的時(shí)間,將嚴(yán)重影響整個(gè)系統(tǒng)的實(shí)時(shí)性。應(yīng)該保證回調(diào)函數(shù)的處理盡可能快的結(jié)束?;诖?,在按鍵回調(diào)函數(shù)中僅完成鍵值的保存,實(shí)際的處理在am_main()函數(shù)主循環(huán)中完成。因此回調(diào)函數(shù)的處理就非常簡(jiǎn)單了,只需要保存下鍵值,并設(shè)置一個(gè)標(biāo)志供am_main()主循環(huán)查詢即可。范例程序詳見程序清單6.117。

程序清單6.117 回調(diào)函數(shù)處理范例程序

這里定義了一個(gè)按鍵事件信息結(jié)構(gòu)體變量,將按鍵回調(diào)函數(shù)中的相關(guān)信息全部存放在該結(jié)構(gòu)體中。當(dāng)key_event 的值為TRUE 時(shí),說(shuō)明有按鍵事件,范例程序詳見程序清單6.118。

程序清單6.118 綜合示例程序

聲明:本文內(nèi)容及配圖由入駐作者撰寫或者入駐合作網(wǎng)站授權(quán)轉(zhuǎn)載。文章觀點(diǎn)僅代表作者本人,不代表電子發(fā)燒友網(wǎng)立場(chǎng)。文章及其配圖僅供工程師學(xué)習(xí)之用,如有內(nèi)容侵權(quán)或者其他違規(guī)問(wèn)題,請(qǐng)聯(lián)系本站處理。 舉報(bào)投訴
  • 寄存器
    +關(guān)注

    關(guān)注

    31

    文章

    5295

    瀏覽量

    119839
  • 數(shù)碼管
    +關(guān)注

    關(guān)注

    32

    文章

    1873

    瀏覽量

    90869
  • 周立功
    +關(guān)注

    關(guān)注

    38

    文章

    130

    瀏覽量

    37556
  • zlg72128
    +關(guān)注

    關(guān)注

    1

    文章

    3

    瀏覽量

    3438

原文標(biāo)題:周立功:重用外設(shè)驅(qū)動(dòng)代碼——鍵盤與數(shù)碼管接口

文章出處:【微信號(hào):Zlgmcu7890,微信公眾號(hào):周立功單片機(jī)】歡迎添加關(guān)注!文章轉(zhuǎn)載請(qǐng)注明出處。

收藏 人收藏

    評(píng)論

    相關(guān)推薦

    鍵盤掃描和數(shù)碼管顯示源程序和電路

    鍵盤掃描和數(shù)碼管顯示源程序和電路圖 在RB口上擴(kuò)充一個(gè)矩陣式鍵盤,一共4×4個(gè)按鍵,剛好4條行線、4條列線占用RB口的全部8個(gè)接口;而在R
    發(fā)表于 01-11 23:19 ?2590次閱讀
    <b class='flag-5'>鍵盤</b>掃描和<b class='flag-5'>數(shù)碼管</b>顯示源程序和<b class='flag-5'>電路</b>圖

    全面剖析數(shù)碼管與矩陣鍵盤聯(lián)合使用法則

    本文內(nèi)容為7.7 數(shù)碼管與矩陣鍵盤聯(lián)合使用、7.8 ZLG72128——數(shù)碼管鍵盤管理、7.9 溫控。
    的頭像 發(fā)表于 11-21 07:47 ?1.1w次閱讀
    全面剖析<b class='flag-5'>數(shù)碼管</b>與矩陣<b class='flag-5'>鍵盤</b>聯(lián)合使用法則

    數(shù)碼管與矩陣鍵盤聯(lián)合應(yīng)用設(shè)計(jì)

    AMetal 提供了數(shù)碼管和矩陣鍵盤聯(lián)合使用的驅(qū)動(dòng),其本質(zhì)上就是數(shù)碼管驅(qū)動(dòng)和矩陣鍵盤驅(qū)動(dòng)的簡(jiǎn)單整合,避免了在多個(gè)實(shí)例信息中提供一些相同的信息,如數(shù)碼
    的頭像 發(fā)表于 01-19 09:31 ?7842次閱讀
    <b class='flag-5'>數(shù)碼管</b>與矩陣<b class='flag-5'>鍵盤</b>聯(lián)合應(yīng)用設(shè)計(jì)

    使用到的鍵盤數(shù)碼管

    1.今日使用到的鍵盤數(shù)碼管和期望達(dá)到的控制目標(biāo):用到的鍵盤數(shù)目為3個(gè),key1(與單片機(jī)P3.0口相接)、key2(與單片機(jī)P3.0口相接)、key3(與單片機(jī)P3.0口相接)。數(shù)碼管
    發(fā)表于 11-22 08:13

    掌握通過(guò)并行接口芯片對(duì)鍵盤進(jìn)行掃描并在多位數(shù)碼管顯示數(shù)字的方法

    實(shí)驗(yàn)九、鍵盤掃描及數(shù)碼管顯示實(shí)驗(yàn)1、實(shí)驗(yàn)?zāi)康膶W(xué)習(xí)了解鍵盤掃描的基本原理。掌握通過(guò)并行接口芯片對(duì)鍵盤進(jìn)行掃描并在多位
    發(fā)表于 01-13 08:22

    TM1638按鍵數(shù)碼管模塊說(shuō)明

    文章目錄一、TM1638按鍵數(shù)碼管模塊說(shuō)明1.TM1638概述和特性2.驅(qū)動(dòng)模塊電路圖3.TM1638管腳功能說(shuō)明4.驅(qū)動(dòng)模塊寄存器地址和顯示模式5.指令發(fā)送說(shuō)明5.1數(shù)據(jù)命令設(shè)置5.2地址命令設(shè)置
    發(fā)表于 01-25 08:10

    數(shù)碼管驅(qū)動(dòng)及鍵盤控制芯片--CH452

    數(shù)碼管驅(qū)動(dòng)及鍵盤控制芯片CH452:CH452是數(shù)碼管顯示驅(qū)動(dòng)和鍵盤掃描控制芯片。CH452 內(nèi)置時(shí)鐘振蕩電路,可以動(dòng)態(tài)驅(qū)動(dòng)8 位
    發(fā)表于 01-07 12:23 ?61次下載

    數(shù)碼管顯示矩陣鍵盤掃描程序

    數(shù)碼管顯示矩陣鍵盤掃描程序 ?/*矩陣鍵盤掃描出鍵值,在數(shù)碼管上顯示出來(lái)?????? P0口接數(shù)碼管的段選碼,P2口通過(guò)反相
    發(fā)表于 01-11 19:14 ?2256次閱讀

    數(shù)碼管顯示矩陣鍵盤掃描值

    數(shù)碼管顯示矩陣鍵盤掃描值 ?/*矩陣鍵盤掃描出鍵值,在數(shù)碼管上顯示出來(lái)?????? P0口接數(shù)碼管的段選碼,P2口通過(guò)反相
    發(fā)表于 01-14 21:01 ?2734次閱讀

    LED數(shù)碼管顯示分類及其典型應(yīng)用電路

    本文主要講述了LED數(shù)碼管的顯示分類及其特點(diǎn)、LED數(shù)碼管典型應(yīng)用電路。 一.LED數(shù)碼管顯示分類 LED
    發(fā)表于 07-31 11:09 ?1.1w次閱讀
    LED<b class='flag-5'>數(shù)碼管</b>顯示分類及其<b class='flag-5'>典型</b>應(yīng)<b class='flag-5'>用電路</b>

    單片機(jī)的鍵盤及LED數(shù)碼管顯示接口

    本文主要介紹了單片機(jī)的應(yīng)用--矩陣鍵盤和LED數(shù)碼管顯示接口。
    發(fā)表于 03-25 11:38 ?7次下載

    74ls164驅(qū)動(dòng)4位數(shù)碼管_74ls164驅(qū)動(dòng)數(shù)碼管電路

    74LS164是一個(gè)串行輸入并行輸出的移位寄存器,可用于擴(kuò)展并行輸出口。74LS165是8位并行輸入串行輸出移位寄存器,可以擴(kuò)展一個(gè)或多個(gè)8位并行I/O口。本文主要介紹了74ls164驅(qū)動(dòng)數(shù)碼管
    發(fā)表于 01-27 11:48 ?2w次閱讀
    74ls164驅(qū)動(dòng)4位<b class='flag-5'>數(shù)碼管</b>_74ls164驅(qū)動(dòng)<b class='flag-5'>數(shù)碼管</b><b class='flag-5'>電路</b>

    典型的按摩數(shù)碼管顯示電路

    下圖所示為一種典型的按摩數(shù)碼管顯示電路。該電路的控制核心是微處理EM78156,它接收操作
    的頭像 發(fā)表于 12-22 10:31 ?4105次閱讀
    <b class='flag-5'>典型</b>的按摩<b class='flag-5'>器</b><b class='flag-5'>數(shù)碼管</b>顯示<b class='flag-5'>電路</b>

    數(shù)碼管顯示常用外圍設(shè)備接口電路

    數(shù)碼管顯示常用外圍設(shè)備接口電路免費(fèi)下載。
    發(fā)表于 06-04 14:33 ?10次下載

    16位數(shù)碼管驅(qū)動(dòng)及鍵盤控制芯片CH453技術(shù)手冊(cè)

    CH453 是 16 位數(shù)碼管顯示驅(qū)動(dòng)和鍵盤掃描控制芯片。CH453 內(nèi)置時(shí)鐘振蕩電路,可以動(dòng)態(tài)驅(qū)動(dòng) 16 位數(shù)碼管或者 128 只 LED 發(fā)光
    發(fā)表于 09-09 11:30 ?2次下載
    16位<b class='flag-5'>數(shù)碼管</b>驅(qū)動(dòng)及<b class='flag-5'>鍵盤</b>控制芯片CH453技術(shù)手冊(cè)