精华内容
下载资源
问答
  • 1.3英寸的OLED驱动代码,写的非常好,可以直接调用
  • 1.3英寸的OLED驱动代码,写的非常好,可以直接调用
  • OLED驱动完整程序,oled驱动方式,C,C++源码
  • OLED驱动完整程序,oled驱动方式,C,C++源码.rar
  • OLED驱动程序

    2018-02-06 15:52:45
    OLED驱动程序
  • oled驱动程序,ssd1306芯片驱动程序
  • OLED驱动.zip

    2020-07-28 23:12:25
    最全OLED驱动集合, 包含IIC驱动OLED、三线SPI驱动OLED、四线SPI驱动OLED、8080驱动OLED,可以显示字符、字符串、数字、中文等等。
  • 0.96英寸OLED 驱动

    2018-05-02 13:45:41
    0.96英寸OLED驱动程序,基于C51开发,包含字母符号字库。
  • oled驱动显示屏

    2017-08-18 17:32:56
    OLED驱动,stm32例程
  • 为适应Xilinx平台Zynq的人机交互需要,提出一种基于Zynq的OLED驱动设计方法。文章阐述了OLED的特性和SPI控制方式,给出了设计流程和硬件电路图。利用Zynq的PL部分完成了OLED驱动的IP核,利用Zynq的PS部分实现了OLED...
  • OLED驱动STM32实例

    2018-06-10 23:26:56
    OLED驱动STM32实例 。包含了很多的字体库以及驱动的实现,很好的资源
  • STM32 0.96OLED驱动 图片数字字符等
  • OLED驱动C程序

    2015-09-08 17:18:00
    OLED驱动C程序,4线SPI接口,注释详细,不错的一个参考
  • oled 驱动 代码 调试 通过 好用,支持 ascii 和汉字显示,代码结构简单方面
  • 基于hal库的oled驱动

    2021-01-31 11:01:52
    基于hal库的oled驱动
  • 0.96寸OLED驱动程序,基于STM32F103,SPI
  • 讲解OLED驱动电源设计与应用
  • stm32-oled驱动.zip

    2020-04-13 17:46:03
    STM32-OLED驱动程序,支持字符串显示,文字显示等,stm32f103的单片机,嵌入式开发必备,oled屏幕是12864的0.96屏,7针驱动,直接烧录即可使用!
  • SSD1306 OLED驱动芯片 详细介绍

    万次阅读 多人点赞 2020-03-23 11:30:35
    概述   SSD1306是一款泛用的OLED驱动芯片 简介    GDDRAM内部结构    三种内存地址模式   
    SSD1306是一款OLED驱动芯片,拥有最大128*64像素支持,广泛应用在小尺寸OLED显示屏的驱动中。

    简介

      SSD1306是一款带控制器的用于OLED点阵图形显示系统的单片CMOS OLED/PLED驱动器。它由128个SEG(列输出)和64个COM(行输出)组成。该芯片专为共阴极OLED面板设计。
      SSD1306内置对比度控制器、显示RAM(GDDRAM)和振荡器,以此减少了外部元件的数量和功耗。该芯片有256级亮度控制。数据或命令由通用微控制器通过硬件选择的6800/8000系通用并行接口、I2C接口或串行外围接口发送。该芯片适用于许多小型便携式应用,如手机副显示屏、MP3播放器和计算器等。

     器件特性

    • 分辨率:128 x 64 点阵
    • 电源:对于集成逻辑电路,VDD=1.65V3.3V;对于面板驱动,VCC=7V至15V
    • 点阵驱动:OLED驱动输出电压,最大15V;SEG最大源电流:100uA;COM最大汇电流:15mA;256阶对比度亮度电流控制
    • 内置128 x 64位SRAM显示缓冲区
    • 引脚可选择的MCU接口:8位6800/8080串并接口、 3/4线串行外围接口、I2C接口
    • 水平和垂直方向的屏幕保持连续滚动功能
    • RAM写同步信号
    • 可编程帧速率和复用率
    • 行重映射和列重映射
    • 片内内置振荡器
    • COG和COF的芯片封装
    • 工作温度范围广:-40°C至85°C

    SSD1306结构介绍

     内部结构图

    在这里插入图片描述

     引脚分配图

    在这里插入图片描述

     引脚说明

    其他引脚:
    • IREF:段输出电流参考脚,VSS间应连接一个电阻,以将IREF电流保持在12.5uA
    • CL:外部时钟输入引脚。用外部时钟时,此引脚输入外部时钟信号。用内部时钟时应连接到VSS
    • CLS:内部时钟启用引脚。拉高时内部时钟启用,拉低时内部时钟禁用,
    • FR:用于输出RAM写同步信号,不使用应当NC pin处理
    • TR0~TR6:测试保留引脚,当做NC pin处理
    • NC:空引脚,不要短接
    电源引脚:
    • VDD:芯片逻辑器件供电引脚
    • VCC:显示面板驱动电源引脚
    • VSS:接地引脚
    • VLSS:模拟接地引脚,在外部连接到VSS
    • VCOMH:用于COM的高电平电压输出的引脚,与VSS之间应该连接一个电容
    驱动器输出引脚:
    • SEG0~SEG127:列输出脚,OLED关闭时,处于VSS状态
    • COM0~COM63:行输出脚,OLED关闭时,处于高阻抗状态
    MCU接口引脚:
    • B[2:0]:MCU总线接口选择脚。通过配置B0~B2来选择不同的MCU总线接口。
    • D[7:0]:连接到MCU的8位双向数据总线,不同MCU总线接口有不同用法
    • D/C#:数据/命令控制脚,不同MCU总线接口有不同用法
    • R/W#(WR#):与6800/8080通用并行总线接口相关,使用串行接口时作拉高处理
    • E (RD#):与6800/8080通用并行总线接口相关,使用串行接口时作拉高处理
    • RES#:复位信号引脚,低电平有效。
    • CS#:芯片片选引脚,低电平有效

    上电复位

      当RES#输入低电平时,芯片开始如下的初始化进程:

    1. 关闭显示(AEH)
    2. 进入128x64 显示模式
    3. 恢复到默认的SEG和COM映射关系(A0H,D3H-00H)
    4. 清除串行接口中移位寄存器内的数据
    5. GDDRAM显示开始行设为0(40H)
    6. 列地址计数器重置为0
    7. 恢复到默认的COM扫描方向(C0H)
    8. 对比度寄存器初始化为7FH(81H-7FH)
    9. 正常显示模式(A4H)

    MCU总线接口

     MCU总线接口配置

      SSD1306驱动器集成了 6800/8080 系列通用并行接口,串行接口:SPI 接口以及 IIC 接口。通过SSD1306的 BS[2:0]引脚 来选择使用的接口类型,如下图(1为拉高,0为拉低):

    在这里插入图片描述
      MCU不同总线接口的引脚配置如下图所示:

    在这里插入图片描述


     MCU总线接口类型

    (6800/8080系列通用并行接口不多介绍)

    4线SPI
    引脚配置:

      4线SPI接口包括:串行时钟(SCLK)、串行数据(SDIN)、数据/命令控制(D/C#)、片选(CS#)。在4线SPI模式下,D0用作SCLK,D1用作SDIN。对于未使用的数据管脚,D2应保持打开状态。从D3到D7,E和R/W#(WR#)的引脚连接到外部地(拉低)。
    在这里插入图片描述

    写入时序:

      在SCLK每个上升沿,SDIN上的数据按 D7,D6,…,D0 的顺序(高位在前)移位到一个8位移位寄存器中。每八个时钟对D/C#进行一次采样,移位寄存器中的8位数据根据D/C#的采样结果决定写入到图形显示数据RAM(GDDRAM)或命令寄存器。
      4线SPI的写时序如下所示:
    在这里插入图片描述

    3线SPI
    引脚配置:

      3线SPI接口包括:串行时钟(SCLK)、串行数据(SDIN)和片选(CS#)。在3线SPI模式下,D0用作SCLK,D1用作SDIN。对于未使用的数据管脚,D2应保持打开状态。从D3到D7,R/W#(WR#),E,D/C# 的引脚连接到外部地(拉低)。
    在这里插入图片描述

    写入时序:

    在这里插入图片描述
      该操作类似于4线串行接口,但不使用D/C#引脚。
      一共9位数据按 高位在前 的顺序,每9个时钟后全部移位到移位寄存器中:D/C#位(数据首位),D7到D0位。D/C# 位将确定移位寄存器中的8位(D7~D0)数据字节写入GDDRAM(D/C#=1)或命令寄存器(D/C#=0)。串行模式下,只允许写操作


    IIC
    基础配置:

      IIC总线包含从机地址位 SA0,数据信号线 SDA(SDAOUT/D2输出和SDAIN/D1输入)和时钟信号线 SCL组成。SDA和SCL线都必须接上拉电阻,RES#用来初始化芯片。
      IIC设备在数据传输之前都必须识别从机地址。SSD1306的从机地址有 0111100b0111101b 两种,通过将SA0(D/C#)脚上拉到高电平可以设置从机地址第七位为 1,将SA0(D/C#)脚下拉到低电平可以设置从机地址第七位为 0。通过SA0(D/C#)脚的上拉和下拉来设置从机地址,从而令总线上可以存在最多2个SSD1306驱动器。

    在这里插入图片描述
      SDAOUT/D2和SDAIN/D1连接到一起作为SDA。SDAIN引脚必须连接到SDA,SDAOUT引脚可以不连接。当SDAOUT引脚不连接,应答信号将会被12C总线忽略。

    写入时序:

      IIC写入时序如下所示:

    1. 主机先发起开始(START)信号,然后发送1byte首字节,包括从机地址(7位)和读写数据位(1位,最低位,0为写模式),驱动器识别从机地址为本机地址之后,将会发出 应答信号(ACK) 。(首字节组成如下图所示)
    2. 主机收到从机(驱动器)的应答信号之后,随后传输1byte控制字节。一个控制字节主要由
      COD/C# 位后面再加上六个0组成的。(控制字节组成如下图所示)
      如果Co为0,后面传输的信息就只包含数据字节。
      D/C# 位决定了下个数据字节是作为命令还是数据。D/C# 为0时,下一个数据被视为命令;DC# 为1时,下一个数据被视为显示数据,存储到GDDRAM中。
    3. 收到控制字节ACK信号之后,传输要写入的数据字节。
    4. 传输完毕之后主机发出结束(STOP)信号

    在这里插入图片描述

    读写控制

      SSD1306通过 D/C#R/W# 两位来确定:读/写数据,写命令和读状态四种通信行为。具体如下图,不再赘述:
    在这里插入图片描述


    GDDRAM内部结构

      显示RAM:GDDRAM(Graphic Display Data RAM )内部结构如下所示:
      GDDRAM是位映射静态RAM,大小为 128x64 位。GDDRAM分为8页(PAGE0~PAGE7),每页内 1个SEG对应1Byte数据,一页由 128 Byte 组成。一帧显示数据为 1024 Byte(1KB)。
    在这里插入图片描述
      1个数据字节写入GDDRAM时,当前列(SEG)同一页(PAGE)的所有行(COM)图像数据都被填充(即由列地址指针指向的整列(8位)被填充)。数据位D0写入顶行,数据位D7写入底行。(由上到下,由低到高)
    在这里插入图片描述


    三种GDDRAM寻址模式

     页寻址

      页寻址模式是器件默认选择的GDDRAM寻址模式,通过“20H,02H”命令可以设置寻址模式为页寻址。
      页寻址模式下,寻址只在一页(PAGEn)内进行,地址指针不会跳到其他页。每次向GDDRAM写入1byte显示数据后,列指针会自动+1。当128列都寻址完之后,列指针会重新指向SEG0而页指针仍然保持不变。通过页寻址模式我们可以方便地对一个小区域内数据进行修改。
    在这里插入图片描述

     水平寻址

      水平寻址模式可以通过指令“20H,00H”来设置。
      水平寻址模式下,每次向GDDRAM写入1byte数据后,列地址指针自动+1。列指针到达结束列之后会被重置到起始行,而页指针将会+1。页地址指针达到结束页之后,将会自动重置到起始页。水平寻址模式适用于大面积数据写入,例如一帧画面刷新。
      (下图所示起始页为0,结束页为7;起始列为0,结束列为127)
    在这里插入图片描述

     垂直寻址

      垂直寻址模式可以通过指令“20H,01H”来设置。
      垂直寻址模式下,每次向GDDRAM写入1byte数据之后,页地址指针将会自动+1。页指针到达结束页之后会被重置到0,而列指针将会+1。列地址指针达到结束页之后,将会自动重置到起始列。
      (下图所示起始页为0,结束页为7;起始列为0,结束列为127)
    在这里插入图片描述


    指令详解

     基础指令

    自己整理的指令表总括如下:

    在这里插入图片描述
    1.设置对比度 (81H+A[7:0])
      这是一条双字节指令,由第二条指令指定要设置的对比度级数。
      A[7:0]00H~FFH 分别指定对比度为 1~256 级。SEG(段)输出的电流大小随对比度级数的增加而增加。

    2.设置全屏全亮 (A4H / A5H)
      这是一条单字节指令,用于开关屏幕全亮模式。
      A4H 设置显示模式为正常模式,此时屏幕输出GDDRAM中的显示数据。
      A5H 设置显示模式为全亮模式,此时屏幕无视GDDRAM中的数据,并点亮全屏。
      通过A5H设置全屏点亮之后可以通过A4H来回复正常显示。

    3.设置正常/反转显示 (A6H / A7H)
      这是一条单字节指令,用于设置屏幕显示
      A6H 设置显示模式为 1亮0灭,而 A7H 设置显示模式为 0亮1灭

    4.开关显示屏 (AEH / AFH)
      这是一条单字节指令。
      AEH 关闭屏幕,而 AFH 开启屏幕。
      屏幕关闭时,所有SEG和COM的输出被分别置为Vss和高阻态。


     地址指令

    自己整理的指令表总括如下:

    在这里插入图片描述
    1.设置GDDRAM寻址模式 (20H+A[1:0])
      这是一条双字节指令,由 A[1:0] 指定要设置的地址模式。
      A[1:0]=00b时为水平地址模式;A[1:0]=01b时为垂直地址模式;A[1:0]=10b时为页地址模式;A[1:0]=11b时为无效指令;
      由于第二条指令前6位值无规定,所以直接用0替代,得到:00H-水平;01H-垂直;02H页

    2.设置起始/终止列地址 (21H+A[6:0]+B[6:0])
      这是一条三字节指令,由A[6:0]指定起始列地址,B[6:0]指定终止列地址。
      同样,由于前1位值无规定,所以:A[6:0]B[6:0]00H~7FH 的取值指定起始/终止列地址为 0~127
      这条指仅在水平/垂直模式下有效,用来设置水平/垂直模式的初始列和结束列

    3.设置起始/终止页地址 (22H+A[2:0]+B[2:0])
      这是一条三字节指令,由A[2:0]指定起始也地址,B[2:0]指定终止页地址。
      由于前5位值无规定,所以:A[2:0]和B[2:0]从 00H~07H 的取值指定起始/终止页地址为 0~7
      这条指仅在水平/垂直模式下有效,用来设置水平/垂直模式的初始页和结束页

    4.设置起始列地址低位 (00H~0FH)
      这是一条单字节指令。
      高4位恒定为0H,低4位为要设置的起始列地址的低4位。这条指令仅用于页寻址模式。

    5.设置起始列地址高位 (10H~1FH)
      这是一条单字节指令
      高4位恒定为1H,低4位为要设置的起始列地址的高4位。这条指令仅用于页寻址模式。

    6.设置页地址 (B0H~B7H)
      这是一条单字节指令
      高4位恒定为BH,第5位规定为0,低3位用于设置页地址,从 B0H~B7H 分别设置起始页为 0~7。这条指令仅用于页寻址模式。


     硬件指令

    自己整理的指令表总括如下:

    在这里插入图片描述
    1.设置GDDRAM起始行 (40H~7FH)
      这是一条单字节指令。
      高2位规定为01b,由低6位的取值来决定起始行。整体指令从 40H~7FH 分别设置起始行为 0~63

    2.设置SEG映射关系 (A0H / A1H)
      这是一条单字节指令。
      A0H 设置GDDRAM的COL0映射到驱动器输出SEG0。
      A1H 设置COL127映射到SEG0

    3.设置COM扫描方向 (C0H / C8H)
      这是一条单字节指令。
      C0H 设置 从COM0扫描到COM[N-1],N为复用率
      C1H 设置 从COM[N-1]扫描到COM0

    4.设置复用率 (A8H+A[5:0])
      这是一条双字节指令,由A[5:0]指定要设置的复用率
      复用率(MUX ratio)即选通的COM行数,不能低于16,通过A[5:0]来指定。
      A[5:0] 高两位无规定视为0,所以第二条指令从 0FH~3FH 的取值设置复用率为 1~64(即A[5:0]+1)。A[5:0]从0到14的取值都是无效的。

    5.设置垂直显示偏移 (D3H+A[5:0])
      这是一条双字节指令,由A[5:0]指定偏移量。
      垂直显示偏移即整个屏幕向上移动的行数,最顶部的行会移到最底行。
      A[5:0] 高两位无规定视为0,所以第二条指令从0FH~3FH的取值设置垂直偏移0~63

    6.设置COM硬件配置 (DAH+A[5:4])
      这是一条双字节指令,由A[5:4]进行设置。
      A[5] 位设置COM左右反置,A[4] 用来设置序列/备选引脚配置,其他位有规定,规定如下所示。

    在这里插入图片描述
      SSD1306的COMn引脚一共有左边 COM32~COM63 和右边 COM0~COM31 共64个(金手指面朝上方)。通过设置A[5]可以让左右COM引脚的输出互换。A[5]=0时禁止左右反置,A[5]=1时启用左右反置。
      COM引脚的排列有序列和奇偶间隔(备选)两种,通过A[4]进行设置。A[4]=0时使用序列COM引脚配置,A[5]=1时使用奇偶间隔(备选)COM引脚配置。


     时序和指令

    自己整理的指令表总括如下:

    在这里插入图片描述
    1.设置显示时钟分频数和fosc (D5H+A[7:0])
    2.设置预充电周期 (D9H+A[7:0])
    3.设置VCOMH输出的高电平 (DBH+A[6:4])
    4.空操作 (E3H)
      


     滚动指令

    自己整理的指令表总括如下:

    在这里插入图片描述
      指令表如图,关于滚动指令会单独开篇讲,期待我的后续文章。

    自己写的驱动程序(C51)

    /**********************************************************************************
     * 程序名:    SSD1306驱动程序	
     * 作者:      DaveoCKII			
     * 日期:      2020.3.12			
     * 版本:      STC12C5A60S2 		
     **********************************************************************************/
    
    #ifndef _SSD1306_H_
    #define _SSD1306_H_
    
    #include <STC12C5A60S3.H>
    //------------------------------------定义列表------------------------------------//
    sbit SCL = P3^4;	// 时钟线
    sbit SDA = P3^3;	// 数据线
    //------------------------------------函数列表------------------------------------//
    void OLED_Init(void);						// OLED 初始化
    void OLED_Clear(void);						// OLED 清屏
    void OLED_WriteCmd(unsigned char cmd);		// OLED 单次写命令
    void OLED_WriteDat(unsigned char dat);		// OLED 单次写数据
    void OLED_WriteC(unsigned char cmd);		// OLED 连续写命令	在结尾要加上IIC_STOP();
    void OLED_WriteD(unsigned char dat);		// OLED 连续写数据	在结尾要加上IIC_STOP();
    void OLED_Frame(unsigned char P[8][128]);	// OLED 一帧图像写入
    //------------------------------------内部函数------------------------------------//
    static void IIC_START(void);				// IIC_开始信号	(重开始信号用此替代)
    static void IIC_STOP(void); 				// IIC_结束信号
    static unsigned char IIC_WaitACK(void);		// IIC_等待应答		返回值: 0:NACK 1:ACK 
    static void IIC_Write(unsigned char dat);	// IIC_写数据函数	参数:要写入的数据
    static unsigned char IIC_Read(void);		// IIC_读数据函数	返回值:读到的数据
    static void delay1us(void);					// 延时1us    
    //------------------------------------函数内容------------------------------------//
    
    void OLED_WriteD(unsigned char dat)
    {
    	IIC_START();		// 通信开始
    	IIC_Write(0X78);	// 写从机地址'0111 100' 读写符号'0'
    	IIC_WaitACK();
    	IIC_Write(0X40);	// 写数据 Co='0' C/D='100 0000'
    	IIC_WaitACK();
    	IIC_Write(dat);		// 写入数据
    	IIC_WaitACK();
    }
    
    void OLED_WriteC(unsigned char cmd)
    {
    	IIC_START();		// 通信开始
    	IIC_Write(0X78);	// 写从机地址'0111 100' 读写符号'0'
    	IIC_WaitACK();
    	IIC_Write(0X00);	// 写命令 Co='0' C/D='000 0000'
    	IIC_WaitACK();
    	IIC_Write(cmd);		// 写入命令
    	IIC_WaitACK();
    }
    
    void OLED_WriteDat(unsigned char dat)
    {
    	OLED_WriteD(dat);
    	IIC_STOP();			// 通信结束
    }
    
    void OLED_WriteCmd(unsigned char cmd)
    {
    	OLED_WriteC(cmd);
    	IIC_STOP();			// 通信结束
    }
    
    void OLED_Init(void)
    {	
    	OLED_WriteC(0XAE);		// 关OLED显示
    	// 基础设置
    	OLED_WriteC(0XA4);		// 输出GDDRAM内容	
    	OLED_WriteC(0XA6);		// 正常显示(1亮0灭)	
    	OLED_WriteC(0X81);		// 设置对比度		
    	OLED_WriteC(0X7F);		// 第127级对比度	
    	// COM和SEG输出设置
    	OLED_WriteC(0XD3);		// 设置垂直显示偏移(向上)
    	OLED_WriteC(0X00);		// 偏移0行					
    	OLED_WriteC(0X40);		// 设置GDDRAM起始行 0		
    	OLED_WriteC(0XA8);		// 设置MUX数 (显示行数)		
    	OLED_WriteC(0X3F);		//  MUX=63	 (显示63行)			
    	OLED_WriteC(0XA1);		// 左右反置关(段重映射)		
    	OLED_WriteC(0XC8);		// 上下反置关(行重映射)		
    	OLED_WriteC(0XDA);		// 设置COM引脚配置		
    	OLED_WriteC(0X02);		// 序列COM配置,禁用左右反置
    	// 时钟设置
    	OLED_WriteC(0XD5);		// 设置DCLK分频和OSC频率
    	OLED_WriteC(0X80);		// 无分频,第8级OSC频率	
    	// 开OLED
    	OLED_WriteC(0X8D);		// 启用电荷泵
    	OLED_WriteC(0X14);		// 启用电荷泵
    	OLED_WriteC(0XAF);		// 开OLED显示
    	
    	IIC_STOP();
    }
    
    void OLED_Clear(void)
    {
    	unsigned char i,j;
    	
    	OLED_WriteC(0X00);		// 水平寻址模式 
    	OLED_WriteC(0X21);		// 设置列起始和结束地址
    	OLED_WriteC(0X00);		// 列起始地址 0
    	OLED_WriteC(0X7F);		// 列终止地址 127
    	OLED_WriteC(0X22);		// 设置页起始和结束地址
    	OLED_WriteC(0X00);		// 页起始地址 0
    	OLED_WriteC(0X07);		// 页终止地址 7
    	
    	for(i=0; i<8; i++)		// 写入一帧'0'
    		for(j=0; j<128; j++)
    			OLED_WriteD(0X00);
    	
    	IIC_STOP();
    }
    
    void OLED_Frame(unsigned char P[8][128])
    {
    	unsigned char i,j;
    	
    	OLED_WriteC(0X20);	// 设置GDDRAM模式
    	OLED_WriteC(0X00);	// 水平寻址模式 
    	OLED_WriteC(0X21);	// 设置列起始和结束地址
    	OLED_WriteC(0X00);	// 列起始地址 0
    	OLED_WriteC(0X7F);	// 列终止地址 127
    	OLED_WriteC(0X22);	// 设置页起始和结束地址
    	OLED_WriteC(0X00);	// 页起始地址 0
    	OLED_WriteC(0X07);	// 页终止地址 7
    	
    	for(i=0; i<8; i++)		// 写入一帧数据
    		for(j=0; j<128; j++)
    			OLED_WriteDat(P[i][j]);
    	
    	IIC_STOP();
    }
    
    //----------------------------------内部函数内容-----------------------------------//
    
    static void IIC_START(void)
    {
    	SCL = 0;		// SCL拉低 防止可能出现的各种误动作
    	delay1us();
    	SDA = 1;		// SDA拉高 
    	SCL = 1;		// SCL拉高 准备发出起始信号
    	delay1us();		
    	SDA = 0;		// SDA拉低 发出起始信号
    	SCL = 0;		// SCL拉低 开始传输
    }
    
    static void IIC_STOP(void)
    {
    	SCL = 0;		// SCL拉低 防止可能出现的各种误动作
    	SDA = 0;		// SDA拉低
    	SCL = 1;		// SCL拉高 准备发出结束信号
    	delay1us();		
    	SDA = 1;		// SDA拉高 发出结束信号
    }
    
    static unsigned char IIC_WaitACK(void)
    {
    	bit s;
    	SCL = 0;		// 拉低SCL
    	delay1us();
    	SDA = 1;		// 拉高SDA 主机释放总线
    	delay1us();
    	SCL = 1;		// 拉高SCL 
    	delay1us();		
    	s = SDA;		// 采集SDA信号线状态
    	delay1us();		
    	SCL = 0;		// 拉低SCL 结束询问ACK
    	if(s)
    		return 0;	// 无应答(ACK)
    	else
    		return 1;	// 有应答(ACK)	
    }
    
    static void IIC_Write(unsigned char dat)
    {
    	unsigned char i;
    	for(i=0; i<8; i++) 
    	{
    		SCL = 0; 			// 拉低SCL 准备写数据
    		SDA = dat & 0X80;	// 写数据
    		dat <<= 1;			// 数据格式:高位在前
    		SCL = 1;			// 拉高SCL 发送数据
    		delay1us();
    		SCL = 0;			// 拉低SCL 结束发送
    	}
    }
    
    static void delay1us(void)
    {	
    
    }
    
    //---------------------------------------------------------------------------------//
    //------------------------------------定义结束--------------------------------------//
    //---------------------------------------------------------------------------------//
    
    #endif
    


      DaveoCKII
    2020.3.23

    展开全文
  • STM32+OLED驱动

    2018-05-09 11:15:10
    STM32+OLED驱动,模拟SPI通信,可显示字符,数字,图案。显示串口收到的数据
  • Zynq OLED驱动代码
  • 包含了oled驱动源码以及makefile,下载可直接编译,挂载使用。
  • vivado+zedboard之OLED驱动

    2014-07-25 21:22:41
    vivado+zedboard之OLED驱动。包括oled在vivado2014.1下实现的源文件、oled驱动文件等。实现方法见我的博客
  • HAL库IIC OLED 驱动.zip

    2019-07-12 23:10:56
    HAL库IIC OLED驱动文件,包含oled.c oled.h 和ASCII.h文件,直接添加即可
  • 基于STM32F427的OLED驱动

    2021-05-12 21:43:15
    基于STM32F427的OLED驱动,使用STM32F427开发版,使用0.96寸OLED模块,驱动OLED显示字符,完整的hal工程,底层完整,可以移植和使用。实测可以,适合模块学习和移植
  • ssd1306 OLED驱动例程与芯片规格书
  • STM32 OLED驱动 SPI协议

    2016-07-29 17:35:53
    STM32的OLED驱动(4线SPI) 另加电源、地,6线的OLED
  • OLED驱动电路设计

    2021-01-19 19:31:37
    今天小编给大家带来几个平日里做有源、无源oled显示驱动设计的例子,以供大家作为电子设计参考。 一、驱动控制SSD1303实现96x64点阵PM-OLED 本例子使用Solomon公司的OLED显示驱动电路SSD1303,结合AT89C...

空空如也

空空如也

1 2 3 4 5 ... 20
收藏数 6,426
精华内容 2,570
关键字:

oled如何驱动