OpenEdv-开源电子网

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

我的OLED怎么没点亮呀?

[复制链接]

22

主题

105

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
213
金钱
213
注册时间
2012-8-24
在线时间
0 小时
发表于 2013-9-20 11:19:31 | 显示全部楼层 |阅读模式

 在我的板子上,引脚对应关系和原子哥的有些不同。。
OLED_CS-PC9   OLED_RS-PC8   OLED_RW-PC7   OLED_RD-PC6   D7-PB7   D6-PB6   D5-PB5   D4-PB9   D3-PB8   D2-PB1  D1-PB0   D0-PC5   RST也接到了复位脚。
我就把IO口进行了更改。但是程序下进去之后,OLED压根就没点亮。做了更改的地方如下:
//初始化SSD1306        
void OLED_Init(void)
{  
 
  GPIO_InitTypeDef  GPIO_InitStructure;
  
  RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOC|RCC_APB2Periph_GPIOB, ENABLE);  //使能PC,B端口时钟
//在LY PROJECT V1.0板子上,OLED_CS-PC9,OLED_RS-PC8,OLED_RW-PC7,OLED_RD-PC6,D7-PB7,D6-PB6,D5-PB5,D4-PB9,D3-PB8,D2-PB1,D1-PB0,D0-PC5,
 GPIO_InitStructure.GPIO_Pin = GPIO_Pin_8|GPIO_Pin_9;  //PC8,PC9推挽输出(OLED_RS-PC8、OLED_CS-PC9) 
  GPIO_InitStructure.GPIO_Mode = GPIO_Mode_Out_PP;    //推挽输出
 GPIO_InitStructure.GPIO_Speed = GPIO_Speed_50MHz;//速度50MHz
  GPIO_Init(GPIOC, &GPIO_InitStructure);   //初始化GPIOC8,9
  GPIO_SetBits(GPIOC,GPIO_Pin_8|GPIO_Pin_9); //PC8,PC9 输出高

 #if OLED_MODE==1
 
  GPIO_InitStructure.GPIO_Pin =GPIO_Pin_7|GPIO_Pin_6|GPIO_Pin_5|GPIO_Pin_9|GPIO_Pin_8|GPIO_Pin_1|GPIO_Pin_0; //PB7659810(D7~D1) OUT推挽输出
  GPIO_Init(GPIOB, &GPIO_InitStructure);
  GPIO_SetBits(GPIOB,GPIO_Pin_7|GPIO_Pin_6|GPIO_Pin_5|GPIO_Pin_9|GPIO_Pin_8|GPIO_Pin_1|GPIO_Pin_0); //D7~D1输出高
  GPIO_InitStructure.GPIO_Pin =GPIO_Pin_5;//PC5即D0 OUT推挽输出
  GPIO_Init(GPIOC, &GPIO_InitStructure);
  GPIO_SetBits(GPIOC,GPIO_Pin_5);//PC5即D0输出高

  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_6|GPIO_Pin_7; //PC6,7 OUT推挽输出(OLED_RD-PC6,OLED_RW-PC7)
  GPIO_Init(GPIOC, &GPIO_InitStructure);
  GPIO_SetBits(GPIOC,GPIO_Pin_6|GPIO_Pin_7);    //PC6,7 OUT  输出高

 #else
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0;   //PB0即D1 OUT推挽输出
  GPIO_Init(GPIOB, &GPIO_InitStructure);
  GPIO_SetBits(GPIOB,GPIO_Pin_0);      //PB0即D1 OUT  输出高
  GPIO_InitStructure.GPIO_Pin = GPIO_Pin_5;//PC5即D0 OUT推挽输出
   GPIO_Init(GPIOC, &GPIO_InitStructure);
   GPIO_SetBits(GPIOC,GPIO_Pin_5);   //PC5即D0 OUT  输出高   

 #endif
其他地方基本没改。


