arduino童芯派彩屏显示图片,图片取模后在TFT液晶显示

继续玩童芯派,128x128的彩屏应该是童芯派的一大亮点,150元(零售价)的开源硬件带这么大的彩屏还是很少见的(非常有职业操守,就不对比其他板子了)。
别的不bb了,直接进入正题,先说原理。
原理:
无论是12864的液晶还是1602的液晶,还是彩色的tft的液晶,原理上是差不多的,只不过一般的黑白液晶是用0和1来显示一个点,比如0代表不现实,1代表显示,这样一堆的点就能够组合出图案了。彩屏的原理也一样,只不过因为要表示彩色,所以不能只用“黑”和“白”来表示,需要用更多的数字区分不同的颜色
总结:将每个点的颜色信息发送到屏幕模块上,就能显示图像了
针对童芯派,童芯派上是128×128个点组成的,即128行,128列,一共128×128个点,如果是用01表示黑白,那么这些点理论上需要128×128×1b的存储空间(b是小写的,即bit,位,8b=1b),如果我们要显示16位的图像,那么就需要128x128x16b=128x128x2b的空间来存储这些图像信息(存储空间不用太关注,但现实的原理要了解,回头写程序用)
程序:
正常传统的思路是根据液晶的芯片手册来编写程序,将每个点的信息写入到模块里。这显然太麻烦了,arduino创客玩家不这么玩,另外官方也提供了底层的驱动库,我们直接拿来用。
上图是童芯派库的目录文件结构(pio里截的图,这样比较好看),其中lcd.c就是底层驱动,cyberpi.cpp是“逻辑层”驱动,可以理解为cyberpi.cpp是在lcd.c的基础上将功能进行了进一步封装。
这次我们需要的函数在cyberpi.cpp中,函数名称及参数
void cyberpi::set_lcd_pixel(uint8_t x,uint8_t y,uint16_t color)
set_lcd_pixel函数需要3个参数,从上边讲述的原理很容易联想到x和y分别对应lcd的要显示点的位置,color就是要显示图像对应点的颜色。然后写个循环将上次用(【工具】tft彩屏图片点阵取模工具,img2lcd图片取模软件,图片生成c语言头文件)工具生成的数组循环发给lcd就行了
for(int y=0;y<128;y++)    {        for(int x=0;x<128;x++)        {           picl   = gimage_img16_xhr[128*x*2+2*y+1];//低位 在后           pich   = gimage_img16_xhr[128*x*2+2*y];//高位 在前           data16 = picl|pich<<8;           cyber.set_lcd_pixel(y,x,data16);//底层是128×第二个变量+第一个变量        }    }
其中gimage_img16_xhr[]就是用img2lcd工具将图片转换成的数组,生成的数组是16位的,所以需要将数组的高位和低位组合给data16(16位数据)。因为童芯派屏的方向是“歪”的,所以x、y交换一下位置就行了。

剖析FPGA的高精度电磁信号采集系统设计
飞利浦发布新款入耳式真无线高级耳机
一文解析BF518F Blackfin处理器开发评估方案
基于RT-Thread的智慧路灯案例实验分享
手机配置看重内存和硬盘,电脑配置首看CPU和显卡
arduino童芯派彩屏显示图片,图片取模后在TFT液晶显示
英特尔推出Hybrid Bonding技术 推进高端封装演进
中国在5G发展方面处于领先地位美国或将在这场竞赛中落后
硅片级可靠性测试详解
基于智能系统监控设备的风扇速度控制技术
下一代欺骗技术——早期威胁检测
不论是不是力帆,选择代工才是车和家的当务之急
数字电源时序器的内部结构与数字电源时序器的常见故障
为什么工业互联网如此之热?
基于应用程序编程接口(API)的自动化测试(上)
滤波器的详细分类
无人值守变电站综合监控系统的作用、组成及电力加密网关的特点
家庭音响+互联网,玩起新创意
迪拜为了推动环保事业 电动车充电两年不收费
专用SOC安全控制架构的研究与设计