[MCU] 【CH579M-R1】+彩色OLED屏显示

jinglixixi   2020-10-16 15:39 楼主

原打算是在U盘读写的功能上添加彩色OLED屏的以实现数码相框的功效,无奈在U盘读写方面消耗的时间较多也没有太大的进展,现在就只能让彩色OLED屏唱独角戏了,汉字能显、图标能显,就是大写的图片不能显,因为MCU的容量不允许,只能借助外部的否则存储器件。

汉字及图标的显示效果如图1和图2所示。

图片1.png 1 显示汉字

 

图片2.png 2 显示 图标

由于该彩色OLED屏是采用SPI接口的,故比I2C接口的OLED屏要多消耗些I/O资源。

OLED屏与MCU的连接关系为:

CLK---PB0

DIN---PB1

RES---PB2

DC---PB3

CS ---PB6

相关引脚为驱动OLED屏输出高低电平的语句定义如下:

#define OLED_SCLK_Clr() GPIOB_ResetBits( GPIO_Pin_0 )//CLK

#define OLED_SCLK_Set() GPIOB_SetBits( GPIO_Pin_0 )

#define OLED_SDIN_Clr() GPIOB_ResetBits( GPIO_Pin_1 )//DIN

#define OLED_SDIN_Set() GPIOB_SetBits( GPIO_Pin_1 )

#define OLED_RST_Clr()  GPIOB_ResetBits( GPIO_Pin_2 ) //RES

#define OLED_RST_Set()  GPIOB_SetBits( GPIO_Pin_2 )

#define OLED_DC_Clr()   GPIOB_ResetBits( GPIO_Pin_3 ) //DC

#define OLED_DC_Set()   GPIOB_SetBits( GPIO_Pin_3 )

#define OLED_CS_Clr()   GPIOB_ResetBits( GPIO_Pin_6 ) //CS

#define OLED_CS_Set()   GPIOB_SetBits( GPIO_Pin_6 )

OLED屏的初始化函数为:

void OLED_Init(void)
{
  GPIOB_ModeCfg( GPIO_Pin_0, GPIO_ModeOut_PP_5mA ); 
  GPIOB_ModeCfg( GPIO_Pin_1, GPIO_ModeOut_PP_5mA ); 
  GPIOB_ModeCfg( GPIO_Pin_2, GPIO_ModeOut_PP_5mA ); 
  GPIOB_ModeCfg( GPIO_Pin_3, GPIO_ModeOut_PP_5mA ); 
  GPIOB_ModeCfg( GPIO_Pin_4, GPIO_ModeOut_PP_5mA ); 
  GPIOB_ModeCfg( GPIO_Pin_5, GPIO_ModeOut_PP_5mA ); 
  OLED_RST_Clr();
  mDelaymS(200);
  OLED_RST_Set();
  mDelaymS(200);
  LCD_WR_REG(0x11); 
  mDelaymS(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);  /*VCOM*/
  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);
  if(USE_HORIZONTAL==0)LCD_WR_DATA8(0x08);
  else if(USE_HORIZONTAL==1)LCD_WR_DATA8(0xC8);
  else if(USE_HORIZONTAL==2)LCD_WR_DATA8(0x78);
  else LCD_WR_DATA8(0xA8);
  LCD_WR_REG(0x29); 
}

实现图1和图2的主要程序为:

Lcd_Init();	
LCD_Clear(BLACK);
BACK_COLOR=BLACK;
LCD_ShowChinese(28,0,0,32,YELLOW); 
LCD_ShowChinese(60,0,1,32,YELLOW); 
LCD_ShowChinese(92,0,2,32,YELLOW);
LCD_ShowChinese(20,40,0,16,YELLOW);
LCD_ShowChinese(36,40,1,16,YELLOW);
LCD_ShowChinese(52,40,2,16,YELLOW);
LCD_ShowChinese(68,40,3,16,YELLOW);
LCD_ShowChinese(84,40,4,16,YELLOW);
LCD_ShowChinese(100,40,5,16,YELLOW);
LCD_ShowChinese(116,40,6,16,YELLOW); 
LCD_ShowString(0,60,"0.96 TFT SPI",YELLOW);
LCD_Clear(BLACK);
LCD_ShowString(10,0,"LCD_W:",RED);	 
LCD_ShowNum(70,0,LCD_W,3,RED);
LCD_ShowString(10,20,"LCD_H:",RED);  
LCD_ShowNum(70,20,LCD_H,2,RED);
for(i=0;i<4;i++)
{
LCD_ShowPicture(i*40,40,39+i*40,79);
}

 

虽然测评的时间已近尾声,但对CH579M的调试之路还会在继续,其实它的无线通讯、网络通讯功能等也都有非常不错的用途,只是CH579MU盘读写功能应为大家提供一个便于参考进而能扩展自己应用的例程。

 

本帖最后由 jinglixixi 于 2020-10-18 10:47 编辑

回复评论 (7)

感谢分享,非常不错!继续加油,会观看你的每一篇测评的!!!

点赞  2020-10-16 17:41
引用: w494143467 发表于 2020-10-16 17:41 感谢分享,非常不错!继续加油,会观看你的每一篇测评的!!!

感谢厚爱和支持!!!

点赞  2020-10-16 19:50
玩板看这里: https://bbs.eeworld.com.cn/elecplay.html EEWorld测评频道众多好板等你来玩,还可以来频道许愿树许愿说说你想要玩的板子,我们都在努力为大家实现!
点赞  2020-10-19 10:37

支持哦

点赞  2020-11-3 12:08
点赞  2020-11-3 14:18

读写U盘数据咋样了?期待呀

点赞  2020-11-3 20:45
引用: w494143467 发表于 2020-11-3 20:45 读写U盘数据咋样了?期待呀

参见【CH579M-R1】+致CH579M之爱(绝非爱情篇)

https://bbs.eeworld.com.cn/thread-1145025-1-1.html

 

点赞  2020-11-3 21:04
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 京公网安备 11010802033920号
    写回复