开发板:stm32指南者开发板
在OLED官网上下载相应的代码:http://www.lcdwiki.com/zh/0.96inch_SPI_OLED_Module
显示自己的学号和姓名
打开需要的文件代码,如使用指南者则打开这个:
按照main文件里的提示连接开发板
使用PCtoLCD软件,将需要输出的字转为16进制的点
将汉字子模保存到下列文件中
修改text.c,改成需要的功能
main中的while函数仅保留需要的函数
将程序烧进开发板,运行如下
显示AHT20的温度和湿度
user中加入先前AHT20实验的i2c.c,i2c.h,usart.c,usart.h几个文件
然后向HARDWARE加入stm32f10x_usart.c,该文件在STM32F10x_FWLib\src中
将温湿度和:的子模加入到oledfont中
main函数修改为:
#include "delay.h"
#include "sys.h"
#include "oled.h"
#include "gui.h"
#include "test.h"
#include "usart.h"
#include "i2c.h"
int main(void)
{
int *H,*T;
int H1=0,T1=0;
int a,b,c,d;
H=&H1;
T=&T1;
delay_init(); //ÑÓʱº¯Êý³õʼ»¯
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); //ÉèÖÃNVICÖжϷÖ×é2:2λÇÀÕ¼ÓÅÏȼ¶£¬2λÏìÓ¦ÓÅÏȼ¶
OLED_Init(); //³õʼ»¯OLED
OLED_Clear(0); //ÇåÆÁ£¨È«ºÚ£©
uart_init(115200); //´®¿Ú³õʼ»¯Îª115200
IIC_Init();
while(1)
{
read_AHT20_once();
GUI_ShowCHinese(16,10,16,"ζÈ:",1);
a=*T/10;
b=*T%10;
GUI_ShowNum(60,10,a,2,16,1);
GUI_ShowString(80,10,".",16,1);
GUI_ShowNum(82,10,b,2,16,1);
GUI_ShowCHinese(16,30,16,"ʪ¶È:",1);
c=*H/10;
d=*H%10;
GUI_ShowNum(60,30,c,2,16,1);
GUI_ShowString(80,30,".",16,1);
GUI_ShowNum(82,30,d,2,16,1);
}
}
结果如下:
上下或左右的滑动显示长字符
在old.c加入滚动代码
void roll(void)
{
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);
}
将main改为如下:
#include "delay.h"
#include "sys.h"
#include "oled.h"
#include "gui.h"
#include "test.h"
int main(void)
{
delay_init();
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);
OLED_Init();
OLED_Clear(0);
while(1)
{
GUI_ShowCHinese(20,25,16,"学到昏厥",1);
delay_ms(50);
roll();
}
}
结果如下: