管脚定义:
P1^0;//时钟 D0(SCLK)
P1^1;//D1(SDA) 数据
P1^0;//时钟 D0(SCLK)
P1^1;//D1(SDA) 数据
关于取模软件的配置:
只需要按照这个配置就好
首先注意:
- 屏幕的分辨率是128*64(在函数传值时要注意不要越界)
- 我们的汉字是16*16的点阵,所以,在显示时只能显示4行每行8个字。
- 字符有两种6*8和8*16的,我们可以显示两种不同的字符
OLED的常用函数
OLED_Display_On(void); //开启OLED显示
OLED_Display_Off(void);//关闭OLED显示
OLED_Init(void);//初始化SSD1306
OLED_Clear(void); //清屏函数
OLED_ShowCHinese(0,0,0);//显示汉字
OLED_ShowString(20,4,"2014/05/01",16);//显示字符串
OLED_ShowChar(48,6,t,16);//显示一个ASCII字符
OLED_DrawBMP(0,0,128,8,BMP2)//显示图片
这里直接开始介绍怎么显示汉字的函数:
OLED_ShowCHinese(0,0,0);//中
OLED_ShowCHinese(18,0,1);//景
这里前面一位是x的坐标,中间的是y的坐标,后面的是汉字在字符库的位置(从0开始)。这里x的坐标为16的倍数,也可以一个汉字占17个空间,这样可以使的汉字的空隙加大,显示的更加宽松。y坐标的话是2的倍数,所以最大的值为6.
如果我们想显示一堆字符那么可以用下面这个函数:
OLED_ShowString(20,4,"2014/05/01",16);这里只需要在双引号里面加上你想显示的字符数组即可。
如果我们只想显示一个字符:OLED_ShowChar(48,6,t,16);//显示ASCII字符
前面两个不用讲,t是字符可以自己写,或是一个变量
OLED_ShowChar(48,2,'a',16);//显示ASCII字符
OLED_ShowChar(48,2,41,16);//显示ASCII字符
注意:这里是不可以直接传int去的,这样会显示乱码,具体可以用一个函数进行转码。
显示图片:
OLED_DrawBMP(0,0,128,8,BMP2); //图片显示(图片显示慎用,生成的字表较大,会占用较多空间,FLASH空间8K以下慎用
显示显示BMP图片128×64起始点坐标(x,y),x的范围0~127,y为页的范围0~7
后面那个是图片需要显示的大小,我们可以修改,这样,我们就可以做出图片和文字混合的效果
下面是主界面的函数(仅供参考):
#include "REG51.h"
#include "oled.h"
#include "bmp.h"
int main(void)
{ u8 t;
OLED_Init(); //初始化OLED
OLED_Clear();
t=' ';
OLED_ShowCHinese(0,0,0);//中
OLED_ShowCHinese(18,0,1);//景
OLED_ShowCHinese(36,0,2);//园
OLED_ShowCHinese(54,0,3);//电
OLED_ShowCHinese(72,0,4);//子
OLED_ShowCHinese(90,0,5);//科
OLED_ShowCHinese(108,0,6);//技
while(1)
{
// //OLED_Clear(); //先清屏
// OLED_ShowCHinese(0,0,0);//中
// OLED_ShowCHinese(18,0,1);//景
// OLED_ShowCHinese(36,0,2);//园
// OLED_ShowCHinese(54,0,3);//电
// OLED_ShowCHinese(72,0,4);//子
// OLED_ShowCHinese(90,0,5);//科
// OLED_ShowCHinese(108,0,6);//技
// //OLED_ShowString(6,3,"0.96' OLED TEST",16);
OLED_DrawBMP(0,0,128,2,BMP1);
OLED_ShowString(8,2,"ZHONGJINGYUAN",16);
// OLED_ShowString(20,4,"2014/05/01",16);
// OLED_ShowString(0,6,"ASCII:",16);
// OLED_ShowString(63,6,"CODE:",16);
// OLED_ShowChar(48,6,t,16);//显示ASCII字符
// OLED_ShowChar(48,2,41,16);//显示ASCII字符
// t++;
// if(t>'~')t=' ';
// OLED_ShowNum(103,6,t,3,16);//显示ASCII字符的码值
delay_ms(100);
//OLED_Display_Off();
//delay_ms(8000);
//delay_ms(8000);
//delay_ms(8000);
//delay_ms(8000);
//OLED_Clear(); //先清屏
//图片显示(图片显示慎用,生成的字表较大,会占用较多空间,FLASH空间8K以下慎用)
//delay_ms(8000);
//delay_ms(8000);
//delay_ms(8000);
//delay_ms(8000);
//OLED_Clear(); //先清屏
//OLED_DrawBMP(0,0,128,8,BMP1);
//delay_ms(8000);
//delay_ms(8000);
//delay_ms(8000);
//delay_ms(8000);
}
}