搜索
bottom↓
回复: 21

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

[复制链接]

出0入0汤圆

发表于 2010-1-1 23:06:05 | 显示全部楼层 |阅读模式
最近看了看STC的PDF,上面的资源比传统51要多些,比如自带的RAM扩展,内部EEPROM等
但是好像都不太常用。忽然想到可以利用一下内部的EEPROM,把NOKIA5110液晶的英文字库写到
里面去,程序里面就不需要在写字库数据了!哈哈,貌似不错的想法。

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

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

其实还是蛮简单的哈!

先看几张图咯:

(原文件名:2.jpg)


(原文件名:3.jpg)


(原文件名:4.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手册))

阿莫论坛20周年了!感谢大家的支持与爱护!!

一只鸟敢站在脆弱的枝条上歇脚,它依仗的不是枝条不会断,而是自己有翅膀,会飞。

出0入0汤圆

发表于 2010-1-1 23:10:48 | 显示全部楼层
感觉会更麻烦,还不入程序里带字库方便,

出0入0汤圆

 楼主| 发表于 2010-1-1 23:14:58 | 显示全部楼层
回复【1楼】soulcoffee 崔超
-----------------------------------------------------------------------
不麻烦,还省ROM。其实更重要的是学会了对STCEEPROM的操作。    呵呵,纯属个人想法哈!

出0入0汤圆

 楼主| 发表于 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

出0入0汤圆

发表于 2010-1-2 17:20:22 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-1-2 23:31:06 | 显示全部楼层
mark

出0入0汤圆

发表于 2010-3-1 15:42:09 | 显示全部楼层
强烈关注,顶~~~

出0入0汤圆

发表于 2010-12-22 21:24:50 | 显示全部楼层
mark,顶一下。

出0入0汤圆

发表于 2011-4-17 19:16:37 | 显示全部楼层
非常好!

出0入0汤圆

发表于 2011-4-17 20:24:49 | 显示全部楼层
这个比较感兴趣

出0入0汤圆

发表于 2011-4-18 08:55:35 | 显示全部楼层
想法不错,赞一个。

出0入0汤圆

发表于 2011-4-19 19:22:34 | 显示全部楼层
能做个简易的汉子字库吗?

出0入0汤圆

 楼主| 发表于 2011-4-19 23:20:10 | 显示全部楼层
回复【12楼】qq635274216  
-----------------------------------------------------------------------

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

出0入0汤圆

发表于 2011-4-20 20:10:09 | 显示全部楼层
有英文也不错了.谢谢楼主!

出0入0汤圆

发表于 2011-4-20 21:34:23 | 显示全部楼层
看下学习了。

出0入0汤圆

发表于 2011-4-21 10:27:32 | 显示全部楼层
谢谢分享 标记下

出0入0汤圆

发表于 2011-5-26 23:13:33 | 显示全部楼层
MARK

出0入0汤圆

发表于 2011-6-26 11:18:02 | 显示全部楼层
楼主做一个  16x16 字库嘛  好做一个 12x12的字库   
  同时要有粗体和正常两种

   大小不用担心   外扩 eeprom 撒

出0入0汤圆

发表于 2011-8-27 21:48:23 | 显示全部楼层
mark

出0入0汤圆

发表于 2015-5-22 16:34:56 | 显示全部楼层
这个不错,靠谱!!
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-6-11 22:15

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

快速回复 返回顶部 返回列表