转载请注明出处:http://blog.csdn.net/qq_26093511/article/details/53099262

最近在做一个led显示屏的项目, 我想显示 “常”,“州”,“大”,“学”这几个字,但是只能显示   “常” 和 “大”,其他两个字是乱码。坑啊,一直在查找问题所在,但是一直没找到,试了各种方法:换查找字库的索引,修改变量类型,但是还是不行!

下面是部分代码:

unsigned char xdata Font_H,Font_L;
unsigned long xdata addr;
unsigned char col ,num;

io_init();  
//time0_init();
variable_init();

for(col=0;col<4;col++)
{
Font_L =chepai[col][0];
Font_H =chepai[col][1];
addr =(unsigned long)(Font_L-0xa1)*0xbc0;
addr = addr + (Font_H-0xa1)*0x20;
// for(num =0; num<32;num++)
{
W25Q16_Read(addr ,Tmp[col],32);
}
}

经过仿真,发现 “常” 的索引字是  0x0000D3C0 ,“州”索引值是0x00027640 ,“大“的索引值是0x0000E980,”学“的索引值是0x000234C0

我们发现常大是16位的,而州和学超过了16位而显示乱码,所以猜测  数据溢出,定义的变量类型太小。而unsigned long 就是32位的,所以索引的地址变量没问题,进而猜测  W25Q16的底层读函数有点问题,我们进入  void W25Q16_Read(unsigned int address,uchar *date,uchar j)  , 发现了问题所在!!

unsigned int 是16位的,所以索引值超过16位,就会溢出,从而引发错误!

只需把 unsigned int 改成 unsigned long 就行了

在此非常感谢郑老师的帮助!

转载于:https://www.cnblogs.com/alan666/p/8312084.html

读字库遇到坑爹的问题相关推荐

  1. 字库芯片GT20L16S1Y使用记录

    1.芯片基本信息 16x16点阵的汉字库芯片 支持GB2312国标简体汉字(含有国家信标委合法授权).ASCII字符 排列格式为竖置横排 SPI 串行总线接口 通过字符内码计算字库在芯片中的地址 2. ...

  2. PC98显示原理及字库ROM的访问方法

    PC98显示原理及字库ROM的访问方法 By superarhow, 2009/12(去年的6月份左右整理了点关于这方面的东东,最近一直很忙也没时间贴出来就忘记了.今天刚好有朋友问到就贴出来.供有兴趣 ...

  3. 制做任意大小的bmp,并在其中写汉字

    /** ttt.cpp** Created on: 2012-12-5* Author: xy*/#include <stdlib.h> #include <stdio.h> ...

  4. 在一个200*20的bmp中写汉字

    /** ttt.cpp** Created on: 2012-12-5* Author: xy*/#include <stdlib.h> #include <stdio.h> ...

  5. LED点阵显示,有关特殊国别(阿拉伯,希伯来,泰文)字符排版和乱码问题解决

    序:最近公司的需求:做一个模拟LED屏的显示控件 中间各种曲折!此文做个记录,本来早就改写完的!各种原因前后隔了两个多月! 文章写的比较详细,熟悉的大佬可以跳过直接看代码! PS:后面有完整的代码 正 ...

  6. 字模在c语言运行后出现乱码,C语言字模问题

    C语言字模问题 來源:互聯網  2010-05-11 04:05:47  評論 分類: 電腦/網絡 >> 程序設計 >> 其他編程語言 問題描述: 哪位大侠帮我解释下下面代码, ...

  7. android 点阵字体生成,点阵字体 ASCII码 汉字库 自我学习 简单总结

    学习各种大小点阵字体显示,参考网上资料,简单记录一下! -----第一部分-----点阵字体数据的存放格式---- 最常见的是16*16的点阵,意思是说每1行有16个点,一共有16行.由于1个点使用1 ...

  8. 读hzk32_点阵字库HZK12 HZK16 HZK24 ASC12 ASC16 简介 及 使用方法[附源码]

    如何在嵌入式系统中使用大量的汉字和字符呢? DOS前辈们经过艰辛的努力,将制作好的字模放到了一个个标准的库中以免去后辈的麻烦,这就是点阵字库文件. 一般我们使用16*16的点阵宋体字库,所谓16*16 ...

  9. 读hzk32_HZK16字库文件的资料

    关于 HZK16 字库文件的资料 ... UCDOS 中的 HZK16 字库是符合 GB2312 标准的 16× 16 点阵字库, UCWIN GOLD 1.0 中的 HZK16.GBK 继续保持对 ...

最新文章

  1. 将文字自动转为banner打印形式的工具
  2. ML之FE:基于load_mock_customer数据集(模拟客户,单个DataFrame)利用featuretools工具实现自动特征生成/特征衍生
  3. abb外部轴零位校准_ABB机器人如何控制非同步联动外部轴
  4. python画玫瑰图_央视都在用的“南丁格尔玫瑰图”,原来Python也可以画
  5. Oracle入门(五A)之conn命令
  6. idea之springboot端口被占用/跳转到login
  7. 为什么应尽量从列表的尾部进行元素的增加与删除操作?
  8. WINDOWS游戏编程大师技巧-常见编绎连接错误FAQ
  9. MySQL 性能方案
  10. python通讯录管理程序的用户可行性_通讯录管理系统可行性分析报告
  11. 悉尼大学计算机相关硕士,悉尼大学计算机硕士专业介绍
  12. muduo学习笔记:base部分之高性能日志库-Logger
  13. INT_MAX和INT_MIN的含义和用法
  14. 北京立交桥---- “迷桥”经历和不方便后悔
  15. 大二算法期末复习-排序-英文姓名排序
  16. 与Ubuntu16.04+pycharm+第三方包决战的点点滴滴
  17. 操作系统磁盘调度算法相关习题
  18. 回帖送大奖 『和AI在一起』
  19. linux下磁盘测速工具
  20. 网上千万不要在非官方直营店铺买的商品排行榜

热门文章

  1. oracle学习笔记系列------oracle 基本操作之表的增删改查
  2. Win7下硬盘安装Redhat双系统
  3. [导入]商业智能2.0?(BI 2.0 from Timo Elliott)
  4. ASP.NET存储Session的StateServer
  5. Linux下MySQL数据库常用基本操作 一
  6. C++读取文本文件中以TAB作为分隔符,且中间字段有为空的情况的方法?
  7. Linux环境进程间通信(五): 共享内存(上)
  8. 电脑显示链接网络正常但是不能上网,用某些软件会提示系统丢失libeay32.dll
  9. 自动驾驶中激光雷达如何检测障碍物?
  10. whatlies包 | 简单玩转词向量可视化