社区导航

 
查看: 1721|回复: 0

[资料分享] OLED SSD1303显示驱动 For MSP430

[复制链接]

3360

TA的帖子

421

TA的资源

五彩晶圆(中级)

Rank: 8Rank: 8

荣誉会员勋章

发表于 2013-11-29 18:40:49 | 显示全部楼层 |阅读模式
RiTdisplay公司128*64点阵OLED(RGS101280640W003) SSD1303显示驱动 for MSP430,文中仅列出驱动接口、控制文档和函数声明,详细的源代码请看附件,开发环境IAR C。其中MSP430 MCLK需与SSD1303控制时序匹配,建议不大于8MHz。下面是SSD1303 8080 8080系列接口的控制时序图:
20110801075110832.jpg
/*
128*64点阵OLED(RGS101280640W003)信号引脚与MSP430对应引脚定义

使BS1和BS2为高,即选择MCU接口形式为8080系列接口
OLED引脚    名称      对应MSP430引脚
15                              CS#                                P2.0               
17                              D/C#                               P2.1
18                              WR#                               P2.2
19                              RD#                                P2.3
20                              D0                                   P1.0
21                              D1                                   P1.1
22                              D2                                   P1.2
23                              D3                                   P1.3
24                              D4                                   P1.4
25                              D5                                   P1.5
26                              D6                                   P1.6
27                              D7                                   P1.7


SSD1303 Area Color Decoder
                _______________________________________________________
Page0    |b1  |b2  |b3   |b4  |b5  |b6   |b7  |b8   |b9  |b10|b11|b12|b13|b14|b15|b16|
                |___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|
Page1    |b17|b18|b19|b20|b21|b22|b23|b24|b25|b26|b27|b28|b29|b30|b31|b32|
                |___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|___|
Page2    |                                                         bank0                                                          |
                |______________________________________________________|
Page3    |                                                         bank0                                                          |
                |______________________________________________________|
Page4    |                                                         bank0                                                          |
                |________________________ ______________________________|
Page5    |                                                         bank0                                                          |
                |______________________________________________________|
Page6    |                                                         bank0                                                          |
                |______________________________________________________|
Page7    |                                                         bank0                                                          |
                |______________________________________________________|
                                             

当WriteCommand(0xC8)时,OLED(RGS101280640W003)的行列的正方向如下图1所示,否则默认为图2所示:

         __________________
        |__________________|  <--------黄色
        |                                          |
        |                                          |  <--------蓝色
        |__________________|
 
                                                                                          行的正方向(page0-page7)
         --------------->列的正方向(0-127)                             ^               
         |                                                                                         |
         |                                                                                         |
         |                                                                                         |
         |                                                                                         |
         |                                                                                         |
         V                                                                                        --------------->列的正方向(0-127)
        行的正方向(page0-page7)
        
          图1                                                                               图2


OLED操作指令说明(见SSD1303数据手册P21~):
1、OLED_WR_PORT=0000xxxxb;//设置OLED列地址低4位,POR复位后该字节为0x00
2、OLED_WR_PORT=0001xxxxb;//设置OLED列地址高4位,POR复位后该字节为0x00
3、OLED_WR_PORT=00100110b;//进入水平滚动设置
      OLED_WR_PORT=xxxxxA2A1A0b;//设置每步滚动的列数,A[2:0]合法的数值为:001b,010b,011b,100b
      OLED_WR_PORT=xxxxxB2B1B0b;//设置起始页地址
      OLED_WR_PORT=xxxxxxC1C0b;//以帧周期为单位,设置每步滚动的时间间隔。C[1:0]:00b-12帧,01b-64帧,10b-128帧,11b-256帧
      OLED_WR_PORT=xxxxxD2D1D0b;//设置终止页地址,该值须大于或等于起始页地址
4、OLED_WR_PORT=00101111b;//启动水平滚动
5、OLED_WR_PORT=00101110b;//停止水平滚动
6、OLED_WR_PORT=01xxxxxxb;//设置显示开始行,POR后该字节为01000000b
7、OLED_WR_PORT=10000001b;//设置对比度控制寄存器(双字节指令)
      OLED_WR_PORT=xxxxxxxxb;//设置对比度,对比度随该值的增大而增强,POR后该字节为10000000b
8、OLED_WR_PORT=10000010b;//设置亮度控制寄存器(双字节指令)
      OLED_WR_PORT=xxxxxxxxb;//设置亮度,亮度随该值的增大而增强,POR后该字节为10000000b
9、OLED_WR_PORT=10010001b;//设置Bank0,Color A,Color B,Color C的驱动电流脉宽
      OLED_WR_PORT=xxX5X4X3X2X1X0b;//Bank0:X[5:0]=0~63;对应脉宽为1~64个时钟周期,该值POR后为110001b
      OLED_WR_PORT=xxA5A4A3A2A1A0b;//Color A:A[5:0]=0~63;对应脉宽为1~64个时钟周期,该值POR后为111111b
      OLED_WR_PORT=xxB5B4B3B2B1B0b;//Color B:B[5:0]=0~63;对应脉宽为1~64个时钟周期,该值POR后为111111b
      OLED_WR_PORT=xxC5C4C3C2C1C0b;//Color C:C[5:0]=0~63;对应脉宽为1~64个时钟周期,该值POR后为111111b
     注:Color D的脉宽固定为64个时钟周期
10、OLED_WR_PORT=10010010b;//设置Bank1~Bank16(Page0)的颜色
         OLED_WR_PORT=A7A6A5A4A3A2A1A0b;//A[1:0]值为00,01,10,11时,Bank1的颜色分别为A,B,C,D
         OLED_WR_PORT=B7B6B5B4B3B2B1B0b;//A[3:2]值为00,01,10,11时,Bank2的颜色分别为A,B,C,D
    OLED_WR_PORT=C7C6C5C4C3C2C1C0b;//.........................................
    OLED_WR_PORT=D7D6D5D4D3D2D1D0b;//D[7:6]值为00,01,10,11时,Bank16的颜色分别为A,B,C,D
11、OLED_WR_PORT=10010011b;//设置Bank17~Bank32(Page1)的颜色
         OLED_WR_PORT=A7A6A5A4A3A2A1A0b;//A[1:0]值为00,01,10,11时,Bank17的颜色分别为A,B,C,D
         OLED_WR_PORT=B7B6B5B4B3B2B1B0b;//A[3:2]值为00,01,10,11时,Bank18的颜色分别为A,B,C,D
         OLED_WR_PORT=C7C6C5C4C3C2C1C0b;//.........................................
         OLED_WR_PORT=D7D6D5D4D3D2D1D0b;//D[7:6]值为00,01,10,11时,Bank32的颜色分别为A,B,C,D
12、OLED_WR_PORT=1010000X0b;//X0=0:0列地址映射SEG0(POR后也为该值),X0=1:131列地址映射SEG0
13、OLED_WR_PORT=1010010X0b;//设置完整显示开/关。X0=0:正常显示(POR后也为该值),X0=1:完整显示开
14、OLED_WR_PORT=1010011X0b;//设置正常/反相显示。X0=0:正常显示(POR后也为该值),X0=1:反相显示
15、OLED_WR_PORT=10101000b;//设置Multiplex Ratio
         OLED_WR_PORT=xxA5A4A3A2A1A0b;//A[5:0]决定Multiplex Ratio,16MUX~64MUX,POR后为64MUX
16、OLED_WR_PORT=10101101b;//设置DC-DC开/关
         OLED_WR_PORT=1000101X0b;//X0=1,当显示开时DC-DC开(POR后为该值)。X0=0,DC-DC禁止
17、OLED_WR_PORT=1010111X0b;//设置显示开/关。X0=0:关OLED显示(POR后为该值),X0=1:开OLED显示
18、OLED_WR_PORT=1011X3X2X1X0b;//设置页地址。设置用于读写操作的GDDRAM页地址。
19、 OLED_WR_PORT=1100X3xxxb;//设置COM输出扫描方向。X3=0(POR后为该值),正常模式扫描(从COM0->COM[N- 1]扫描)。X3=1,重映射模式,扫描方向为COM[N-1]->COM0,N为Multiplex Ratio
20、OLED_WR_PORT=11010011b;//设置显示偏移
   OLED_WR_PORT=xxA5A4A3A2A1A0b;//垂直偏移0-63,POR后被复位为00H
21、OLED_WR_PORT=11010101b;//设置显示时钟分频率/晶振频率
         OLED_WR_PORT=A7A6A5A4A3A2A1A0b;//A[3:0]:定义显示时钟分频率,值为A[3:0]+1,POR后A[3:0]为0000b,分频率为1。A[7:4]设置晶振频率,POR后为0111b
22、OLED_WR_PORT=11010101b;//设置颜色模式开关和低功耗显示模式
         OLED_WR_PORT=00X5X40X20X0b;//X5X4=00(POR):单色模式。X5X4=11区域颜色使能,X2=0,X0=0正常功耗模式(POR),X2=1,X0=1低功耗模式
23、OLED_WR_PORT=11011001b;//设置预充周期,A[3:0]设置阶段1周期,最大为15个dclk(POR后为02h,0值为无效值)。A[7:4]设置阶段2周期,最大为15个dclk(POR后为02h,0值为无效值)
24、OLED_WR_PORT=11011010b;//设置COM引脚配置
         OLED_WR_PORT=000X40010b;//X4=0,顺序COM引脚配置 (如:COM31,30,29...0;SEG0-132;COM31,32...62,63)。X4=1(POR),可选COM引脚配置 (如:COM62,60,58...2,0;SEG0-132;COM1,3,5...61,63)。
25、OLED_WR_PORT=11011011b;//设置VCOM Deselect level
         OLED_WR_PORT=xA6A5A4A3A2A1A0b;      
*/

