新聞中心

EEPW首頁 > 電源與新能源 > 設(shè)計應(yīng)用 > 兆赫同步開關(guān)電池充電器的應(yīng)用

兆赫同步開關(guān)電池充電器的應(yīng)用

——
作者:電子科技大學(xué) 通信與信息工程學(xué)院 羅海 四川農(nóng)業(yè)大學(xué) 信息與工程技術(shù)學(xué)院 王莉 時間:2007-01-26 來源:《世界電子元器件》 收藏

pt6311原理與應(yīng)用分析
硬件結(jié)構(gòu)

本文引用地址:http://www.butianyuan.cn/article/21159.htm

作為vfd顯示控制及驅(qū)動器芯片,pt6311的核心功能仍然是實現(xiàn)vfd顯示控制與驅(qū)動。芯片的硬件結(jié)構(gòu)主要由掃描信號發(fā)生器、串行通信接口、控制模塊、顯示存儲器、按鍵掃描值寄存器、通用輸入寄存器、led驅(qū)動器、vfd段/位驅(qū)動器等構(gòu)成。pt6311內(nèi)部電路原理框圖如圖1所示。
由圖1及電路原理可知,sw輸入端也可以作為四個單鍵的輸入,即在按鍵數(shù)目不多于4個或者可以利用組合按鍵的情況下,這部分資源也可作為按鍵接口來利用。因此,pt6311實際提供兩個鍵盤掃描的接口,一個是通常的矩陣式鍵盤接口,另一個就是開關(guān)信號輸入端sw1~sw4。另外,pt6311還集成了外掛四個led驅(qū)動功能。

鍵盤接口

普通的鍵盤接法主要有兩種:獨立式和矩陣式。
(1)由通用開關(guān)量輸入sw1~sw4構(gòu)成四按鍵的獨立式鍵盤。接法如圖2(a)所示

(2)由k1~k4與ks1~ks12所構(gòu)成矩陣式鍵盤。鍵盤接法如圖2(b)所示。
由圖可見,pt6311的鍵盤接口所支持的最大鍵盤矩陣為4 12,即最大按鍵數(shù)目為48個。

pt6311的顯存空間配置情況如圖3所示。實際應(yīng)用中,顯存空間往往只是使用一部分,因為所使用的顯存空間大小與設(shè)置的顯示模式有關(guān),圖中的每一行對應(yīng)一字,每一列對應(yīng)八段即一個字節(jié),相當(dāng)于一段對應(yīng)于一個字節(jié)的一位。另外,pt6311還有鍵掃描值寄存器、開關(guān)量輸入寄存器和led輸出寄存器,這些寄存器的數(shù)據(jù)格式如圖4所示。



片內(nèi)的控制字

pt6311具有顯示模式設(shè)置、數(shù)據(jù)設(shè)置、地址設(shè)置(針對顯存)和顯示控制等四種控制字。其中最高兩位為指令特征位,由指令解碼器來識別。

外部通信接口及信號時序

根據(jù)該芯片的電路結(jié)構(gòu),pt6311提供四線制串行接口與外部控制器通信,接口信號線分別為時鐘clk、輸入數(shù)據(jù)din、輸出數(shù)據(jù)dout和選通stb,通信的控制時序見后。接口電路連接如圖5(a)所示。


根據(jù)pt6311與外部微控制器的接口協(xié)議,外部控制操作分為寫入控制字、寫入數(shù)據(jù)(包括顯存及l(fā)ed口)、讀取數(shù)據(jù)(包括鍵值及通用輸入sw口)。寫入控制字/數(shù)據(jù)的時序如圖5(b)所示,以地址自動增一方式連續(xù)寫入顯存數(shù)據(jù)的時序如圖5(c)所示,讀取數(shù)據(jù)的時序如圖5(d)所示。
當(dāng)然,鍵盤可根據(jù)需要選擇掛接部分按鍵,但是,由前述內(nèi)部鍵掃描存儲器的對應(yīng)關(guān)系,最好選擇可以連續(xù)讀取鍵值的區(qū)間,便于程序處理和減少讀取時間和處理時間。


鍵掃描與vfd顯示實用系統(tǒng)

結(jié)合鍵掃描與vfd顯示控制等功能于一體的電子系統(tǒng)較常見,比如家庭影視音響系統(tǒng)、電梯等電子電器設(shè)備。一般而言,這些應(yīng)用系統(tǒng)所采用的體系結(jié)構(gòu)如圖6所示。

