楊凌 曾文波 鐘建坤 楊錦喜
摘要:U盾密碼器應(yīng)用廣泛,選用外形美觀的微型U盾液晶顯示屏,為了保證微型U盾液晶顯示屏模組的性能,選用功耗低,組件數(shù)量少,性能穩(wěn)定的驅(qū)動(dòng)器ST7567A。針對(duì)驅(qū)動(dòng)器,闡述了驅(qū)動(dòng)器的特點(diǎn),研究了驅(qū)動(dòng)器的硬件引腳及驅(qū)動(dòng)方式。采用微處理器STC89C52對(duì)微型U盾液晶顯示模組進(jìn)行驅(qū)動(dòng)設(shè)計(jì),驅(qū)動(dòng)器與微處理器之間使用4線SPI接口時(shí)序通信方式,針對(duì)U盾液晶顯示屏設(shè)計(jì)了驅(qū)動(dòng)電路,并對(duì)屏幕顯示功能進(jìn)行了軟件設(shè)計(jì)。實(shí)現(xiàn)了U盾液晶顯示屏屏幕顯示漢字及圖片的功能。
關(guān)鍵詞:U盾液晶顯示屏;驅(qū)動(dòng)器;ST7567A;顯示
中圖分類(lèi)號(hào):TP311? ? ?文獻(xiàn)標(biāo)識(shí)碼:A
文章編號(hào):1009-3044(2022)30-0095-03
開(kāi)放科學(xué)(資源服務(wù))標(biāo)識(shí)碼(OSID):
1 引言
U盾密碼器是用于網(wǎng)上銀行電子簽名和數(shù)字認(rèn)證的工具,它能夠防止各種木馬病毒、黑客等網(wǎng)絡(luò)不安全因素,保障網(wǎng)上銀行資金的安全[1]。隨著U盾的廣泛使用,U盾的核心部件液晶顯示模組的需求也日漸提高。
本文使用的微型U盾液晶顯示屏型號(hào)為YMK12864P,外形設(shè)計(jì)美觀,屏幕非可視區(qū)域?qū)挾饶軌蜻_(dá)到0.9mm,且無(wú)須擴(kuò)散膜,自帶擴(kuò)散功能的底偏光片,降低了生產(chǎn)成本[2]。液晶顯示屏和驅(qū)動(dòng)器一起構(gòu)成液晶顯示模組。為了保障U盾液晶顯示模組的性能,對(duì)液晶顯示屏驅(qū)動(dòng)器的選用和設(shè)計(jì)至關(guān)重要。本文采用的微型U盾液晶顯示屏驅(qū)動(dòng)器型號(hào)為ST7567A,其功耗低,組件數(shù)量少,性能穩(wěn)定。本文通過(guò)對(duì)驅(qū)動(dòng)器的研究,針對(duì)U盾液晶顯示屏產(chǎn)品設(shè)計(jì)了驅(qū)動(dòng)電路,并對(duì)屏幕顯示功能進(jìn)行程序設(shè)計(jì)。
2 微型U盾LCD驅(qū)動(dòng)器
U盾密碼器產(chǎn)品包含了液晶顯示屏及驅(qū)動(dòng)器。ST7567A是一款單芯片點(diǎn)陣式LCD驅(qū)動(dòng)器,內(nèi)置振蕩電路和低功率電源電路,無(wú)須外部時(shí)鐘或電源即可產(chǎn)生LCD驅(qū)動(dòng)信號(hào),從而可以制造出組件數(shù)量少,功耗最低的顯示系統(tǒng)。
ST7567A可直接連接到具有8位并行接口,4線串行接口,3線串行接口或I2C串行接口的微處理器。本文使用的是4線串行接口(4-SPI)連接方式。
ST7567A內(nèi)部有一個(gè)存儲(chǔ)顯示數(shù)據(jù)RAM,簡(jiǎn)稱為DDRAM,用于存儲(chǔ)LCD顯示屏的點(diǎn)陣數(shù)據(jù)。微處理器能夠通過(guò)I/0口對(duì)DDRAM進(jìn)行讀取和寫(xiě)入,在LCD顯示數(shù)據(jù)的時(shí)候同時(shí),數(shù)據(jù)也可以寫(xiě)入DDRAM。
2.1 硬件引腳
ST7576A硬件引腳如圖1所示。部分引腳功能為:
(1)引腳SEG0-SEG131,COM0-COM63和COMS為驅(qū)動(dòng)器輸出引腳。
(2)微處理器接口引腳為RSTB、CSB、A0。RSTB引腳用于硬件復(fù)位,內(nèi)部初始化。CSB引腳為片選輸入端,當(dāng)CSB=0時(shí)啟用接口訪問(wèn)。A0引腳用于判斷D[7:0]上的信號(hào)是數(shù)據(jù)還是命令,當(dāng)A0=1時(shí)表示顯示數(shù)據(jù),當(dāng)A0=0時(shí)表示信號(hào)為命令。
(3)配置引腳包含SI2、PSB、C86,用于選擇接口類(lèi)型,如表1所示,其中“0”表示低電平,“1”表示高電平。本文采用串行4線SPI傳輸方式,因此設(shè)置引腳SI2=0,PSB=0,C86=1。
2.2 4線SPI接口時(shí)序
SPI,全稱Serial Peripheral Interface,是一種通信協(xié)議。這種協(xié)議速度快,屬于同步、全雙工模式,該協(xié)議在數(shù)據(jù)傳輸時(shí)僅需四根線,占用芯片引腳數(shù)量少[3]。4線SPI接口時(shí)序圖如圖2所示。由時(shí)序圖可知,當(dāng)CSB為高電平時(shí),D0-D7引腳為高阻態(tài)。當(dāng)CSB為低電平時(shí),串行數(shù)據(jù)(SDA)和串行時(shí)鐘(SCL)輸入被使能。在第八個(gè)串行時(shí)鐘后,SDA上的串行數(shù)據(jù)將被處理為8位并行數(shù)據(jù)。同時(shí),引腳A0被鎖存且指示出8位并行數(shù)據(jù)是用于顯示數(shù)據(jù)還是指令。SDA上的串行數(shù)據(jù)在SCL時(shí)鐘的上升沿被鎖存。
3 硬件驅(qū)動(dòng)電路設(shè)計(jì)
3.1 微處理器STC89C52
本文使用微處理器STC89C52對(duì)微型U盾液晶顯示模組進(jìn)行驅(qū)動(dòng)。STC89C52具備低功耗、高性能的特性[4],是由STC公司生產(chǎn)的。雖然使用的仍然是MCS-51內(nèi)核,但相較于傳統(tǒng)的51單片機(jī)更加靈活實(shí)用,STC89C52具備8位CPU,自帶8K字節(jié)可編程可擦除的只讀存儲(chǔ)器,512字節(jié)的RAM,32位I/O口線[5]。能夠?yàn)榍度胧娇刂茟?yīng)用系統(tǒng)提供有效的解決方案。
微處理器STC89C52共有4組8位的可編程I/O口,分別是P0、P1、P2、P3。復(fù)位后,P0、P1、P2、P3為準(zhǔn)雙向口/弱上拉,其中P0如果作為總線擴(kuò)展用,無(wú)須添加上拉電阻,但作為I/O口用時(shí),則要設(shè)置上拉電阻[6]。每個(gè)I/O口有8個(gè)引腳,即8位,可實(shí)現(xiàn)輸入輸出功能。根據(jù)硬件的情況,本文采用8位準(zhǔn)雙向I/O口線P3,用于連接液晶顯示模組。
3.2 驅(qū)動(dòng)電路設(shè)計(jì)
硬件驅(qū)動(dòng)電路連接圖如圖3所示,其中P3.0-P3.5為微處理器STC89C52的IO引腳,CS、A0、SCL、SDA、RES為液晶顯示屏驅(qū)動(dòng)器ST7567A的引腳。YMK12864P為L(zhǎng)CD屏型號(hào),驅(qū)動(dòng)器與LCD屏共同構(gòu)成液晶顯示模組。
由于微處理器STC89C52不帶標(biāo)準(zhǔn)SPI接口[7],因此需要應(yīng)用軟件模擬的方式,使用IO口模擬SPI通信。本文采用P3.0、P3.1、P3.3、P3.4、P3.5引腳模擬SPI通信,這幾個(gè)引腳分別連接CS、A0、SCL、SDA、RES。其中,CS引腳為片選信號(hào),低電平有效,該引腳相當(dāng)于是屏幕的開(kāi)關(guān),高電平則無(wú)法對(duì)LCD屏進(jìn)行操作,只有低電平時(shí)才能對(duì)LCD屏進(jìn)行操作。A0引腳為命令/數(shù)據(jù)信號(hào),低電平時(shí)用于數(shù)據(jù)傳輸,高電平時(shí)用于命令傳輸。SCL引腳上升沿有效,SDA引腳用于數(shù)據(jù)傳輸,RES引腳是復(fù)位引腳。
4 驅(qū)動(dòng)程序設(shè)計(jì)與實(shí)現(xiàn)
4.1 屏幕顯示設(shè)計(jì)
本文在屏幕上顯示漢字及圖片,根據(jù)屏幕顯示原理,程序總體設(shè)計(jì)思路為:
(1)屏幕初始化。
(2)字模提取。采用縱向取模,字節(jié)倒序,生成字碼。
(3)設(shè)置頁(yè)地址。明確漢字或圖片所需頁(yè)數(shù)。
(4)設(shè)置列地址。列地址需要分別取地址的高位及低位。
(5)讀取漢字及圖片字碼,在屏幕上顯示效果。
4.1.1 屏幕掃描方向設(shè)計(jì)
微型U盾LCD屏YMK12864P為128*64點(diǎn)陣屏??煞譃?頁(yè),每頁(yè)8行(D7-D0),共128列。D7-D0顯示數(shù)據(jù),讀取數(shù)據(jù)時(shí)從高位開(kāi)始讀,顯示數(shù)據(jù)的每個(gè)字節(jié)后,列地址自動(dòng)增加。MX、MY用于控制屏幕的掃描方向,其中,MX用于控制屏幕列向的掃描方向,MY用于控制頁(yè)的掃描方向。屏幕掃描方向如圖4所示。當(dāng)MX=0時(shí),從第0列掃描至最后一列,當(dāng)MX=1時(shí),反向。當(dāng)MY=0時(shí),屏幕從第0頁(yè)掃描至最后一頁(yè),當(dāng)MY=1時(shí),反向。
4.1.2 漢字顯示程序設(shè)計(jì)
漢字顯示程序設(shè)計(jì)分為以下幾個(gè)步驟:
(1)字模提取
本文采用字模提取工具,根據(jù)屏幕掃描方向,設(shè)計(jì)漢字字模提取參數(shù),如圖5所示,參數(shù)為縱向取模,字節(jié)倒序,同時(shí)設(shè)置小四號(hào)字體,這樣生成的字碼點(diǎn)陣為16*16大小。
漢字“河”的字碼為:
HE[]={0x10,0x60,0x02,0x8C,0x00,0x04,0xE4,0x24,0x24,0xE4,0x04,0x04,0xFC,0x04,0x04,0x00,0x04,0x04,0x7E,0x01,0x00,0x00,0x0F,0x04,0x04,0x0F,0x40,0x80,0x7F,0x00,0x00,0x00,};
(2)設(shè)置頁(yè)地址。由于漢字大小為16*16,屏幕每頁(yè)為8行,因此一個(gè)漢字占兩頁(yè)。設(shè)置第0頁(yè)的頁(yè)面地址指令為0xb0,以此類(lèi)推,設(shè)置第n頁(yè)的頁(yè)面地址指令為0xb0+n。
(3)設(shè)置列地址。設(shè)置列地址指令又分為兩個(gè)指令,分別設(shè)置的是列地址的高四位和低四位。如果y表示漢字的列地址,yh表示地址高八位,yl表示地址第八位,則設(shè)置列地址高八位的指令為0x10+yh,設(shè)置列地址低八位的指令為0x00+yl。
(4)讀取漢字字碼數(shù)組,顯示漢字。
(5)圖片顯示時(shí),同樣遵循上述步驟,先設(shè)置頁(yè)地址和列地址,再一個(gè)一個(gè)讀取圖片字碼。實(shí)現(xiàn)圖片顯示。
4.1.3 命令與數(shù)據(jù)傳輸程序設(shè)計(jì)
根據(jù)4線SPI接口時(shí)序圖,設(shè)計(jì)發(fā)送命令程序思路為:首先設(shè)置CS引腳為低電平,A0引腳為低電平,數(shù)據(jù)一位一位傳輸。由于數(shù)據(jù)為8位,因此需要一位一位寫(xiě)入,當(dāng)SCL引腳為上升沿時(shí)數(shù)據(jù)被寫(xiě)入。程序如下:
void wcomspi(char cmd)
{
int i;
clrbit(cs);
clrbit(A0);
for(i=0;i<8;i++)
{
clrbit(scl);
if(cmd&0x80)
setbit(sda);
else
clrbit(sda);
setbit(scl);
cmd=cmd<<1;
}
setbit(cs);
}
發(fā)送數(shù)據(jù)程序和發(fā)送命令程序類(lèi)似,不同的地方在于引腳A0因設(shè)置為高電平。設(shè)計(jì)思路為:首先設(shè)置CS引腳為低電平,A0引腳為高電平,數(shù)據(jù)一位一位傳輸。由于數(shù)據(jù)為8位,因此需要一位一位寫(xiě)入,當(dāng)SCL引腳為上升沿時(shí)數(shù)據(jù)被寫(xiě)入。程序如下:
void wdataspi(char dat)
{
int i;
clrbit(cs);
setbit(A0);
for(i=0;i<8;i++)
{
clrbit(scl);
if(dat&0x80)
setbit(sda);
else
clrbit(sda);
setbit(scl);
dat=dat<<1;
}
setbit(cs);
}
4.2結(jié)果展示
U盾密碼器液晶顯示屏YMK12864P屏幕大小為128*64。顯示漢字“河源職業(yè)技術(shù)學(xué)院” 如圖6所示,每個(gè)漢字大小為16×16,因此每個(gè)字占用兩頁(yè),16列??偣菜枇袛?shù)為128,不超出屏幕范圍。
屏幕顯示?;杖鐖D7所示,圖片大小為48×48,因此圖片占用6頁(yè),48列。
5 小結(jié)
本文使用STC89C52微控制器對(duì)微型U盾密碼器液晶顯示屏模組進(jìn)行驅(qū)動(dòng)設(shè)計(jì)。研究了驅(qū)動(dòng)器ST7567A的引腳及工作時(shí)序,分析了U盾密碼器液晶顯示屏YMK12864P的顯示原理。根據(jù)顯示原理,本文設(shè)計(jì)了硬件驅(qū)動(dòng)電路,實(shí)現(xiàn)了屏幕顯示漢字與圖片的效果。該屏幕非可視區(qū)域?qū)挾容^小,無(wú)須使用擴(kuò)散膜,驅(qū)動(dòng)器及微處理器功耗低,這使得整個(gè)系統(tǒng)成本更少,耗能更低,簡(jiǎn)單實(shí)用。從結(jié)果圖可以看出,本文設(shè)計(jì)的驅(qū)動(dòng)方案具有一定的可行性,效果較好,畫(huà)面清晰穩(wěn)定。
參考文獻(xiàn):
[1] 崔文濤,唐賓徽.銀行網(wǎng)銀U盾的安全調(diào)查[J].計(jì)算機(jī)產(chǎn)品與流通,2018(7):250.
[2] 楊錦喜,鐘建坤,楊凌.一種微型U盾LCD屏的設(shè)計(jì)與研究[J].中國(guó)高新科技,2018(24):34-35.
[3] 張小景.串行外設(shè)接口通信的實(shí)現(xiàn)[J].裝備機(jī)械,2021(2):18-22,61.
[4] 方淼.一種基于STC89C52的函數(shù)信號(hào)發(fā)生器實(shí)驗(yàn)設(shè)計(jì)[J].洛陽(yáng)師范學(xué)院學(xué)報(bào),2022,41(2):42-45.
[5] 羅潛,廖文浩,柳暢.基于STC89C52單片機(jī)的車(chē)內(nèi)溫濕度智能監(jiān)控系統(tǒng)[J].儀器儀表用戶,2021,28(9):34-37.
[6] 朱桂玉,李自成,劉昌明,等.采用STC89C52單片機(jī)的無(wú)線密碼鎖[J].電子世界,2021(19):83-85.
[7] 王平.基于單片機(jī)I/O口模擬的SPI串行通信實(shí)現(xiàn)[J].電子世界,2013(14):24,26.
【通聯(lián)編輯:梁書(shū)】