[PIC®/AVR®/dsPIC®产品] 【CuriosityNano测评报告】彩色OLED屏显示图片

[复制链接]
1498|10
 楼主| jinglixixi 发表于 2022-7-15 14:30 | 显示全部楼层 |阅读模式
PIC18F57Q43具有较充实的存储空间,为此可以利用它来存储和显示图片的内容。
为配合图片的显示,这里也配以0.96寸的彩色LCD屏作为显示器件,该显示屏的分辨率为160*80
1  引脚配置
2 引脚命名
该显示屏的初始化函数为:
  1. void Lcd_Init(void)
  2. {
  3.   OLED_RST_Clr();
  4.   __delay_ms(200);
  5.   OLED_RST_Set();
  6.   __delay_ms(200);
  7.   LCD_WR_REG(0x11);
  8.   __delay_ms(100);
  9.   LCD_WR_REG(0x21);
  10.   LCD_WR_REG(0xB1);
  11.   LCD_WR_DATA8(0x05);
  12.   LCD_WR_DATA8(0x3A);
  13.   LCD_WR_DATA8(0x3A);
  14.   LCD_WR_REG(0xB2);
  15.   LCD_WR_DATA8(0x05);
  16.   LCD_WR_DATA8(0x3A);
  17.   LCD_WR_DATA8(0x3A);
  18.   LCD_WR_REG(0xB3);
  19.   LCD_WR_DATA8(0x05);
  20.   LCD_WR_DATA8(0x3A);
  21.   LCD_WR_DATA8(0x3A);
  22.   LCD_WR_DATA8(0x05);
  23.   LCD_WR_DATA8(0x3A);
  24.   LCD_WR_DATA8(0x3A);
  25.   LCD_WR_REG(0xB4);
  26.   LCD_WR_DATA8(0x03);
  27.   LCD_WR_REG(0xC0);
  28.   LCD_WR_DATA8(0x62);
  29.   LCD_WR_DATA8(0x02);
  30.   LCD_WR_DATA8(0x04);
  31.   LCD_WR_REG(0xC1);
  32.   LCD_WR_DATA8(0xC0);
  33.   LCD_WR_REG(0xC2);
  34.   LCD_WR_DATA8(0x0D);
  35.   LCD_WR_DATA8(0x00);
  36.   LCD_WR_REG(0xC3);
  37.   LCD_WR_DATA8(0x8D);
  38.   LCD_WR_DATA8(0x6A);
  39.   LCD_WR_REG(0xC4);
  40.   LCD_WR_DATA8(0x8D);
  41.   LCD_WR_DATA8(0xEE);
  42.   LCD_WR_REG(0xC5);
  43.   LCD_WR_DATA8(0x0E);
  44.   LCD_WR_REG(0xE0);
  45.   LCD_WR_DATA8(0x10);
  46.   LCD_WR_DATA8(0x0E);
  47.   LCD_WR_DATA8(0x02);
  48.   LCD_WR_DATA8(0x03);
  49.   LCD_WR_DATA8(0x0E);
  50.   LCD_WR_DATA8(0x07);
  51.   LCD_WR_DATA8(0x02);
  52.   LCD_WR_DATA8(0x07);
  53.   LCD_WR_DATA8(0x0A);
  54.   LCD_WR_DATA8(0x12);
  55.   LCD_WR_DATA8(0x27);
  56.   LCD_WR_DATA8(0x37);
  57.   LCD_WR_DATA8(0x00);
  58.   LCD_WR_DATA8(0x0D);
  59.   LCD_WR_DATA8(0x0E);
  60.   LCD_WR_DATA8(0x10);
  61.   LCD_WR_REG(0xE1);
  62.   LCD_WR_DATA8(0x10);
  63.   LCD_WR_DATA8(0x0E);
  64.   LCD_WR_DATA8(0x03);
  65.   LCD_WR_DATA8(0x03);
  66.   LCD_WR_DATA8(0x0F);
  67.   LCD_WR_DATA8(0x06);
  68.   LCD_WR_DATA8(0x02);
  69.   LCD_WR_DATA8(0x08);
  70.   LCD_WR_DATA8(0x0A);
  71.   LCD_WR_DATA8(0x13);
  72.   LCD_WR_DATA8(0x26);
  73.   LCD_WR_DATA8(0x36);
  74.   LCD_WR_DATA8(0x00);
  75.   LCD_WR_DATA8(0x0D);
  76.   LCD_WR_DATA8(0x0E);
  77.   LCD_WR_DATA8(0x10);
  78.   LCD_WR_REG(0x3A);
  79.   LCD_WR_DATA8(0x05);
  80.   LCD_WR_REG(0x36);
  81.   LCD_WR_DATA8(0x78);
  82.   LCD_WR_REG(0x29);
  83.   OLED_BLK_Set();
  84. }

