目录

● OLED屏外观

● OrangePi的IIC接口

● 查看设备是否支持IIC节点

● 查看设备地址是否挂载到IIC上的工具

①安装i2c-tools

②测试工具是否有效

● 查看关于OLED屏的官方原码

● 基于OLED源码修改成的测试代码


● OLED屏外观

● OrangePiIIC接口

由 26pin 的原理图可知, Orange Pi Zero 2 可用的 i2c 为 i2c3

● 查看设备是否支持IIC节点

● 启动 linux 系统后, 在命令行中输入:ls /dev 查看H616是否存在 i2c-3 的设备节点;

● 从命令运行结果能观察到系统支持I2C-3和I2C-5的驱动,而H616的外设我们看到只有一个IIC接口,用的是IIC-3;

● 查看设备地址是否挂载到IIC上的工具

说明:Linux一切皆文件,每个硬件设备“对应”一个文件,由驱动程序提供映射

①安装i2c-tools

  安装 i2c-tools 命令: sudo apt-get install i2c-tools

②测试工具是否有效

输入命令:sudo i2cdetect -y 3

 此处的3c就是挂载在iic上的oled屏幕的地址

● 查看关于OLED屏的官方原码

——> wiringOP ——> examples ——> oled_demo.c

源码展示:

 12 #include <errno.h>13 #include <string.h>14 #include <stdio.h>15 #include <stdlib.h>16 #include <time.h>17 #include <stdint.h>1819 #include "oled.h"20 #include "font.h"2122 int oled_demo(struct display_info *disp) {23     int i;24     char buf[100];2526     //putstrto(disp, 0, 0, "Spnd spd  2468 rpm");27     //  oled_putstrto(disp, 0, 9+1, "Spnd cur  0.46 A");28     oled_putstrto(disp, 0, 9+1, "Welcome       to");29     disp->font = font1;30     //  oled_putstrto(disp, 0, 18+2, "Spnd tmp    53 C");31     oled_putstrto(disp, 0, 18+2, "----OrangePi----");32     disp->font = font2;33     //  oled_putstrto(disp, 0, 27+3, "DrvX tmp    64 C");34     oled_putstrto(disp, 0, 27+3, "This is 0.96OLED");35     oled_putstrto(disp, 0, 36+4, "");36     oled_putstrto(disp, 0, 45+5, "");37     disp->font = font1;38     //  oled_putstrto(disp, 0, 54, "Total cur  2.36 A");39     oled_putstrto(disp, 0, 54, "*****************");40     oled_send_buffer(disp);4142     disp->font = font3;43     for (i=0; i<100; i++) {44         sprintf(buf, "Spnd spd  %d rpm", i);45         oled_putstrto(disp, 0, 0, buf);46         oled_putstrto(disp, 135-i, 36+4, "===");47         oled_putstrto(disp, 100, 0+i/2, ".");48         oled_send_buffer(disp);49     }50     //oled_putpixel(disp, 60, 45);51     //oled_putstr(disp, 1, "hello");5253 return 0;54 }5556 void show_error(int err, int add) {57     //const gchar* errmsg;58     //errmsg = g_strerror(errno);59     printf("\nERROR: %i, %i\n\n", err, add);60     //printf("\nERROR\n");61 }6263 void show_usage(char *progname) {64     printf("\nUsage:\n%s <I2C bus device node >\n", progname);65 }6667 int main(int argc, char **argv) {68     int e;69     char filename[32];70     struct display_info disp;7172     if (argc < 2) {73         show_usage(argv[0]);7475         return -1;76     }7778     memset(&disp, 0, sizeof(disp));79     sprintf(filename, "%s", argv[1]);80     disp.address = OLED_I2C_ADDR;81     disp.font = font2;8283     e = oled_open(&disp, filename);8485     if (e < 0) {86         show_error(1, e);87     } else {88         e = oled_init(&disp);89     if (e < 0) {90         show_error(2, e);91     } else {92         printf("---------start--------\n");93         if (oled_demo(&disp) < 0)94             show_error(3, 777);95             printf("----------end---------\n");96         }97     }9899     return 0;
100 }

● 基于OLED源码修改成的测试代码

  1 #include <errno.h>2 #include <string.h>3 #include <stdio.h>4 #include <stdlib.h>5 #include <time.h>6 #include <stdint.h>78 #include "oled.h"9 #include "font.h"1011 int oled_show(struct display_info *disp) {12     int i;13     char buf[100];1415     oled_putstrto(disp, 0, 13, "Welcome to My Linux");16     disp->font = font1;1718     oled_putstrto(disp, 1, 27, "-This is OLED screen-");19     disp->font = font1;2021     oled_putstrto(disp, 63, 50, "2023.2.19");22     disp->font = font1;23     oled_send_buffer(disp);2425     return 0;26 }2728 void show_error(int err, int add) {29     printf("\nERROR: %i, %i\n\n", err, add);30     //printf("\nERROR\n");31 }3233 void show_usage(char *progname) {34     printf("\nUsage:\n%s <I2C bus device node >\n", progname);35 }3637 int main(int argc, char **argv) {38     int e;39     char filename[32];40     struct display_info disp;4142     if (argc < 2) {43         show_usage(argv[0]);4445         return -1;46     }4748     memset(&disp, 0, sizeof(disp));49     sprintf(filename, "%s", argv[1]);50     disp.address = OLED_I2C_ADDR;51     disp.font = font2;5253     e = oled_open(&disp, filename);54     e = oled_init(&disp);5556     oled_show(&disp);5758     return 0;59 }60

 编译过程注意的地方如图

 oled屏上显示内容:

