搜索
bottom↓
回复: 44

这款OLED如何驱动,怎么一直不成功!

[复制链接]

出0入0汤圆

发表于 2010-1-30 12:40:16 | 显示全部楼层 |阅读模式
最近在网上购得一块 oled 128*32点阵 蓝绿色 ,店家也给了接口定义和测试程序。可我试了不行,郁闷中……

介绍如下:
品牌铼宝,128*32点阵,蓝绿色,控制器:SSD1303,工作电压3.3伏,需外接最大16伏的驱动电压。

外形尺寸37*16(不包含排线的尺寸)。引脚间距0.85mm。
引脚定义(正面右边为1脚):
1.NC
2.VSS
3.GDR
4.VDDB
5.FB
6.RESE
7.VBREF
8.NC
9.NC
10.NC
11.VDD1   接4.7uF电容到GND
12.BS1
13.BS2
14.NC
15.CS#
16.RES#
17.D/C
18.R/W
19.E/RD
20.D0
21.D1
22.D2
23.D3
24.D4
25.D5
26.D6
27.D7
28.IREF  接910K电阻到GND
29.VCDMH  接4.7uF电容到GND
30.VCC    7-16伏(建议16伏),接4.7uF电容到GND
31.NC


(原文件名:13.jpg)


(原文件名:23.jpg)

测试程序
#include "reg52.h"
#include <stdio.h>
#include <intrins.h>
#define SSD_DATA P2
sbit SSD_CS=P3^3;
sbit SSD_RES=P3^4;
sbit SSD_DC=P3^5;
sbit SSD_WR=P3^6;
sbit SSD_RD=P3^7;

// 纵向取模下高位,数据排列:从左到右从上到下   //
unsigned char code nBitmapDot[] =    // 数据表
{
      0x00,0x00,0x00,0x00,0x18,0x78,0xF0,0xC0,
      0x40,0xC0,0x40,0xC0,0xC0,0x4C,0xFC,0x78,
      0x40,0x40,0x40,0x60,0x70,0x40,0x00,0x00,
      0x00,0x00,0x00,0x00,0xFC,0xF8,0x98,0x98,
      0x98,0x98,0x98,0x98,0x98,0xFC,0xF8,0x00,
      0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFC,
      0xFC,0x08,0xA0,0x60,0x60,0x64,0xFC,0xF8,
      0x60,0xFE,0xFC,0x68,0x60,0x70,0x60,0x40,
      0x00,0x00,0x00,0x00,0xFC,0xF8,0x08,0x00,
      0x00,0x00,0x00,0xFC,0xFC,0x08,0x00,0x00,
      0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
      0x40,0x40,0x40,0x40,0x40,0x40,0xFC,0xFC,
      0x48,0x40,0x40,0x60,0x70,0x60,0x40,0x00,
      0x00,0x00,0x00,0x00,0x00,0xFC,0xF8,0x18,
      0x00,0x10,0x30,0x10,0x10,0x10,0xD0,0xF0,
      0xF8,0x38,0x10,0x00,0x00,0x00,0x00,0x00,
      0x00,0x00,0x0C,0x3C,0xF8,0xF0,0x81,0xF9,
      0x86,0xE0,0xF8,0x6F,0xC3,0xF9,0x7F,0xFF,
      0xD9,0x98,0xFC,0x38,0x10,0x00,0x00,0x00,
      0x00,0xC0,0x80,0x80,0xFF,0xBF,0x99,0xD9,
      0x19,0x19,0xD9,0x99,0x99,0xBF,0x9F,0x80,
      0xC0,0x80,0x00,0x00,0x03,0x03,0xF3,0xFF,
      0xFF,0xE3,0xE3,0xC3,0xFE,0xFF,0x27,0x27,
      0x26,0x27,0x27,0xFE,0xFE,0x04,0x00,0x00,
      0x08,0x08,0x08,0x08,0xFF,0xFF,0x08,0x0E,
      0x0F,0x03,0x03,0xFF,0xFF,0x03,0x03,0xFF,
      0xFF,0xFF,0x80,0x00,0x00,0x00,0x06,0x06,
      0x86,0x06,0x1E,0x7E,0xF6,0xE6,0x07,0xC7,
      0xFE,0x7E,0x06,0x06,0x26,0x1E,0x0F,0x0E,
      0x08,0x00,0x0C,0x0C,0x0C,0xFF,0xFF,0x0C,
      0x0E,0x3E,0x78,0x3C,0xFE,0xE7,0x63,0xA1,
      0xE0,0x60,0xA0,0xF0,0xF0,0x00,0x00,0x00,
      0x00,0x00,0x10,0x30,0xF0,0xFE,0xFF,0x0F,
      0x03,0x01,0xFF,0x0E,0x03,0x03,0x9E,0xFC,
      0xF3,0x9F,0x07,0x00,0x00,0x00,0x00,0x00,
      0x00,0xFF,0xFF,0x31,0x31,0x31,0xFF,0xFF,
      0x01,0x00,0xFF,0xFF,0x31,0x31,0x31,0xFF,
      0xFF,0x01,0x00,0x00,0x30,0x0E,0x03,0xFF,
      0xFF,0x10,0x33,0x31,0x37,0x37,0xF3,0xFF,
      0x7F,0xF3,0xB3,0x37,0x37,0x38,0x30,0x20,
      0x40,0xE0,0xE0,0x60,0x3F,0x3F,0x33,0x33,
      0x9B,0xC3,0x7B,0x3F,0x07,0x3F,0xFB,0xC3,
      0x03,0x03,0x03,0x03,0x00,0x30,0x10,0x10,
      0x11,0x17,0x1F,0x12,0x10,0x90,0xF0,0x7F,
      0xDF,0x90,0x90,0x90,0x90,0x10,0x1C,0x18,
      0x10,0x00,0xC0,0xE0,0x70,0x7F,0x3F,0x98,
      0xCC,0xFE,0x7E,0x1E,0x8F,0xE3,0x78,0x3F,
      0x0F,0x00,0xFF,0xFF,0x00,0x00,0x00,0x00,
      0x00,0x00,0x00,0x00,0x0F,0x0F,0x0F,0x00,
      0x00,0x18,0x1F,0x10,0x0C,0x0E,0x07,0x03,
      0x00,0x03,0x0F,0x0F,0x0E,0x04,0x00,0x00,
      0x00,0x1F,0x0F,0x02,0x02,0x02,0x0F,0x0F,
      0x00,0x00,0x1F,0x0F,0x02,0x02,0x02,0x0F,
      0x0F,0x00,0x00,0x00,0x00,0x00,0x00,0x1F,
      0x1F,0x10,0x18,0x0C,0x0E,0x07,0x07,0x01,
      0x00,0x01,0x07,0x0F,0x0F,0x1E,0x0C,0x00,
      0x00,0x01,0x00,0x00,0x18,0x0C,0x04,0x07,
      0x03,0x01,0x00,0x00,0x00,0x00,0x00,0x03,
      0x07,0x0E,0x1E,0x04,0x00,0x18,0x18,0x08,
      0x08,0x0C,0x04,0x06,0x03,0x03,0x01,0x00,
      0x00,0x00,0x01,0x03,0x03,0x07,0x1E,0x08,
      0x00,0x00,0x00,0x01,0x00,0x00,0x00,0x01,
      0x18,0x0C,0x06,0x07,0x03,0x00,0x02,0x06,
      0x1E,0x0E,0x0F,0x07,0x00,0x00,0x00,0x00
};

