前言
任务:
理解OLED屏显和汉字点阵编码原理,使用STM32F103的SPI或IIC接口实现以下功能:
-
显示自己的学号和姓名;
-
显示AHT20的温度和湿度;
-
上下或左右的滑动显示长字符,比如“Hello,欢迎来到重庆交通大学物联网205实训室!”或者歌词、诗词。(最好使用硬件刷屏模式)
设备:
野火指南者(stm32f103)、AHT20温湿度传感器、0.96寸SPI的OLED。
资料链接:https://detail.tmall.com/item.htm?spm=a1z0d.6639537.1997196601.80.201d74841fbMPw&id=556732249552
这里我做的就是0.96寸SPI 7针
1、字模生成
1、打开字模软件(在上述资料里有)。我的软件在7线–0.96inch_SPI_OLED_Module_SSD1306_MSP096X_V1.0\0.96inch_SPI_OLED_Module_SSD1306_MSP096X_V1.0\7-Character&Picture_Molding_Tool\Tools-PCtoLCD200\PCtoLCD2002完美版
2、在模式里选择字符模式。选项里选择阴码、顺向、逐行、c51格式。(请根据自己程序修改取模选项)。然后输入需要取模的字符,点击生成字模即可。
2、软件修改
1、首先先从上面链接下载相应的资料包。
2、打开工程,将主程序main.c修改如下:
int main(void)
{
delay_init();
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
OLED_Init();
OLED_Clear(0);
while(1)
{
TEST_MainPage(); //显示姓名学号
OLED_Clear(0);
}
}
3、在test.c里找到以下语句,
void TEST_MainPage(void)
当然,你也可以在main。c里右键单击TEST_MainPage();寻址过去。
4、修改语句如下:
void TEST_MainPage(void)
{
GUI_ShowString(20,0,"63180030615",8,1);
GUI_ShowCHinese(16,20,16,"邱海琪",1);
delay_ms(1500);
}
这是我自己的,修改为想要显示的文字数据即可。
注意:如果你增添了文字,记得在下面的字模里增添相应的。
5、在oledfont.h里找到相应函数,增添自己的字模。我这里是宋体、16*16大小、逐行式、顺向。
const typFNT_GB16 cfont16[] =
{
"邱",0x00,0x00,0x03,0x3E,0x3C,0x22,0x20,0x24,0x20,0x24,0x20,0x28,0x3F,0xA4,0x22,0x24,0x22,0x22,0x22,0x22,0x22,0x22,0x22,0x34,
0x27,0xA8,0xF8,0x20,0x40,0x20,0x00,0x20,
"海",0x01,0x00,0x21,0x00,0x11,0xFC,0x12,0x00,0x85,0xF8,0x41,0x08,0x49,0x48,0x09,0x28,0x17,0xFE,0x11,0x08,0xE2,0x48,0x22,0x28,
0x23,0xFC,0x20,0x08,0x20,0x50,0x00,0x20,
"琪",0x01,0x08,0x01,0x08,0xFB,0xFC,0x21,0x08,0x21,0x08,0x21,0xF8,0x21,0x08,0xF9,0x08,0x21,0xF8,0x21,0x08,0x21,0x08,0x3B,0xFE,
0xE0,0x00,0x40,0x90,0x01,0x08,0x02,0x04,
};
3、连线
注意:cs不用连接。
4、结果
完成上述操作后,就可以将程序编译下载进设备运行了
运行结果如下: