
首先建个显存数组,将要显示的数据写入显存里,再将整个显存通过显示图片的方式写入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底层驱动把数据保持时间和指令保持时间算好,保证传输的有效率。
欢迎分享,转载请注明来源:内存溢出
微信扫一扫
支付宝扫一扫
评论列表(0条)