目录
实战操作
前面单纯讲操作,后面再原理
先在浏览器下载图片转换软件:Img2Lcd.exe
下载完点击.exe安装
安装好后安装的位置出现这个文件夹
双击进去后
双击imglcd.exe打开图片取模软件
未注册的界面
注册码
我的lcd屏是128*128个像素点,所以最大宽度和高度设置为128、128。
lcd显示为RGB565,所以选16为真彩色(R5、G6、B5)
注意不要勾选包含文件头数据
点击左上角保存图标
这时候可以看到我的数据是32768,因为128*128*个像素点,像素点又是RGB565格式(16位),而数组里面的表现形式是一个字节(8位)。所以数据个数为128*128*2=32768。你们也可以验算一下是不是这样,不符合自己的会有问题。
否则可能会出现图片最右边有一缕跑到左边了
复制记事本内容,然后在工程目录下创建image.h文件
复制粘贴数组到里面,CTRL+S保存
在main.c中#include image.h
编译后右键GO TO一下看看可不可以去到image.h
不能的看看自己的.h文件是否在路径里了
添加进去再编译一下就行了
打开后的样子
这个数组名就是我们待会要使用到的参数
使用格式
LCD_Showimage(0, 0, 128, 128,gImage_1);
函数的声明和定义你们的lcd.c和lcd.h应该都有,可能名字不一样,但是功能是一样的
然后编译,烧录就好了
原理解析
我们知道在自然界中,红、绿、蓝是光学三原色(RGB),自然界中的任何颜色都可以由红、绿、蓝三原色来叠加组成。
举例:红色与绿色1:1叠加就组成了黄色,红色与绿色与蓝色1:1:1叠加就组成了白色。
红色是(R:255,G:0,B:0),也就是0xFF0000。绿色(R:0,G:255,B:0),也就是0x00FF00。蓝色就是(R:0,G:0,B:255),也就是0x0000FF。不同颜色的RGB值见下表:
虽然采用三个字节来表示RGB的颜色,能表示的颜色非常丰富,数据也非常的整齐 。但是嵌入式系统常常资源有限,使用三个字节表示一个像素过于消耗内存,所以在小型嵌入式系统中,常常使用两个字节(16Bit)来表示一个像素的颜色。
我们的液晶屏用的驱动芯片是ST7735S,它也是用两个字节(16Bit)来表示一个像素的颜色。在(16Bit)的颜色系统中,常用的是5-6-5的组合形式,即红色占用5Bit,绿色占用6Bit,蓝色占用5Bit。如下图所示:
用5个位表示红色为(R:32,G:0,B:0),也就是0xF800,二进制为11111000 00000000.
上面的图片转换软件,输出的时候选择16位真彩色也是这个原因。但是输出的数组,每一个是8位,而每个像素点需要16位的RGB值表示颜色。所以我们在程序里面,针对每个像素点,需要写入两次,每个数据8位,从而组成16位的RGB值。
液晶屏有128*128个像素点,每个像素点需要写入两次,一共需要128*128*2个数据,也就是32768个数据。这也是为什么输出的图片数组有32768个的原因。
驱动芯片将某种颜色,以16进制的方式,写入到液晶屏的每一个像素点,然后所有128*128个像素点就组成了完整的图像。