1.29寸7脚spiOLED屏幕(CH1115)

此屏幕分辨率  128*64,oled屏分八页,一个八位数据(uint8)可控制一竖行八个灯,64/8正好为八页,可看下图理解

/**
  * 数据存储格式:
  * 纵向8点,高位在下,先从左到右,再从上到下
  * 每一个Bit对应一个像素点
  * 
  *      B0 B0                  B0 B0
  *      B1 B1                  B1 B1
  *      B2 B2                  B2 B2
  *      B3 B3  ------------->  B3 B3 --
  *      B4 B4                  B4 B4  |
  *      B5 B5                  B5 B5  |
  *      B6 B6                  B6 B6  |
  *      B7 B7                  B7 B7  |
  *                                    |
  *  -----------------------------------
  *  |   
  *  |   B0 B0                  B0 B0
  *  |   B1 B1                  B1 B1
  *  |   B2 B2                  B2 B2
  *  --> B3 B3  ------------->  B3 B3
  *      B4 B4                  B4 B4
  *      B5 B5                  B5 B5
  *      B6 B6                  B6 B6
  *      B7 B7                  B7 B7
  * 
  * 坐标轴定义:
  * 左上角为(0, 0)点
  * 横向向右为X轴,取值范围:0~127
  * 纵向向下为Y轴,取值范围:0~63
  * 
  *       0             X轴           127 
  *      .------------------------------->
  *    0 |
  *      |
  *      |
  *      |
  *  Y轴 |
  *      |
  *      |
  *      |
  *   63 |
  *      v
  * 
  */

厂家手册上有初始化代码,只需拿来稍加修改