#define uint unsigned int
#define uchar unsigned char

#define OLED_CTRL_PORT       P2OUT//OLED控制端口定义
#define OLED_BUS_PORT_DIR    P1DIR//OLED数据总线端口方向定义
#define OLED_WR_PORT         P1OUT//OLED写端口定义
#define OLED_RD_PORT         P1IN//OLED读端口定义

#define OLED_WR_DIR          0xFF//OLED数据总线为写方向
#define OLED_RD_DIR          0x00//OLED数据总线为读方向
#define OLED_CS              (P2OUT&0xFE)//OLED有效片选操作定义
#define OLED_NOR_CS          (P2OUT|0x01)//OLED取消片选操作定义
#define OLED_DATA_SEL        (P2OUT|0x02)//OLED数据操作定义
#define OLED_COMMAND_SEL     (P2OUT&0xFD)//OLED指令操作定义
#define OLED_WR              (P2OUT&0xFB)//OLED写操作定义
#define OLED_NOR_WR          (P2OUT|0x04)//OLED取消写操作定义
#define OLED_RD              (P2OUT&0xF7)//OLED读操作定义
#define OLED_NOR_RD          (P2OUT|0x08)//OLED取消读操作定义
#define OLED_CtrlBusInit     (P2OUT|0x0F)//OLED控制信号初始化

