51单片机驱动160160点阵显示屏字太大的问题

51单片机驱动160160点阵显示屏字太大的问题,第1张

字模从哪里来?生成顺序如何?保存在什麼地方?

字模由取字模软件生成的,生成时可设置阴码 阳码,扫描顺序,高位在前在後等选择项,显示程序与此密切相关,生成後可直接以数组的形式写在程序中,也可以保存在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


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/11434084.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-16
下一篇 2023-05-16

发表评论

登录后才能评论

评论列表(0条)

保存