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