基于SPI/IIC接口的OLED数据显示

基于SPI/IIC接口的OLED数据显示

任务要求: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实况照片,不长按动起来会模糊同学照我拿手机的)
在这里插入图片描述

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值