ac-3解碼板的控制和面板顯示系統(tǒng)的設(shè)計采用多鍵鍵盤和vfd顯示器來作為人機接口,系統(tǒng)的原理框圖與圖6相似。


vfd顯示與鍵掃描的編程實現(xiàn)

要使得pt6311應(yīng)用系統(tǒng)能夠正常、可靠地工作,在硬件體系基礎(chǔ)上,pt6311還得通過編程來實現(xiàn)具體的功能。外部控制器控制pt6311實現(xiàn)預(yù)定的操作,實際上就是一種串口編程,這在編程實現(xiàn)時尤其要注意操作時序。當(dāng)然,vfd顯示與鍵掃描的具體編程還跟外部微控制器有關(guān),這里給出at89c52單片機的匯編編程實現(xiàn)的部分程序,并在程序中作了詳細(xì)的注釋以便讀者更好地理解。

pt6311上電后,外接矩陣式鍵盤的鍵掃描和vfd顯示均處于關(guān)閉狀態(tài),因此需要進(jìn)行初始化設(shè)置,且至少要開啟一次顯示,則鍵掃描功能才能自動啟動,此后若關(guān)閉顯示鍵掃描仍會繼續(xù)。


鍵掃描讀取的編程實現(xiàn)

按鍵無論以獨立式接入sw端口,還是以矩陣式接入鍵掃描專用端口,基于pt6311的鍵掃描編程都是類似的,故此處不再單獨敘述。這里主要探討pt6311外接矩陣式鍵盤的鍵掃描編程方法。

假設(shè)pt6311已啟動,單片機從pt6311讀取按鍵位置的編程(讀取sw口只需修改指令,操作類似):

(1)、單鍵按鍵的編程實現(xiàn)

單鍵按鍵的鍵掃描無需把全部鍵掃描的結(jié)果讀出,只要讀到有鍵按下即可,因為不存在組合按鍵的情況則不可能有多鍵同時按下。于是,可以對鍵盤的按鍵進(jìn)行編號,并按照pt6311鍵掃描寄存器的對應(yīng)順序及讀取時序進(jìn)行讀取,只需檢測是否有效按鍵并保存編號即可,而無需將全部鍵掃描值數(shù)據(jù)保存。具體程序段如下:

rd_keynumber:
mov b,#rd_key_i;將鍵掃描值讀取指令放入指令緩存,如讀sw口,則只需修改指令
setb rd_d
clraddr
clr incl_d;設(shè)置標(biāo)志以調(diào)用單指令發(fā)送子程序
acall send_1bi_nd;調(diào)用單字節(jié)指令發(fā)送子程序,參見后面vfd顯示控制的編程
mov r6,#00h;r6保存按下鍵的單鍵編號
rdkey_on:
cpl clk;指令發(fā)送完畢clk=h,脈沖下降沿處pt6311輸出數(shù)據(jù)dout
inc r6;鍵值取自然數(shù)
cpl clk;脈沖上升沿后單片機讀取數(shù)據(jù)可靠
jnb dout,no_key;讀取dout狀態(tài),判斷有無鍵按下
setb key_pressed;有鍵按下,則設(shè)置有效按鍵標(biāo)志
ajmp exit
no_key:
cjne6,#keynum_max,rdkey_on;是否掃描完畢所有按鍵,是則表示無鍵按下
clr k_pressed
exit:
setb stb
ret

退出該程序段后即可根據(jù)有無有效按鍵及鍵編號進(jìn)行必要的按鍵響應(yīng)處理。實際上,這個程序段就是實現(xiàn)一個逐位檢測程序,判斷是否有按鍵,有則記下按鍵編號,無則退出。

(2)、組合按鍵的編程實現(xiàn)

