OLED显示屏-通用-驱动程序-【详细注释】个人编写


/*******************************************************************************
函数名称: WriteCommand
函数功能: OLED写命令字
函数介绍: OLED写命令字函数。
输入参数: Cmd:命令字。
返 回 值: 无
作 者:
日 期: 2018.03.07
******************************************************************************/
void WriteCommand(u8 Cmd)
{
I2CStart('L');
Write8Bits('L',0x78);
TestACK('L');
Write8Bits('L',0x00);
TestACK('L');
Write8Bits('L',Cmd);
TestACK('L');
I2CStop('L');
}

/*******************************************************************************
函数名称: WriteData
函数功能: OLED写数据
函数介绍: OLED写数据函数。
输入参数: Data:待写数据。
返 回 值: 无
作 者:
日 期: 2018.03.07
******************************************************************************/
void WriteData(u8 Data)
{
I2CStart('L');
Write8Bits('L',0x78);
TestACK('L');
Write8Bits('L',0x40);
TestACK('L');
Write8Bits('L',Data);
TestACK('L');
I2CStop('L');
}

/*******************************************************************************
函数名称: OLED_WriteByte
函数功能: OLED写字节数据
函数介绍: OLED写字节数据函数。
输入参数: Data:待写数据;typel:1为数据,0为指令。
返 回 值: 无
作 者:
日 期: 2018.03.07
******************************************************************************/
void OLED_WriteByte(u8 data,u8 type1)
{
if(type1==1)WriteData(data);
else WriteCommand(data);
}

/*******************************************************************************
函数名称: OLED_ON
函数功能: OLED开启
函数介绍: OLED开启函数。
输入参数: 无
返 回 值: 无
作 者:
日 期: 2018.03.07
******************************************************************************/
void OLED_ON()
{
OLED_WriteByte(0x8D,OLED_CMD);
OLED_WriteByte(0x14,OLED_CMD);
OLED_WriteByte(0xAF,OLED_CMD);
}

/*******************************************************************************
函数名称: OLED_OFF
函数功能: OLED关闭
函数介绍: OLED关闭函数。
输入参数: 无
返 回 值: 无
作 者:
日 期: 2018.03.07
******************************************************************************/
void OLED_OFF()
{
OLED_WriteByte(0x8D,OLED_CMD);
OLED_WriteByte(0x10,OLED_CMD);
OLED_WriteByte(0xAE,OLED_CMD);
}

/*******************************************************************************
函数名称: OLED_Clear
函数功能: OLE清屏
函数介绍: OLED清屏函数。
输入参数: 无
返 回 值: 无
作 者:
日 期: 2018.03.07
******************************************************************************/
voi

d OLED_Clear()
{
u8 i,j;
for(i=0;i<8;i++)
{
OLED_WriteByte(0xB0+i,OLED_CMD);
OLED_WriteByte(0x00,OLED_CMD);
OLED_WriteByte(0x10,OLED_CMD);
for(j=0;j<128;j++)OLED_WriteByte(0,OLED_DATA);
}
}

/*******************************************************************************
函数名称: OLED_Pow
函数功能: 求幂
函数介绍: 求幂函数。
输入参数: m:待计算数据;n:n次幂。
返 回 值: 无
作 者:
日 期: 2018.03.07
******************************************************************************/
u32 OLED_Pow(u8 m,u8 n)
{
u32 result=1;
while(n--)result=result*m;
return result;
}

/*******************************************************************************
函数名称: OLED_SetPos
函数功能: 设置显示坐标
函数介绍: 设置显示坐标函数。
输入参数: x:显示x坐标;y:显示y坐标。
返 回 值: 无
作 者:
日 期: 2018.03.07
******************************************************************************/
void OLED_SetPos(u8 x,u8 y)
{
OLED_WriteByte(0xB0+y,OLED_CMD);
OLED_WriteByte(((x&0xf0)>>4)|0x10,OLED_CMD);
OLED_WriteByte((x&0x0f),OLED_CMD);
}

/*******************************************************************************
函数名称: ShowChar
函数功能: 显示字符
函数介绍: 显示字符函数。
输入参数: x:显示x坐标;y:显示y坐标;chr:待显示字符;size:字符长度。
返 回 值: 无
作 者:
日 期: 2018.03.07
******************************************************************************/
void ShowChar(u8 x,u8 y,u8 chr,u8 size)
{
u8 c=0;
u8 i=0;
c=chr-'0';
y=y/8;
if(x>127)
{
x=0;
y=y+4;
}
if(size==32)
{
OLED_SetPos(x,y);
for(i=0;i<18;i++)OLED_WriteByte(F18X32[c*72+i],OLED_DATA);
OLED_SetPos(x,y+1);
for(i=0;i<18;i++)OLED_WriteByte(F18X32[c*72+i+18],OLED_DATA);
OLED_SetPos(x,y+2);
for(i=0;i<18;i++)OLED_WriteByte(F18X32[c*72+i+36],OLED_DATA);
OLED_SetPos(x,y+3);
for(i=0;i<18;i++)OLED_WriteByte(F18X32[c*72+i+54],OLED_DATA);
}
/* else
{
OLED_SetPos(x,y);
for(i=0;i<6;i++)OLED_WriteByte(F6X8[c][i],OLED_DATA);
}*/
}

/*******************************************************************************
函数名称: ShowString
函数功能: 显示字符串
函数介绍: 显示字符串函数。
输入参数: x:显示x坐标;y:显示y坐标;chr:待显示字符串;size:字符串长度。
返 回 值: 无
作 者:
日 期: 2018.03.07
******************************************************************************/
void ShowString(u8 x,u8 y,u8 *chr,u8 Char_Size)
{
u8 i=0;
while(chr[i]!='\0')
{
ShowChar(x,y,chr[i],Char_Size);


x+=18;
if(x>120)
{
x=0;
y+=3;
}
i++;
}
}

/*******************************************************************************
函数名称: ShowNumber
函数功能: 显示数字
函数介绍: 显示数字函数。
输入参数: x:显示x坐标;y:显示y坐标;num:待显示数字;len:数字长度;size2:字宽。
返 回 值: 无
作 者:
日 期: 2018.03.07
******************************************************************************/
void ShowNumber(u8 x,u8 y,u32 num,u8 len,u8 size2)
{
u8 t,temp;
u8 endshow=0;
for(t=0;t{
temp=(num/OLED_Pow(10,len-t-1)%10);
if((endshow==0)&&(t<(len-1)))
{
if(temp==0)
{
ShowChar(x+(size2/2)*t,y," ",size2);
continue;
}
else endshow=1;
}
ShowChar(x+(size2/2)*t,y,temp+"0",size2);
}
}

/*******************************************************************************
函数名称: ShowBMP
函数功能: 绘图
函数介绍: 绘图函数。
输入参数: x0:显示起始x坐标;y0:显示起始y坐标;x1:显示终止x坐标;y2:显示终止y坐标;BMP:待显示图片数据。
返 回 值: 无
作 者:
日 期: 2018.03.07
******************************************************************************/
void ShowBMP(u8 x0,u8 y0,u8 x1,u8 y1,u8 BMP[])
{
u16 i=0;
u8 x,y;
if(y1%8==0)y1=y1/8;
else y1=y1/8+1;
if(y0%8==0)y0=y0/8;
else y0=y0/8+1;
for(y=y0;y{
OLED_SetPos(x0,y);
for(x=x0;x}
}


相关主题
相关文档
最新文档