这款OLED如何驱动,怎么一直不成功!
最近在网上购得一块 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
http://cache.amobbs.com/bbs_upload782111/files_25/ourdev_530779.jpg
(原文件名:13.jpg)
http://cache.amobbs.com/bbs_upload782111/files_25/ourdev_530780.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 to COM0从COM 至 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);
}
while(1);
} 最主要的事忘了说了,又没有用过这款屏的仁兄,帮帮忙阿! 回复【1楼】chchg
-----------------------------------------------------------------------
上面的程序,修改了再试也不行,也试了ourdev里贴的SD1303.h驱动,还是不行啊!为了防止这个OLED屏是坏的可能,我又换了一块,还是不行!真晕…… 先问清楚人家用什么牌子的51单片机驱动的,就拿AT和STC这两个的速度都有差别了! 我这里也有和你一样的屏。
但是我到现在还没有时间 应用起来,放在那里。
我查了一下正在 设计中的 电路图,发现你的管脚排列和我正相反。
http://cache.amobbs.com/bbs_upload782111/files_29/ourdev_562799P2DRRE.JPG
(原文件名:新建 ACDSee BMP 图像.JPG) 我也正在调这个屏,也没有点亮 用OLED关键字搜索论坛。 我也点不亮 有哪位兄弟成功了的 上来说说 这个屏我点屏了,可以用8080也可以用4线SPI方式。 12.BS1
13.BS2
4线时这里要改一下,显示效果还是很不错的,就是背光低于16V还真不是很亮,程序的话楼主的也应该可以,只是接线要注意 谢谢楼上的 我是用8080 BS1 BS2接3.3V就是VCC我是用12V 可一点反应都没有 (不是暗的问题) 通过确定IREF VCOMH管脚电压 对比 确信命令是传进去了 难道非要16V吗ls的兄弟使用的哪种方式驱动的 都忘了俺也收过一块OLED,折腾不出来就闲置了,还在纳闷:在驱动之前如何确定屏的好坏? 为了确定非焊接问题 我做了4块转接板 使用串行 并行驱动都试了 就不亮 晕死呀 这是我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 to COM0从COM 至 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__ 用上面的程序电路点亮另外一款12864的OLED 没有问题对这个屏真是有点晕了 SSD1303驱动的屏我用过 你再看看第4脚和11脚有没有接错 回复【15楼】chenxiliang110
ssd1303驱动的屏我用过 你再看看第4脚和11脚有没有接错
-----------------------------------------------------------------------
你是说 可能4脚是电源VDD脚? 感觉测试中如果程序命令发进去后VCOMH IREF脚电压有变化如果这个管脚接错的话 应该指令都发不进去 现在程序测试没问题只有怀疑硬件上实际接法是不是是和上面的标准接法不同了?希望点亮这个屏的兄弟将自己的连线方法提供一下咯 顶起来呀 回复【9楼】amazing030
12.bs1
13.bs2
4线时这里要改一下,显示效果还是很不错的,就是背光低于16v还真不是很亮,程序的话楼主的也应该可以,只是接线要注意
-----------------------------------------------------------------------
兄弟的接线有什么特别的地方吗 谢谢 没特别的啊,就是按店主给的方法接,没问题的 我8080驱动过 不过是在手机上 非单片机
./emotion/em126.gif./emotion/em126.gif./emotion/em126.gif 谢谢接线我也是按那的换了5 6片都没反应真是晕死了哎~ 总是不行看来这个屏有点特殊之处。。。 先mark一下,回去试试看 我在网上买了几片玩玩,也搞了半天,驱动电压为11v,特地用了外置的dc-dc ,没什么反应,晕倒。还有,焊接真是麻烦,一步小心脚就断了,还是便宜,5块钱一块。我是用m16 ,不知道有什么问题,程序也是按卖家给的修改的。真是郁闷,看看各位有没有点成功的? 回复【8楼】amazing030
-----------------------------------------------------------------------
你的意思是你把这个屏点亮了?打救一下吧,毕设急用 回复【楼主位】chchg
-----------------------------------------------------------------------
想问问LZ现在点亮了没有,我也遇到这个问题了、 我还是把程序帖出来吧
/***************************************************************************************/
四线串行方式
#defineLCD_CS_ClrVal() GPIOA->BRR= GPIO_Pin_0
#defineLCD_RES_ClrVal() GPIOA->BRR= GPIO_Pin_1
#defineLCD_DC_ClrVal() GPIOA->BRR= GPIO_Pin_2
#defineLCD_SCL_ClrVal() GPIOB->BRR= GPIO_Pin_0
#defineLCD_SDI_ClrVal() GPIOB->BRR= GPIO_Pin_1
#defineLCD_CS_SetVal() GPIOA->BSRR = GPIO_Pin_0
#defineLCD_RES_SetVal() GPIOA->BSRR = GPIO_Pin_1
#defineLCD_DC_SetVal() GPIOA->BSRR = GPIO_Pin_2
#defineLCD_SCL_SetVal() GPIOB->BSRR = GPIO_Pin_0
#defineLCD_SDI_SetVal() GPIOB->BSRR = GPIO_Pin_1
//#define LCD_DataIn(dat) (GPIOB->ODR = (dat))
//#defineABS(NUM) (NUM >= 0 ? NUM : -NUM)
u8 LcdPixelBuffer;
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 to COM0从COM 至 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);
}
}*/
void LCD_SetCursor(u8 x, u8 y)
{
OLED_SendCmd(y | 0xB0); // 设置页地址
OLED_SendCmd((x >> 4) | 0x10);// 设置列地址高4位
OLED_SendCmd(x & 0x0F); // 设置列地址低4位
} 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();
} 回复【28楼】amazing030
-----------------------------------------------------------------------
程序我也有,但是按资料焊好的屏就是不亮,想请教一下成功的 就按淘宝地址上的接法接啊... 请问各位大侠! 谁用过维信诺的VGF160128B-S001
请教焊接方法和 驱动程序我的邮箱:zhaochuanyu1982@sina.com
我的QQ:149233310
以下是我在买屏的淘宝网址:http://item.taobao.com/item.htm?id=10453536837 请问各位大侠! 谁用过维信诺的VGF160128B-S001
请教焊接方法和 驱动程序我的邮箱:zhaochuanyu1982@sina.com
我的QQ:149233310
以下是我在买屏的淘宝网址:http://item.taobao.com/item.htm?id=10453536837 mark 这个屏幕我今天有空拿出来玩了一下
亮度实在够呛,OLED电压21V(数据手册规定是10V)才有比较理想的亮度,并且仔细看可以发现很多点显示不完整,完全没有实用价值
结合它超低的价格,我怀疑这个是检验不合格的产品 http://cache.amobbs.com/bbs_upload782111/files_51/ourdev_714314DN9PUZ.jpg
(原文件名:IMG_20111030_224537a.jpg)
http://cache.amobbs.com/bbs_upload782111/files_51/ourdev_714315BYYI5S.jpg
(原文件名:IMG_20111030_224556a.jpg)
http://cache.amobbs.com/bbs_upload782111/files_51/ourdev_714316FFVJQK.jpg
(原文件名:IMG_20111101_173202a.jpg)
这是用17v驱动的效果。用的是串行接口。亮度的确吧怎么样。 二手拆机的液晶屏和OLED屏
我个人感觉不能完全保证质量
那种存放了几年的库存全新液晶屏
质量通常更好一些 回复【36楼】diskcopy
-----------------------------------------------------------------------
引脚排线没有焊接痕迹,应该是新的。不过是否合格品就不好说了 这玩意关键是电路连接图,有哪位朋友点亮后把接线图搞一份,大家参考下呀 kazuyuki 发表于 2012-1-24 10:07 static/image/common/back.gif
(原文件名:IMG_20111030_224537a.jpg)
这位朋友能否把线路连接图弄一下给大家参考下,在这先谢谢了 接线就是按标准sed1303的引脚接的:
引脚方向和店家提供的方向完全一致,没有反。
我的可以点亮,VCC=16V,但亮度实在是太低了.一会儿抬高VCC再试一下. 听说得提高21有比较好的效果 这个我也买过5片,没有一片成功的。感觉挺难的,那个店家贴出来的引脚和手册上的好像是反的。有没有哪位高手成功过。分享分享。 刚买了一些SSD1303的片子,Mark收藏
页:
[1]