这个是12864的程序这句看不懂意思Disp_HZ(0x80,line1,1)请教各位大神了?

这个是12864的程序这句看不懂意思Disp_HZ(0x80,line1,1)请教各位大神了?,第1张

这是12864的程序,这是调子程序的语句,看子程序的名是Disp_HZ(0x80,line1,1),应该是显示汉字的语句,调用时带有3个参数,第一个0x80,应该是显示行在第一行,第二个line1,应该是先定义的一个汉字的字符串,就是要显示的汉字,第三个数应该是表示左屏。有些12864屏是分左右屏显示的。具体的这3个参数是不是这些意义,要看具体的子程序就知道了。

首先建个显存数组,将要显示的数据写入显存里,再将整个显存通过显示图片的方式写入5110的RAM里显示就OK啦!我的12864OLED也读不出内部的DDRAM,但我刚用这种方法给12864OLED打点了。

unsigned char xdata memory[128] //显存

 

 

//在随意坐标上画点

void OLED_Drawpoint(unsigned char x, unsigned char y,bit dat)

{//x,y,行列坐标;dat,1写,0擦除 

unsigned char rdata

rdata=memory[y/8*128+x] //先将对应的字节数据从显存数组读出来

if(dat==1){

memory[y/8*128+x]=rdata|(0x01<<(y%8))//将读出来的数据加上添加点的数据

}

else{

memory[y/8*128+x]=rdata-(0x01<<(y%8))

}

}

 

 

OLED_DrawBMP(0,0,128,8,memory)//(显示图片函数)将显存的数据导入显示屏

其实建议你不要读LCD的数据,原因有以下几点:

1. 要双向传输数据

2. 有时结构设计需要很长的连接线,这时就得加强LCD的驱动了,双向的加强驱动电路麻烦,

也浪费IO,造成程序的通用性不强。

3. 要查询LCD的数据,说明没有建立LCD数据显示缓存,实时查询处理更新数据很困难

建议如下:

1. 建立一个显示缓存区,用一个线程来处理LCD的数据刷新,这样你其他的程序在需要更新显示

内容时,只需要处理RAM中的数据即可。

2. 单向驱动,LCD_DIR直接设置成输入状态,

LCD底层驱动把数据保持时间和指令保持时间算好,保证传输的有效率。


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

原文地址:https://54852.com/yw/12122710.html

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

发表评论

登录后才能评论

评论列表(0条)

    保存