uPD16312在DVD視盤機(jī)VFD顯示電路中的應(yīng)用
DVD視盤機(jī)是繼VCD視盤機(jī)后又一個數(shù)字化產(chǎn)品。由于它具有高畫質(zhì)、高音效、多功能等優(yōu)點(diǎn),越來越受到廣大消費(fèi)者的歡迎。DVD視盤機(jī)在使用過程中有許多信息要通過前面板上的VFD(Vacuum Fluorescent Display)顯示出來,以方便用戶的使用。與VCD相比,DVD具有更多的功能選項(xiàng),這使得播放DVD碟片時比播放VCD碟片時顯示的信息更豐富。而且目前的DVD視盤機(jī)一般都要求能兼容播放VCD、SVCD、CD碟片,所以播放這些種類碟片時要顯示的信息,DVD視盤機(jī)必須同樣能顯示出來,這些都對DVD視盤機(jī)的VFD顯示功能提出了更高的要求。uPD16312是一種VFD控制與驅(qū)動芯片,它具有集成度高、外圍電路簡單、功能強(qiáng)等優(yōu)點(diǎn),用它可組成DVD視盤機(jī)的VFD顯示電路。本文將對uPD16312的功能結(jié)構(gòu)、編程方法及其在DVD視盤機(jī)中的應(yīng)用做詳細(xì)的論述。
1 uPD16312的組成和性能特點(diǎn)
uPD16312是日本NEC公司生產(chǎn)的VFD控制與驅(qū)動集成電路,主要用來完成對VFD器件的驅(qū)動與控制。它具有11個段位輸出引腳,6個柵極輸出引腳,5個段位/柵極兩用輸出引腳。其內(nèi)部包括:一個顯示存儲器、一個控制電路和一個按鍵掃描電路。它通過一個由三根引線組成的串行接口與CPU或其它器件進(jìn)行通訊。其方框圖如圖1所示。
圖1中的顯示存儲器是用來存放顯示數(shù)據(jù)的。它由22個8bit的存儲單元組成,每個單元都有一個地址,其結(jié)構(gòu)如圖2所示。由圖2我們可以看到,偶數(shù)地址的存儲單元(如0x00單元)的每一位與Seg1~Seg8段引腳一一對應(yīng),奇數(shù)地址的存儲單元(如0x01 單元)的每一位與Seg9~Seg16 段引腳一一對應(yīng)。每兩個相鄰的存儲單元構(gòu)成一個顯示字,這些顯示字與柵極引腳一一對應(yīng)。當(dāng)某一柵級引腳被置為高電平時,存儲在與之相對應(yīng)的顯示字中的顯示內(nèi)容就被顯示出來。由于某一時刻uPD16312 只能輸出一個顯示字,所以要想使所有的顯示字都顯示出來,就必須采用時分復(fù)用的辦法,其時序圖如圖3所示。
uPD16312的主要性能特點(diǎn)如下:
(1)具有多種顯示模式,其顯示模式可在11段×11字到16段×4字的范圍內(nèi)選擇。
(2)具有按鍵掃描的功能,按鍵矩陣為6×4。
(3)顯示亮度可調(diào),共有8個亮度級。
(4)具有高電壓輸出。
(5)具有一個4bit通用輸入口和一個4通道LED輸出口。
(6) 輸出端口不需要額外的上拉或下拉電阻。
值得一提的是,uPD16312除了可完成對VFD器件的驅(qū)動與控制外,還具有鍵盤掃描等功能,而這些已超出了本文的討論范圍,在本文中將不做論述。
uPD16312是一個可編程器件。它的任何一種功能都需要對其編程后才能實(shí)現(xiàn)。由于uPD16312的外圍電路較簡單,因此如何對其編程成了應(yīng)用的關(guān)鍵。要想對uPD16312正確編程,就必須了解它的控制命令以及向它傳送數(shù)據(jù)與命令的時序。
2 uPD16312的控制命令與串行口時序
2.1 uPD16312的控制命令
uPD16312有四條控制命令,它們是顯示模式命令、數(shù)據(jù)設(shè)置命令、地址設(shè)置命令和顯示控制命令。
顯示模式命令用來設(shè)置uPD16312的顯示模式。其命令的格式如圖4所示。圖4中,“-”表示該位可設(shè)置為任意值;b0、b1、b2的不同組合決定了所選的顯示模式,如表1所示。在芯片剛接通電源時,顯示模式的缺省設(shè)置為11字×11段模式。執(zhí)行該命令時顯示會被強(qiáng)行關(guān)閉。要想恢復(fù)顯示,必須執(zhí)行一次顯示控制命令,將顯示打開。
數(shù)據(jù)設(shè)置命令用來設(shè)置數(shù)據(jù)寫入與讀出的方式。其格式如圖5所示。圖5中,b0、b1兩位用來設(shè)置數(shù)據(jù)的傳輸方向。在向顯示存儲器寫數(shù)據(jù)時,b0、b1應(yīng)設(shè)為“00”。b2位用來設(shè)置數(shù)據(jù)傳輸方式。當(dāng)b2置為1時,數(shù)據(jù)被寫入某一顯示存儲單元中,其地址由地址設(shè)置命令來設(shè)置,寫入數(shù)據(jù)后,地址不變化。當(dāng)b2設(shè)置為0時,數(shù)據(jù)以地址增量的方式進(jìn)行傳輸,即數(shù)據(jù)寫入顯示存儲器的某一存儲單元后,其地址自動加1,這意味著在這種方式下可以向顯示存儲器的某一存儲單元段連續(xù)寫入數(shù)據(jù)。b3位用來設(shè)置測試方式。當(dāng)b3置為1時,芯片工作在測試方式,當(dāng)b3置為0時,芯片處于正常工作方式。在芯片剛接通電源時,芯片處于正常工作方式且數(shù)據(jù)以地址增量方式傳輸。
地址設(shè)置命令用來設(shè)置要寫入數(shù)據(jù)的存儲單元地址,其命令格式如圖6所示。圖6中,b0、b1、b2、b3、b4五位用來設(shè)置存儲單元地址,其范圍為0x00H~0x15H。當(dāng)寫入地址超出這一范圍時,數(shù)據(jù)將不被寫入。在芯片剛接通電源時,地址的缺省設(shè)置為0x00H。
顯示控制命令用來控制顯示的開與關(guān)以及顯示亮度,其命令格式如圖7所示。圖7中,b3位用來控制顯示的開與關(guān)。當(dāng)b3置為0時,顯示被關(guān)閉;當(dāng)b3置為1時,顯示被打開。b0、b1、b2三位用來控制柵極脈沖寬度,如表2所示。uPD16312通過對柵極脈沖寬度的控制實(shí)現(xiàn)對顯示亮度的控制。當(dāng)芯片剛接通電源時,顯示處于關(guān)狀態(tài),柵極脈沖寬度為TDISP。
2.2串行接口的時序
uPD16312是通過一個串行接口與CPU及其它器件進(jìn)行通訊的,其串行接口的時序如圖8所示。圖8中,只有當(dāng)STB為低電平時,uPD16312方可從Din上讀取數(shù)據(jù),而且數(shù)據(jù)讀取是在CLK信號上升沿到來時進(jìn)行的。uPD16312的控制命令必須在STB剛由高電平變?yōu)榈碗娖綍r傳輸。只有在給uPD16312傳輸完一條命令后,方可向uPD16312的顯示存儲器寫入數(shù)據(jù),對uPD16312的編程實(shí)際上就是指根據(jù)系統(tǒng)的需要正確地向uPD16312寫入命令和顯示數(shù)據(jù)。
3 uPD16312在VFD顯示系統(tǒng)中的應(yīng)用
3.1系統(tǒng)的組成
在我們所開發(fā)的DVD視盤機(jī)中,VFD系統(tǒng)主要由SH7043、uPD16312、VFD顯示器件及少量的分立器件組成,其系統(tǒng)框圖如圖9所示。其中SH7043是日立公司的微處理器。由于SH7043中沒有與uPD16312相匹配的串行接口,所以將其端口D中的PD29、PD30、PD31引腳作為與uPD16312 進(jìn)行通訊的端口,用來傳送指令和數(shù)據(jù)。其中PD29與uPD16312的STB引腳相連,PD30與uPD16312的DIN引腳相連,PD31與uPD16312的CLK引腳相連。在本系統(tǒng)中,VFD顯示器件采用FUTABA的熒光顯示管。它具有6個柵極和16個陽極,顯示的字符共有三種顏色,可顯示的內(nèi)容十分豐富,完全能滿足DVD視盤機(jī)對VFD顯示的要求。由于所采用的VFD顯示器件是6Grid×16Anode類型的,所以uPD16312在具體應(yīng)用時,要設(shè)置成6字×16段模式。這時,uPD16312的Pin28~Pin31、Pin26要做為柵極引腳使用。整個系統(tǒng)的硬件電路較為簡單,其軟件編程相對復(fù)雜一些。
3.2 VFD顯示程序的編制
我們開發(fā)的DVD控制軟件是在SH7043專用開發(fā)環(huán)境下編制的。VFD顯示功能主要由zdisp.c和pda_vfd.c模塊完成。程序運(yùn)行時首先進(jìn)行初始化,在初始化過程中要完成對SH7043相應(yīng)I/O端口D設(shè)置,以及為程序中使用的一些變量設(shè)置初始值,其中最重要的一項(xiàng)工作是對uPD16312進(jìn)行初始化設(shè)置,這部分工作由模塊pda_vfd.c中的子程序vfd_init()完成,其程序流程圖如圖10所示。初始化完成后,zdisp.c任務(wù)模塊和pda_vfd.c任務(wù)模塊均處在等待接收“event”狀態(tài)。系統(tǒng)其它模塊如果有信息要顯示,就向zdisp.c模塊發(fā)送相應(yīng)的“event”。zdisp.c模塊接到系統(tǒng)其它模塊發(fā)給它的“event”后,就對要顯示的信息進(jìn)行分析處理,得到一組符合VFD顯示器件字符編碼要求的數(shù)據(jù),然后向pda_vfd.c模塊發(fā)出“event ”。模塊pda_vfd.c接到zdisp.c發(fā)給它的“event”后,就通過由PD29、PD30、PD31三引腳組成的串行口將指令和數(shù)據(jù)寫入到uPD16312中去,驅(qū)動VFD顯示器件顯示出正確的信息。
從上述工作過程可以看出,模塊zdisp.c主要是將要顯示的信息處理成符合VFD顯示器件字符編碼規(guī)則的一組數(shù)據(jù)。在模塊zdisp.c中完成這一功能的子程序是vdsp_req(),其流程圖如圖11所示。由圖11可知,需要VFD顯示的信息可分為6種,這6種信息分別由6個子程序進(jìn)行處理。下面以子程序vdsp_req_disc()為例說明如何將要顯示的信息轉(zhuǎn)換成符合VFD顯示器件字符編碼規(guī)則的數(shù)據(jù)。
在模塊zdisp.c中,定義數(shù)組vfd_disp_buf[ ]用來存放處理好的數(shù)據(jù),該數(shù)組與uPD16312中的顯示存儲器一一對應(yīng)。子程序vdsp_req_disc( )主要完成的工作是對碟片種類顯示信息進(jìn)行處理。由于VFD顯示器件上各種字符的編碼規(guī)則不同,對各種顯示信息的處理方式也有所不同。有些信息的處理是對vfd_disp_buf[ ]數(shù)組中相應(yīng)某一元素的某一位置位,如對“VCD”、“DVD”等信息的處理就是這樣;有些信息,如“cd”、“NO DISC″等信息,則要按照VFD顯示器件字符編碼規(guī)則的要求進(jìn)行編碼,將得到的一組代碼存入數(shù)組vfd_disp_buf[ ]中相應(yīng)的元素中。子程序vdisp_req_disc( )的流程圖如圖12所示。
處理好的信息存入vfd_disp_buf[ ]后,接下來的工作就是把數(shù)組vfd_disp_buf[ ]中的數(shù)據(jù)傳送到uPD16312的顯示存儲器中去。這部分工作是由模塊pda_vfd.c完成的,其程序流程圖如圖13所示。圖13中,子程序vfd_byte_set( )的作用是按照uPD16312串行口的時序向uPD16312顯示存儲器中傳輸一個8位的顯示數(shù)據(jù)或命令,其流程圖如圖14 所示。圖14中,data中存放要傳輸?shù)?位數(shù)據(jù)或命令。利用子程序vfd_byte_set( )可及時地刷新uPD16312顯示存儲器中所用到的各個顯示單元,從而使VFD顯示出正確的信息。
目前,本公司研制開發(fā)的DP2000型DVD視盤機(jī)中已采用了uPD16312作為其VFD顯示電路的核心芯片。該機(jī)型已批量投產(chǎn),并已在公司內(nèi)通過高低溫老化試驗(yàn)、安全試驗(yàn)及電磁兼容測試。這充分證明了 uPD16312是一種可靠性高、實(shí)用性好的集成電路,完全能滿足DVD視盤機(jī)對VFD顯示驅(qū)動控制芯片的要求。