OpenEdv-开源电子网

 找回密码
 立即注册
正点原子全套STM32/Linux/FPGA开发资料,上千讲STM32视频教程免费下载...
查看: 5858|回复: 7

关于SSD1327Z 驱动

[复制链接]

19

主题

39

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
428
金钱
428
注册时间
2013-8-18
在线时间
40 小时
发表于 2015-11-18 17:45:07 | 显示全部楼层 |阅读模式
5金钱
请问有谁用过SSD1327Z这款驱动IC的OLED吗?
我这边使用厂商的初始化源码没有点亮。有什么要注意的吗?
使用STM32103C8的模拟SPI驱动

_Write_CommandCmd(0xAE);

_Write_CommandCmd(0x15); // Set column address
_Write_CommandCmd(0x00); // Start column 0
_Write_CommandCmd(0x3f); // End column 127
_Write_CommandCmd(0x75); // Set row address
_Write_CommandCmd(0x00); // Start row 0
_Write_CommandCmd(0x7f); // End row 127

_Write_CommandCmd(0x81); // Set contrast control
_Write_CommandCmd(0x80);
_Write_CommandCmd(0xa0); // Segment remap
_Write_CommandCmd(0x51);
_Write_CommandCmd(0xa1); // Start line
_Write_CommandCmd(0x00);
_Write_CommandCmd(0xa2); // Display offset
_Write_CommandCmd(0x00);
_Write_CommandCmd(0xa4); // Normal display
_Write_CommandCmd(0xa8); // Set multiplex ratio
_Write_CommandCmd(0x7f);
_Write_CommandCmd(0xb1); // Set phase length
_Write_CommandCmd(0xf1);
_Write_CommandCmd(0xb3); // Set dclk
_Write_CommandCmd(0x00); // 80Hz:0xc1 90Hz:0xe1 100Hz:0x00 110Hz:0x30
// 120Hz:0x50 130Hz:0x70
_Write_CommandCmd(0xab);
_Write_CommandCmd(0x01);
_Write_CommandCmd(0xb6); // Set phase length
_Write_CommandCmd(0x0f);
_Write_CommandCmd(0xbe);
_Write_CommandCmd(0x0f);
_Write_CommandCmd(0xbc);
_Write_CommandCmd(0x08);
_Write_CommandCmd(0xd5);
_Write_CommandCmd(0x62);
_Write_CommandCmd(0xfd);
_Write_CommandCmd(0x12);
_Write_CommandCmd(0xae);

最佳答案

查看完整内容[请看2#楼]

解决了,这个部分的初始化是没有问题的,主要是我的刷屏函数出了问题。 这块IC取消了0xB0这部分的寄存器。所以在刷屏的时候,不需要对寄存器操作,直接将数据刷新到SPI上就行了。 还有就是这IC的一个像素点是4位的。所以会出现亮度的深浅。而且要注意点阵的刷新方式。 SPI模拟方式 unsigned char i; //判断命令还是数据 (DataType == OLED_COMMAND_TYPE)?(OLED_COMMAND_ENABLE)OLED_DATA_ENABLE); //片选使能 OL ...
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

19

主题

39

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
428
金钱
428
注册时间
2013-8-18
在线时间
40 小时
 楼主| 发表于 2015-11-18 17:45:08 | 显示全部楼层
解决了,这个部分的初始化是没有问题的,主要是我的刷屏函数出了问题。

这块IC取消了0xB0这部分的寄存器。所以在刷屏的时候,不需要对寄存器操作,直接将数据刷新到SPI上就行了。

还有就是这IC的一个像素点是4位的。所以会出现亮度的深浅。而且要注意点阵的刷新方式。

SPI模拟方式

unsigned char i;
//判断命令还是数据
(DataType == OLED_COMMAND_TYPE)?(OLED_COMMAND_ENABLE)OLED_DATA_ENABLE);
//片选使能
OLED_SELECT;
//数据传输
for(i=0;i<8;i++)
{  
OLED_SCLK_RESET;
if(Data&0x80)
{
OLED_SDIN_SET;
}
else 
{
OLED_SDIN_RESET;
}
OLED_SCLK_SET;
Data<<=1;   
}
//取消片选
OLED_NOT_SELECT;

