0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

【经验分享】Banana PI Leaf S3开发板之OLED屏显示驱动实现

电子发烧友论坛 来源:未知 2022-11-22 08:30 次阅读
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

OLED屏有多种形式,在例程中提供了一种I2C接口的0.96寸单色屏程序。本人则有一款I2C接口的0.96寸双色屏,在掌握GPIO口使用的基础上,以模拟I2C的方式实现了它的驱动显示。

其引脚的连接关系如下:

VCC----3.3V

GND---GND

SDA----GPIO15

SCL----GPIO16

2e061516-69fc-11ed-8abf-dac502259ad0.png

图1引脚连接

将所用引脚设置为输出模式的语句为:

sda=Pin(15,Pin.OUT) #15

sck=Pin(16,Pin.OUT) #16

实现数据数据发送的函数为:

def Write_IIC_Byte(IIC_Byte):
 da=IIC_Byte
 sck.off()
 for i in range(8):
   m=da
   m=m&0x80
   if(m==0x80):
    sda.on()
   else:
    sda.off()
   da=da<<1
   sck.on()
   sck.off()

实现清屏的函数为:

def OLED_Clear():
  for i in range(8):
   OLED_WR_Byte (0xb0+i,OLED_CMD)
   OLED_WR_Byte (0x00,OLED_CMD)
   OLED_WR_Byte (0x10,OLED_CMD)
  for j in range(128):
   OLED_WR_Byte(0x00,OLED_DATA)

OLED屏的初始化函数为:

def OLED_Init():
 OLED_WR_Byte(0xAE,OLED_CMD)
 OLED_WR_Byte(0x02,OLED_CMD)
 OLED_WR_Byte(0x10,OLED_CMD)
 OLED_WR_Byte(0x40,OLED_CMD)
 OLED_WR_Byte(0x81,OLED_CMD)
 OLED_WR_Byte(0xff,OLED_CMD)
 OLED_WR_Byte(0xA1,OLED_CMD)
 OLED_WR_Byte(0xC8,OLED_CMD)
 OLED_WR_Byte(0xA6,OLED_CMD)
 OLED_WR_Byte(0xA8,OLED_CMD)
 OLED_WR_Byte(0x3f,OLED_CMD)
 OLED_WR_Byte(0xD3,OLED_CMD)
 OLED_WR_Byte(0x00,OLED_CMD)
 OLED_WR_Byte(0xd5,OLED_CMD)
 OLED_WR_Byte(0x80,OLED_CMD)
 OLED_WR_Byte(0xD9,OLED_CMD)
 OLED_WR_Byte(0xF1,OLED_CMD)
 OLED_WR_Byte(0xDA,OLED_CMD)
 OLED_WR_Byte(0x12,OLED_CMD)
 OLED_WR_Byte(0xDB,OLED_CMD)
 OLED_WR_Byte(0x40,OLED_CMD)
 OLED_WR_Byte(0x20,OLED_CMD)
 OLED_WR_Byte(0x02,OLED_CMD)
 OLED_WR_Byte(0x8D,OLED_CMD)
 OLED_WR_Byte(0x14,OLED_CMD)
 OLED_WR_Byte(0xA4,OLED_CMD)
 OLED_WR_Byte(0xA6,OLED_CMD)
 OLED_WR_Byte(0xAF,OLED_CMD)
 OLED_WR_Byte(0xAF,OLED_CMD)
 OLED_Clear()
 OLED_Set_Pos(0,0)

为了验证程序的可行性,特将清屏函数改造为彩条绘制函数,其内容为:

def OLED_Clear():
  for i in range(8):
   OLED_WR_Byte (0xb0+i,OLED_CMD)
   OLED_WR_Byte (0x00,OLED_CMD)
   OLED_WR_Byte (0x10,OLED_CMD)
  for j in range(128):
   OLED_WR_Byte(0xf0,OLED_DATA) #OLED_DATA


def OLED_text():
  OLED_Init()
  OLED_Clear()


OLED_text ()

经上传测试,其显示效果如图2所示,说明驱动程序是有效的。

2e1ebb8e-69fc-11ed-8abf-dac502259ad0.png

图2绘制彩条

为了实现字符,需按如下形式来定义字库:

F8X16=[0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

0x00,0x00,0x00,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x33,0x30,0x00,0x00,0x00,

0x00,0x10,0x0C,0x06,0x10,0x0C,0x06,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,

** ... **

0x00,0x06,0x01,0x01,0x02,0x02,0x04,0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00]

所设计的字符串显示函数为:

def OLED_ShowString(x,y,chr,Char_Size):
   for character in chr:
    OLED_ShowChar(x,y,character,Char_Size)
    x+=8
    if(x>120):
      x=0
      y+=2

实现字符串输出测试的程序如下:

def OLED_text():
  OLED_Init()
  OLED_Clear()
  OLED_ShowString(0,0,'Banana PI ',16)
  OLED_ShowString(0,2,'Leaf S3',16)
  OLED_ShowString(0,4,'OLED TEST',16)
  OLED_ShowString(0,6,'jinglixixi',16)


OLED_text()

经上传测试,其显示效果如图3所示,说明驱动程序是有效的。

2e493bfc-69fc-11ed-8abf-dac502259ad0.png

图3显示字符串

通过OLED屏驱动程序的设计,基本上掌握了Thonny的编程方法、函数的设计及数组元素的使用等,收获还是很多的,后面就可以自主地进行功能设计了。

本文由电子发烧友社区发布,转载请注明以上来源。如需社区合作及入群交流,请添加微信EEFans0806,或者发邮箱liuyong@huaqiu.com

2e7c4d26-69fc-11ed-8abf-dac502259ad0.png


原文标题:【经验分享】Banana PI Leaf S3开发板之OLED屏显示驱动实现

