【CuriosityNano测评报告】彩色OLED屏显示图片
PIC18F57Q43具有较充实的存储空间,为此可以利用它来存储和显示图片的内容。为配合图片的显示,这里也配以0.96寸的彩色LCD屏作为显示器件,该显示屏的分辨率为160*80。图1引脚配置图2 引脚命名该显示屏的初始化函数为:void Lcd_Init(void){
OLED_RST_Clr();
__delay_ms(200);
OLED_RST_Set();
__delay_ms(200);
LCD_WR_REG(0x11);
__delay_ms(100);
LCD_WR_REG(0x21);
LCD_WR_REG(0xB1);
LCD_WR_DATA8(0x05);
LCD_WR_DATA8(0x3A);
LCD_WR_DATA8(0x3A);
LCD_WR_REG(0xB2);
LCD_WR_DATA8(0x05);
LCD_WR_DATA8(0x3A);
LCD_WR_DATA8(0x3A);
LCD_WR_REG(0xB3);
LCD_WR_DATA8(0x05);
LCD_WR_DATA8(0x3A);
LCD_WR_DATA8(0x3A);
LCD_WR_DATA8(0x05);
LCD_WR_DATA8(0x3A);
LCD_WR_DATA8(0x3A);
LCD_WR_REG(0xB4);
LCD_WR_DATA8(0x03);
LCD_WR_REG(0xC0);
LCD_WR_DATA8(0x62);
LCD_WR_DATA8(0x02);
LCD_WR_DATA8(0x04);
LCD_WR_REG(0xC1);
LCD_WR_DATA8(0xC0);
LCD_WR_REG(0xC2);
LCD_WR_DATA8(0x0D);
LCD_WR_DATA8(0x00);
LCD_WR_REG(0xC3);
LCD_WR_DATA8(0x8D);
LCD_WR_DATA8(0x6A);
LCD_WR_REG(0xC4);
LCD_WR_DATA8(0x8D);
LCD_WR_DATA8(0xEE);
LCD_WR_REG(0xC5);
LCD_WR_DATA8(0x0E);
LCD_WR_REG(0xE0);
LCD_WR_DATA8(0x10);
LCD_WR_DATA8(0x0E);
LCD_WR_DATA8(0x02);
LCD_WR_DATA8(0x03);
LCD_WR_DATA8(0x0E);
LCD_WR_DATA8(0x07);
LCD_WR_DATA8(0x02);
LCD_WR_DATA8(0x07);
LCD_WR_DATA8(0x0A);
LCD_WR_DATA8(0x12);
LCD_WR_DATA8(0x27);
LCD_WR_DATA8(0x37);
LCD_WR_DATA8(0x00);
LCD_WR_DATA8(0x0D);
LCD_WR_DATA8(0x0E);
LCD_WR_DATA8(0x10);
LCD_WR_REG(0xE1);
LCD_WR_DATA8(0x10);
LCD_WR_DATA8(0x0E);
LCD_WR_DATA8(0x03);
LCD_WR_DATA8(0x03);
LCD_WR_DATA8(0x0F);
LCD_WR_DATA8(0x06);
LCD_WR_DATA8(0x02);
LCD_WR_DATA8(0x08);
LCD_WR_DATA8(0x0A);
LCD_WR_DATA8(0x13);
LCD_WR_DATA8(0x26);
LCD_WR_DATA8(0x36);
LCD_WR_DATA8(0x00);
LCD_WR_DATA8(0x0D);
LCD_WR_DATA8(0x0E);
LCD_WR_DATA8(0x10);
LCD_WR_REG(0x3A);
LCD_WR_DATA8(0x05);
LCD_WR_REG(0x36);
LCD_WR_DATA8(0x78);
LCD_WR_REG(0x29);
OLED_BLK_Set();
}
相应的以色彩清除屏幕的函数为:void LCD_Clear(u16 Color)
{
u16 i,j;
LCD_Address_Set(0,0,LCD_W-1,LCD_H-1);
for(i=0;i<LCD_W;i++)
{
for (j=0;j<LCD_H;j++)
{
LCD_WR_DATA(Color);
}
}
}
实现字符串显示的函数为:void LCD_ShowString(u16 x,u16 y,const u8 *p,u16 color)
{
while(*p!='\0')
{
if(x>LCD_W-16)
{
x=0;
y+=16;
}
if(y>LCD_H-16)
{
y=x=0;
LCD_Clear(RED);
}
LCD_ShowChar(x,y,*p,0,color);
x+=8;
p++;
}
}
实现满屏图片显示的函数为:void LCD_ShowPicturea(u16 x1,u16 y1,u16 x2,u16 y2)
{
int i;
LCD_Address_Set(x1,y1,x2,y2);
for(i=0;i<12800;i++)
{
LCD_WR_DATA8(gImage_FJ);
LCD_WR_DATA8(gImage_FJ);
}
}
实现字符串及图片显示的测试主程序为:int main(void)
{
SYSTEM_Initialize();
Lcd_Init();
LCD_Clear(BLACK);
LCD_ShowString(20,10,"PIC18F57Q43 TEST",RED);
LCD_ShowString(20,30,"0.96'OLED",YELLOW);
__delay_ms(2000);
LCD_ShowPicturea(0,0,159,79);
__delay_ms(2000);
LCD_ShowPictureb(0,0,159,79);
while(1)
{
LED0_Toggle();
__delay_ms(500);
}
}
经编译与下载,其输出信息如图3所示。图3 下载提示信息在完成下载后,其显示效果如图4至图6所示。图4显示字符串图5 显示风景图片图6显示人物图片
最好提供下原理图 这么快就跑起来了, PIC18F57Q43的刷屏速度还可以吗? 这个屏幕分辨率还是挺高的。 这个汉字的字模是保存到外部了吗? 如何实现彩色屏画图呢 averyleigh 发表于 2022-11-5 15:47
这个汉字的字模是保存到外部了吗?
内部数组或存到外部FLASH中 usysm 发表于 2022-11-5 16:12
如何实现彩色屏画图呢
图6显示人物图片不是吗,将图片数据存入内部数组接口。 有彩色相框的感觉 pzsh 发表于 2022-11-8 14:44
有彩色相框的感觉
是呀!
页:
[1]