//SSD1303 8080 parallel interface
#include "main.h"
#include "intrins.h"

void Delay_us(unsigned char times)
{
unsigned char i,j;

for(i=0;i<times;i++){
    for(j=0;j<24;j++)
   _nop_();
   }
}

void Ssd_Command(unsigned char command){
SSD_DC=0;
_nop_();
SSD_CS=0;
_nop_();
SSD_RD=1;
SSD_WR=0;
_nop_();
SSD_DATA=command;
Delay_us(1);
SSD_WR=1;
_nop_();
SSD_CS=1;
}

void Ssd_Data(unsigned char dat){
SSD_DC=1;
_nop_();
SSD_CS=0;
_nop_();
SSD_RD=1;
SSD_WR=0;
_nop_();
P2=dat;
_nop_();
SSD_WR=1;
_nop_();
SSD_CS=1;
}

void Ssd_Init(void){
SSD_RES=0;
Delay_us(30);
SSD_RES=1;
Delay_us(20);
Ssd_Command(0xae); //display off显示关
Ssd_Command(0x40); //display start line 00000显示开始行00000
Ssd_Command(0x81); //contrast对比度
Ssd_Command(0x80);
Ssd_Command(0x82); //brightness亮度
Ssd_Command(0x80);
Ssd_Command(0xa0); //no remap不重画
Ssd_Command(0xa4); //intire display off全部显示关
Ssd_Command(0xa6); //normal display正常显示
Ssd_Command(0xa8); //39 mux
Ssd_Command(31);
Ssd_Command(0xad); //DCDC off
Ssd_Command(0x8a);
Ssd_Command(0xc8); //scan from COM[N-1] to COM0从COM[N-1] 至 COM0扫描
Ssd_Command(0xd3); //row 0->com 62
Ssd_Command(32);
Ssd_Command(0xd5);    //
Ssd_Command(0x03);    //
Ssd_Command(0xd8); //mono mode,normal power mode mono模式,正常电源模式
Ssd_Command(0x00);  //?
Ssd_Command(0xda); //alternative COM pin configuration另一个com引脚配置
Ssd_Command(0x12);
Ssd_Command(0xaf); //display on显示开
}

