基于IIC的接口的OLED数据显示
一、相关资料
1.官方链接:0.96寸IIC 4针 GND开头中文wiki
2.相关代码资料包:
3.字模软件:
4.字模软件设置:
二、显示目的字符
(一)代码
1.将相关资料中的代码打开,找到main.c文件。
硬件连接,根据main.c函数里面的备注进行连接,不同的总结连接不同
2.修改成如下代码:
#include "delay.h"
#include "sys.h"
#include "oled.h"
#include "bmp.h"
int main(void)
{ u8 t;
delay_init(); //延时函数初始化
NVIC_Configuration(); //设置NVIC中断分组2:2位抢占优先级,2位响应优先级 LED_Init(); //LED端口初始化
// delay_ms(8000);
OLED_Init(); //初始化OLED
OLED_Clear(0) ;
t=' ';
while(1)
{
OLED_ShowCHinese(16,0,0);//通
OLED_ShowCHinese(36,0,1);//信
OLED_ShowCHinese(56,0,2);//工
OLED_ShowCHinese(76,0,3);//程
OLED_ShowCHinese(36,3,4);//wei,修改成自己的名字
OLED_ShowCHinese(56,3,5);//jun,修改成自己的名字(三个字的名字需要将下一条屏蔽语句加上)
// OLED_ShowCHinese(76,3,5);
OLED_ShowString(4,6,"631807030500",12); //根据自己的学号进行修改
t++;
delay_ms(50000);
}
}
(二)生成字模
1.编译,找到oledfont.h文件。
2.用字模工具生成相应字符的字模。
3.将生成字模代码保存到如下图所示函数中。
(三)烧录程序
在下是使用的串口烧录程序
1.安装驱动。
2.串口烧录。
3.烧录成功则OLED屏幕会显示结果。
(四)结果
具体结果如下所示:
三、 显示温度和湿度
过程与上述显示目的字符类似,以下只展示不同的地方
(一)代码
1.修改main.c代码如下所示:
#include "delay.h"
#include "sys.h"
#include "oled.h"
#include "bmp.h"
int main(void)
{ u8 t;
delay_init(); /??????
NVIC_Configuration(); /?NVIC????2:2??????,2?????? LED_Init(); //LED?????
// delay_ms(8000);
OLED_Init(); /??OLED
OLED_Clear(0) ;
t=' ';
while(1)
{
OLED_ShowString(6,6,"631807030524",14);
OLED_ShowString(46,1," 72",12);
OLED_ShowString(46,4," 13",12);
OLED_ShowCHinese(6,0,0);//Í
OLED_ShowCHinese(26,0,1);//Ð
OLED_ShowCHinese(6,3,2);//¹
OLED_ShowCHinese(26,3,3);//³
t++;
delay_ms(50000);
}
(二)结果
结果如下所示:
四、滑动显示长字符
过程与上述显示目的字符类似,以下只展示不同的地方
(一)代码
1.找到main.c主函数,修改代码如下所示:
#include "delay.h"
#include "sys.h"
#include "oled.h"
#include "bmp.h"
int main(void)
{ u8 t;
delay_init(); //ÑÓʱº¯Êý³õʼ»¯
NVIC_Configuration(); //ÉèÖÃNVICÖжϷÖ×é2:2λÇÀÕ¼ÓÅÏȼ¶£¬2λÏìÓ¦ÓÅÏȼ¶ LED_Init(); //LED¶Ë¿Ú³õʼ»¯
// delay_ms(8000);
OLED_Init(); //³õʼ»¯OLED
OLED_Clear(0) ;
t=' ';
OLED_Clear(0);
OLED_ShowCHinese(6,4,0);//
OLED_ShowCHinese(26,4,1);//
delay_ms(5000);
OLED_ShowString(6,6,"hello world!",16);
OLED_WR_Byte(0x2e,OLED_CMD);
OLED_WR_Byte(0x29,OLED_CMD);
OLED_WR_Byte(0x00,OLED_CMD);
OLED_WR_Byte(0x00,OLED_CMD);
OLED_WR_Byte(0x07,OLED_CMD);
OLED_WR_Byte(0x07,OLED_CMD);
OLED_WR_Byte(0x01,OLED_CMD);
OLED_WR_Byte(0x2F,OLED_CMD);
}
(二)生成字模
1.使用字模工具生成目的字模。
0x00,0x02,0x02,0x02,0x02,0x02,0xFE,0x02,0x02,0x02,0x02,0x02,0xFE,0x00,0x00,0x00,
0x40,0x40,0x40,0x40,0x40,0x40,0x7F,0x40,0x40,0x40,0x41,0x42,0x41,0x40,0x40,0x00,//卫0
0x08,0x06,0x22,0x22,0xA2,0x62,0x3A,0xA2,0x22,0x22,0x22,0x22,0x22,0x0A,0x06,0x00,
0x10,0x10,0x12,0x13,0x12,0x12,0x12,0xFF,0x12,0x12,0x12,0x12,0x12,0x10,0x10,0x00,//军1
2.将生成字模代码保存到如下图所示函数中。
(三)结果
五、总结
本次实验可以通过SPI和IIC来做,由于OLED有限,使用IIC做的,其实两个总线的OLED大体上类似,只有部分细节不同,如函数参数、字模设置不同。