//初始化
void OLED_Init(void)
{
//OLED 复位
    OLED_RES_Clr();//RES 置 0
    HAL_Delay(200);//延时 200ms
    OLED_RES_Set();//RES 置 1
//OLED 初始化
    OLED_WR_Byte(0xAE,OLED_CMD);//--turn off oled panel
    OLED_WR_Byte(0x00,OLED_CMD);//---set low column address
    OLED_WR_Byte(0x10,OLED_CMD);//---set high column address
    OLED_WR_Byte(0x40,OLED_CMD);//--set start line address
    OLED_WR_Byte(0x81,OLED_CMD);//--set contrast control register
    OLED_WR_Byte(0xCF,OLED_CMD);// Set SEG Output Current Brightness
    OLED_WR_Byte(0xA1,OLED_CMD);//--Set SEG/Column Mapping 0xa0 左右反置0xa1 正常
    OLED_WR_Byte(0xC8,OLED_CMD);//Set COM/Row Scan Direction 0xc0 上下反置0xc8 正常
    OLED_WR_Byte(0xA6,OLED_CMD);//--set normal display
    OLED_WR_Byte(0xA8,OLED_CMD);//--set multiplex ratio(1 to 64)
    OLED_WR_Byte(0x3f,OLED_CMD);//--1/64 duty
    OLED_WR_Byte(0xD3,OLED_CMD);//-set display offset Shift Mapping RAMCounter (0x00~0x3F)
    OLED_WR_Byte(0x00,OLED_CMD);//-not offset
    OLED_WR_Byte(0xd5,OLED_CMD);//--set display clock divide ratio/oscillatorfrequency
    OLED_WR_Byte(0x80,OLED_CMD);//--set divide ratio, Set Clock as 100 Frames/Sec
    OLED_WR_Byte(0xD9,OLED_CMD);//--set pre-charge period
    OLED_WR_Byte(0xF1,OLED_CMD);//Set Pre-Charge as 15 Clocks & Discharge as 1Clock
    OLED_WR_Byte(0xDA,OLED_CMD);//--set com pins hardware configuration
    OLED_WR_Byte(0x12,OLED_CMD);
    OLED_WR_Byte(0xDB,OLED_CMD);//--set vcomh
    OLED_WR_Byte(0x30,OLED_CMD);//Set VCOM Deselect Level
    OLED_WR_Byte(0x20,OLED_CMD);//-Set Page Addressing Mode (0x00/0x01/0x02)
    OLED_WR_Byte(0x02,OLED_CMD);//
    OLED_WR_Byte(0x8D,OLED_CMD);//--set Charge Pump enable/disable
    OLED_WR_Byte(0x14,OLED_CMD);//--set(0x10) disable
    OLED_Clear();
    OLED_WR_Byte(0xAF,OLED_CMD);
}
//清屏函数
void OLED_Refresh(void)
{
    u8 i,n;
    for(i=0;i<8;i++)
    {
        OLED_WR_Byte(0xb0+i,OLED_CMD); //设置行起始地址
        OLED_WR_Byte(0x00,OLED_CMD);   //设置低列起始地址
        OLED_WR_Byte(0x10,OLED_CMD);   //设置高列起始地址
        for(n=0;n<128;n++)
            OLED_WR_Byte(OLED_GRAM[n][i],OLED_DATA);
    }
}
void OLED_Clear(void)
{
    u8 i,n;
    for(i=0;i<8;i++)
    {
        for(n=0;n<128;n++)
        {
            OLED_GRAM[n][i]=0;//清除所有数据
        }
    }
    OLED_Refresh();//更新显示
}
//画点函数
void OLED_DrawPoint(u8 x,u8 y,u8 t)
{
    u8 i,m,n;
    i=y/8;
    m=y%8;
    n=1<<m;
    if(t){OLED_GRAM[x][i]|=n;}
    else
    {
        OLED_GRAM[x][i]=~OLED_GRAM[x][i];
        OLED_GRAM[x][i]|=n;
        OLED_GRAM[x][i]=~OLED_GRAM[x][i];
    }
    OLED_Refresh();
}

  • 10
    点赞
  • 3
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
### 回答1: 四SPI OLED显示屏是一种采用四线串行外设接口(Serial Peripheral Interface,SPI)进行数据交互的有机发光二极管(Organic Light Emitting Diode,OLED)显示屏。SPI是一种常见的通信协议,由四根线(时钟线、数据线、使能线和片选线)组成,可实现与主控芯片之间的数据传输。 四SPI OLED显示屏具有以下特点和优势:首先,与传统并行接口的OLED显示屏相比,四SPI OLED显示屏连接简单、布线方便,可以减少电路复杂度和PCB空间占用。其次,SPI通信速度相比其他通信协议更快,数据传输效率更高,因此可以实现更快的显示速度和响应速度。再次,SPI协议可支持多个从设备同时与主控芯片通信,因此可以实现多设备共享同一SPI总线,节省硬件资源。最后,四SPI OLED显示屏采用OLED技术,具有较高的亮度、对比度和色彩鲜艳度,显示效果更加清晰、细腻。 使用四SPI OLED显示屏,可以广泛应用于各种电子设备中,如智能手表、可穿戴设备、物联网设备、便携式仪器仪表等。它能够提供良好的用户体验和视觉效果,同时简化设计和优化系统性能。通过SPI接口,主控芯片可以轻松地控制OLED显示屏的内容和显示操作,实现各种图形、文本或图像的展示。四SPI OLED显示屏的高性能和灵活性使其成为许多电子产品中不可或缺的显示设备。 ### 回答2: 4SPI OLED显示屏是一种使用SPI(串行外设接口)通信的显示屏,其具有4个连接SPI OLED显示屏使用SPI通信协议来传输数据和命令,SPI是一种全双工的串行通信协议,使用一些特定的引来实现数据传输。 这种显示屏通常采用有机发光二极管(OLED)技术,具有高对比度、快速响应和低功耗等优点。它能够显示高清晰度的图像和文字,适用于嵌入式系统、智能设备和工业控制等应用领域。 使用4SPI连接接口的OLED显示屏通常有以下几个: 1.电源(VCC):这个用于供电,一般接5V电源。 2.地(GND):这个用于接地,保证显示屏与其他电路之间的电位一致。 3.时钟(SCK):这个用于传输时钟信号,控制数据的传输速率。 4.数据(SDA):这个用于传输数据和命令,通过SPI协议将要显示的图像和文字数据发送到显示屏。 通过适当操作这四个,可以实现与SPI OLED显示屏之间的通信和控制。用户可以根据自己的需求,通过编程控制来显示不同的图像和文字内容,实现丰富多样的显示效果。
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值