APP下载

基于51单片机外置存储器字库系统的设计

2017-02-17南京晓庄学院电子信息工程学院苏海洋徐凯琳

电子世界 2017年2期
关键词:字库存储器液晶

南京晓庄学院电子信息工程学院 苏海洋 谢 军 徐凯琳

基于51单片机外置存储器字库系统的设计

南京晓庄学院电子信息工程学院 苏海洋 谢 军 徐凯琳

以STC15单片机为核心、W25Q64为存储芯片的字库系统。在电脑上制作任意字体的字库文件放入SD卡,通过单片机读取SD卡中数据,存入至存储芯片W25Q64中。单片机可调用存储芯片中的字模,实现在液晶显示屏显示任意GBK字符。该系统可以减轻单片机Flash的占用,以及减少单片机编程频繁取摸的麻烦。

字库;单片机;W25Q64;存储器;LCD显示

0 引言

目前,单片机芯片性能飞速发展。但某些单片机芯片受制于价格的原因,内部Flash存储器容量并未有大的飞跃。而中文常用字库有6000之多,加之繁体及不常用字库有上万个。而在做汉字显示时,就无法将所有字模放入单片机中。通常的做法是,采用带有字库芯片的显示屏。或者放弃部分不需要使用的字的字模,只取需要显示的字模放入单片机内部。这两种方法均可以实现汉字显示,但第一种方法缺乏个性化,无法通过单片机灵活操作显示屏显示点、圆、线等特殊图案。第二种方法虽说可以实现灵活显示汉字和特殊图案,但取模工作量大,且无法实现所有汉字的显示。因此,设计一款外置存储字库的芯片将完全解决上述的问题。

1 系统总体设计

1.1 系统组成

系统组成框图如图1所示:

图1 系统组成框图

1.2 系统工作原理

本系统使用STC15W4K58单片机作为微处理器。根据液晶显示方式,使用取模软件获取GBK字符集的所有汉字的字模,并通过软件将取模文件生成二进制文件(.bin文件)。使用单片机读取SD卡中的bin文件,并将bin文件中的所有数据依次存放至W25Q64存储芯片中。当需要显示某个汉字时,直接使用函数调用显示函数。显示函数会根据函数实参传递过来的汉字内码到W25Q64地址内寻找该字的字模。从而实现汉字显示的直接函数调用,方便编程。

2 硬件设计

2.1 主控电路设计

系统使用51内核的单片机。该单片机为初学者常使用单片机。使用该单片机可以更好的体现字库的重要性。同时更加容易融合在日后的设计当中。该单片机拥有高达36MHz的内部时钟电路,支持单时钟周期,速度比传统8051快8~12倍。并且支持2.4V~5.5V宽电压。并支持四个完全独立的高速异步串行通讯端口等。对于本设计性能完全满足要求。

STC15单片机如图2所示:

图2 STC15单片机电路原理图

2.2 SD模块的设计

该电路采用SD卡座,并将所有引脚引出至单片机IO口。使用10k电阻对信号进行上拉,提高信号的可靠性能。并且为了SD卡更稳定的工作,该模块采用独立供电,将电源模块供的5V电源使用ASM1117-3.3芯片进行二次稳压。以此确保SD卡供电的稳定。

图3 字库存储模块电路原理图

2.3 字库存储模块

W25Q64是一个64M-bit的串行Flash存储器。该芯片采用STO-8封装,相比一般存储器占用PCB面积更小,使用更加灵活。该芯片支持的工作电压2.7V~3.6V,工作电流小于5mA,睡眠电流1uA。可见功耗非常低。

图4 字库存储模块电路原理图

系统采用DC5V供电,但存储芯片的工作电压最高为3.6V。因此,在字库存储模块中,仍然采用ASM1117-3.3V芯片作为二级稳压,在芯片电源两端并入0.1uF瓷片电容,滤出电源高频信号,并起到去耦电容的效果。对W25Q64信号控制引脚使用10k电阻进行上拉(图中R1~R5),以此保障W25Q64的稳定工作。