文章出处:【微信公众号:电子发烧友论坛】欢迎添加关注!文章转载请注明出处。

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉

原文标题:【经验分享】Banana PI Leaf S3开发板之OLED屏显示驱动实现

文章出处:【微信号:gh_9b9470648b3c,微信公众号:电子发烧友论坛】欢迎添加关注!文章转载请注明出处。

收藏 人收藏
加入交流群
微信小助手二维码

扫码添加小助手

加入工程师交流群

    评论

    相关推荐
    热点推荐

    低成本开源!用乐鑫科技ESP32-S3开发板轻松驱动无刷电机,保姆级教程来了!

    想用ESP32-S3开发板驱动无刷电机却不知从何下手?本教程将手把手教你完成从硬件连接到软件编程的全流程,无论你是新手还是有一定经验开发
    的头像 发表于 11-06 18:03 242次阅读
    低成本开源!用乐鑫科技ESP32-<b class='flag-5'>S3</b><b class='flag-5'>开发板</b>轻松<b class='flag-5'>驱动</b>无刷电机,保姆级教程来了!

    【作品合集】玄铁Banana Pi BPI-RV2开发板测评

    玄铁Banana Pi BPI-RV2开发板测评作品合集 产品介绍: Banana Pi BPI-RV2 开源网关是⼀款基于矽昌 SF21H
    发表于 09-17 10:58

    【RA4M2-SENSOR】+OLED显示驱动

    RA4M2-SENSOR开发板是一款近于最小系统的开发板,通过添加相应的外设,可丰富其功能。 这里就为它配置一个I2C接口的OLED驱动
    发表于 09-02 18:28

    【RA-Eco-RA6M4开发板评测】点亮OLED显示屏

    【点亮OLED显示屏】 瑞萨 RA6M2 支持硬件 I2C,开发板上有 OLED 显示屏接口,如下:
    发表于 08-31 10:25

    【Milk-V Duo S 开发板免费体验】DuoS 超声波测距 OLED 显示

    ,并将测距结果显示OLED 显示屏上 硬件准备 1、DuoS 开发板 2、HC-SR04 超声波测距模块 3
    发表于 08-22 03:55

    【RA-Eco-RA6M4开发板评测】+OLED显示驱动

    RA-Eco-RA6M4开发板是一款近于最小系统得开发板,为其添加相应的外设,可用起到丰富其羽翼的作用。 这里就为它配置一个I2C接口的OLED,其引脚连接关系为: SCLK----
    发表于 07-23 17:33

    Banana Pi BPI-RV2开发板试用体验】开箱上电

    开源社区(Banana Pi )合作设计。 开发板关键特性 矽昌 SF21H8898 四核64位RISC-V 处理器 矽昌自研NPU,可以达到企业级⽹关级别数据转发处理能⼒ 512MB DDR
    发表于 06-26 19:51

    Banana Pi BPI-RV2开发板试用体验】开发环境搭建

    参考 https://docs.banana-pi.org/zh/BPI-RV2/BananaPi_BPI-RV2 前言 本文分享开发板基本的ssh登录,文件传输,c开发环境搭建。 上电串口登录 上
    发表于 06-25 16:07

    Banana Pi BPI-RV2开发板试用体验】开发板介绍视频

    一. 开发板介绍香蕉派 BPI-RV2 RISC-V 路由器开发板采用矽昌通信 SF21H8898 芯片方案矽昌 SF21H8898 四核64位RISC-V 处理器, 1.25GHz主频得益于矽昌自
    发表于 06-24 23:51

    基于RISC-V处理器,Banana Pi BPI-RV2开发板试用

    Banana Pi BPI-RV2 开源网关是⼀款基于矽昌 SF21H8898 SoC的设备,1 × 2.5 G WAN⽹络接⼝、5  个千兆LAN ⽹络接⼝、板载 512MB DDR3 内存
    的头像 发表于 06-09 14:59 951次阅读
    基于RISC-V处理器,<b class='flag-5'>Banana</b> <b class='flag-5'>Pi</b> BPI-RV2<b class='flag-5'>开发板</b>试用

    Banana Pi BPI-RV2 RISC-V 路由器开发板发售, 全球首款RISC-V路由器

    Banana Pi BPI-RV2 开源路由器是矽昌通信和⾹蕉派开源社区(Banana Pi )合作设计, 联合打造全球首款RISC-V架构路由器
    发表于 04-18 14:06

    Banana Pi开源社区基于瑞芯微RK3588开发板,DeepSeek开发利器

    。 []() Banana Pi BPI-W3单板机是由Banana Pi团队为专业和企业用户设计和开发
    发表于 02-19 18:27

    Banana Pi开源社区基于瑞芯微RK3588开发板,DeepSeek开发利器

    Banana Pi开源社区基于瑞芯微RK3588开发板,DeepSeek开发利器
    的头像 发表于 02-19 18:25 3218次阅读
    <b class='flag-5'>Banana</b> <b class='flag-5'>Pi</b>开源社区基于瑞芯微RK3588<b class='flag-5'>开发板</b>,DeepSeek<b class='flag-5'>开发</b>利器

    迅为RK3576开发板Android 多显示

    迅为RK3576开发板Android 多显示
    的头像 发表于 01-16 16:58 1607次阅读
    迅为RK3576<b class='flag-5'>开发板</b>Android 多<b class='flag-5'>屏</b><b class='flag-5'>显示</b>

    【敏矽微ME32G070开发板免费体验】开箱+点灯+点亮OLED

    ME32G070 支持硬件 I2C,这里偷个懒,不想使用繁琐的跳线,直接在开发板上随意插入 OLED 显示屏的引脚,如下: 直接插上 OLED
    发表于 12-19 00:25