基于STM32和ATH20实现OLED显示温湿度

  • 什么是OLED
  • 一、主要代码
  • 二、 硬件连接及结果
    • 1.硬件连接
    • 2.烧录显示
  • 总结
  • 参考文献

什么是OLED

有机电致发光器件(OLED)属于低电压、高电流的双注人式发光器件,具有发光二极管的性质,所以有机电致发光器件又称之为有机电致发光二极管。当给器件施加一正向的外加偏压后,电子和空穴克服界面势垒,经由阴极和阳极注人到有机材料中,在外加电场的作用下迁移至发光层,在发光层内,当电子和空穴相遇时,由于库仑力的相互作用而形成暂态激子,由于暂态激子具有较高的能量处于不稳定态,所以一小部分激子可以通过晶格振动,将一部分能量传递给声子而消耗掉,另外的激子则发生复合,最终电子落人空穴,同时向外释放出一定的能量,而发光材料原子的最外层电子吸收这些能量后将处于激发态,当激发态的电子跃迁至基态时,向外辐射出光子,从而就产生了电致发光现象。有机电致发光器件的发光原理可以很简单的用三个步骤来说明,如图所示:

一、主要代码

main主函数

#include "delay.h"
#include "usart.h"
#include "bsp_i2c.h"
#include "sys.h"#include "oled.h"
#include "gui.h"
#include "test.h"int main(void)
{   delay_init();                  //延时函数初始化          uart_init(115200);     IIC_Init();NVIC_Configuration();      //设置NVIC中断分组2:2位抢占优先级,2位响应优先级     OLED_Init();                     //初始化OLED  OLED_Clear(1); while(1){//printf("温度湿度显示");read_AHT20_once();OLED_Clear(0); delay_ms(1500);}
}

添加相应的点阵字

 "温",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,/*"度",0*/"湿",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*/"显",0x00,0x00,0x1F,0xF0,0x10,0x10,0x10,0x10,0x1F,0xF0,0x10,0x10,0x10,0x10,0x1F,0xF0,0x04,0x40,0x44,0x44,0x24,0x44,0x14,0x48,0x14,0x50,0x04,0x40,0xFF,0xFE,0x00,0x00,/*"显",0*/"示",0x00,0x00,0x3F,0xF8,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFE,0x01,0x00,0x01,0x00,0x11,0x10,0x11,0x08,0x21,0x04,0x41,0x02,0x81,0x02,0x05,0x00,0x02,0x00,/*"示",0*/

温湿度显示代码

void read_AHT20(void)
{uint8_t   i;for(i=0; i<6; i++){readByte[i]=0;}//-------------I2C_Start();I2C_WriteByte(0x71);ack_status = Receive_ACK();readByte[0]= I2C_ReadByte();Send_ACK();readByte[1]= I2C_ReadByte();Send_ACK();readByte[2]= I2C_ReadByte();Send_ACK();readByte[3]= I2C_ReadByte();Send_ACK();readByte[4]= I2C_ReadByte();Send_ACK();readByte[5]= I2C_ReadByte();SendNot_Ack();//Send_ACK();I2C_Stop();//--------------if( (readByte[0] & 0x68) == 0x08 ){H1 = readByte[1];H1 = (H1<<8) | readByte[2];H1 = (H1<<8) | readByte[3];H1 = H1>>4;H1 = (H1*1000)/1024/1024;T1 = readByte[3];T1 = T1 & 0x0000000F;T1 = (T1<<8) | readByte[4];T1 = (T1<<8) | readByte[5];T1 = (T1*2000)/1024/1024 - 500;AHT20_OutData[0] = (H1>>8) & 0x000000FF;AHT20_OutData[1] = H1 & 0x000000FF;AHT20_OutData[2] = (T1>>8) & 0x000000FF;AHT20_OutData[3] = T1 & 0x000000FF;}else{AHT20_OutData[0] = 0xFF;AHT20_OutData[1] = 0xFF;AHT20_OutData[2] = 0xFF;AHT20_OutData[3] = 0xFF;printf("lyy");}/*通过串口显示采集得到的温湿度printf("\r\n");printf("温度:%d%d.%d",T1/100,(T1/10)%10,T1%10);printf("湿度:%d%d.%d",H1/100,(H1/10)%10,H1%10);printf("\r\n");*/t=T1/10;t1=T1%10;a=(float)(t+t1*0.1);h=H1/10;h1=H1%10;b=(float)(h+h1*0.1);sprintf(strTemp,"%.1f",a);   //调用Sprintf函数把DHT11的温度数据格式化到字符串数组变量strTemp中  sprintf(strHumi,"%.1f",b);    //调用Sprintf函数把DHT11的湿度数据格式化到字符串数组变量strHumi中  GUI_ShowCHinese(16,00,16,"温湿度显示",1);GUI_ShowCHinese(16,20,16,"温度",1);GUI_ShowString(53,20,strTemp,16,1);GUI_ShowCHinese(16,38,16,"湿度",1);GUI_ShowString(53,38,strHumi,16,1);delay_ms(1500);      delay_ms(1500);
}

二、 硬件连接及结果

1.硬件连接

OLEDM模块 STM32单片机
VCC DC 5V/3.3V
GND GND
D1 PB15
CS PB11
RES PB12
DC PB10
D0 PB13
AHT20模块 STM32单片机
GND GND
VCC 5v
SDA PB7
SCL PB6

