南京曉莊學(xué)院電子信息工程學(xué)院 蘇海洋 謝 軍 徐凱琳
基于51單片機外置存儲器字庫系統(tǒng)的設(shè)計
南京曉莊學(xué)院電子信息工程學(xué)院 蘇海洋 謝 軍 徐凱琳
以STC15單片機為核心、W25Q64為存儲芯片的字庫系統(tǒng)。在電腦上制作任意字體的字庫文件放入SD卡,通過單片機讀取SD卡中數(shù)據(jù),存入至存儲芯片W25Q64中。單片機可調(diào)用存儲芯片中的字模,實現(xiàn)在液晶顯示屏顯示任意GBK字符。該系統(tǒng)可以減輕單片機Flash的占用,以及減少單片機編程頻繁取摸的麻煩。
字庫;單片機;W25Q64;存儲器;LCD顯示
目前,單片機芯片性能飛速發(fā)展。但某些單片機芯片受制于價格的原因,內(nèi)部Flash存儲器容量并未有大的飛躍。而中文常用字庫有6000之多,加之繁體及不常用字庫有上萬個。而在做漢字顯示時,就無法將所有字模放入單片機中。通常的做法是,采用帶有字庫芯片的顯示屏?;蛘叻艞壊糠植恍枰褂玫淖值淖帜?,只取需要顯示的字模放入單片機內(nèi)部。這兩種方法均可以實現(xiàn)漢字顯示,但第一種方法缺乏個性化,無法通過單片機靈活操作顯示屏顯示點、圓、線等特殊圖案。第二種方法雖說可以實現(xiàn)靈活顯示漢字和特殊圖案,但取模工作量大,且無法實現(xiàn)所有漢字的顯示。因此,設(shè)計一款外置存儲字庫的芯片將完全解決上述的問題。
1.1 系統(tǒng)組成
系統(tǒng)組成框圖如圖1所示:
圖1 系統(tǒng)組成框圖
1.2 系統(tǒng)工作原理
本系統(tǒng)使用STC15W4K58單片機作為微處理器。根據(jù)液晶顯示方式,使用取模軟件獲取GBK字符集的所有漢字的字模,并通過軟件將取模文件生成二進制文件(.bin文件)。使用單片機讀取SD卡中的bin文件,并將bin文件中的所有數(shù)據(jù)依次存放至W25Q64存儲芯片中。當需要顯示某個漢字時,直接使用函數(shù)調(diào)用顯示函數(shù)。顯示函數(shù)會根據(jù)函數(shù)實參傳遞過來的漢字內(nèi)碼到W25Q64地址內(nèi)尋找該字的字模。從而實現(xiàn)漢字顯示的直接函數(shù)調(diào)用,方便編程。
2.1 主控電路設(shè)計
系統(tǒng)使用51內(nèi)核的單片機。該單片機為初學(xué)者常使用單片機。使用該單片機可以更好的體現(xiàn)字庫的重要性。同時更加容易融合在日后的設(shè)計當中。該單片機擁有高達36MHz的內(nèi)部時鐘電路,支持單時鐘周期,速度比傳統(tǒng)8051快8~12倍。并且支持2.4V~5.5V寬電壓。并支持四個完全獨立的高速異步串行通訊端口等。對于本設(shè)計性能完全滿足要求。
STC15單片機如圖2所示:
圖2 STC15單片機電路原理圖
2.2 SD模塊的設(shè)計
該電路采用SD卡座,并將所有引腳引出至單片機IO口。使用10k電阻對信號進行上拉,提高信號的可靠性能。并且為了SD卡更穩(wěn)定的工作,該模塊采用獨立供電,將電源模塊供的5V電源使用ASM1117-3.3芯片進行二次穩(wěn)壓。以此確保SD卡供電的穩(wěn)定。
圖3 字庫存儲模塊電路原理圖
2.3 字庫存儲模塊
W25Q64是一個64M-bit的串行Flash存儲器。該芯片采用STO-8封裝,相比一般存儲器占用PCB面積更小,使用更加靈活。該芯片支持的工作電壓2.7V~3.6V,工作電流小于5mA,睡眠電流1uA??梢姽姆浅5?。
圖4 字庫存儲模塊電路原理圖
系統(tǒng)采用DC5V供電,但存儲芯片的工作電壓最高為3.6V。因此,在字庫存儲模塊中,仍然采用ASM1117-3.3V芯片作為二級穩(wěn)壓,在芯片電源兩端并入0.1uF瓷片電容,濾出電源高頻信號,并起到去耦電容的效果。對W25Q64信號控制引腳使用10k電阻進行上拉(圖中R1~R5),以此保障W25Q64的穩(wěn)定工作。
2.4 LCD顯示模塊
該系統(tǒng)使用市場上最常見的帶字庫LCD液晶顯示屏128*64,但在程序中屏蔽了LCD液晶顯示屏本身自帶的字庫,使用LCD液晶顯示屏的畫圖功能來實現(xiàn)顯示漢字。該方法和使用無字庫LCD液晶顯示屏效果一樣。
/**子函數(shù)形參說明
-----Row 漢字需要顯示的開始行
-----col 漢字需要顯示的開始行
----*pstr 需要顯示的的內(nèi)容
**/
void word_disp(uchar row,col,char *pstr,)
{ uchar i=0,j,index = 0,k;
for(;*pstr;pstr+=2,col+=16){
for(k=0;k<100;k++)
if(*(int*)pstr==hzindex[k]) break;
index=0;
for (j = 0; j <16; j++) {
wr_i_lcd(0x34);
if(row==0){
wr_i_lcd(0x80+j);
wr_i_lcd(0x80+col+i);}
else if(row==1){
wr_i_lcd(0x90+j);
wr_i_lcd(0x80+col+i);}
else if(row==2) {
wr_i_lcd(0x80+j);
wr_i_lcd(0x88+col+i);}
else {
wr_i_lcd(0x90+j);
wr_i_lcd(0x98+col+i);}
wr_i_lcd(0x30);
wr_d_lcd(word[k*32+index++]);
wr_d_lcd(word[k*32+index++]);}
i++;}
i=0;
wr_i_lcd(0x36); //打開繪圖顯示
}
程序2.4 LCD顯示子函數(shù)
將以上電路模塊連接起來后,通過編寫程序控制各個模塊運作。實現(xiàn)以下功能。
開機自動將SD卡中的字庫下載至W25Q64;
(2)可通過LCD顯示存儲器內(nèi)部的漢字;
可通過程序調(diào)用任意漢字,無需再次取摸;
)斷電后,重新上電.W25Q64字庫信息仍然存在。
3.1 主程序流程圖
主程序流程圖如圖5所示:
圖5 系統(tǒng)主程序流程圖
3.2 主要程序說明
程序一:讀取SD卡中字模信息并寫入W25Q64內(nèi)。
W25X_ChipErase();//格式化W25Q64
clear_screen(); //清除液晶屏
do
{
SD_Read_Sector(520+j,date);//讀取SD卡第520扇區(qū) 一次讀512個數(shù)據(jù)
SPI_Flash_Write_NoCheck(date,512*j,512);//將讀到的數(shù)據(jù)寫入W25Q64內(nèi),從0x000000地址開始寫 每一次加512
delaynms(100);//延時100ms給器件反應(yīng)時間,以免出錯。
}while(date[511]!=0xff); //判斷讀到的數(shù)據(jù)是否為“空”,為“空”停止操作,否則繼續(xù)循環(huán)。
clear_screen(); //清除液晶屏
程序3-2-1 寫入字模
程序二:字模的調(diào)用
void display_GBK(uchar *deat,uchar *dz_data)
{
uchar dat_H,dat_L,i,j;
unsigned long offset;
for(i=0;i<16;i++)
{
dat_H =*(deat+i*2);
dat_L =*(deat+i*2+1);
if(dat_H>0XFE||dat_H<0X81)return;dat_H -=0x81;
dat_L -=0x40;
offset=((unsigned long)192* dat_H+GBKL)*32;
SPI_Flash_Read(dz_data+32*i,offset,32);
}
return;
}
程序3-2-1 字模的調(diào)用
程序三:顯示漢字程序
display_GBK(”這是范例程序”,word); //獲取“這是范例程序”的字模,并放入word數(shù)組內(nèi)
HZ_display(0,0,word);//將word數(shù)組的數(shù)據(jù)放入到顯示程序內(nèi)通過以上程序,可以顯示任意漢字。因為每個漢字有一個內(nèi)碼,所以在寫入程序?qū)崊r只需要將漢字加引號即可轉(zhuǎn)化成漢字的編碼。然后根據(jù)漢字的編碼至存儲器里尋找對應(yīng)的字模。
通過一段時間的設(shè)計和研究,完成了以51內(nèi)核單片機為核心的漢字字庫制作。實現(xiàn)了將GBK字符集兩萬多個漢字的字模放入存儲器中,并且通過單片機的讀取,可以實現(xiàn)對任意漢字的顯示工作。該系統(tǒng)可以采用模塊化設(shè)計。可以很好地與各類系統(tǒng)結(jié)合,大大減少日后對類似功能的開發(fā)。目前系統(tǒng)僅僅實驗了一種字體,在接下來的時間里,將繼續(xù)對該系統(tǒng)進行優(yōu)化,從而實現(xiàn)多種字體的任意調(diào)用,這樣液晶的顯示就會更加個性化。
[1]譚浩強.C程序設(shè)計(第三版)[M].清華大學(xué)出版社,2005,07.
[2]楊西明.單片機編程與應(yīng)用入門[M].機械工業(yè)出版社,2005.
[3]丁鎮(zhèn)生.傳感器及傳感技術(shù)應(yīng)用[M].北京:電子工業(yè)出版社,1998:59-72.
[4]劉永強.8098單片機和控制的帶字庫漢字顯示系統(tǒng)[J].電子技術(shù)用,1996(01).
[5]徐卓農(nóng),張永忠.單片機系統(tǒng)中的漢字顯示[J].單片機與嵌入式系統(tǒng)用,2001(07).
[6]王海欣,黃海宏.液晶顯示器的漢字顯示方法[J].液晶與顯示,2005(02).
Based on 51 single chip microcomputer external memory word stock system design
Su Haiyang1,Xie Jun1,Xu Kailin1
(1.NanJing Xiao Zhuang University,Nanjing 211100,China)
STC15 single-chip microcomputer as the core,W25Q64 word stock system for memory chips.Make any font fle on the computer in the SD card,through the microcontroller reads the data in SD card,deposit to the memory chip W25Q64.MCU can call type of memory chips,implementation in the LCD screen display any GBK character.The system can reduce microcontroller Flash,and reduce the microcontroller programming frequently take a touch of trouble.
LCD Display;MCU;W25Q64;Word Stock
蘇海洋(1995—),男,大學(xué)本科,主要研究方向:電路與系統(tǒng)。
謝軍(1978—),男,碩士研究生,講師,主要研究方向:電路與系統(tǒng)。
徐凱琳(1994—),女,大學(xué)本科,主要研究方向:電路與系統(tǒng)。