/*
程序指令说明:
OLED_CTRL_PORT=OLED_RD;//OLED读操作
OLED_CTRL_PORT=OLED_NOR_RD;//OLED禁止读操作
OLED_CTRL_PORT=OLED_COMMAND_SEL;//OLED指令选通操作
OLED_CTRL_PORT=OLED_DATA_SEL;//OLED数据选通操作
OLED_CTRL_PORT=OLED_WR;//OLED写操作
OLED_CTRL_PORT=OLED_NOR_WR;//OLED禁止写操作
OLED_CTRL_PORT=OLED_CS;//OLED片选操作
OLED_CTRL_PORT=OLED_NOR_CS;//OLED禁止片选操作
OLED_WR_PORT=xxxxxxxxb;//写指令或数据
A=OLED_RD_PORT;//读指令或数据
OLED_CTRL_PORT=OLED_CtrlBusInit;//OLED控制信号初始化
*/

/****************************************************************************************
*NAME:       void CtrlBusInit(void)
*FUNCTION:   OLED控制信号初始化函数
*Parameter:  无参数
*RETURN:     无返回值
*****************************************************************************************/
函数声明:void CtrlBusInit(void);


/****************************************************************************************
*NAME:       void WriteCommand(uchar Command)
*FUNCTION:   OLED写指令函数
*Parameter:  Command参数,uchar型,8位指令码;
*RETURN:     无返回值
*****************************************************************************************/
函数声明:void WriteCommand(uchar Command);

