fpga驱动oled iic显示代码_Arduino传感器教程 第14章OLED 显示屏模块

OLED 显示屏模块

目录

一、模块简介

二、用法示例:显示文字

三、实验一:使用四针 OLED(IIC)

四、实验二:使用七针 OLED 显示屏(SPIs)

模块简介

0.96 寸 OLED 显示屏是一款小巧的显示屏。OLED 显示技术具有 自发光功耗小的特点,使用时无需背光。并且只有在线路接对时显示屏才可发光。具有多个控制指令、可以控制 OLED 的亮度、对比度、开关升压电路等指令、 操作方便功能丰富、可显示汉字、ASCII、图案等。 OLED 屏幕的坐标系统其实就是一个 128(width)X64(height)点阵。在坐标系中,左上角是原点,向右是 X 轴,向下是 Y 轴。其接口类型分为两种:IIC 接口(左图)和 SPI 接口(右图)两种。 6d1f91609d5aa81627ae9c2c65e73dcf.png 以下介绍两种类型 一、 4 针的 OLED 屏(IIC):有四个引脚,即 SDA(数据线) SCK(时钟线) VDD(3.3V)GND 二、 7 针的 OLED 屏默认使用 SPI 接口,经过调节后也可转变为 IIC 接口,其有七个引脚: 1.GND(电源地) 2.VCC(电源正 3.3~5V)
3.D0(SPI 接口时为 SPI 时钟线,IIC 接口时为 IIC 时钟线)  4.D1(SPI 接口时为 SPI 数据线,IIC 接口时为 IIC 数据线)  5.RES(OLED 复位,OLED 上电后需要做一次复位)
6.DC(SPI 数据/命令选择脚,IIC 接口时用来设 IIC 地址)  7.CS(OLED SPI 片选,低电平有效,如不想用必须接地)

用法示例:显示文字

 1 

材料准备

Arduino Uno OLED 显示屏 跳线 一、首先要确定自己手中 OLED 屏幕的芯片类型,常见的有 SSD1306 SH1107 两种类型以下以 SSD1306 为例。 二、其次,介绍以下此例程中将要调用的库:库和库:与通信的实现有关,在 Arduino IDE 中都有。 库和 库:一般 OLED 屏幕都会有一套相配套的程序库,比较主流的是 Adafruit_GFX、Adafruit_SSD1306 库和 u8g、u8g2。以下使用的是 Adafruit 系列库,Adafruit_GFX 定义了一系列的绘画方法(线,矩形,圆....),属于基础类,Adafruit_SSD1306 是以 Adafruit_GFX 为基础,专门用于 SSD1306 芯片的驱动库,这个库的功能是画图。此二者在 ArduinoIDE 也有集成,但需自行安装。 安装步骤1.工具>>管理库>>Adafruit_GFX>>安装
  • 1
    点赞
  • 6
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
以下是一个简单的FPGA驱动OLED IIC显示代码示例: ```verilog module oled_iic_driver( input clk, //时钟信号 input reset, //复位信号 output reg [7:0] data_out, //输出数据信号 output reg sda, //IIC SDA信号 output reg scl //IIC SCL信号 ); //定义IIC传输状态 parameter IDLE = 2'b00; //空闲状态 parameter START = 2'b01; //起始状态 parameter WRITE = 2'b10; //写状态 parameter READ = 2'b11; //读状态 //定义OLED地址 parameter OLED_ADDR = 8'h78; //定义IIC传输计数器 reg [3:0] cnt; //定义IIC传输状态寄存器 reg [1:0] state; //定义写入数据缓冲区 reg [7:0] data_in; //初始化 initial begin cnt = 4'b0000; state = IDLE; data_in = 8'b00000000; end //状态机 always @(posedge clk) begin if(reset) begin cnt <= 4'b0000; state <= IDLE; data_in <= 8'b00000000; sda <= 1'b1; scl <= 1'b1; end else begin case(state) IDLE: begin sda <= 1'b1; scl <= 1'b1; if(cnt == 4'b0000) begin state <= START; cnt <= 4'b0001; end end START: begin sda <= 1'b0; if(cnt == 4'b0001) begin scl <= 1'b0; cnt <= 4'b0010; end else begin cnt <= cnt + 1; end end WRITE: begin sda <= data_out[cnt]; if(cnt == 4'b1000) begin scl <= 1'b0; cnt <= 4'b0001; end else begin cnt <= cnt + 1; end end READ: begin sda <= 1'b1; if(cnt == 4'b1000) begin scl <= 1'b0; cnt <= 4'b0001; end else begin cnt <= cnt + 1; end end default: begin sda <= 1'b1; scl <= 1'b1; end endcase end end //数据输入 always @(posedge clk) begin if(reset) begin data_in <= 8'b00000000; end else begin case(state) IDLE: begin data_in <= 8'b00000000; end START: begin data_in <= OLED_ADDR; end WRITE: begin data_in <= data_in << 1; data_in[0] <= data_out[cnt]; end READ: begin data_in <= data_in << 1; end default: begin data_in <= 8'b00000000; end endcase end end endmodule ``` 请注意,这只是一个示例代码,你需要根据你的OLED显示器和FPGA开发板进行相应的修改。

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值