void main(void){
unsigned char i,j1;
unsigned int k;
Ssd_Init();

for(i=0;i<4;i++)
{
Ssd_Command(0xB0+i);//设置显示位置—行
Ssd_Command(0x00); //设置显示位置—列低地址
Ssd_Command(0x10); //设置显示位置—列高地址
for(j1=0;j1<128;j1++)
Ssd_Data(nBitmapDot[128*i+j1]);

}

while(1);
}

阿莫论坛20周年了!感谢大家的支持与爱护!!

月入3000的是反美的。收入3万是亲美的。收入30万是移民美国的。收入300万是取得绿卡后回国,教唆那些3000来反美的!

出0入0汤圆

 楼主| 发表于 2010-1-30 12:42:05 | 显示全部楼层
最主要的事忘了说了,又没有用过这款屏的仁兄,帮帮忙阿!

出0入0汤圆

 楼主| 发表于 2010-3-12 23:33:34 | 显示全部楼层
回复【1楼】chchg
-----------------------------------------------------------------------
上面的程序,修改了再试也不行,也试了ourdev里贴的SD1303.h驱动,还是不行啊!为了防止这个OLED屏是坏的可能,我又换了一块,还是不行!真晕……

出0入0汤圆

发表于 2010-6-20 05:33:32 | 显示全部楼层
先问清楚人家用什么牌子的51单片机驱动的,就拿AT和STC这两个的速度都有差别了!

出0入0汤圆

发表于 2010-6-20 10:13:12 | 显示全部楼层
我这里也有和你一样的屏。
但是我到现在还没有时间 应用起来,放在那里。

我查了一下正在 设计中的 电路图,发现你的管脚排列和我正相反。

(原文件名:新建 ACDSee BMP 图像.JPG)

出0入0汤圆

发表于 2010-6-24 17:44:59 | 显示全部楼层
我也正在调这个屏,也没有点亮

出0入0汤圆

发表于 2010-6-24 19:43:18 | 显示全部楼层
用OLED关键字搜索论坛。

出0入0汤圆

发表于 2011-3-16 23:22:37 | 显示全部楼层
我也点不亮 有哪位兄弟成功了的 上来说说

出0入0汤圆

发表于 2011-3-17 08:22:04 | 显示全部楼层
这个屏我点屏了,可以用8080也可以用4线SPI方式。

出0入0汤圆

发表于 2011-3-17 08:24:19 | 显示全部楼层
12.BS1
13.BS2
4线时这里要改一下,显示效果还是很不错的,就是背光低于16V还真不是很亮,程序的话楼主的也应该可以,只是接线要注意

出0入0汤圆

发表于 2011-3-17 11:17:09 | 显示全部楼层
谢谢楼上的 我是用8080 BS1 BS2接3.3V  就是VCC我是用12V 可一点反应都没有 (不是暗的问题) 通过确定IREF VCOMH管脚电压 对比 确信命令是传进去了 难道非要16V吗  ls的兄弟使用的哪种方式驱动的

出0入0汤圆

发表于 2011-3-17 11:43:47 | 显示全部楼层
都忘了俺也收过一块OLED,折腾不出来就闲置了,还在纳闷:在驱动之前如何确定屏的好坏?

出0入0汤圆

发表于 2011-3-17 13:25:08 | 显示全部楼层
为了确定非焊接问题 我做了4块转接板 使用串行 并行驱动都试了 就不亮 晕死呀

出0入0汤圆

发表于 2011-3-17 13:38:26 | 显示全部楼层
这是我M32 写的串行驱动 大家看哪里有问题吗
#include "SSD1303.h"

#if !defined(SSD1303_8080)
       
        // 发送数据或命令
        void SSD1303WriteDataOrCmd(uchar dat,BOOL isCommad)
        {
                uchar i         = 0;
                uchar temp         = 0x80;
                if(isCommad)
                {
                        SSD1303_DC_L();
                }
                else
                {
                        SSD1303_DC_H();
                }
                DelayUs(1);
               
                SSD1303_CS_L();
                DelayUs(1);
                for( i = 0 ; i < 8 ; ++i )
            {
                    SSD1303_SCLK_L();
                    DelayUs(1);
                    if( dat & temp )
                    {
                            SSD1303_SDIN_H();
                    }
                    else
                    {
                            SSD1303_SDIN_L();
                    }
                    DelayUs(1);
                    SSD1303_SCLK_H();
                    DelayUs(1);
                    temp >>= 1;
            }
            SSD1303_CS_H();
        }

       
       
#endif


