任务要求:1. 显示自己的学号和姓名;
2. 显示AHT20的温度和湿度;
3. 上下或左右的滑动显示长字符,比如“Hello,欢迎来到重庆交通大学物联网205实训室!”或者歌词、诗词。(最好使用硬件刷屏模式)
0.96寸SPI 7针
例程程序
代码设计
文件路径:\0.96inch_SPI_OLED_Module_SSD1306_MSP096X_V1.0\7-Character&Picture_Molding_Tool\Tools-PCtoLCD200\PCtoLCD2002完美版
点击 工具栏/选项 ,调整字幕选项
点击 工具栏/模式 ,调整为字符模式,下方输入姓名和“温湿度”,得到字幕编码
文件路径:\0.96inch_SPI_OLED_Module_SSD1306_MSP096X_V1.0\1-Demo\Demo_STM32\0.96inch_OLED_Demo_STM32F407ZGT6_Software_4-wire_SPI\PROJECT
打开本次实验所需例程
温度读取相关程序参考本人以往博文
将上次温度相关程序头文件与c文件添加进入例程程序
将text.c 文件中的TEST_MainPag函数改为
void TEST_MainPage(void)
{
GUI_ShowString(28,0,"631807030215",16,1);
GUI_ShowCHinese(16,20,16,"ÀîÇìΰ",1);
gundong();
while(1)
AHT20_Read_CTdata(CT_data); //²»¾¹ýCRCУÑ飬ֱ½Ó¶ÁÈ¡AHT20µÄζȺÍʪ¶ÈÊý¾Ý
hum = CT_data[0]*100*10/1024/1024; //¼ÆËãµÃµ½Êª¶ÈÖµ£¨·Å´óÁË10±¶£©
tem = CT_data[1]*200*10/1024/1024-500;//¼ÆËãµÃµ½Î¶ÈÖµ£¨·Å´óÁË10±¶£©
GUI_ShowCHinese(16,0,16,"ζÈ",1);
GUI_ShowNum(30,0,tem/10,10,8,1);
gundong();
GUI_ShowCHinese(25,20,16,"ʪ¶È",1);
GUI_ShowNum(40,20,hum/10,10,8,1);
delay_ms(1500);
}
在test.c文件中最前面声明一个gundong函数
void gundong(void)
{
OLED_WR_Byte(0x2e,OLED_CMD);//???
OLED_WR_Byte(0x2A,OLED_CMD);//29??,2a??
OLED_WR_Byte(0x00,OLED_CMD);//A:???
OLED_WR_Byte(0x00,OLED_CMD);//B:?????
OLED_WR_Byte(0x00,OLED_CMD);//C:??????
OLED_WR_Byte(0x00,OLED_CMD);//D:?????
OLED_WR_Byte(0x0A,OLED_CMD);//E:????????
OLED_WR_Byte(0x2f,OLED_CMD);//???
}
温度读取相关变量声明
u32 CT_data[2]={0};
volatile float hum=0,tem=0;
test.c头文件声明
#include "stdlib.h"
#include "stdio.h"
#include "oled.h"
#include "delay.h"
#include "gui.h"
#include "test.h"
#include "bmp.h"
主函数改为
#include "delay.h"
#include "sys.h"
#include "oled.h"
#include "gui.h"
#include "test.h"
#include "temhum.h"
#include "led.h"
#include "usart.h"
int main(void)
{
uart_init(115200); //´®¿Ú³õʼ»¯Îª115200
delay_init(); //ÑÓʱº¯Êý³õʼ»¯
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2); //ÉèÖÃNVICÖжϷÖ×é2:2λÇÀÕ¼ÓÅÏȼ¶£¬2λÏìÓ¦ÓÅÏȼ¶
temphum_init();
OLED_Init(); //³õʼ»¯OLED
OLED_Clear(0); //ÇåÆÁ£¨È«ºÚ£©
while(1)
{
TEST_MainPage(); //Ö÷½çÃæÏÔʾ²âÊÔ
OLED_Clear(0);
}
}
将/gui.c/oledfont.h中将字幕程序得到的字幕编码添加进入16x16队列
const typFNT_GB16 cfont16[] =
{
"李",0x01,0x00,0x01,0x00,0x7F,0xFC,0x03,0x80,0x05,0x40,0x09,0x20,0x31,0x18,0xC1,0x06,
0x0F,0xE0,0x00,0x40,0x00,0x80,0xFF,0xFE,0x01,0x00,0x01,0x00,0x05,0x00,0x02,0x00,/*"?",0*/
"庆",0x01,0x00,0x00,0x80,0x3F,0xFE,0x20,0x00,0x20,0x80,0x20,0x80,0x20,0x80,0x2F,0xFC,
0x20,0x80,0x21,0x40,0x21,0x40,0x22,0x20,0x42,0x20,0x44,0x10,0x88,0x08,0x10,0x06,/*"?",1*/
"伟°",0x08,0x40,0x08,0x40,0x08,0x40,0x17,0xFE,0x10,0x40,0x30,0x40,0x33,0xFC,0x50,0x40,
0x90,0x40,0x17,0xFE,0x10,0x42,0x10,0x42,0x10,0x4A,0x10,0x44,0x10,0x40,0x10,0x40,/*"?",2*/
"温",0x00,0x00,0x23,0xF8,0x12,0x08,0x12,0x08,0x83,0xF8,0x42,0x08,0x42,0x08,0x13,0xF8,
0x10,0x00,0x27,0xFC,0xE4,0xA4,0x24,0xA4,0x24,0xA4,0x24,0xA4,0x2F,0xFE,0x00,0x00,/*"?",0*/
"度",0x01,0x00,0x00,0x80,0x3F,0xFE,0x22,0x20,0x22,0x20,0x3F,0xFC,0x22,0x20,0x22,0x20,
0x23,0xE0,0x20,0x00,0x2F,0xF0,0x24,0x10,0x42,0x20,0x41,0xC0,0x86,0x30,0x38,0x0E,/*"?",1*/
"湿",0x00,0x00,0x27,0xF8,0x14,0x08,0x14,0x08,0x87,0xF8,0x44,0x08,0x44,0x08,0x17,0xF8,
0x11,0x20,0x21,0x20,0xE9,0x24,0x25,0x28,0x23,0x30,0x21,0x20,0x2F,0xFE,0x00,0x00,/*"?",0*/
};
开发板连线
连线参照官网管脚图,因实验结束led回收无法展示
实验结果
(ios实况照片,不长按动起来会模糊同学照我拿手机的)