STM32之OLED屏显示数据

OLED屏显示数据

  • 一、SPI
  • 二、代码编写
    • 1. 显示中文
    • 2. 文字滚动
    • 3. 显示温湿度
    • 4. 连线
    • 5. 运行结果
  • 三、总结
  • 参考



一、SPI

SPI(Serial Peripheral Interface)就是串行外围设备接口。
SPI,是一种高速的,全双工,同步的通信总线,并且在芯片的管脚上只占用四根线,节约了芯片的管脚。SPI 是一个环形总线结构,由 ss(cs)、sck、sdi、sdo 构成,时序主要是在 sck 的控制下,两个双向移位寄存器进行数据交换。
上升沿发送、下降沿接收、高位先发送。
上升沿到来的时候,sdo 上的电平将被发送到从设备的寄存器中。
下降沿到来的时候,sdi 上的电平将被接收到主设备的寄存器中。



二、代码编写


1. 显示中文

通过提取子模软件提取对应汉字的点阵,点阵大小为16*16:
STM32之OLED屏显示数据_第1张图片

STM32之OLED屏显示数据_第2张图片


显示中文:

GUI_ShowCHinese(10,0,16,"重庆交通大学",1);

2. 文字滚动

OLED_WR_Byte(0x2e,OLED_CMD);        //关闭滚动
OLED_WR_Byte(0x29,OLED_CMD);        //水平垂直和水平滚动左右 29/2a
OLED_WR_Byte(0x00,OLED_CMD);        //虚拟字节
OLED_WR_Byte(0x00,OLED_CMD);        //起始页 0
OLED_WR_Byte(0x07,OLED_CMD);        //滚动时间间隔
OLED_WR_Byte(0x07,OLED_CMD);        //终止页 1
OLED_WR_Byte(0x01,OLED_CMD);        //垂直滚动偏移量
OLED_WR_Byte(0x2F,OLED_CMD);        //开启滚动

3. 显示温湿度

在stm32基于I2C协议用AHT20采集温湿度数据基础上显示温湿度。

  • 读取温湿度
AHT20_Read_CTdata(CT_data);;  //crc校验后,读取AHT20的温度和湿度数据 
c1 = CT_data[0]*1000/1024/1024;  //计算得到湿度值c1(放大了10倍)
t1 = CT_data[1]*2000/1024/1024-500;//计算得到温度值t1(放大了10倍)

//转为字符串易于显示
temp[0]=t1/100+'0';
temp[1]=(t1/10)%10+'0';
temp[2]='.';
temp[3]=t1%10+'0';
temp[4]='\0';
		
hum[0]=c1/100+'0';
hum[1]=(c1/10)%10+'0';
hum[2]='.';
hum[3]=c1%10+'0';
hum[4]=32;
hum[5]='%';
hum[6]='\0';

  • 显示温湿度
//显示温度
GUI_ShowCHinese(15,28,16,"温度",1);
GUI_ShowString(47,28,":",16,1);
GUI_ShowString(62,28,temp,16,1);
GUI_ShowCHinese(96,28,16,"℃",1);

//显示湿度
GUI_ShowCHinese(15,48,16,"湿度",1);
GUI_ShowString(47,48,":",16,1);
GUI_ShowString(62,48,hum,16,1);

4. 连线

STM32之OLED屏显示数据_第3张图片


5. 运行结果

STM32之OLED屏显示数据_第4张图片



三、总结

使用OLED可视化数据十分方便。



参考

基于STM32的0.96寸OLED显示屏显示数据

STM32F103基于spi实现OLED显示

你可能感兴趣的:(嵌入式,stm32,嵌入式)