void SSD1303_Init()
{
        uchar i = 0;
        uchar j = 0;
       
        // 端口初始化
        SSD1303_PORT_INIT();
       
        // 硬件复位
        SSD1303_RES_L();
        DelayUs(30);
        SSD1303_RES_H();
        DelayUs(20);
       
   SSD1303_WRITE_CMD(0xae); //display off显示关
   SSD1303_WRITE_CMD(0x40); //display start line 00000显示开始行00000
   SSD1303_WRITE_CMD(0x81); //contrast对比度
   SSD1303_WRITE_CMD(0x20);
   SSD1303_WRITE_CMD(0x82); //brightness亮度
   SSD1303_WRITE_CMD(0x20);
   SSD1303_WRITE_CMD(0xa0); //no remap不重画
   SSD1303_WRITE_CMD(0xa4); //intire display off全部显示关
   SSD1303_WRITE_CMD(0xa6); //normal display正常显示
   SSD1303_WRITE_CMD(0xa8); //39 mux
   SSD1303_WRITE_CMD(31);
   SSD1303_WRITE_CMD(0xad); //DCDC off
   SSD1303_WRITE_CMD(0x8a);
   SSD1303_WRITE_CMD(0xc8); //scan from COM[N-1] to COM0从COM[N-1] 至 COM0扫描
   SSD1303_WRITE_CMD(0xd3); //row 0->com 62
   SSD1303_WRITE_CMD(32);
   SSD1303_WRITE_CMD(0xd5);    //
   SSD1303_WRITE_CMD(0x03);    //
   SSD1303_WRITE_CMD(0xd8); //mono mode,normal power mode mono模式,正常电源模式
   SSD1303_WRITE_CMD(0x00);  //?
   SSD1303_WRITE_CMD(0xda); //alternative COM pin configuration另一个com引脚配置
   SSD1303_WRITE_CMD(0x12);
   SSD1303_WRITE_CMD(0xaf); //display on显示开       
   
   for(i=0;i<4;i++)
       {
               SSD1303_WRITE_CMD(0xB0+i);//设置显示位置—行
               SSD1303_WRITE_CMD(0x00); //设置显示位置—列低地址
               SSD1303_WRITE_CMD(0x10); //设置显示位置—列高地址
               for(j=0;j<128;j++)
               {
                       SSD1303_WRITE_DATA(0xFF);
               }
       }
}



SSD1303.h


#ifndef __SSD1303__H__INCLUDED__
#define __SSD1303__H__INCLUDED__
#include "common.h"


// 管脚定义
#define SSD1303_DC_H()        SET_BIT(PORTA,PA2)  // DATA
#define SSD1303_DC_L()        CLR_BIT(PORTA,PA2)        // CMD
#define SSD1303_RES_H()        SET_BIT(PORTA,PA3)
#define SSD1303_RES_L()        CLR_BIT(PORTA,PA3)  // RESET
#define SSD1303_CS_H()        SET_BIT(PORTA,PA4)        // Disable
#define SSD1303_CS_L()        CLR_BIT(PORTA,PA4)  // Enable

//=================================================================
#if defined(SSD1303_8080)
//=================================================================
        #define SSD1303_RD_H()        SET_BIT(PORTA,PA0)
        #define SSD1303_RD_L()        CLR_BIT(PORTA,PA0)        // Read
        #define SSD1303_WR_H()        SET_BIT(PORTA,PA1)
        #define SSD1303_WR_L()        CLR_BIT(PORTA,PA1)        // Write


        // 8080-DATA
        #define SSD1303_DATA_PORT        PORTC
        #define SSD1303_DATA_OUT()        DDRC = 0xFF;
        #define SSD1303_DATA_IN()        DDRC = 0;
       
        // 端口初始化
        #define SSD1303_PORT_INIT()        DDRA         |= _BV(PA0)|_BV(PA1)|_BV(PA2)|_BV(PA3)|_BV(PA4);\
                                                                PORTA        |= _BV(PA0)|_BV(PA1)|_BV(PA2)|_BV(PA3)|_BV(PA4);\
                                                                SSD1303_DATA_OUT();
                                                               
       
        // 写入数据
        #define SSD1303_WRITE_DATA(d)        SSD1303_DC_H();\
                                                                        NOP();\
                                                                        SSD1303_CS_L();\
                                                                        NOP();\
                                                                        SSD1303_RD_H();\
                                                                        SSD1303_WR_L();\
                                                                        NOP();\
                                                                        SSD1303_DATA_PORT = d;\
                                                                        NOP();\
                                                                        SSD1303_WR_H();\
                                                                        NOP();        \
                                                                        SSD1303_CS_H();
       
        // 写入命令                                                               
        #define SSD1303_WRITE_CMD(d)        SSD1303_DC_L();\
                                                                        NOP();\
                                                                        SSD1303_CS_L();\
                                                                        NOP();\
                                                                        SSD1303_RD_H();\
                                                                        SSD1303_WR_L();\
                                                                        NOP();\
                                                                        SSD1303_DATA_PORT = d;\
                                                                        NOP();\
                                                                        SSD1303_WR_H();\
                                                                        NOP();\
                                                                        SSD1303_CS_H();
                                                                       