OLED_DATA_ENABLE;



这是刷新屏幕代码
 unsigned char OLED_RAM[128][16];            //当时没有注意到这个像素点是4位的所以用了这个数组。所以分了将char型分了4个部分进行传输。
其实可以使用OLED_RAM[128][64];这样就不需要进行位移等操作。而且可以实现一些灰度的显示。


for(j=0;j<128;j++)
{
for(i=0;i<16;i++)  
{
for(k = 0;k<4;k++)
{
if(k == 0)
{
Transfer_Char = (OLED_RAM[j]&0xC0)>>3;
}
else if(k == 1)
{
Transfer_Char = (OLED_RAM[j]&0x30)>>1;
}
else if(k == 2)
{
Transfer_Char = (OLED_RAM[j]&0x0C)<<1;
}
else if(k == 3)
{
Transfer_Char = (OLED_RAM[j]&0x03)<<3;
}
if((Transfer_Char&0xF0) != 0x00)
{
Transfer_Char |= 0xF0;
}
if((Transfer_Char&0x0F) != 0x00)
{
Transfer_Char |= 0x0F;
}
_Write_DataCmd(Transfer_Char); 
}
}
}


回复

使用道具 举报

14

主题

1592

帖子

0

精华

资深版主

Rank: 8Rank: 8

积分
2622
金钱
2622
注册时间
2014-7-17
在线时间
350 小时
发表于 2015-11-19 00:47:32 | 显示全部楼层
有用过硬件SPI驱动吗???
回复

使用道具 举报

0

主题

1

帖子

0

精华

新手入门

积分
32
金钱
32
注册时间
2014-12-31
在线时间
3 小时
发表于 2016-2-27 20:41:06 | 显示全部楼层
可不可以分享下程序,正在写IIC控制显示,做一下参考
回复

使用道具 举报

20

主题

158

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
334
金钱
334
注册时间
2012-8-21
在线时间
27 小时
发表于 2016-5-27 09:17:59 | 显示全部楼层
能发一份驱动代码给我不,我也在用,点不亮,谢谢,也是SPI方式,
回复

使用道具 举报

0

主题

4

帖子

0

精华

新手入门

积分
17
金钱
17
注册时间
2016-3-8
在线时间
2 小时
发表于 2019-1-12 16:57:42 | 显示全部楼层
同求驱动啊,兄弟
回复

使用道具 举报

0

主题

4

帖子

0

精华

新手入门

积分
17
金钱
17
注册时间
2016-3-8
在线时间
2 小时
发表于 2019-1-12 16:59:30 | 显示全部楼层
[mw_shl_code=c,true]for(j=0;j<128;j++)
{
for(i=0;i<16;i++)  
{
for(k = 0;k<4;k++)
{
if(k == 0)
{
Transfer_Char = (OLED_RAM[j]&0xC0)>>3;
}
else if(k == 1)
{
Transfer_Char = (OLED_RAM[j]&0x30)>>1;
}
else if(k == 2)
{
Transfer_Char = (OLED_RAM[j]&0x0C)<<1;
}
else if(k == 3)
{
Transfer_Char = (OLED_RAM[j]&0x03)<<3;
}
if((Transfer_Char&0xF0) != 0x00)
{
Transfer_Char |= 0xF0;
}
if((Transfer_Char&0x0F) != 0x00)
{
Transfer_Char |= 0x0F;
}
_Write_DataCmd(Transfer_Char);
}
}
}


回复

使用道具 举报

46

主题

200

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1128
金钱
1128
注册时间
2016-3-25
在线时间
365 小时
发表于 2019-1-13 09:58:48 | 显示全部楼层
有尝提供STM32F103C8T6 硬件SPI(SPI1)驱动源码。有需要的联系。
代写STM32各类驱动,DEMO程序
回复

使用道具 举报

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

本版积分规则



关闭

原子哥极力推荐上一条 /2 下一条

正点原子公众号

QQ|手机版|OpenEdv-开源电子网 ( 粤ICP备12000418号-1 )

GMT+8, 2025-6-23 03:03

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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