OpenEdv-开源电子网

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

[开发板通用] ATK-0.96'OLED显示实验测试程序(GPIO模拟SPI驱动)

[复制链接]

109

主题

5562

帖子

0

精华

资深版主

Rank: 8Rank: 8

积分
10541
金钱
10541
注册时间
2017-2-18
在线时间
1908 小时
发表于 2018-10-3 18:14:24 | 显示全部楼层 |阅读模式
本帖最后由 peng1554 于 2018-10-3 18:16 编辑

遇到网友问ATK-0.96'OLED模块怎么使用SPI方式驱动。开发板的例程支持了GPIO模拟SPI驱动ATK-0.96'OLED需要注意的是:
1.附件中MINIV3、战舰V3&精英、探索者F407测试程序基于标准库,阿波罗开发板测试程序是基于HAL库,号令者RT1052测试程序也是基于官方的库
2.OLED模块背面的BS1、BS2需要都接GND(见图2)
3.OLED模块接板子的接法请参考各开发板的OLED章节
4.提供的测试程序都是在OLED显示例程中将oled.h中的OLED_MODE这个宏修改为0

以战舰V3&精英开发板为例:
打开开发板OLED显示实验例程,找到oled.h中的OLED_MODE,并将该宏设置为0,设置为零后就只有OLED模块的RS、CS、D0、D1、RST起作用,对应32芯片的连接示意图如下:
RS------------------------------PD3
CS------------------------------PD6
D0------------------------------PC0
D1------------------------------PC1
RST-----------------------------PG15

[mw_shl_code=c,true]//OLED模式设置
//0: 4线串行模式  (模块的BS1,BS2均接GND)
//1: 并行8080模式 (模块的BS1,BS2均接VCC)
#define OLED_MODE         0 [/mw_shl_code]
设置该宏后,SSD1633_Init()函数依据该宏执行不同的初始化,OLED_WR_Byte()函数跟原例程不一样
[mw_shl_code=c,true]//初始化SSD1306                                            
void OLED_Init(void)
{         

         GPIO_InitTypeDef  GPIO_InitStructure;
         
         RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC|RCC_APB2Periph_GPIOD|RCC_APB2Periph_GPIOG, ENABLE);         //使能PC,D,G端口时钟

        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_3|GPIO_Pin_6;         //PD3,PD6推挽输出  
         GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;                  //推挽输出
        GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;//速度50MHz
         GPIO_Init(GPIOD, &GPIO_InitStructure);          //初始化GPIOD3,6
         GPIO_SetBits(GPIOD,GPIO_Pin_3|GPIO_Pin_6);        //PD3,PD6 输出高

#if OLED_MODE==1

         GPIO_InitStructure.GPIO_Pin =0xFF; //PC0~7 OUT推挽输出
         GPIO_Init(GPIOC, &GPIO_InitStructure);
         GPIO_SetBits(GPIOC,0xFF); //PC0~7输出高

         GPIO_InitStructure.GPIO_Pin = GPIO_Pin_13|GPIO_Pin_14|GPIO_Pin_15;                                 //PG13,14,15 OUT推挽输出
         GPIO_Init(GPIOG, &GPIO_InitStructure);
         GPIO_SetBits(GPIOG,GPIO_Pin_13|GPIO_Pin_14|GPIO_Pin_15);                                                 //PG13,14,15 OUT  输出高

#else
         GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0|GPIO_Pin_1;                                 //PC0,1 OUT推挽输出
         GPIO_Init(GPIOC, &GPIO_InitStructure);
         GPIO_SetBits(GPIOC,GPIO_Pin_0|GPIO_Pin_1);                                                 //PC0,1 OUT  输出高

        GPIO_InitStructure.GPIO_Pin = GPIO_Pin_15;                                 //PG15 OUT推挽输出          RST
         GPIO_Init(GPIOG, &GPIO_InitStructure);
         GPIO_SetBits(GPIOG,GPIO_Pin_15);                                                 //PG15 OUT  输出高


#endif
                                                            