//=================================================================                                                               
#else
//=================================================================
        #define SSD1303_SDIN_H()        SET_BIT(PORTC,PC1)
        #define SSD1303_SDIN_L()        CLR_BIT(PORTC,PC1)
        #define SSD1303_SCLK_H()        SET_BIT(PORTC,PC0)
        #define SSD1303_SCLK_L()        CLR_BIT(PORTC,PC0)        // D0
       
        // 端口初始化
        #define SSD1303_PORT_INIT()        DDRA         |= _BV(PA2)|_BV(PA3)|_BV(PA4);\
                                                                PORTA        |= _BV(PA2)|_BV(PA3)|_BV(PA4);\
                                                                DDRC        |= _BV(PC0)|_BV(PC1);\
                                                                PORTC        |= _BV(PC0)|_BV(PC1);
       
        void SSD1303WriteDataOrCmd(uchar dat,BOOL isCommad);
        #define SSD1303_WRITE_DATA(d)        SSD1303WriteDataOrCmd(d,FALSE);SSD1303WriteDataOrCmd(0xE3,TRUE)
        #define SSD1303_WRITE_CMD(d)        SSD1303WriteDataOrCmd(d,TRUE)
#endif                                                               

// 屏幕大小
#define SSD1303_X_PIXELS   128
#define SSD1303_Y_PIXELS   32

// 常用命令定义
#define SSD1303CMD_COL_ADDR(x)                        SSD1303_WRITE_CMD((x) & 0x0F);SSD1303_WRITE_CMD(0x10 | (((x) >> 4) & 0x0F))
#define SSD1303CMD_DISP_START_LINE(x)         SSD1303_WRITE_CMD(0x40 | ((x) & 0x3F))
#define SSD1303CMD_SEG_REMAP(x)                        SSD1303_WRITE_CMD(0xA0 | ((x) & 0x01))
#define SSD1303CMD_FULL_ONOFF(x)                SSD1303_WRITE_CMD(0xA4 | ((x) & 0x01))
#define SSD1303CMD_DISP_INVERSE(x)                SSD1303_WRITE_CMD(0xA6 | ((x) & 0x01))
#define SSD1303CMD_DISP_ONOFF(x)                SSD1303_WRITE_CMD(0xAE | ((x) & 0x01))
#define SSD1303CMD_COM_DIR_NORMAL()                SSD1303_WRITE_CMD(0xC0)
#define SSD1303CMD_COM_DIR_REVERSE()        SSD1303_WRITE_CMD(0xC8)
#define SSD1303CMD_PAGE_ADDR(x)                        SSD1303_WRITE_CMD(0xB0 | ((x) & 0x0F))

// 双字节命令
#define SSD1303CMD_CONTRAST_CONTROL(x)        SSD1303_WRITE_CMD(0x81);SSD1303_WRITE_CMD(x);
#define SSD1303CMD_BRIGHTNESS(x)                SSD1303_WRITE_CMD(0x82);SSD1303_WRITE_CMD(x);               
#define SSD1303CMD_DCDC_ONOFF(x)                SSD1303_WRITE_CMD(0xAD);SSD1303_WRITE_CMD(0x8A |((x) & 0x01));
#define SSD1303CMD_MULT_RATIO(x)                SSD1303_WRITE_CMD(0xA8);SSD1303_WRITE_CMD((x) & 0x3F);
#define SSD1303CMD_DISP_OFFSET(x)                SSD1303_WRITE_CMD(0xD3);SSD1303_WRITE_CMD((x) & 0x3F);
#define SSD1303CMD_FREQ(x)                                SSD1303_WRITE_CMD(0xD5);SSD1303_WRITE_CMD(x);
#define SSD1303CMD_COLOR_MODE(x)                SSD1303_WRITE_CMD(0xD8);SSD1303_WRITE_CMD(x);


// 初始化SSD1303
void SSD1303_Init();



#endif // __SSD1303__H__INCLUDED__

出0入0汤圆

发表于 2011-3-17 22:20:50 | 显示全部楼层
用上面的程序电路点亮另外一款12864的OLED 没有问题  对这个屏真是有点晕了

出0入0汤圆

发表于 2011-3-17 22:54:05 | 显示全部楼层
SSD1303驱动的屏我用过 你再看看第4脚和11脚有没有接错

出0入0汤圆

发表于 2011-3-17 23:18:17 | 显示全部楼层
回复【15楼】chenxiliang110
ssd1303驱动的屏我用过 你再看看第4脚和11脚有没有接错
-----------------------------------------------------------------------

