winfuture 发表于 2010-1-1 23:06:05

做一块自带5110英文字库的单片机(程序中不需要字库代码)

最近看了看STC的PDF,上面的资源比传统51要多些,比如自带的RAM扩展,内部EEPROM等
但是好像都不太常用。忽然想到可以利用一下内部的EEPROM,把NOKIA5110液晶的英文字库写到
里面去,程序里面就不需要在写字库数据了!哈哈,貌似不错的想法。

用了两个小时的时间终于做成功了,哈哈,还相当不错(自我感觉良好 (^-^) ),上传给大家参考参考。

先说思路:
1.先写一个程序(对EEPROM操作的程序),把字库数据写到EEPROM中保存起来(当然具体位置我们应该要清楚)。
2.修改原来5110中写字符的函数,字模数据来自EEPROM中,去掉原程序中的字库数据。

其实还是蛮简单的哈!

先看几张图咯:
http://cache.amobbs.com/bbs_upload782111/files_24/ourdev_521425.jpg
(原文件名:2.jpg)

http://cache.amobbs.com/bbs_upload782111/files_24/ourdev_521426.jpg
(原文件名:3.jpg)

http://cache.amobbs.com/bbs_upload782111/files_24/ourdev_521427.jpg
(原文件名:4.jpg)

http://cache.amobbs.com/bbs_upload782111/files_24/ourdev_521428.jpg
写入EEPROM中的字库数据 (原文件名:5.jpg)

源程序如下:

两个程序都在里面ourdev_521423.rar(文件大小:284K) (原文件名:STC自带5110字库.rar)
(WR_EEPROM文件夹为写eeprom的程序(该程序实现把5110英文字库的数据写到单片机内部eeprom中),先把该程序下载到单片机,用串口依次发送命令:"X#commd""W#commd""R#commd",把字库数据写到eeprom中,5110字库即永久保存在单片机内,这就是一块自带英文字库的单片机啦!

然后再烧写EEPROM_ZIKU文件夹内的程序即可。

**此程序用的单片机为STC89C52RC,如用STC其他型号单片机则应修改相应的eeprom地址(因为不同的信号EEPROM地址不同,具体见
STC的PDF手册))

soulcoffee 发表于 2010-1-1 23:10:48

感觉会更麻烦,还不入程序里带字库方便,

winfuture 发表于 2010-1-1 23:14:58

回复【1楼】soulcoffee 崔超
-----------------------------------------------------------------------
不麻烦,还省ROM。其实更重要的是学会了对STCEEPROM的操作。    呵呵,纯属个人想法哈!

winfuture 发表于 2010-1-1 23:17:23

//**********************************************************************
// NOKIA5110_w_char: 显示英文字符
// 输入参数:c   :显示的字符;
//**********************************************************************
void NOKIA5110_w_char(unsigned char c)
{
        unsigned char i;
        unsigned int addr;

        addr = (c-32)*5;                             // 字模在eeprom的地址
        NOKIA5110_w_byte(0,1);               // 第一列为空白
        for( i=0;i<5;i++ )
        {
                STC_EEPROM_R(addr+i);         // 从eeprom中读出字模数据
                NOKIA5110_w_byte(ep_data,1);// 向LCD写如数据
        }
}
//**********************************************************************
// NOKIA5110_w_char_string: 英文字符串显示函数
// 输入参数:*s      :英文字符串指针;
//         X、Y    : 显示字符串的位置,x 0-83 ,y 0-5
//**********************************************************************
void NOKIA5110_w_char_string(unsigned char X,unsigned char Y,char *str)
{
        NOKIA5110_set_XY(X,Y);
        while (*str)
        {
                NOKIA5110_w_char(*str);
                str++;
        }
}
#endif

fang45 发表于 2010-1-2 17:20:22

mark

avic 发表于 2010-1-2 23:31:06

mark

boy364100 发表于 2010-3-1 15:42:09

强烈关注,顶~~~

yongli_gong 发表于 2010-12-22 21:24:50

mark,顶一下。

waking 发表于 2011-4-17 19:16:37

非常好!

ken_ly 发表于 2011-4-17 20:24:49

这个比较感兴趣

sankunchai 发表于 2011-4-18 08:55:35

想法不错,赞一个。

qq635274216 发表于 2011-4-19 19:22:34

能做个简易的汉子字库吗?

winfuture 发表于 2011-4-19 23:20:10

回复【12楼】qq635274216
-----------------------------------------------------------------------

可以,就是单片机的存储空间不够,一个12X12的中文字库要190K,16X16的要255K。
不过可以放到一个1MByte 的 NOR Flash中,还可以存放好几种字体。

danceman_uk 发表于 2011-4-20 20:10:09

有英文也不错了.谢谢楼主!

gwq168 发表于 2011-4-20 21:34:23

看下学习了。

cctv02 发表于 2011-4-21 10:27:32

谢谢分享 标记下

3050311118 发表于 2011-5-26 23:13:33

MARK

loycolor 发表于 2011-6-26 11:18:02

楼主做一个16x16 字库嘛好做一个 12x12的字库   
同时要有粗体和正常两种

   大小不用担心   外扩 eeprom 撒

./emotion/em131.gif

l09046162 发表于 2011-8-27 21:48:23

mark

知识阅览者 发表于 2015-5-22 16:34:56

这个不错,靠谱!!
页: [1]
查看完整版本: 做一块自带5110英文字库的单片机(程序中不需要字库代码)