2.4 LCD显示模块

该系统使用市场上最常见的带字库LCD液晶显示屏128*64,但在程序中屏蔽了LCD液晶显示屏本身自带的字库,使用LCD液晶显示屏的画图功能来实现显示汉字。该方法和使用无字库LCD液晶显示屏效果一样。

/**子函数形参说明

-----Row 汉字需要显示的开始行

-----col 汉字需要显示的开始行

----*pstr 需要显示的的内容

**/

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显示子函数

3 系统整体调试及其主要技术

将以上电路模块连接起来后,通过编写程序控制各个模块运作。实现以下功能。

开机自动将SD卡中的字库下载至W25Q64;

(2)可通过LCD显示存储器内部的汉字;

可通过程序调用任意汉字,无需再次取摸;

)断电后,重新上电.W25Q64字库信息仍然存在。

3.1 主程序流程图

主程序流程图如图5所示:

图5 系统主程序流程图

3.2 主要程序说明

程序一:读取SD卡中字模信息并写入W25Q64内。

W25X_ChipErase();//格式化W25Q64

clear_screen(); //清除液晶屏

do

{

SD_Read_Sector(520+j,date);//读取SD卡第520扇区 一次读512个数据

SPI_Flash_Write_NoCheck(date,512*j,512);//将读到的数据写入W25Q64内,从0x000000地址开始写 每一次加512

delaynms(100);//延时100ms给器件反应时间,以免出错。

}while(date[511]!=0xff); //判断读到的数据是否为“空”,为“空”停止操作,否则继续循环。

clear_screen(); //清除液晶屏

程序3-2-1 写入字模

程序二:字模的调用

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 字模的调用

程序三:显示汉字程序

display_GBK(”这是范例程序”,word); //获取“这是范例程序”的字模,并放入word数组内

HZ_display(0,0,word);//将word数组的数据放入到显示程序内通过以上程序,可以显示任意汉字。因为每个汉字有一个内码,所以在写入程序实参时只需要将汉字加引号即可转化成汉字的编码。然后根据汉字的编码至存储器里寻找对应的字模。

4 结论

通过一段时间的设计和研究,完成了以51内核单片机为核心的汉字字库制作。实现了将GBK字符集两万多个汉字的字模放入存储器中,并且通过单片机的读取,可以实现对任意汉字的显示工作。该系统可以采用模块化设计。可以很好地与各类系统结合,大大减少日后对类似功能的开发。目前系统仅仅实验了一种字体,在接下来的时间里,将继续对该系统进行优化,从而实现多种字体的任意调用,这样液晶的显示就会更加个性化。

[1]谭浩强.C程序设计(第三版)[M].清华大学出版社,2005,07.

[2]杨西明.单片机编程与应用入门[M].机械工业出版社,2005.

[3]丁镇生.传感器及传感技术应用[M].北京:电子工业出版社,1998:59-72.

[4]刘永强.8098单片机和控制的带字库汉字显示系统[J].电子技术用,1996(01).

[5]徐卓农,张永忠.单片机系统中的汉字显示[J].单片机与嵌入式系统用,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—),男,大学本科,主要研究方向:电路与系统。

谢军(1978—),男,硕士研究生,讲师,主要研究方向:电路与系统。

徐凯琳(1994—),女,大学本科,主要研究方向:电路与系统。

猜你喜欢

字库存储器液晶
不可压液晶方程组的Serrin解
静态随机存储器在轨自检算法
No.2 喜茶联合汉仪字库推出微型书和书签
《液晶与显示》征稿简则
论计算机字库单字的著作权保护
——以方正诉宝洁案为例
老家的惜字库
液晶与显示2015年第30卷第1期 目录
存储器——安格尔(墨西哥)▲
液晶与显示2014年第29卷第2期 目录
基于Nand Flash的高速存储器结构设计