組合按鍵就是通常所稱的“組合鍵”,即兩個或者兩個以上按鍵同時按下的按鍵方法。此時,按鍵的作用并不等于各個單鍵按下所代表的意思,而是一個由程序預(yù)先規(guī)定的新指令,常用于按鍵較少而需指令較多的場合。這種鍵值的讀取一般要將全部鍵掃描值寄存器內(nèi)容讀出暫存并進(jìn)行軟件判決處理(查詢是否有預(yù)定義的組合鍵),所以需要一定的暫存空間支持。 rd_multi_key:
……;這部分與單鍵掃描程序相同
mov r0,#keynum_max;r0作為鍵計數(shù)器,比如前面提到的系統(tǒng)keynum_max=8
(……);此時根據(jù)鍵盤布局,增加避開無效數(shù)據(jù)的空操作
rdmkey_on:
cpl clk; 指令發(fā)送完畢clk=h,脈沖下降沿處pt6311輸出數(shù)據(jù)dout
nop
cpl clk;脈沖上升沿后單片機讀取數(shù)據(jù)可靠
movc,dout
rrc a
djnz r0,rdmkey_on
movkey_value,a
setb stb
ret
……
acall multi_key_id;組合鍵及單鍵的識別處理,根據(jù)按鍵情況作出相應(yīng)處理以上程序是針對按鍵數(shù)據(jù)第一位輸出即有效的情況,就是說按鍵布局對應(yīng)于鍵值寄存器的開始端。如果不是這樣,且按鍵布局對應(yīng)鍵值寄存器的連續(xù)空間,則需要在程序讀取數(shù)據(jù)開始時增加避開無效數(shù)據(jù)位的空操作。

從以上程序可知,其實單鍵掃描可以視為多鍵掃描的一種特殊情況。后面的按鍵識別處理程序要根據(jù)需要進(jìn)行軟件設(shè)計,比如最多的組合按鍵只有兩個按鍵,則多于兩個以上的按鍵組合就視為無效而無需作組合識別處理。

以上按鍵掃描程序一般放在定時中斷服務(wù)程序中的,主要是為了方便延時去抖動。識別到有效單鍵或者組合鍵并作出響應(yīng)后都需要處理重復(fù)按鍵問題,實際上我們一般都要作按鍵是否松開的識別處理或者按鍵間隔有效控制處理,主要是為了避免指令的過于頻繁反復(fù)操作,尤其是大功率調(diào)整。

vfd顯示控制的編程實現(xiàn)

假設(shè)顯示內(nèi)容已經(jīng)放入display_buf_data,并且芯片已完成上電初始化設(shè)置,則單片機向pt6311發(fā)送指令與數(shù)據(jù)的通用程序段如下:(發(fā)送單字節(jié)指令可帶有n(0≤n≤48)個字節(jié)數(shù)據(jù)的子程序)
send_1bi_nd:;發(fā)單字節(jié)指令可帶n字節(jié)數(shù)據(jù),用于初始化設(shè)置或修改顯存內(nèi)容
clrea;發(fā)送過程禁止中斷,確保發(fā)送過程完整
jnb addr,no_addr;判斷是否需要設(shè)置顯存需要操作的始地址
clr addr
mov a,disply_buf_addr;取要操作的顯存地址
or a,#0c0h ;將要設(shè)置的地址與pt6311的指令特征位合并
mov b,a;b作為發(fā)送字節(jié)緩存,也作為發(fā)送單字節(jié)指令的緩存
no_addr:
clr stb;啟動發(fā)送過程
s_on_d:
mov a,b
mov cnt,#08h ;用cnt作為位計數(shù)器,指示串行數(shù)據(jù)字節(jié)發(fā)送完畢與否
s_on:
rrc a
cpl clk;clk初始化為h(高電平)
mov din,c;按位將數(shù)據(jù)或指令的一位加載到串行數(shù)據(jù)線
cpl clk;時鐘上升沿發(fā)送
dec cnt;發(fā)送的位計數(shù)器遞減一
djnz cnt,s_on;字節(jié)數(shù)據(jù)發(fā)送完否?否,則繼續(xù)發(fā)送下一位
jnb incl_d,s_over;發(fā)送完畢則判斷是否后帶數(shù)據(jù),無則發(fā)送完畢
djnz r6,s_next_byte
clr incl_d;清除后帶數(shù)據(jù)的標(biāo)志
mov b,disply_buf_data;取得本次發(fā)送過程的最后一個字節(jié)
ajmp s_on_d
s_next_byte:
clrc
mov a,#disply_buf_data;單片機內(nèi)的顯存為display_buf_data開始的一段ram空間
add a,r6
mov r0,a
mov b,@r0;這里的運算取得要發(fā)送的顯示數(shù)據(jù)的下一個字節(jié)
ajmp s_on_d
s_over:
jb rd_d,keep_stb;如果發(fā)送了讀取數(shù)據(jù)指令,則保持stb為低,由讀取程序置高
setb stb
setb ea;恢復(fù)允許中斷設(shè)置
keep_stb:
ret
如果發(fā)送單字節(jié)的控制字,則設(shè)置addr=0,incl_d=0,rd_d=0,b=指令,再調(diào)用該子程序即可。



關(guān)鍵詞:

評論


相關(guān)推薦

技術(shù)專區(qū)

關(guān)閉