全志H616:OLED屏应用 — IIC协议
目录
● OLED屏外观
● OrangePi的IIC接口
● 查看设备是否支持IIC节点
● 查看设备地址是否挂载到IIC上的工具
①安装i2c-tools
②测试工具是否有效
● 查看关于OLED屏的官方原码
● 基于OLED源码修改成的测试代码
● OLED屏外观
● OrangePi的IIC接口
![](/assets/blank.gif)
● 查看设备是否支持IIC节点
● 启动 linux 系统后, 在命令行中输入:ls /dev 查看H616是否存在 i2c-3 的设备节点;
● 从命令运行结果能观察到系统支持I2C-3和I2C-5的驱动,而H616的外设我们看到只有一个IIC接口,用的是IIC-3;
● 查看设备地址是否挂载到IIC上的工具
说明:Linux一切皆文件,每个硬件设备“对应”一个文件,由驱动程序提供映射
①安装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协议相关推荐
- 【Orangepi Zero2 全志H616】OLED屏应用/IIC协议
一.Orangepi的IIC接口 二.开发步骤 1.启动 linux 系统后, 先确认下/dev 下存在 i2c-3 的设备节点 从命令运行结果能观察到系统支持i2c-3和i2c-5的 ...
- 【OLED屏】4针 OLED显示屏(IIC协议)底层驱动(库封装)(包含源文件)
测试芯片STM32F103x(x=c8t6.zet6) 输出效果: 主程序main.c() #include "stm32f10x.h" #include "OLED_I ...
- 0.96寸4引脚(IIC协议)OLED驱动程序
使用STM32F103xxx对0.96寸OLED进行驱动显示. 1.IIC协议代码 iic.c #include "iic.h" #include "delay.h&q ...
- [STC89C52RC]基于IIC协议的OLED显示字符
目录 起始信号 终止信号 应答信号 选择某一点点亮 页模式: 水平模式: 垂直模式: 选择行数 编辑 选择列数 清屏 Oled显示,我们会用到字模软件 显示图片 IIC协议 1.1 IIC协议概述 ...
- STM32通过SPI协议驱动OLED屏
坚持就是胜利 一.SPI协议介绍 01 简介 02 SPI物理层 03 SPI基本通讯过程 二.OLED显示器介绍 01 简介 02 接口定义 03 与STM32接线图 三.汉字取模软件介绍 01 下 ...
- 用STM32F103达成基于I2C协议的AHT20温湿度传感器和OLED屏显示汉字
目录 一 I2C协议简介 硬件I2C与软件I2C 二 代码和ATH20芯片实现温湿度的串口显示 三 用stm32f103芯片的SPI和IIC接口接上OLED屏显示中文姓名温湿度 1 先用文字字模生成器 ...
- IIC协议初识及OLED写入指令、数据和显示的代码实现
目录 一.IIC协议概述 二.IIC协议起始和终止信号 三.应答信号 四.数据发送的时序 五.OLED写入指令和数据 六.OLED显示一个点的思路 七.OLED显示一个点的代码 八.OLED列地址 九 ...
- IIC协议与OLED
1.认识OLED 1.OLED概述: OLED(Organic Light-Emitting Diode,有机发光二极管)是一种显示技术,利用有机材料的发光特性来产生光. OLED显示器由一系列有机材 ...
- fpga驱动oled iic显示代码_Arduino提高篇02—OLED屏汉字显示
上篇中我们已经使用驱动库在OLED屏上显示出英文字符,除去数字.字母.符号等,OLED还能显示汉字.图片及任意图形.本篇介绍取模软件的使用,教大家如何在OLED屏上显示汉字. 1. 字模显示原理及取模 ...
最新文章
- c语言中求一个数的因数,【代码】求一个数的因数和、求优化、顺便也供新人参考算法...
- 面试必考之http状态码有哪些
- resin如何部署java项目_resin项目换成tomcat部署的两种方式
- Nginx如何反向代理网站和设置虚拟主机
- 【二分图判定】hdu3478 Catch
- 6-堆排序C实现(递增递减的简单转换,可优化(41行提示))
- 解决 用户'sa'登录失败。错误:18456 问题
- sh变量特性(3)默认特性
- 使用java进行婚礼庆祝_#102030:在30天内运行20 10K,庆祝Java 20年
- php显示json,PHP解决JSON中文显示问题
- Oracel 连接远端服务器
- 【java】doc转pdf
- 拓端tecdat|【数据分享】学生受欢迎程度评价数据集
- Power of Two(Leetcode231)
- xcode armv6 armv7 armv7s arm64架构分析
- 富爸爸实现财务自由七步骤
- 2022-2028年中国铝电解电容器电解液市场调研报告
- ubuntu samba Windows共享 你可能没有权限访问网络资源
- jsencrypt 公私钥解加密
- 白盒测试方法 + 实战
热门文章
- 2020年蜀山区信息学竞赛试卷(小学组)
- matlab求解黎卡提代数方程_LQR
- 计算机一到四级考试报考科目如何选?建议保存
- Asset Server 整理
- 445,wancry病毒处理目录
- springboot 中配置Swagger2
- activity启动模式 android,专题:详解Android组件Activity的启动模式singleTask_51CTO.COM
- TCP/UDP协议基本介绍
- telephony.db分析
- 设置按键退出python pygame动画(animation)程序,python检测键盘按键