你是说 可能4脚是电源VDD脚? 感觉测试中如果程序命令发进去后VCOMH IREF脚电压有变化  如果这个管脚接错的话 应该指令都发不进去   现在程序测试没问题  只有怀疑硬件上实际接法是不是是和上面的标准接法不同了?  希望点亮这个屏的兄弟将自己的连线方法提供一下咯

出0入0汤圆

发表于 2011-3-18 10:43:10 | 显示全部楼层
顶起来呀

出0入0汤圆

发表于 2011-3-18 22:24:08 | 显示全部楼层
回复【9楼】amazing030
12.bs1  
13.bs2  
4线时这里要改一下,显示效果还是很不错的,就是背光低于16v还真不是很亮,程序的话楼主的也应该可以,只是接线要注意
-----------------------------------------------------------------------

兄弟的接线有什么特别的地方吗 谢谢

出0入0汤圆

发表于 2011-3-18 23:24:02 | 显示全部楼层
没特别的啊,就是按店主给的方法接,没问题的

出0入0汤圆

发表于 2011-3-19 00:30:03 | 显示全部楼层
我8080驱动过 不过是在手机上 非单片机

出0入0汤圆

发表于 2011-3-19 09:59:30 | 显示全部楼层
谢谢  接线我也是按那的  换了5 6片都没反应  真是晕死了  哎~

出0入0汤圆

发表于 2011-3-19 15:40:45 | 显示全部楼层
总是不行  看来这个屏有点特殊之处。。。

出0入0汤圆

发表于 2011-3-28 11:06:50 | 显示全部楼层
先mark一下,回去试试看

出0入0汤圆

发表于 2011-4-17 16:50:30 | 显示全部楼层
我在网上买了几片玩玩,也搞了半天,驱动电压为11v,特地用了外置的dc-dc ,没什么反应,晕倒。还有,焊接真是麻烦,一步小心脚就断了,还是便宜,5块钱一块。我是用m16 ,不知道有什么问题,程序也是按卖家给的修改的。真是郁闷,看看各位有没有点成功的?

出0入0汤圆

发表于 2011-5-30 14:21:15 | 显示全部楼层
回复【8楼】amazing030
-----------------------------------------------------------------------

你的意思是你把这个屏点亮了?打救一下吧,毕设急用

出0入0汤圆

发表于 2011-5-30 14:22:17 | 显示全部楼层
回复【楼主位】chchg
-----------------------------------------------------------------------

想问问LZ现在点亮了没有,我也遇到这个问题了、

出0入0汤圆

发表于 2011-5-30 15:02:26 | 显示全部楼层
我还是把程序帖出来吧

/***************************************************************************************/
四线串行方式

#define  LCD_CS_ClrVal()    GPIOA->BRR  = GPIO_Pin_0
#define  LCD_RES_ClrVal()   GPIOA->BRR  = GPIO_Pin_1
#define  LCD_DC_ClrVal()    GPIOA->BRR  = GPIO_Pin_2
#define  LCD_SCL_ClrVal()   GPIOB->BRR  = GPIO_Pin_0
#define  LCD_SDI_ClrVal()   GPIOB->BRR  = GPIO_Pin_1

#define  LCD_CS_SetVal()    GPIOA->BSRR = GPIO_Pin_0
#define  LCD_RES_SetVal()   GPIOA->BSRR = GPIO_Pin_1
#define  LCD_DC_SetVal()    GPIOA->BSRR = GPIO_Pin_2
#define  LCD_SCL_SetVal()   GPIOB->BSRR = GPIO_Pin_0
#define  LCD_SDI_SetVal()   GPIOB->BSRR = GPIO_Pin_1

//#define    LCD_DataIn(dat)    (GPIOB->ODR = (dat))

//#define  ABS(NUM)         (NUM >= 0 ? NUM : -NUM)

u8 LcdPixelBuffer[4][128];

void OLED_SendCmd(unsigned char cmd)
{
    u8 i;

    LCD_DC_ClrVal();
    LCD_CS_ClrVal();
    for(i = 0; i < 8; i++)
    {
        LCD_SCL_ClrVal();
        if(cmd & 0x80)
            LCD_SDI_SetVal();
        else
            LCD_SDI_ClrVal();
        LCD_SCL_SetVal();
        cmd <<= 1;
    }
    LCD_CS_SetVal();
    LCD_DC_SetVal();
}

void OLED_SendData(unsigned char dat)
{
    u8 i;

    LCD_DC_SetVal();
    LCD_CS_ClrVal();
    for(i = 0; i < 8; i++)
    {
        LCD_SCL_ClrVal();
        if(dat & 0x80)
            LCD_SDI_SetVal();
        else
            LCD_SDI_ClrVal();
        LCD_SCL_SetVal();
        dat <<= 1;
    }
    LCD_CS_SetVal();
    LCD_DC_SetVal();
}