/****************************************************************************************
*NAME:       void WriteData(uchar Data)
*FUNCTION:   OLED写数据函数
*Parameter:  Data参数,uchar型,8位数据码;
*RETURN:     无返回值
*****************************************************************************************/
函数声明:void WriteData(uchar Data);


/****************************************************************************************
*NAME:       uchar ReadStatus(void)
*FUNCTION:   OLED读状态函数
*Parameter:  无参数
*RETURN:     返回状态值,uchar型。D6 : “1” for display OFF / “0” for display ON(SSD1303数据手册P24)
*****************************************************************************************/
函数声明:uchar ReadStatus(void);

/****************************************************************************************
*NAME:       uchar ReadData(void)
*FUNCTION:   OLED读数据函数
*Parameter:  无参数
*RETURN:     返回状态值,uchar型。
*****************************************************************************************/
函数声明:uchar ReadData(void);

/****************************************************************************************
*NAME:       void OLEDinit(void)
*FUNCTION:   OLED初始化函数
*Parameter:  无参数
*RETURN:     无返回值
*****************************************************************************************/
函数声明:void OLEDinit(void);

/****************************************************************************************
*NAME:       void OLEDDisplayClear(void)
*FUNCTION:   OLED显示清屏函数
*Parameter:  无参数
*RETURN:     无返回值
*****************************************************************************************/
函数声明:void OLEDDisplayClear(void);

/****************************************************************************************
*NAME:       void OLEDDisplay(uchar x0,uchar y0,uchar x1,uchar y1,uchar const *data_adr,uchar Inverse,uchar Overlap)
*FUNCTION:   OLED显示函数。x以位为单位,共64个位,y以位为单位,共128位,以(0,0)为坐标原点,竖直向下为x轴正方向,水平向右为y轴正方向
*Parameter:  x0参数:显示矩形区域左上角点x坐标;y0参数:显示矩形区域左上角点y坐标;
*                      x1参数:显示矩形区域右下角点x坐标;y1参数:显示矩形区域右下角点y坐标;
*                     data_adr:显示对象源地址;Inverse:显示反向控制字,0为正常显示,非0为反相显示;
*                     Overlap:显示重叠控制字,0为覆盖显示,非0为重叠显示;
*RETURN:   无返回值
*****************************************************************************************/
函数声明:void OLEDDisplay(uchar x0,uchar y0,uchar x1,uchar y1,uchar const *data_adr,uchar Inverse,uchar Overlap);
字模可采用字模软件生成,格式为:单色点阵,纵向取模,字节倒序。
此帖出自MSP430论坛


回复

使用道具 举报

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

本版积分规则

  • 论坛活动 E手掌握

    扫码关注
    EEWORLD 官方微信

  • EE福利  唾手可得

    扫码关注
    EE福利 唾手可得

小黑屋|手机版|Archiver|电子工程世界 ( 京ICP证 060456 )

GMT+8, 2018-10-23 09:09 , Processed in 0.061078 second(s), 12 queries , Gzip On, MemCache On.

快速回复 返回顶部 返回列表