此处省略......
} [/mw_shl_code]
[mw_shl_code=c,true]#if OLED_MODE==1        //8080并口
//向SSD1306写入一个字节。
//dat:要写入的数据/命令
//cmd:数据/命令标志 0,表示命令;1,表示数据;
void OLED_WR_Byte(u8 dat,u8 cmd)
{
        DATAOUT(dat);            
         OLED_RS=cmd;
        OLED_CS=0;           
        OLED_WR=0;         
        OLED_WR=1;
        OLED_CS=1;         
        OLED_RS=1;         
}                        
#else
//向SSD1306写入一个字节。
//dat:要写入的数据/命令
//cmd:数据/命令标志 0,表示命令;1,表示数据;
void OLED_WR_Byte(u8 dat,u8 cmd)
{        
        u8 i;                          
        OLED_RS=cmd; //写命令
        OLED_CS=0;                  
        for(i=0;i<8;i++)
        {                          
                OLED_SCLK=0;
                if(dat&0x80)OLED_SDIN=1;
                else OLED_SDIN=0;
                OLED_SCLK=1;
                dat<<=1;   
        }                                 
        OLED_CS=1;                  
        OLED_RS=1;            
}
#endif[/mw_shl_code]
测试程序效果如图1
图1
3.JPG
图2
4.JPG





MINIV3_OLED显示实验测试程序(GPIO模拟SPI驱动).rar

2.04 MB, 下载次数: 210

战舰V3&amp;精英_OLED显示实验测试程序(GPIO模拟SPI驱动).rar

2.17 MB, 下载次数: 1684

探索者F407_OLED显示实验测试程序(GPIO模拟SPI驱动).rar

2.83 MB, 下载次数: 439

阿波罗F429_OLED显示实验测试程序(GPIO模拟SPI驱动).rar

7.76 MB, 下载次数: 320

阿波罗F767_OLED显示实验测试程序(GPIO模拟SPI驱动).rar

9.15 MB, 下载次数: 86

阿波罗H743_OLED显示实验测试程序(GPIO模拟SPI驱动).rar

9.54 MB, 下载次数: 57

号令者RT1052_OLED显示实验测试程序(GPIO模拟SPI驱动).rar

10.92 MB, 下载次数: 89

正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

17

主题

465

帖子

1

精华

金牌会员

Rank: 6Rank: 6

积分
2142
金钱
2142
注册时间
2013-1-11
在线时间
504 小时
发表于 2018-10-22 15:20:00 | 显示全部楼层
谢谢分享!!!!!!!!!
知识是你最好的财富
回复 支持 反对

使用道具 举报

7

主题

105

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1026
金钱
1026
注册时间
2016-1-28
在线时间
134 小时
发表于 2018-11-1 16:39:52 | 显示全部楼层
带字库的?
回复 支持 反对

使用道具 举报

109

主题

5562

帖子

0

精华

资深版主

Rank: 8Rank: 8

积分
10541
金钱
10541
注册时间
2017-2-18
在线时间
1908 小时
 楼主| 发表于 2018-11-21 18:43:47 | 显示全部楼层

不带~~~
回复 支持 反对

使用道具 举报

2

主题

7

帖子

0

精华

初级会员

Rank: 2

积分
71
金钱
71
注册时间
2018-11-30
在线时间
16 小时
发表于 2018-12-25 21:07:12 | 显示全部楼层
我用的是精英板的,引脚也接对了,可是怎么模块不会亮
回复 支持 反对

使用道具 举报

109

主题

5562

帖子

0

精华

资深版主

Rank: 8Rank: 8

积分
10541
金钱
10541
注册时间
2017-2-18
在线时间
1908 小时
 楼主| 发表于 2018-12-26 18:25:41 | 显示全部楼层
2143625175 发表于 2018-12-25 21:07
我用的是精英板的,引脚也接对了,可是怎么模块不会亮

看你BS0  BS1设置没有,具体设置见图2
回复 支持 反对

使用道具 举报

3

主题

18

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
236
金钱
236
注册时间
2018-1-22
在线时间
98 小时
发表于 2019-4-1 13:19:22 | 显示全部楼层
谢谢分享
回复 支持 反对

使用道具 举报

0

主题

295

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
335
金钱
335
注册时间
2019-3-26
在线时间
9 小时
发表于 2019-4-3 08:56:49 | 显示全部楼层
谢谢老司机分享!
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2024-11-24 22:33

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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