OLED显示屏驱动程序:显示数字、文字和BMP图片
//显示数字函数
//x:0 ~ 127
//y:0 ~ 63
//Num:要显示的数字
//length:数字的位数 0,1,2,3...
void OLED_ShowNum(unsigned char x,unsigned char y,unsigned int Num,unsigned char length)
{
unsigned char i;
for(i=length;i>0;i--)
{
OLED_ShowChar(x,y,'0'+Num/OLED_Getpos(--length)%10,8); x+=8;
}
}
//显示单个文字函数
//x,y:坐标
//m:第几个个数组
//server:数组第几个文字
void OLED_WriteCF(uint8_t x,uint8_t y,uint8_t m,uint8_t server)
{
uint8_t i;
if(x>112)
{
x = 0;
y+=2;
}
OLED_SetPos(x,y);
for(i=0;i<16;i++)
OLED_WR_Byte(F16x16[m][i+(server-1)*32],OLED_DATA);
OLED_SetPos(x,++y);
for(i=0;i<16;i++)
OLED_WR_Byte(F16x16[m][i+(server-1)*32+16],OLED_DATA);
}
//连续显示文字函数
//x,y:坐标
//m:第几个个数组
//count:连续显示几个文字
void OLED_WriteCN(uint8_t x,uint8_t y,uint8_t m,uint8_t count)
{
uint8_t i,j = 0;
while(count--)
{
if(x>112)
{
x = 0;
y+=2;
}
OLED_SetPos(x,y);
for(i=0;i<16;i++)
OLED_WR_Byte(F16x16[m][i+j*32],OLED_DATA);
OLED_SetPos(x,++y);
for(i=0;i<16;i++)
OLED_WR_Byte(F16x16[m][i+16+j*32],OLED_DATA);
x += 16;
OLED_SetPos(x,--y);
j++;
}
}
//显示BMP图片函数
//(x0,y0):图片显示的开始地址
//(x1,y1):图片显示的结束地址
//BMP:要显示的图片的首地址,具体看fontstr.h文件
//num0:关锁 num1:开锁
void OLED_ShowBMP(uint8_t x0,uint8_t y0, uint8_t x1,uint8_t y1,const uint8_t* BMP)
{
uint8_t x,y;
for(y=y0;y<y1;y++)
{
OLED_SetPos(x0,y);
for(x=x0;x<x1;x++)
{
OLED_WR_Byte(BMP[x+(x1-x0)*y],OLED_DATA);
}
}
}
这段代码实现了一些在OLED显示屏上显示数字、文字和BMP图片的函数。
首先是OLED_ShowNum函数,用于在指定位置显示数字。根据传入的数字Num和位数length,通过循环将每一位数字显示在屏幕上。
然后是OLED_WriteCF函数,用于在指定位置显示单个文字。根据传入的参数m和server,从对应的字模数组中获取文字,并将文字显示在屏幕上。
接着是OLED_WriteCN函数,用于连续显示多个文字。根据传入的参数m、count和位置坐标,循环从字模数组中获取文字,并连续显示在屏幕上。
最后是OLED_ShowBMP函数,用于显示BMP图片。根据传入的位置坐标和图片数据,循环将图片数据写入屏幕的指定区域。
总体上,这段代码实现了在OLED显示屏上显示数字、文字和图片的功能,可以根据实际需求进行修改和扩展。
原文地址: https://www.cveoy.top/t/topic/NgU 著作权归作者所有。请勿转载和采集!