显示:


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

接口:

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

函数类型:

1、基础函数:

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

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

 OLED显示_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
}


 


OLED显示_1_页地址_02OLED显示_1_数据_03


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

 


OLED显示_1_页地址_02OLED显示_1_数据_03


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); //写数据
}
}
}

闪存更新函数

 


OLED显示_1_页地址_02OLED显示_1_数据_03


//画点,坐标原点在左上角,页号起始点在左下角 
//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; //清空
}
}

画点函数