int main(void)
{    u8 t;
 SystemInit();
 delay_init();
 NVIC_Configuration();   //设置NVIC中断分组2:2位抢占优先级,2位响应优先级
  OLED_Init();   //初始化OLED 
  OLED_ShowString(0,0, "0.96' OLED TEST"); 
   OLED_ShowString(0,16,"ATOM@ALIENTEK"); 
   OLED_ShowString(0,32,"2010/06/3"); 
   OLED_ShowString(0,48,"ASCII:"); 
   OLED_ShowString(63,48,"CODE:"); 
  OLED_Refresh_Gram(); 
      t=' '; 
      while(1)
      {  
       OLED_ShowChar(48,48,t,16,1);//显示ASCII字符   
       OLED_Refresh_Gram();
       t++;
       if(t>'~')t=' ';
       OLED_ShowNum(103,48,t,3,16);//显示ASCII字符的码值
        delay_ms(500);
        GPIO_SetBits(GPIOC,GPIO_Pin_1);//PC1=1,LED1灭
        delay_ms(500);
      }  
 }
运行的时候,进入了while循环,LED1在闪烁。但是OLED屏幕就是看不到任何东西。。。。
哪位大侠指点一下  是什么原因没点亮OLED呀

有进步就好!
正点原子逻辑分析仪DL16劲爆上市
回复

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-9-20 16:34:48 | 显示全部楼层
你的D0~D7搞的这么乱,你的数据输出函数呢?
处理好了么?
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

22

主题

105

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
213
金钱
213
注册时间
2012-8-24
在线时间
0 小时
 楼主| 发表于 2013-9-22 16:13:19 | 显示全部楼层
回复【2楼】正点原子:
你的D0~D7搞的这么乱,你的数据输出函数呢? 处理好了么?
---------------------------------
  是有点乱。当时因为PB234有特殊用途。
数据传输函数在哪?
是不是类似for(i=0;i<8;i++)之类的全要改啊?
有进步就好!
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-9-22 20:59:41 | 显示全部楼层
回复【3楼】caoyicheng626:
---------------------------------
主要是数据输出,for之类的循环,没关系啊。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

22

主题

105

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
213
金钱
213
注册时间
2012-8-24
在线时间
0 小时
 楼主| 发表于 2013-9-22 23:48:24 | 显示全部楼层
回复【4楼】正点原子:
  主要是数据输出,for之类的循环,没关系啊。
---------------------------------


哪些代码是数据输出的呀?
有进步就好!
回复 支持 反对

使用道具 举报

22

主题

105

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
213
金钱
213
注册时间
2012-8-24
在线时间
0 小时
 楼主| 发表于 2013-9-23 11:29:18 | 显示全部楼层
回复【4楼】正点原子:
主要是数据输出,for之类的循环,没关系啊。
---------------------------------
   
//PB0~7,作为数据线
#define DATAOUT(DataValue) {GPIO_Write(GPIOB,(GPIO_ReadOutputData(GPIOB)&0xff00)|(DataValue&0x00FF));}  
原子哥说的是改这里的代码吧?
有进步就好!
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-9-23 12:29:44 | 显示全部楼层
回复【6楼】caoyicheng626:
---------------------------------
是的
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

22

主题

105

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
213
金钱
213
注册时间
2012-8-24
在线时间
0 小时
 楼主| 发表于 2013-9-23 16:01:44 | 显示全部楼层
回复【7楼】正点原子:
 --------------------------------- 是的
---------------------------------

   好难改啊。对我来说好难,原子哥,能给给思路么?
有进步就好!
回复 支持 反对

使用道具 举报

530

主题

11万

帖子

34

精华

管理员

Rank: 12Rank: 12Rank: 12

积分
165540
金钱
165540
注册时间
2010-12-1
在线时间
2117 小时
发表于 2013-9-23 17:03:10 | 显示全部楼层
一个个位判断输出了。速度慢的可以的。
我是开源电子网www.openedv.com站长,有关站务问题请与我联系。
正点原子STM32开发板购买店铺http://openedv.taobao.com
正点原子官方微信公众平台,点击这里关注“正点原子”
回复 支持 反对

使用道具 举报

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

本版积分规则



关闭

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

正点原子公众号

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

GMT+8, 2025-7-12 16:41

Powered by OpenEdv-开源电子网

© 2001-2030 OpenEdv-开源电子网

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