继续玩童欣学校。128x128的彩色屏幕应该是童欣派的一大亮点。150元的还是很少见(零售价)开源硬件来带这么大的彩屏(出于职业操守,就不跟其他板比了)。

不再BB,让咱们言归正传,先谈原则。

原则:

不管是 12864液晶或者1602液晶或者彩色TFT液晶,原理都差不多,只是一般的黑白液晶用0和1来显示一个点。比如0代表不真实,1代表显示,这样一堆点就可以组合成一个图案。彩色屏幕的原理是一样的,只是它可以不要用黑色和白色只是,需要更多的数字来区分不同的颜色。

总结:把每个点的颜色信息发送到屏幕模块,图像就可以显示出来了。

对于童欣学派,童欣学派由128128个点组成,即128行128列,共128128个点。如果用01来表示黑白,那么这些点理论上需要1281281b的存储空间(B是小写,即bit,8b=1b)。如果我们想显示16位,

程序:

传统的思路是根据液晶芯片说明书写一个程序,把各个点的信息写入模块。它这显然太麻烦了。arduino Maker玩家不不要这样玩。另外官方还提供了底层驱动库,我们可以直接使用。

上图是派图书馆的目录文件结构(在剪的图更好看),其中LCD。c是底层驱动,Cyberpi。CPP是逻辑层司机。可以理解为Cyberpi。CPP在LCD的基础上进一步封装了功能。C.

我们这次需要的函数在cyberpi.cpp里,函数名和参数。

void cyber pi:set _ LCD _ pixel(uint 8 _ t x,uint8_t y,uint16_t color)

set _ LCD _ pixel函数需要三个参数。从上面提到的原理,很容易认为X和Y分别对应LCD要显示的位置,color就是要显示的图像对应点的颜色。然后写一个循环把上一个工具生成的数组(【工具】TFT彩屏图像点阵取模工具,Img2Lcd图像取模软件,图像生成C语言头文件)循环发送到Lcd。

for(int y=0;y < 128y++){ for(int x=0;x < 128x++){ picL=gImage _ img 16 _ XHR[128 * x * 2+2 * y+1];//低位在后pich=GImage _ img 16 _ XHR[128 * x * 2+2 * y];//最高位在data16=picl | pich & lt& lt8;cyber.set_lcd_pixel(y,x,data 16);//底层是128第二个变量+第一个变量}}

其中,GImage _ img16 _ xhr []是Img2Lcd工具转换的数组,生成的数组是16位,所以需要将数组的高低位组合成data16(16位数据)。因为童心屏幕是弯曲的,X和Y交换位置就够了。

审计福冈江