STC32G12K128驱动OLED12864, SPI 或 I2C 两种方式
STC32G8K64 驱动OLED12864, SPI 或 I2C 两种方式
整个的演示功能如上所示,其中整个画面均做了缓存处理,可以局部点亮任意一个点,且不会覆盖掉原来的画面。
void OLED_BuffClear(void); //清屏
void OLED_BuffShow(void); //OLED刷新显示
void OLED_BuffShowPoint(unsigned char x,unsigned char y); //OLED显示一个点
void OLED_BuffShowLine( u8 x1, u8 y1, u8 x2,u8 y2); //OLED显示一条线
void OLED_BuffShowRectangle(u8 x1, u8 y1, u8 x2, u8 y2); //OLED显示一个矩形
void OLED_BuffShowCircle(u8 x, u8 y, u8 r); //OLED显示一个圆形
void OLED_BuffShowChar(u8 x,u8 y,char asc, u8 mode); //OLED显示一个8*16字符
void OLED_BuffShowGBK(u8 x,u8 y,char *gbk,u8 mode); //OLED显示一个16*16汉字
void OLED_BuffShowString(u8 x,u8 y,char *s,u8 mode); //OLED显示一个16像素的汉字和字符
void OLED_BuffShowNum(u8 x,u8 y,long num,u8 mode); //OLED显示一个整形变量
void OLED_BuffShowNum02F(u8 x,u8 y,float num,u8 mode); //OLED显示一个两位小数变量
void OLED_BuffShowChar32(u8 x,u8 y,u8 num, u8 mode) ; //OLED显示一个16*32的字符
void OLED_BuffShowBMP(u8 x0, u8 y0,u8 x1, u8 y1,u8 BMP[]); //OLED显示一个图片
//-----------------------------------------显示图片-----------------------------------------
OLED_BuffClear(); //清除全部缓存
OLED_BuffShowBMP(0,0,128,8,OLED12864_IMG); //显示LOGO图片
OLED_BuffShow(); //将缓存写入显示屏显示
delay_ms(DELAY_TIME); //延时
//-----------------------------------------显示字符-----------------------------------------
OLED_BuffClear(); //清除全部缓存
OLED_BuffShowString(0,0,"HEELO ,WELCOME TO USE STC32&OLED12864!",0); //显示数据
OLED_BuffShow(); //将缓存写入显示屏显示
delay_ms(DELAY_TIME); //延时
//-----------------------------------------显示汉字-----------------------------------------
OLED_BuffClear(); //清除全部缓存
OLED_BuffShowString(0,0,"你好,欢迎使用STC 驱\xfd动OLED12864的历程",0); //显示数据
OLED_BuffShow(); //将缓存写入显示屏显示
delay_ms(DELAY_TIME); //延时
//-----------------------------------------显示点-----------------------------------------
OLED_BuffClear(); //清除全部缓存
OLED_BuffShowString(32,0,"画点测试"); //显示数据
OLED_BuffShow(); //将缓存写入显示屏显示
for( i=0;i<64;i++ ) //循环64次
{
OLED_BuffShowPoint(i*2,25); //显示一个点
OLED_BuffShow(); //刷新显示
delay_ms(50); //延时
}
//-----------------------------------------显示线-----------------------------------------
OLED_BuffClear(); //清除全部缓存
OLED_BuffShowString(32,0,"画线测试"); //显示数据
OLED_BuffShow(); //将缓存写入显示屏显示
for( i=0;i<6;i++ ) //循环6次
{
OLED_BuffShowLine(4,16+8*i,124,16+8*i); //显示横着6条线
OLED_BuffShow(); //刷新显示
delay_ms(100);
}
for( i=0;i<16;i+=1 ) //循环16次
{
OLED_BuffShowLine(8*i+4,16,8*i+4,56); //显示16条数线
OLED_BuffShow(); //刷新显示
delay_ms(100);
}
//-----------------------------------------显示圆-----------------------------------------
OLED_BuffClear(); //清除全部缓存
OLED_BuffShowString(32,0,"画圆测试"); //显示数据
OLED_BuffShow(); //将缓存写入显示屏显示
for( i=0;i<6;i++ ) //循环6次
{
OLED_BuffShowCircle(64,40,5+i*3); //画一个圆
OLED_BuffShow(); //刷新显示
delay_ms(250);
}
//-----------------------------------------显示32大字-----------------------------------------
OLED_BuffClear(); //清除全部缓存
OLED_BuffShowString(32,0,"大字测试"); //显示数据
OLED_BuffShowChar32(24,3,1,0); //显示数字1
OLED_BuffShowChar32(40,3,0,0); //显示数字0
OLED_BuffShowChar32(56,3,10,0); //显示:
OLED_BuffShowChar32(72,3,5,0); //显示数字5
OLED_BuffShowChar32(88,3,5,0); //显示数字5
OLED_BuffShow(); //将缓存写入显示屏显示
delay_ms(DELAY_TIME); //延时
//-----------------------------------------反显测试-----------------------------------------
OLED_BuffClear(); //清除全部缓存
OLED_BuffShowString(32,0,"反显测试",0); //显示数据
OLED_BuffShowString(16,2," 这是正\xfd显 ",0); //显示数据
OLED_BuffShowString(16,4," 这是反显 ",1); //显示数据
OLED_BuffShow(); //将缓存写入显示屏显示
delay_ms(DELAY_TIME);
//-----------------------------------------变量显示-----------------------------------------
OLED_BuffClear(); //清除全部缓存
OLED_BuffShowString(32,0,"变量显示",0); //显示数据
OLED_BuffShowNum(0,2,-25169,0) ; //显示数据
OLED_BuffShowNum02F(0,4,3.14159,0); //显示数据
OLED_BuffShowNum02F(0,6,dat,1); //显示数据
OLED_BuffShow(); //将缓存写入显示屏显示
delay_ms(DELAY_TIME);