请选择 进入手机版 | 继续访问电脑版

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

[复制链接]
陈雪霜 发表于 2021-1-1 09:57:00 | 显示全部楼层 |阅读模式 打印 上一主题 下一主题
基于SPI/IIC接口的OLED数据显示



一、STM32F103的IIC接口实现

1.任务要求

(1)显示自己的学号和姓名;
(2)显示AHT20的温度和湿度;
(3)上下或左右的滑动显示长字符,好比“Hello,欢迎来到重庆交通大学物联网205实训室!”大概歌词、诗词。(最好使用硬件刷屏模式)
2.代码提取

野火官网下载工程代码
3.打开工程


4.修改代码

(1)生成字模
生成一个16*16的字模
原理

在点阵库里把自己需要的找到,写出对应的数据
例如:


对应数据:
{0x20,0x01,0x20,0x11,0x20,0x11,0x27,0xD2,0xF5,0x52,0x25,0x54,0x25,0x58,0x25,0x70,0x25,0x58,0x25,0x54,0xF5,0x52,0x27,0xD2},
{0x20,0x11,0x20,0x11,0x20,0x01,0x00,0x00},/“莫”,0/
{0x00,0x21,0x20,0xC1,0x20,0x82,0x2E,0x84,0x2A,0xB8,0x2A,0xA0,0xAA,0xA0,0x6A,0xA0,0x2A,0xA0,0x2A,0xA0,0x2A,0xBE,0x2E,0x81},
{0x20,0x81,0x20,0xA1,0x00,0xC7,0x00,0x00},/“亮”,1/
(2)添加代码
打开文件

将自己需要的字符添加进去

这样就OK了。
二、温湿度显示

1.相关函数
  1. /*****************************************************************************                                                        显示温湿度******************************************************************************/void Temp_Hum(float temp, float hum){        char data1[4],data2[4];        sprintf(data1, "%.1f", temp);                GUI_DrawLine(0, 10, WIDTH-1, 10,1);        GUI_DrawLine(WIDTH/2-1,11,WIDTH/2-1,HEIGHT-1,1);        GUI_DrawLine(WIDTH/2-1,10+(HEIGHT-10)/2-1,WIDTH-1,10+(HEIGHT-10)/2-1,1);        GUI_ShowString(0,1,"2020-12-20",8,1);        GUI_ShowString(78,1,"Sunday",8,1);        GUI_ShowString(14,HEIGHT-1-10,"Cloudy",8,1);        //温度        GUI_ShowString(WIDTH/2-1+2,13,"TEMP",8,1);        GUI_DrawCircle(WIDTH-1-19, 25, 1,2);        GUI_ShowString(WIDTH-1-14,20,"C",16,1);        GUI_ShowString(WIDTH/2-1+9,20,(u8 *)data1,16,1);                //湿度        GUI_ShowString(WIDTH/2-1+2,39,"HUM",8,1);        GUI_DrawBMP(6,16,51,32, BMP5, 1);        sprintf(data2, "%.1f", hum);        GUI_ShowString(WIDTH/2-1+9,46,(u8 *)data2,16,1);        GUI_ShowString(WIDTH-1-14,46,"%",16,1);}
复制代码
main.c
[code]#include "stm32f10x.h"#include "bsp_usart.h"#include "delay.h"#include "bsp_aht20.h"#include "bsp_led.h"#include "gui.h"#include "oled.h"#include "test.h"extern u32 flag;//标志是否开启延迟int main(void){        u32 CT_data[2]={0};    volatile float  hum=0,temp=0;        u32 i=1;        u32 num = 0;//记录AHT20收罗次数        USART_Config();                        //USART1初始化        LED_GPIO_Config();                //LED端口初始化    delay_init();                    //延时函数初始化              temphum_init();         //初始化温湿度传感器        OLED_Init();                                 //初始化OLED          OLED_Clear(0);             //清屏(全黑)        while(1)        {                flag = i;                /* 收罗3次温湿度  */                if(i
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则


专注素材教程免费分享
全国免费热线电话

18768367769

周一至周日9:00-23:00

反馈建议

27428564@qq.com 在线QQ咨询

扫描二维码关注我们

Powered by Discuz! X3.4© 2001-2013 Comsenz Inc.( 蜀ICP备2021001884号-1 )