全志H616:OLED屏应用 — IIC协议相关推荐

  1. 【Orangepi Zero2 全志H616】OLED屏应用/IIC协议

    一.Orangepi的IIC接口 二.开发步骤 1.启动 linux 系统后, 先确认下/dev 下存在 i2c-3 的设备节点         从命令运行结果能观察到系统支持i2c-3和i2c-5的 ...

  2. 【OLED屏】4针 OLED显示屏(IIC协议)底层驱动(库封装)(包含源文件)

    测试芯片STM32F103x(x=c8t6.zet6) 输出效果: 主程序main.c() #include "stm32f10x.h" #include "OLED_I ...

  3. 0.96寸4引脚(IIC协议)OLED驱动程序

    使用STM32F103xxx对0.96寸OLED进行驱动显示. 1.IIC协议代码  iic.c #include "iic.h" #include "delay.h&q ...

  4. [STC89C52RC]基于IIC协议的OLED显示字符

    目录 起始信号 终止信号 应答信号 选择某一点点亮 页模式: 水平模式: 垂直模式: 选择行数 ​编辑  选择列数 清屏 Oled显示,我们会用到字模软件 显示图片 IIC协议 1.1 IIC协议概述 ...

  5. STM32通过SPI协议驱动OLED屏

    坚持就是胜利 一.SPI协议介绍 01 简介 02 SPI物理层 03 SPI基本通讯过程 二.OLED显示器介绍 01 简介 02 接口定义 03 与STM32接线图 三.汉字取模软件介绍 01 下 ...

  6. 用STM32F103达成基于I2C协议的AHT20温湿度传感器和OLED屏显示汉字

    目录 一 I2C协议简介 硬件I2C与软件I2C 二 代码和ATH20芯片实现温湿度的串口显示 三 用stm32f103芯片的SPI和IIC接口接上OLED屏显示中文姓名温湿度 1 先用文字字模生成器 ...

  7. IIC协议初识及OLED写入指令、数据和显示的代码实现

    目录 一.IIC协议概述 二.IIC协议起始和终止信号 三.应答信号 四.数据发送的时序 五.OLED写入指令和数据 六.OLED显示一个点的思路 七.OLED显示一个点的代码 八.OLED列地址 九 ...

  8. IIC协议与OLED

    1.认识OLED 1.OLED概述: OLED(Organic Light-Emitting Diode,有机发光二极管)是一种显示技术,利用有机材料的发光特性来产生光. OLED显示器由一系列有机材 ...

  9. fpga驱动oled iic显示代码_Arduino提高篇02—OLED屏汉字显示

    上篇中我们已经使用驱动库在OLED屏上显示出英文字符,除去数字.字母.符号等,OLED还能显示汉字.图片及任意图形.本篇介绍取模软件的使用,教大家如何在OLED屏上显示汉字. 1. 字模显示原理及取模 ...

最新文章

  1. c语言中求一个数的因数,【代码】求一个数的因数和、求优化、顺便也供新人参考算法...
  2. 面试必考之http状态码有哪些
  3. resin如何部署java项目_resin项目换成tomcat部署的两种方式
  4. Nginx如何反向代理网站和设置虚拟主机
  5. 【二分图判定】hdu3478 Catch
  6. 6-堆排序C实现(递增递减的简单转换,可优化(41行提示))
  7. 解决 用户'sa'登录失败。错误:18456 问题
  8. sh变量特性(3)默认特性
  9. 使用java进行婚礼庆祝_#102030:在30天内运行20 10K,庆祝Java 20年
  10. php显示json,PHP解决JSON中文显示问题
  11. Oracel 连接远端服务器
  12. 【java】doc转pdf
  13. 拓端tecdat|【数据分享】学生受欢迎程度评价数据集
  14. Power of Two(Leetcode231)
  15. xcode armv6 armv7 armv7s arm64架构分析
  16. 富爸爸实现财务自由七步骤
  17. 2022-2028年中国铝电解电容器电解液市场调研报告
  18. ubuntu samba Windows共享 你可能没有权限访问网络资源
  19. jsencrypt 公私钥解加密
  20. 白盒测试方法 + 实战

热门文章

  1. 2020年蜀山区信息学竞赛试卷(小学组)
  2. matlab求解黎卡提代数方程_LQR
  3. 计算机一到四级考试报考科目如何选?建议保存
  4. Asset Server 整理
  5. 445,wancry病毒处理目录
  6. springboot 中配置Swagger2
  7. activity启动模式 android,专题:详解Android组件Activity的启动模式singleTask_51CTO.COM
  8. TCP/UDP协议基本介绍
  9. telephony.db分析
  10. 设置按键退出python pygame动画(animation)程序,python检测键盘按键