void LCD_Init(void)
{
    GPIO_InitTypeDef GPIO_InitStructure;

    RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_GPIOB | RCC_APB2Periph_AFIO, ENABLE);
    RCC->APB2ENR |=  1 << 0;    // 开启辅助时钟
    AFIO->MAPR   &=~(7 << 24);  // 关闭JTAG,保留SWD
    AFIO->MAPR   |=  2 << 24;   // 关闭JTAG,保留SWD

    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_2 | GPIO_Pin_3 | GPIO_Pin_4;
    GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;
    GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;
    GPIO_Init(GPIOA, &GPIO_InitStructure);

    GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_2 | GPIO_Pin_3 | GPIO_Pin_4 | GPIO_Pin_5 | GPIO_Pin_6 | GPIO_Pin_7;
    GPIO_Init(GPIOB, &GPIO_InitStructure);

    LCD_RES_ClrVal();
    Delay_ms(50);
    LCD_RES_SetVal();
    Delay_ms(20);

    OLED_SendCmd(0xae); //display off显示关
    OLED_SendCmd(0x40); //display start line 00000显示开始行00000
    OLED_SendCmd(0x81); //contrast对比度
    OLED_SendCmd(0x80);
    OLED_SendCmd(0x82); //brightness亮度
    OLED_SendCmd(0x80);
    OLED_SendCmd(0xa0); //no remap不重画
    OLED_SendCmd(0xa4); //intire display off全部显示关
    OLED_SendCmd(0xa6); //normal display正常显示
    OLED_SendCmd(0xa8); //39 mux
    OLED_SendCmd(31);
    OLED_SendCmd(0xad); //DCDC off
    OLED_SendCmd(0x8a);
    OLED_SendCmd(0xc8); //scan from COM[N-1] to COM0从COM[N-1] 至 COM0扫描
    OLED_SendCmd(0xd3); //row 0->com 62
    OLED_SendCmd(32);
    OLED_SendCmd(0xd5);    //
    OLED_SendCmd(0x03);    //
    OLED_SendCmd(0xd8); //mono mode,normal power mode mono模式,正常电源模式
    OLED_SendCmd(0x00);  //?
    OLED_SendCmd(0xda); //alternative COM pin configuration另一个com引脚配置
    OLED_SendCmd(0x12);
    OLED_SendCmd(0xaf); //display on显示开
}

void LCD_Clear(void)
{
    u8 i, j;

    for(i = 0; i < 4; i++)
    {
        OLED_SendCmd(0xB0 | i);     // 设置显示位置—行
        OLED_SendCmd(0x10);         // 设置显示位置—列高地址
        OLED_SendCmd(0x00);         // 设置显示位置—列低地址
        for(j = 0; j < 128; j++)
            OLED_SendData(0x00);        
    }
}

/*
void Test(void)
{
    unsigned char i,j;

    for(i=0;i<4;i++)
    {
        OLED_SendCmd(0xB0+i);//设置显示位置—行
        OLED_SendCmd(0x00); //设置显示位置—列低地址
        OLED_SendCmd(0x10); //设置显示位置—列高地址
        for(j=0;j<128;j++)
            OLED_SendData(nBitmapDot[128*i+j]);     
    }
}*/

void LCD_SetCursor(u8 x, u8 y)
{
    OLED_SendCmd(y | 0xB0);         // 设置页地址
    OLED_SendCmd((x >> 4) | 0x10);  // 设置列地址高4位
    OLED_SendCmd(x & 0x0F);         // 设置列地址低4位
}

出0入0汤圆

发表于 2011-5-30 15:04:54 | 显示全部楼层
8080并行方式的写指令数据函数

void OLED_SendCmd(unsigned char cmd)
{
    LCD_DC_ClrVal();
    Delay_us(10);
    LCD_CS_ClrVal();
    LCD_RD_SetVal();
    LCD_WR_ClrVal();
    Delay_us(1);
    LCD_DataIn(cmd);
    Delay_us(1);
    LCD_WR_SetVal();
    LCD_CS_SetVal();
}

void OLED_SendData(unsigned char dat)
{
    LCD_DC_SetVal();
    LCD_CS_ClrVal();
    LCD_RD_SetVal();
    LCD_WR_ClrVal();
    Delay_us(1);
    LCD_DataIn(dat);
    Delay_us(1);
    LCD_WR_SetVal();
    LCD_CS_SetVal();
}

出0入0汤圆

发表于 2011-5-30 15:33:20 | 显示全部楼层
回复【28楼】amazing030
-----------------------------------------------------------------------
程序我也有,但是按资料焊好的屏就是不亮,想请教一下成功的

出0入0汤圆

