标题: STM32读取MPU6050传感器角度和温度数据OLED显示 源程序 [打印本页]

作者: perseverance51    时间: 2021-9-12 09:25
标题: STM32读取MPU6050传感器角度和温度数据OLED显示 源程序
STM32读取MPU6050传感器角度和温度数据OLED显示


制作出来的实物图如下:

  1. //更新显存到OLED
  2. void OLED_Refresh(void)
  3. {
  4.     u8 i,n;
  5.     for(i=0; i<8; i++)
  6.     {
  7.         OLED_WR_Byte(0xb0+i,OLED_CMD); //设置行起始地址
  8.         OLED_WR_Byte(0x02,OLED_CMD);   //设置低列起始地址0.96屏0x00,1.3屏地址0x02
  9.         OLED_WR_Byte(0x10,OLED_CMD);   //设置高列起始地址
  10.         for(n=0; n<128; n++)
  11.             OLED_WR_Byte(OLED_GRAM[n][i],OLED_DATA);
  12.     }
  13. }
复制代码
还有初始化地方:

  1. void OLED_Init(void)
  2. {
  3.     GPIO_InitTypeDef  GPIO_InitStructure;
  4.     RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA, ENABLE);         //使能A端口时钟
  5.     GPIO_InitStructure.GPIO_Pin = GPIO_Pin_7|GPIO_Pin_5;
  6.     GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;                  //推挽输出
  7.     GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;//速度50MHz
  8.     GPIO_Init(GPIOA, &GPIO_InitStructure);          //初始化GPIOD3,6
  9.     GPIO_SetBits(GPIOA,GPIO_Pin_5|GPIO_Pin_7);//PA5 PA7
  10.     delay_ms(200);
  11.     OLED_WR_Byte(0xAE,OLED_CMD);//--turn off oled panel关闭显示
  12.     OLED_WR_Byte(0x02,OLED_CMD);//---set low column address0.96屏地址0x00,1.3寸屏0x02
  13.     OLED_WR_Byte(0x10,OLED_CMD);//---set high column address
  14.     OLED_WR_Byte(0x40,OLED_CMD);//--set start line address  Set Mapping RAM Display Start Line (0x00~0x3F)
  15.     OLED_WR_Byte(0x81,OLED_CMD);//--set contrast control register
  16.     OLED_WR_Byte(0xCF,OLED_CMD);// Set SEG Output Current Brightness
  17.     OLED_WR_Byte(0xA1,OLED_CMD);//--Set SEG/Column Mapping     0xa0左右反置 0xa1正常
  18.     OLED_WR_Byte(0xC8,OLED_CMD);//Set COM/Row Scan Direction   0xc0上下反置 0xc8正常
  19.     OLED_WR_Byte(0xA6,OLED_CMD);//--set normal display
  20.     OLED_WR_Byte(0xA8,OLED_CMD);//--set multiplex ratio(1 to 64)
  21.     OLED_WR_Byte(0x3f,OLED_CMD);//--1/64 duty
  22.     OLED_WR_Byte(0xD3,OLED_CMD);//-set display offset        Shift Mapping RAM Counter (0x00~0x3F)
  23.     OLED_WR_Byte(0x00,OLED_CMD);//-not offset
  24.     OLED_WR_Byte(0xd5,OLED_CMD);//--set display clock divide ratio/oscillator frequency
  25.     OLED_WR_Byte(0x80,OLED_CMD);//--set divide ratio, Set Clock as 100 Frames/Sec
  26.     OLED_WR_Byte(0xD9,OLED_CMD);//--set pre-charge period
  27.     OLED_WR_Byte(0xF1,OLED_CMD);//Set Pre-Charge as 15 Clocks & Discharge as 1 Clock
  28.     OLED_WR_Byte(0xDA,OLED_CMD);//--set com pins hardware configuration
  29.     OLED_WR_Byte(0x12,OLED_CMD);
  30.     OLED_WR_Byte(0xDB,OLED_CMD);//--set vcomh
  31.     OLED_WR_Byte(0x40,OLED_CMD);//Set VCOM Deselect Level
  32.     OLED_WR_Byte(0x20,OLED_CMD);//-Set Page Addressing Mode (0x00/0x01/0x02)
  33.     OLED_WR_Byte(0x02,OLED_CMD);//
  34.     OLED_WR_Byte(0x8D,OLED_CMD);//--set Charge Pump enable/disable
  35.     OLED_WR_Byte(0x14,OLED_CMD);//--set(0x10) disable
  36.     OLED_WR_Byte(0xA4,OLED_CMD);// Disable Entire Display On (0xa4/0xa5)
  37.     OLED_WR_Byte(0xA6,OLED_CMD);// Disable Inverse Display On (0xa6/a7)
  38.     OLED_WR_Byte(0xAF,OLED_CMD);
  39.     OLED_Clear();
  40. }
复制代码
如果设置的显示的数据不是从屏幕坐标(0,0)-(2,2)的显示,不需要更改也可以驱动显示,实际上1.3"OLED屏幕就是在0.96寸屏幕的基础上偏移了2个像素点。


  • 程序源码文件见附件。
C8T6 mpu6050简单读取.7z (262.62 KB, 下载次数: 213)

作者: sanji_sanji    时间: 2024-8-5 14:17
请问使用这个代码,改成0.96英寸的显示屏后,屏幕会跳动乱码是怎么回事啊?
作者: sanji_sanji    时间: 2024-8-6 16:24
请问改用0.96英寸的屏幕后,出现闪屏乱码是什么回事啊
作者: 马帅印    时间: 2024-9-17 23:41
我也不知道怎么改
作者: yanggo    时间: 2024-11-12 11:59
好的好的,谢谢分享!
作者: huaishang    时间: 2024-12-11 19:44
谢谢楼主分享,谢谢!!




欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1