oled显示

oled显示

OLED显示屏是一种由有机分子薄片组成的固态设备,施加电力之后就能发光。OLED能让电子设备产生更明亮、更清晰的图像,其耗电量小于传统的传统的LED显示屏。0.96寸OLED分辨率是128*64,即OLED显示是128行64列;
OLED技术特点
(1) OLED 器件的核心层厚度很薄,厚度可以小于 1mm,为液晶的 1/3。(2) OLED 器件为全固态机构,无真空,液体物质,抗震性好,可以适应巨大的加速度,振动等恶劣环境。
(3) 主动发光的特性使 OLED 几乎没有视角限制,视角一般可达到 170 度,具有较宽的视角,从侧面也不会失真。
(4) OLED 显示屏的响应时间超过 TFT—LCD 液晶屏。TFT—LCD 的响应时间大约使几十毫秒,现在做得最好的 TFT—LCD 响应时间也只有 12 毫秒。而 OLED 显示屏的响应时间大约是几微秒到几十微秒。
(5) OLED 低温特性好,在零下 40 摄氏度都能正常显示,目前航天服上也使用OLED 作为显示屏。而 TFT—LCD 的响应速度随温度发生变化,低温下,其响应速度变慢,因此,液晶在低温下显示效果不好。(
6) OLED 采用有机发光原理,所需材料很少,制作上比采用液体发光的液晶工序少,液晶显示屏少 3 道工序,成本大幅降低。
(7) OLED 采用的二极管会自行发光,因此不需要背面光源,发光转化效率高,能耗比液晶低,OLED 能够在不同材质的基板上制造,厂家甚至可以将电路印刷在弹性材料上——做成能弯曲的柔软显示器。
(8) 低电压直流驱动,5V 以下,用电池就能点亮。高亮度,可达 300 明流以上。

OLED屏幕的通信方式分为2种:
1、iic通信
它是由数据线 SDA 和时钟 SCL 构成的串行总线, 可发送和接收数据。在 CPU 与被控 IC 之间、IC 与 IC 之间进行双向传送
IIC总线进行数据传送时,时钟信号为高电平期间,数据线的数据必须保持稳定,只有在时钟信号为低电平期间,数据线上的高电平或低电平状态才允许变化。
开始信号:SCL 为高电平时,SDA 由高电平向低电平跳变,开始传送数据。
结束信号:SCL 为高电平时,SDA 由低电平向高电平跳变,结束传送数据。
应答信号: 接收数据的 IC 在接收到 8bit 数据后, 向发送数据的 IC 发出特定的低电平脉冲,表示已收到数据。CPU 向受控单元发出一个信号后,等待受控单元发出一个应答信号,CPU 接收到应答信号后,根据实际情况作出是否继续传递信号的判断。若未收到应答信号,由判断为受控单元出现故障。

2、SPI通信
SPI通常有SCK时钟,STB片选,DATA数据信号三个信号。SPI总线真正实现了全双工数据传输,SPI 有3线跟4线两种,4线的话,就是多了一条叫SDC的线,用来告知从设备现在传输的是数据还是指令。这个接口较快,可以传输较连续的数据。SPI要想连接多个从设备,就需要给每个从设备配备一根片选信号。如果要可以实现全双工,也是需要多加一根数据线(MOSI MISO)。SPI通信芯片的引脚名称不一定都是这几个名称,可能还有会别的名称,但是意思是一样的,例如MOSI引脚的意思是“主机输出从机输入”,某个SPI接口的芯片就有可能会写成SDI,因为这个SPI器件是作为从机的,所以它的SDI的意思就是“从机数据输入引脚”。
SPI通信过程为:把CS引脚拉低,然后SCK输出时钟,然后就可以在MOSI引脚上输出数据,同时可以在MISO上获得数据了。
(1)SDO/MOSI ((master out slaver in))– 主设备数据输出,从设备数据输入;
(2)SDI/MISO – 主设备数据输入,从设备数据输出;
(3)SCLK – 时钟信号,由主设备产生;
(4)CS/SS – 从设备使能信号,由主设备控制。当有多个从设备的时候,因为每个从设 备上都有一个片选引脚接入到主设备机中,当我们的主设备和某个从设备通信时将需 要将从设备对应的片选引脚电平拉低或者是拉高。

IIC 接口:
GND: 电源地
VCC: 2.2V~5.5V
D/C:数据/命令,在 IIC 通信中 DC的高低电平是用来选择IIC通信地址的;
RES:复位(高电平 2.2V~5.5V)
SCL: CLK 时钟 (高电平 2.2V~5.5V)
SDA: MOSI 数据 (高电平 2.2V~5.5V)