发表于 2011-5-30 16:29:20 | 显示全部楼层
就按淘宝地址上的接法接啊...

出0入0汤圆

发表于 2011-9-14 21:31:55 | 显示全部楼层
请问各位大侠! 谁用过维信诺的VGF160128B-S001  
请教  焊接方法  和 驱动程序  我的邮箱:zhaochuanyu1982@sina.com
我的QQ:149233310
以下是我在买屏的淘宝网址:http://item.taobao.com/item.htm?id=10453536837

出0入0汤圆

发表于 2011-9-14 21:38:46 | 显示全部楼层
请问各位大侠! 谁用过维信诺的VGF160128B-S001   
请教  焊接方法  和 驱动程序  我的邮箱:zhaochuanyu1982@sina.com   
我的QQ:149233310   
以下是我在买屏的淘宝网址:http://item.taobao.com/item.htm?id=10453536837

出0入0汤圆

发表于 2011-12-6 11:26:20 | 显示全部楼层
mark

出0入0汤圆

发表于 2012-1-23 23:22:06 | 显示全部楼层
这个屏幕我今天有空拿出来玩了一下
亮度实在够呛,OLED电压21V(数据手册规定是10V)才有比较理想的亮度,并且仔细看可以发现很多点显示不完整,完全没有实用价值
结合它超低的价格,我怀疑这个是检验不合格的产品

出0入0汤圆

发表于 2012-1-24 10:07:45 | 显示全部楼层

(原文件名:IMG_20111030_224537a.jpg)


(原文件名:IMG_20111030_224556a.jpg)


(原文件名:IMG_20111101_173202a.jpg)

这是用17v驱动的效果。用的是串行接口。亮度的确吧怎么样。

出0入0汤圆

发表于 2012-1-24 11:25:20 | 显示全部楼层
二手拆机的液晶屏和OLED屏

我个人感觉不能完全保证质量

那种存放了几年的库存全新液晶屏

质量通常更好一些

出0入0汤圆

发表于 2012-1-24 15:46:31 | 显示全部楼层
回复【36楼】diskcopy  
-----------------------------------------------------------------------

引脚排线没有焊接痕迹,应该是新的。不过是否合格品就不好说了

出0入0汤圆

发表于 2012-5-23 15:08:56 | 显示全部楼层
这玩意关键是电路连接图,有哪位朋友点亮后把接线图搞一份,大家参考下呀

出0入0汤圆

发表于 2012-5-23 15:11:39 | 显示全部楼层
kazuyuki 发表于 2012-1-24 10:07
(原文件名:IMG_20111030_224537a.jpg)

这位朋友能否把线路连接图弄一下给大家参考下,在这先谢谢了

出0入0汤圆

发表于 2012-5-23 19:31:34 | 显示全部楼层
接线就是按标准sed1303的引脚接的:


引脚方向和店家提供的方向完全一致,没有反。

本帖子中包含更多资源

您需要 登录 才可以下载或查看,没有帐号?注册

x

出0入0汤圆

发表于 2012-5-24 15:58:28 | 显示全部楼层
我的可以点亮,VCC=16V,但亮度实在是太低了.一会儿抬高VCC再试一下.

出0入0汤圆

发表于 2012-5-24 16:37:58 | 显示全部楼层
听说得提高21有比较好的效果

出0入0汤圆

发表于 2012-5-25 11:28:08 来自手机 | 显示全部楼层
这个我也买过5片,没有一片成功的。感觉挺难的,那个店家贴出来的引脚和手册上的好像是反的。有没有哪位高手成功过。分享分享。

出0入0汤圆

发表于 2019-6-23 20:52:56 | 显示全部楼层
刚买了一些SSD1303的片子,Mark收藏
回帖提示: 反政府言论将被立即封锁ID 在按“提交”前,请自问一下:我这样表达会给举报吗,会给自己惹麻烦吗? 另外:尽量不要使用Mark、顶等没有意义的回复。不得大量使用大字体和彩色字。【本论坛不允许直接上传手机拍摄图片,浪费大家下载带宽和论坛服务器空间,请压缩后(图片小于1兆)才上传。压缩方法可以在微信里面发给自己(不要勾选“原图),然后下载,就能得到压缩后的图片】。另外,手机版只能上传图片,要上传附件需要切换到电脑版(不需要使用电脑,手机上切换到电脑版就行,页面底部)。
您需要登录后才可以回帖 登录 | 注册

本版积分规则

手机版|Archiver|amobbs.com 阿莫电子技术论坛 ( 粤ICP备2022115958号, 版权所有:东莞阿莫电子贸易商行 创办于2004年 (公安交互式论坛备案:44190002001997 ) )

GMT+8, 2024-4-26 05:27

© Since 2004 www.amobbs.com, 原www.ourdev.cn, 原www.ouravr.com

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