2.烧录显示


总结

这个可以说是对上两个个作业的综合,很有意义

参考文献

基于stm32的温湿度采集——OLED显示
OLED资料

基于STM32和ATH20实现OLED显示温湿度相关推荐

  1. 基于STM32移植U8g2图形库——OLED显示(HAL库)

    前言:本文主要内容为将优秀的图形库U8g2移植到STM32单片机上,用于OLED显示精美UI.其实,目前GitHub上有需要优秀的开源GUI库,但是大部分的GUI解决方案并不适合0.96 OLED(1 ...

  2. 基于stm32硬件IIC的oled显示

    一 stm32硬件IIC 硬件IIC特性架构 ①通讯引脚 查看对应开发板芯片的原理图可以查看对应IIC外设引脚的位置 这里代码采用的是stm32f103c8t6,硬件IIC的外设引脚为PB6 PB7, ...

  3. 基于STM32的0.96OLED基本显示学习,及 上下或左右的滑动显示长字符(使用硬件刷屏模式),OLED显示变量值操作详细解析

    基于STM32的0.96OLED基本显示学习,及 上下或左右的滑动显示长字符(使用硬件刷屏模式),OLED显示变量值操作详细解析 简   介 一.项目说明 二.学习入门 1)开始了解例程 三.实战过程 ...

  4. 基于stm32单片机智能WIFI加湿器水质温湿度测量

    基于stm32单片机智能WIFI加湿器水质温湿度测量(原理图+程序+参考论文) 资料编号:021 可通过手机连接wifi 远程控制加湿器的开关,并且可以通过手机查看温湿度,可检测是否有水,缺水报警,和 ...

  5. 基于STM32开发的CO2浓度、温湿度、气压监测系统

    基于STM32开发的CO2浓度.温湿度.气压监测系统 写在开头 项目开发过程 项目要求 项目方案 MG812传感器监测CO2浓度 RSCM1700传感器监测气压值 AM1011A传感器监测温湿度 原理 ...

  6. 基于STM32的舱内温湿度显示设计

    基于STM32的舱内温湿度显示设计 本次设计使用正点原子的STM32F103ZET6精英开发板. 数据采集:温湿度传感器采用DHT11来采集湿度,使用DS18B20来采集温度. 显示:显示部分分为TF ...

  7. 基于STM32单片机模块练习——OLED模块

    基于STM32单片机模块练习--OLED模块 相关知识点 向OLED写一个字节 /*** @brief I2C_WriteByte,向OLED寄存器地址写一个byte的数据* @param addr: ...

  8. STM32中断中调用OLED显示出现OLED花屏

    STM32中断中调用OLED显示出现OLED花屏 在TIM5中断处理函数中,我写了OLED显示,经过DEBUG发现程序执行到OLED显示语句的时候,OLED就会花屏. //中断服务处理函数 void ...

  9. 基于SPI协议下的OLED显示

    文章目录 一.SPI简介 二.OLED显示 1.任务要求 2.实验器材 3.实验过程 (1)显示自己的学号和姓名 (2) 显示AHT20的温度和湿度 (3)上下或左右的滑动显示长字符(SSD1306驱 ...

最新文章

  1. 一篇文章搞懂fof好友推荐案例
  2. springboot . 配置jpa使用
  3. 苹果Mac Mini 高配版 M1X 或将于数月后发售
  4. OpenStack网络模块核心OpenvSwitch的全面解读
  5. 如何在64位WIN7下安装64位的解压版mysql-5.6.37-winx64.zip
  6. M1芯片版mac软件安装出现异常怎么办?解决方法来了
  7. 原有磁盘上创建lvm_Linux 系统管理及服务配置实战-第12章 磁盘管理3(连载)
  8. 95-080-044-源码-启动-jobmanager.sh
  9. 成语接龙快速接到“一个顶俩” (附api)
  10. Ubuntu终端中字体颜色含义
  11. [附源码]Python计算机毕业设计SSM建筑工程管理系统(程序+LW)
  12. 计算机图书封面也疯狂
  13. 出现 NameError: name ‘re’ is not defined 的原因
  14. 详解ISO 13400文档(DoIP协议)-2
  15. Android破解与防破解
  16. NISP二级题库总结
  17. 单元测试、集成测试、系统测试的侧重点
  18. win10+tensorflow环境搭建
  19. 内核该怎么学?Linux进程管理工作原理(代码演示)
  20. 技巧篇:常用的python代码汇总

热门文章

  1. 如何MATLAB实现用ARIMA模型输出参数实施预测
  2. 有一个3×4的矩阵,要求编程序求出其中值最大的那个元素的值,以及其所在的行号和列号。矩阵的值由键盘输入。
  3. marquee实现文字无缝滚动+css无缝滚动
  4. 静止轨道卫星角度效应校正方法
  5. orCAD 中 WARNING(ORCAP-2435): Number of pins in footprint ‘x‘ and instance ‘u?A‘ does not match
  6. 【steam接入】如何将unity游戏接入steam(steamworks)
  7. Java Exer0905 玩家1、2互相攻击,直至一方生命值小于零,战斗结束,三局两胜,公布胜方。for循环、while循环、三元运算符、if-else、Scanner
  8. springboot集成rabbitmq商品秒杀业务实战(流量削峰)
  9. Laravel 完整开源项目 - 收集
  10. 去哪儿网校园招聘笔试题(成都)--之一