相应的以色彩清除屏幕的函数为:
  1. void LCD_Clear(u16 Color)
  2. {
  3.     u16 i,j;
  4.     LCD_Address_Set(0,0,LCD_W-1,LCD_H-1);
  5.     for(i=0;i<LCD_W;i++)
  6.     {
  7.        for (j=0;j<LCD_H;j++)
  8.        {
  9.           LCD_WR_DATA(Color);
  10.        }
  11.     }
  12. }

实现字符串显示的函数为:
  1. void LCD_ShowString(u16 x,u16 y,const u8 *p,u16 color)
  2. {
  3.     while(*p!='\0')
  4.     {
  5.         if(x>LCD_W-16)
  6.         {
  7.             x=0;
  8.             y+=16;
  9.         }
  10.         if(y>LCD_H-16)
  11.         {
  12.             y=x=0;
  13.             LCD_Clear(RED);
  14.         }
  15.         LCD_ShowChar(x,y,*p,0,color);
  16.         x+=8;
  17.         p++;
  18.     }
  19. }

实现满屏图片显示的函数为:
  1. void LCD_ShowPicturea(u16 x1,u16 y1,u16 x2,u16 y2)
  2. {
  3.       int i;
  4.       LCD_Address_Set(x1,y1,x2,y2);
  5.       for(i=0;i<12800;i++)
  6.       {
  7.             LCD_WR_DATA8(gImage_FJ[i*2]);
  8.             LCD_WR_DATA8(gImage_FJ[i*2+1]);
  9.       }
  10. }

实现字符串及图片显示的测试主程序为:
  1. int main(void)
  2. {
  3.       SYSTEM_Initialize();
  4.       Lcd_Init();
  5.       LCD_Clear(BLACK);
  6.       LCD_ShowString(20,10,"PIC18F57Q43 TEST",RED);
  7.       LCD_ShowString(20,30,"0.96'  OLED",YELLOW);
  8.       __delay_ms(2000);
  9.       LCD_ShowPicturea(0,0,159,79);
  10.       __delay_ms(2000);
  11.       LCD_ShowPictureb(0,0,159,79);
  12.      while(1)
  13.      {
  14.         LED0_Toggle();
  15.         __delay_ms(500);
  16.      }
  17. }

经编译与下载,其输出信息如图3所示。
3 下载提示信息
在完成下载后,其显示效果如图4至图6所示。
4  显示字符串
5 显示风景图片
6  显示人物图片

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有账号?注册

×
wziyi 发表于 2022-7-19 09:45 | 显示全部楼层
最好提供下原理图
qiangtech 发表于 2022-7-19 14:04 | 显示全部楼层
这么快就跑起来了,
dspmana 发表于 2022-11-5 15:15 | 显示全部楼层
PIC18F57Q43的刷屏速度还可以吗?
elsaflower 发表于 2022-11-5 15:24 | 显示全部楼层
这个屏幕分辨率还是挺高的。              
averyleigh 发表于 2022-11-5 15:47 | 显示全部楼层
这个汉字的字模是保存到外部了吗?
usysm 发表于 2022-11-5 16:12 | 显示全部楼层
如何实现彩色屏画图呢              
 楼主| jinglixixi 发表于 2022-11-5 17:43 | 显示全部楼层
averyleigh 发表于 2022-11-5 15:47
这个汉字的字模是保存到外部了吗?

内部数组或存到外部FLASH中
 楼主| jinglixixi 发表于 2022-11-5 17:47 | 显示全部楼层
usysm 发表于 2022-11-5 16:12
如何实现彩色屏画图呢

图6显示人物图片不是吗,将图片数据存入内部数组接口。
pzsh 发表于 2022-11-8 14:44 | 显示全部楼层
有彩色相框的感觉
 楼主| jinglixixi 发表于 2022-11-8 16:03 | 显示全部楼层
pzsh 发表于 2022-11-8 14:44
有彩色相框的感觉

是呀!
您需要登录后才可以回帖 登录 | 注册

本版积分规则

521

主题

2949

帖子

39

粉丝
快速回复 在线客服 返回列表 返回顶部