字模由取字模软件生成的,生成时可设置阴码 阳码,扫描顺序,高位在前在後等选择项,显示程序与此密切相关,生成後可直接以数组的形式写在程序中,也可以保存在SD卡或FLASH中
如果只显示少数几个汉字,则可以把字模以表格等形式写在代码中,如果有显示时要调用大量汉字则要生成字库保存於SD卡或EEPROM中
16*16字模占32字节,1 行是2 个字节
写入原理很简单,就是按照取模时的顺序,一个点一个点逐次写入
以下程序供参考,假设字模存在於表格hanzi[ ][ ]中,一个汉字占32 个字节
逐行扫描 低位在前
输入参数:X,Y是坐标位置 n是汉字编号(一个二维表格里可以存多个汉字假设存20个字表格就是
hanzi[20 ][ 32] ) color是字符颜色
void LCD_Disphanzi(uint16_t x, uint16_t y,uint16_t n,uint16_t color)
{
uint16_t page, column,temp1,temp2
LCD_OpenWindow(x, y,16, 16)//16 *16
LCD_ILI9341_CMD(0X2C)//这是ILI9341的一个命令
for( page=0page <32page+=2 ) //16行写16次
{
temp1 = hanzi[n][page]//一行的左半部8个点 占一字节
temp2 = hanzi[n][page+1]//一行的右半部8个点 占另一字节
for( column=0column <8column++ )//写左半行 8 个点, 循环8 次
{
if( temp1 &0x01 ) //取最低位 是1时写入字形的颜色
{
LCD_WR_Data( color )
}
else //是0时写入背景的颜色BACKGROUND
{
LCD_WR_Data( BACKGROUND )
}
temp1>>= 1 //把高位往低位推进
}
for( column=0column <8column++ )//写右半行 8 个点, 循环8 次
{
if( temp2 &0x01 )
{
LCD_WR_Data( color )
}
else
{
LCD_WR_Data( BACKGROUND )
}
temp2>>= 1
}
}
}
这种情况中毒的可能性很少我这说的都是解决方法加一点理论,如果你想学理论可以看一下长篇大论,
软件方面就是程序冲突,内存被分配为一个个地址,这个地址用到的时候软件冲突导致内存写不进,就会出
现这种情况。如果你最近装了什么新软件 谢了试试,还有可能是系统有问题了,
硬件方面那就是内存有问题了,这个地址在内存里是坏的不能存取,当你用到它的时候系统就报错了,
解决方法一般都是先软后硬,像上面说的谢新软件,不行的话重装系统,还不行检测内存,有错更换就行
如有引用请注明来自LEEDOVE
有朋友问为什么老是玩游戏的时候出现的多,因为平时的时候用不了那么多内存,也就是说你1G的内存有大
部分在平时是空闲的,物理地址坏的内存刚好又在空闲中所以平时很少报错,而游戏时占用的比较多的内存
,也用到了坏的地址所以有时一开就报错,呵呵
0,擦拭内存条,最好用橡皮,
1,杀毒,清木马,一般用360,不排除有毒,但可能性不大,
2,谢掉你所安装的软件,游戏再装一次试试,若是光盘则换张盘试试,软件, 重下一个试试 `
3,重装系统,
4,检测内存,再检测硬盘,如果有问题则更换,
5. 更新系统到最新,(这个一个网友更新后解决问题了让我下次回答是加上)
6。 哈哈,这个问题终于被我解决了,我昨天玩的时候也发现了这种情况,然后今天上网找答案,很多都行不通,后来我想到上次有个游戏也是那样子,但是后来搞定了,真爽!
方法是:右键点击游戏,选“属性”——>“兼容性”,接着把“用兼容模式运行这个程序”钩上,接着在下面的“用256色运行”和“禁用视觉样式”钩上,确定,再运行游戏就可以了,我的是这样的,可以用了,其他的可不可以我就不知道了
回答者: secretohayo - 高级魔法师 六级
leedove
欢迎分享,转载请注明来源:内存溢出
评论列表(0条)