SPI接线方式:
GND:电源地
VCC:2.2V~5.5V
SCL(D0):CLK 时钟 (高电平 2.2V~5.5V)
SDA(D1):MOSI 数据(高电平 2.2V~5.5V)
RST:复位(高电平 2.2V~5.5V)
D/C:数据/命令(高电平 2.2V~5.5V)
文主要介绍iic通信的应用方式
oled显示_第1张图片
程序设计:
显示0~9 ,A ~Z, a ~z

对于OLED 的显示用字模软件取值

#include
#include
sbit _CS=P3^4;
sbit RES=P3^3;
sbit DC=P3^2;
sbit SCL=P2^1;
sbit SDA=P2^0;
unsigned char code initial_tab[23]={
0xae,0x40,0x20,0x02,0x81,0xff,0xa1,0xa4,
0xA6,0xc8,0xa8,0x3F,0xd5,0x80,0xd3,0x00,
0x8d,0x14,0xdb,0x40,0xd9,0xf1,0xAF,
         };
unsigned char code picture_tab[]={
0x00, 0x3E, 0x51, 0x49, 0x45, 0x3E,// 0
0x00, 0x00, 0x42, 0x7F, 0x40, 0x00,// 1
0x00, 0x42, 0x61, 0x51, 0x49, 0x46,// 2
0x00, 0x21, 0x41, 0x45, 0x4B, 0x31,// 3
0x00, 0x18, 0x14, 0x12, 0x7F, 0x10,// 4
0x00, 0x27, 0x45, 0x45, 0x45, 0x39,// 5
0x00, 0x3C, 0x4A, 0x49, 0x49, 0x30,// 6
0x00, 0x01, 0x71, 0x09, 0x05, 0x03,// 7
0x00, 0x36, 0x49, 0x49, 0x49, 0x36,// 8
0x00, 0x06, 0x49, 0x49, 0x29, 0x1E,// 9
0x00, 0x7C, 0x12, 0x11, 0x12, 0x7C,// A
0x00, 0x7F, 0x49, 0x49, 0x49, 0x36,// B
0x00, 0x3E, 0x41, 0x41, 0x41, 0x22,// C
0x00, 0x7F, 0x41, 0x41, 0x22, 0x1C,// D
0x00, 0x7F, 0x49, 0x49, 0x49, 0x41,// E
0x00, 0x7F, 0x09, 0x09, 0x09, 0x01,// F
0x00, 0x3E, 0x41, 0x49, 0x49, 0x7A,// G
0x00, 0x7F, 0x08, 0x08, 0x08, 0x7F,// H
0x00, 0x00, 0x41, 0x7F, 0x41, 0x00,// I
0x00, 0x20, 0x40, 0x41, 0x3F, 0x01,// J
0x00, 0x7F, 0x08, 0x14, 0x22, 0x41,// K
0x00, 0x7F, 0x40, 0x40, 0x40, 0x40,// L
0x00, 0x7F, 0x02, 0x0C, 0x02, 0x7F,// M
0x00, 0x7F, 0x04, 0x08, 0x10, 0x7F,// N
0x00, 0x3E, 0x41, 0x41, 0x41, 0x3E,// O
0x00, 0x7F, 0x09, 0x09, 0x09, 0x06,// P
0x00, 0x3E, 0x41, 0x51, 0x21, 0x5E,// Q
0x00, 0x7F, 0x09, 0x19, 0x29, 0x46,// R
0x00, 0x46, 0x49, 0x49, 0x49, 0x31,// S
0x00, 0x01, 0x01, 0x7F, 0x01, 0x01,// T
0x00, 0x3F, 0x40, 0x40, 0x40, 0x3F,// U
0x00, 0x1F, 0x20, 0x40, 0x20, 0x1F,// V
0x00, 0x3F, 0x40, 0x38, 0x40, 0x3F,// W
0x00, 0x63, 0x14, 0x08, 0x14, 0x63,// X
0x00, 0x07, 0x08, 0x70, 0x08, 0x07,// Y
0x00, 0x61, 0x51, 0x49, 0x45, 0x43,// Z
0x00, 0x20, 0x54, 0x54, 0x54, 0x78,// a
0x00, 0x7F, 0x48, 0x44, 0x44, 0x38,// b
0x00, 0x38, 0x44, 0x44, 0x44, 0x20,// c
0x00, 0x38, 0x44, 0x44, 0x48, 0x7F,// d
0x00, 0x38, 0x54, 0x54, 0x54, 0x18,// e
0x00, 0x08, 0x7E, 0x09, 0x01, 0x02,// f
0x00, 0x18, 0xA4, 0xA4, 0xA4, 0x7C,// g
0x00, 0x7F, 0x08, 0x04, 0x04, 0x78,// h
0x00, 0x00, 0x44, 0x7D, 0x40, 0x00,// i
0x00, 0x40, 0x80, 0x84, 0x7D, 0x00,// j
0x00, 0x7F, 0x10, 0x28, 0x44, 0x00,// k
0x00, 0x00, 0x41, 0x7F, 0x40, 0x00,// l
0x00, 0x7C, 0x04, 0x18, 0x04, 0x78,// m
0x00, 0x7C, 0x08, 0x04, 0x04, 0x78,// n
0x00, 0x38, 0x44, 0x44, 0x44, 0x38,// o
0x00, 0xFC, 0x24, 0x24, 0x24, 0x18,// p
0x00, 0x18, 0x24, 0x24, 0x18, 0xFC,// q
0x00, 0x7C, 0x08, 0x04, 0x04, 0x08,// r
0x00, 0x48, 0x54, 0x54, 0x54, 0x20,// s
0x00, 0x04, 0x3F, 0x44, 0x40, 0x20,// t
0x00, 0x3C, 0x40, 0x40, 0x20, 0x7C,// u
0x00, 0x1C, 0x20, 0x40, 0x20, 0x1C,// v
0x00, 0x3C, 0x40, 0x30, 0x40, 0x3C,// w
0x00, 0x44, 0x28, 0x10, 0x28, 0x44,// x
0x00, 0x1C, 0xA0, 0xA0, 0xA0, 0x7C,// y
0x00, 0x44, 0x64, 0x54, 0x4C, 0x44,// z
0x14, 0x14, 0x14, 0x14, 0x14, 0x14,// horiz lines
};         
void Ins_trans(unsigned char command)      //写命令
  { 
    unsigned char counter;
   _CS=0;
   DC=0;
    for(counter=0;counter<8;counter++)   //发送八位数据
       { 
      SCL=0;
         SDA=(command&0x80)>>7;
         command=command<<1;
        _nop_();
       SCL=1;
      //  _nop_();
       _nop_();
       SCL=0;
        }
 DC=1;
   _CS=1;
  }
  
  void Data_trans(unsigned char command)  //写数据
  { 
    unsigned char counter;
   _CS=0;
   DC=1;
    for(counter=0;counter<8;counter++)//发送八位数据
       {
         SCL=0;
      SDA=(command&0x80)>>7;
   command=command<<1;   
        _nop_();
       SCL=1;
       // _nop_();
       _nop_();
       SCL=0;
       }
DC=1;
   _CS=1;
   }
   void Column_set(unsigned char column)//设置列
          {
       Ins_trans(0x10|(column>>4));
       Ins_trans(0x00|(column&0x0f));  
    }
