1791|2

250

帖子

5

TA的资源

纯净的硅(初级)

楼主
 

【N32L43x评测】OLED显示温湿度数据 [复制链接]

 

上回我们测试sht20温湿度传感器,总是用调试的方法我们的不太好看出来,最好用一款显示屏来显示,今天我们就用软件方法测试下我们的OLED显示屏显示我们的温度,湿度数据。

 

首先是初始化我们的IO口,这里因为还是使用模拟IIC的原因,所以我们的还是随便选择两个,这里我选择的是PA2,PA3。实测配置简单点也是可以通信上的,这里配置成输出模式是因为我们不去读取数据的。

/**********************************************

//IIC Start

**********************************************/

void IIC_START()

{

       OLED_SDIN_Set();

       delay_us(10);

       OLED_SCLK_Set();

       delay_us(10);

       OLED_SDIN_Clr();

       delay_us(10);

       OLED_SCLK_Clr();

       delay_us(10);

}



/**********************************************

//IIC Stop

**********************************************/

void IIC_STOP()

{

       OLED_SDIN_Clr();

       delay_us(10);

       OLED_SCLK_Set();

       delay_us(10);

//     OLED_SCLK_Clr();

      

       OLED_SDIN_Set();

       delay_us(10);

      

}



void IIC_Wait_Ack()

{

       OLED_SDIN_Clr();

       delay_us(5);

       OLED_SCLK_Set();

       delay_us(5);

       OLED_SCLK_Clr();

}



/**********************************************

// IIC Write byte

**********************************************/

void Write_IIC_Byte(unsigned char IIC_Byte)

{

       unsigned char i;

       unsigned char m,da;

       da=IIC_Byte;

       OLED_SCLK_Clr();

       for(i=0;i<8;i++)            

       {

              m=da;

              m=m&0x80;

              if(m==0x80)

              {

                     OLED_SDIN_Set();

              }

              else

              {

                     OLED_SDIN_Clr();

              }

              da=da<<1;

              delay_us(5);

              OLED_SCLK_Set();

              delay_us(5);

              OLED_SCLK_Clr();

              delay_us(5);

       }

}



/**********************************************

// IIC Write Command

**********************************************/

void Write_IIC_Command(unsigned char IIC_Command)

{

       IIC_START();

       Write_IIC_Byte(0x78);       //Slave address,SA0=0

       IIC_Wait_Ack();     

       Write_IIC_Byte(0x00);           //write command

       IIC_Wait_Ack();     

       Write_IIC_Byte(IIC_Command);

       IIC_Wait_Ack();     

       IIC_STOP();

}



/**********************************************

// IIC Write Data

**********************************************/

void Write_IIC_Data(unsigned char IIC_Data)

{

       IIC_START();

       Write_IIC_Byte(0x78);                  //D/C#=0; R/W#=0

       IIC_Wait_Ack();     

       Write_IIC_Byte(0x40);                  //write data

       IIC_Wait_Ack();     

       Write_IIC_Byte(IIC_Data);

       IIC_Wait_Ack();     

       IIC_STOP();

}

在我们的IIC中我们还是需要配置下延时的,实测速度比较快,没有延时OLED要么显示不对,要么就是直接不亮了。

       OLED_ShowString(byte(3)+4,line1," Nation",8);

       OLED_ShowString(byte(0),line4,"Temp:",8);

       OLED_ShowString(byte(0),line6,"Humi:",8);

      

       OLED_ShowString(byte(10),line4,"C",8);

       OLED_ShowString(byte(10),line6,"%",8);

之后我们在main中先建立几个固定显示位置,这里就是提示作用了。

然后就到了动态显示环节了,我们的数据是float类型的,我们OLED的显示要么是字符,要么就是数字,要想得到浮点型数据,我们需要转换下,把浮点型转换成字符型。

那么这里又一个函数可以使用。如下:

              SHT20_GetValue();

              sprintf(temp,"%.2f",sht20Info.tempreture);

              sprintf(humi,"%.2f",sht20Info.humidity);

              OLED_ShowString(byte(5),line4,temp,8);

              OLED_ShowString(byte(5),line6,humi,8);

就是我们的sprintf函数,这个可以把浮点转换char。而且可以自己选择保留小数位。非常方便。这样我们就完成了移植,看下我们的视频。最后附件在最后。

演示视频

demo.zip (8.97 MB, 下载次数: 5)

最新回复

支持大佬!!!! 源码 我拿走啦!! 直接丢我的作业上   详情 回复 发表于 2022-7-26 10:14
点赞 关注
 
 

回复
举报

16

帖子

0

TA的资源

一粒金砂(中级)

沙发
 

支持大佬!!!!

源码 我拿走啦!! 直接丢我的作业上

点评

没问题 搜索 复制  详情 回复 发表于 2022-7-26 10:49
 
 
 

回复

250

帖子

5

TA的资源

纯净的硅(初级)

板凳
 
Pythonista 发表于 2022-7-26 10:14 支持大佬!!!! 源码 我拿走啦!! 直接丢我的作业上

没问题

 
 
 

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

随便看看
查找数据手册?

EEWorld Datasheet 技术支持

相关文章 更多>>
关闭
站长推荐上一条 1/7 下一条

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

About Us 关于我们 客户服务 联系方式 器件索引 网站地图 最新更新 手机版

站点相关: 国产芯 安防电子 汽车电子 手机便携 工业控制 家用电子 医疗电子 测试测量 网络通信 物联网

北京市海淀区中关村大街18号B座15层1530室 电话:(010)82350740 邮编:100190

电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
快速回复 返回顶部 返回列表