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显示一个图片
[color=rgb(51, 102, 153) !important]复制代码
功能函数做了如上所示,可以轻松的实现画点,画线,画圆,写字符,写汉字,显示变量等操作。
延时程序用到的代码如下所示
- //-----------------------------------------显示图片-----------------------------------------
- OLED_BuffClear(); //清除全部缓存
- OLED_BuffShowBMP(0,0,128,8,OLED12864_IMG); //显示**图片
- 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);
[color=rgb(51, 102, 153) !important]复制代码
全部通过函数操作,使用非常的便捷
当然这里需要注意使用汉字的时候一定要建立字库才能使用该汉字,这里字库取模直接这样设置,然后生成的字模直接复制到字库里就可以使用了。
附件包含了
1.STC32G(屠龙刀)通过SPI驱动OLED12864代码
2.STC32G(屠龙刀)通过IIC驱动OLED12864代码
3.字库取模软件
感兴趣的自行下载。
|