OLED显示_1

 
显示:

在选定的坐标下写入需显示的数据或命令;

接口:

并口(6800/8080)、串口(SPI、I2C)

函数类型:

1、基础函数:

void OLED_WR_Byte(u8 dat,u8 cmd),分为串口字节写入和并口字节写入两种,根据条件进行不同编译;

参数1:需要写入的字节;参数2:字节含义(0表示命令,1表示数据)

 

 

void OLED_Display_On(void)
{
    OLED_WR_Byte(0x8D,OLED_CMD);    //电荷泵设置:包含2个字节,命令字
    OLED_WR_Byte(0x14,OLED_CMD);   //设置值:00010100,BIT2为1
OLED_WR_Byte(0xAF,OLED_CMD); //diaplay on }

 

void OLED_Display_Off(void)
{
    OLED_WR_Byte(0X8D,OLED_CMD);  //电荷泵设置
    OLED_WR_Byte(0X10,OLED_CMD);  //00010000 BIT2为0
OLED_WR_Byte(0XAE,OLED_CMD); //DISPLAY OFF
}

 

 1 void OLED_Clear(void)
 2 {
 3     u8 i,n;
 4     for(i=0;i<8;i++)
 5     {
 6         for(n=0;n<128;n++)
 7         {
 8             OLED_GRAM[n][i]=0X00;   //遍历所有点位复位 
 9         }
10     }
11     OLED_Refresh_Gram();   //闪存更新    
12 }
View Code

 

void OLED_Refresh_Gram(void)
{
    u8 i,n;
    for(i=0; i<8; i++)
    {
        OLED_WR_Byte(0xb0+i,OLED_CMD);  //设置页地址(0~7)
        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); //写数据
        }
    }
}
闪存更新函数

 

//画点,坐标原点在左上角,页号起始点在左下角 
//x:0~127
//y:0~63
//t:1 填充 0,清空
void OLED_DrawPoint(u8 x,u8 y,u8 t)  
{
    u8 pos,bx,temp=0;
    if(x>127||y>64) return;  //坐标超限,坐标原点在左上角 
    pos =7-y/8;     //每页有8行(y),页号起始在左下角 
    bx =y%8;     //这里是为了要移位,因为沿x轴翻转,自然上下要调换,你可以在坐标系上画个q,沿x轴翻转后得到的d,当前页的行号
    temp=1<<(7-bx);   //"1"左移(7-bx)个位  
    if(t) 
    {
        OLED_GRAM[x][pos]|=temp;  // 填充
    }else
    {
        OLED_GRAM[x][pos]&=~temp;  //清空
    }
}
画点函数

 

posted @ 2021-07-22 15:39  喝茶猫  阅读(379)  评论(0)    收藏  举报