找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2887|回复: 2
打印 上一主题 下一主题
收起左侧

基于 CH32V103开发板的彩色OLED屏显示驱动

[复制链接]
跳转到指定楼层
楼主
OLED屏有多种类型,其中的参数屏要比单色屏和双色屏更具色彩表现力,在设计小游戏时,彩色屏将是不错的下载,假如用单色屏来完成俄罗斯方块的话,那就只剩下方块了,相对来讲彩色屏会更具优势。
目前来看,似乎还没见到有I2C接口的彩色屏,因此就只有多牺牲几个I/O口来驱动彩色屏了!
在彩色屏与U CH32V103连接上,其关系如下:
CLK--PA2
DIN--PA3
RST--PB3
DC --PB4
CS --PB5
BLK--PB6
定义引脚输出高低电平的语句为:
#define OLED_SCLK_Set()  GPIO_WriteBit(GPIOA, GPIO_Pin_2,Bit_SET)
#define OLED_SCLK_Clr()  GPIO_WriteBit(GPIOA, GPIO_Pin_2,Bit_RESET)
#define OLED_SDIN_Set()  GPIO_WriteBit(GPIOA, GPIO_Pin_3,Bit_SET)
#define OLED_SDIN_Clr()  GPIO_WriteBit(GPIOA, GPIO_Pin_3,Bit_RESET)
#define OLED_RST_Set()  GPIO_WriteBit(GPIOB, GPIO_Pin_3,Bit_SET)
#define OLED_RST_Clr()  GPIO_WriteBit(GPIOB, GPIO_Pin_3,Bit_RESET)
#define OLED_DC_Set()   GPIO_WriteBit(GPIOB, GPIO_Pin_4,Bit_SET)
#define OLED_DC_Clr()   GPIO_WriteBit(GPIOB, GPIO_Pin_4,Bit_RESET)
#define OLED_CS_Set()   GPIO_WriteBit(GPIOB, GPIO_Pin_5,Bit_SET)
#define OLED_CS_Clr()   GPIO_WriteBit(GPIOB, GPIO_Pin_5,Bit_RESET)
#define OLED_BLK_Set()  GPIO_WriteBit(GPIOB, GPIO_Pin_6,Bit_SET)
#define OLED_BLK_Clr()  GPIO_WriteBit(GPIOB, GPIO_Pin_6,Bit_RESET)
相关引脚输出功能的配置函数为:
  1. void App_OledInit(void)
  2. {
  3. GPIO_InitTypeDef  GPIO_InitStructure;                //定义一个GPIO_InitTypeDef类型的结构体
  4. RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOB, ENABLE);//使能与LED相关的GPIO端口时钟
  5. GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3|GPIO_Pin_4|GPIO_Pin_5|GPIO_Pin_6; //配置GPIO引脚
  6. GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;     //设置GPIO模式为推挽输出
  7. GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;    //设置GPIO口输出速度
  8. GPIO_Init(GPIOB, &GPIO_InitStructure);               //调用库函数,初始化GPIOA
  9. RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);//使能与LED相关的GPIO端口时钟
  10. GPIO_InitStructure.GPIO_Pin = GPIO_Pin_2|GPIO_Pin_3; //配置GPIO引脚
  11. GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;     //设置GPIO模式为推挽输出
  12. GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;    //设置GPIO口输出速度
  13. GPIO_Init(GPIOA, &GPIO_InitStructure);               //调用库函数,初始化GPIOA
  14. GPIO_SetBits(GPIOA,GPIO_Pin_2|GPIO_Pin_3);           //设置引脚输出高电平
  15. }
复制代码

图片显示的函数为:
  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_moled[i*2]);
  8. LCD_WR_DATA8(gImage_moled[i*2+1]);
  9. }
  10. }
复制代码

实现显示效果的主程序为:
  1. int main(void)
  2. {
  3. u8 i=0;
  4. u8 j=0;
  5. Delay_Init();   //延时函数初始化
  6. LED_Init();     //LED初始化
  7. App_OledInit();
  8. OLED_Init();
  9. Delay_Ms(200);
  10. LCD_Clear(BLACK);
  11. BACK_COLOR=BLACK;
  12. LCD_ShowString(10,0,"CH32V103 TEST",RED);
  13. LCD_ShowString(10,20,"OLED Display",RED);
  14. LCD_ShowString(10,40,"jinglixixi",RED);
  15. LCD_ShowString(10,60,"2020.10.28",RED);
  16. Delay_Ms(2000);
  17. LCD_Clear(BLACK);
  18. LCD_ShowChinese(28,0,0,32,YELLOW);
  19. LCD_ShowChinese(60,0,1,32,YELLOW);
  20. LCD_ShowChinese(92,0,2,32,YELLOW);
  21. LCD_ShowChinese(20,40,0,16,YELLOW);
  22. LCD_ShowChinese(36,40,1,16,YELLOW);
  23. LCD_ShowChinese(52,40,2,16,YELLOW);
  24. LCD_ShowChinese(68,40,3,16,YELLOW);
  25. LCD_ShowChinese(84,40,4,16,YELLOW);
  26. LCD_ShowChinese(100,40,5,16,YELLOW);
  27. LCD_ShowChinese(116,40,6,16,YELLOW);
  28. LCD_ShowString(20,60,"0.96 TFT SPI",YELLOW);
  29. Delay_Ms(2000);
  30. LCD_Clear(BLACK);
  31. LCD_ShowString(10,0,"LCD_W:",RED);
  32. LCD_ShowNum(70,0,LCD_W,3,RED);
  33. LCD_ShowString(10,20,"LCD_H:",RED);
  34. LCD_ShowNum(70,20,LCD_H,2,RED);
  35. for(i=0;i<4;i++)
  36. {
  37. LCD_ShowPicture(i*40,40,39+i*40,79);
  38. }
  39. Delay_Ms(2000);
  40. LCD_ShowPicturea(0,0,159,79);
  41. }
复制代码

经编译,程序对系统资源的占用情况如图1所示。

图1

                              
程序下载后的运行效果见图2~图4所示。
  
图2~图4
若单显示图片,则系统资源资源情况为:

图5

程序下载后面,其运行效果如图所示。

图6


评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:647586 发表于 2021-3-8 10:10 | 只看该作者
OLED怎么点亮
回复

使用道具 举报

板凳
ID:297828 发表于 2021-12-5 21:54 | 只看该作者
中景园的这个IIC的屏,实在是一言难尽
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表