void Page_set(unsigned char page)/设置行
             {
      Ins_trans(0xb0+page);
       }
void Screen_clear()//oled复位
          {
      unsigned char page,column;
     for(page=0;page<8;page++)             //行循环
       { 
      Page_set(page);
      Column_set(0);   
      for(column=0;column<128;column++) //列循环
         {
         Data_trans(0x00);
        }
      }
      }
void Screen_check() //oled全屏
       {
      unsigned char page,column;
     for(page=0;page<8;page++)             //行循环
       { 
      Page_set(page);
      Column_set(0);   
      for(column=0;column<128;column++) //列循环
         {
         Data_trans(0xff);
        }
      }
      }
void Initial()
		 {
      unsigned char i;
   for(i=0;i<23;i++)
      {
        Ins_trans(initial_tab[i]);
      } 
		     }
     void Picture_display(unsigned char *ptr_pic)
        {
    unsigned char page,column;
    //Ins_trans(0x81);
    //Ins_trans(0x1F);
     for(page=0;page<(64/8);page++)       //行循环
       { 
      Page_set(page);
      Column_set(0);   
      for(column=0;column<128;column++) //列循环
         {
         Data_trans(*ptr_pic++);
      }
    }
    Delay(15);
  }
  void main()
  { 
    RES=0;
    Delay(10);
    RES=1;
    Initial();
    while(1)
       {
                Screen_clear();
    Screen_check();
                Delay(10);
       Picture_display(picture_tab);
    }
  }

  

你可能感兴趣的:(51单片机,oled,串口通信,物联网,单片机,机器学习)