智能车制作

 找回密码
 注册

扫一扫,访问微社区

查看: 1835|回复: 6
打印 上一主题 下一主题

OLED一直不亮,求助啊!!

[复制链接]

49

主题

272

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1387

优秀会员奖章活跃会员奖章

威望
709
贡献
354
兑换币
388
注册时间
2013-9-12
在线时间
162 小时
毕业学校
广东石油化工学院
跳转到指定楼层
1#
发表于 2013-11-24 20:27:27 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
单片机是MC9X12XS,我用的是内置SPI,OLED供电要3.2V,我就用个小电池给OLED供电,电脑电源给单片机供电,是用单片机内置SPI和OLED进行通信的,下面程序很简单,我就想随便弄亮屏幕就好了,可是一直是黑的,大神可以帮我看看程序吗
#include <hidef.h>      /* common defines and macros */
#include "derivative.h"      /* derivative-specific definitions */
#define DO PORTA_PA0
#define RST PORTA_PA1
#define bz SPI0SR_SPTEF /*发送完成标志位,=1时发送完成*/
unsigned char zhong[]= {64,48,44,235,40,40,0,248,8,8,255,8,8,248,0,0,
1,1,1,255,65,33,0,1,1,1,255,1,1,1,0,0};/*"钟",0*/
void SPI0set()
{
  SPI0CR1=0x50;
  SPI0BR=0X77;
}
void write_data(unsigned char dat)
{
    DO=1;/*输入的是数据*/  
    SPI0DR=dat;
    while(!bz); /*等待发送完成*/

}
void write_order(unsigned char dat)
{
    DO=0;/*输入的是命令*/  
    SPI0DR=dat;
    while(!bz); /*等待发送完成*/

}
void OLEDset()
{
  int i;
  RST=0;
  for(i=50;i>1;i--);
  RST=1;
  write_order(0XAE);/*关闭显示屏*/
  write_order(0X81);/*设置分辨率前要输入的命令*/
  write_order(0X7F);/*分辨率为95*/  
  write_order(0XA4);/*屏幕显示RAM里面的内容,如果0XA5则不显示里面内容*/
  write_order(0XA6);/*在RAM里面为1时该点亮,0灭,0XA7则相反*/
  write_order(0X20);/*设定寻址方式前输入的指令*/
  write_order(0X02);/*设定寻址方式为页寻址*/
  write_order(0X40);/*屏幕从RAM的第一行开始扫描*/
  write_order(0XA0);/*RAM的第一列扫描到屏幕的SEG0*/
  write_order(0XA8);/*设定有多少个MUX前的指令*/
  write_order(0X3F);/*有64个MUX*/
  write_order(0XC0);/*从com0扫描到com64*/
  write_order(0xda);
  write_order(0X01);/*不使能行的左右倒置。com口配置可以不按顺序*/
  write_order(0XAF);
}
void setxy(unsigned char x,unsigned char y)
{
  write_order(0XB0+x);/*x页*/
  write_order(((y&0xf0)>>4)|0x10);   /*y列*/
  write_order((y&0x0f)|0x01);
}
void main(void)
{
   int i;
   DDRA_DDRA0=1;
   DDRA_DDRA1=1;
   MODRR=0X10;
   SPI0set();
   OLEDset();
   while(1)
   {
      setxy(0,0);                  
      for(i=0;i<=15;i++)
      {
        write_data(zhong[i]);
      }
      setxy(1,0);
      for(i=0;i<=15;i++)
      {
        write_data(zhong[i+16]);
      }
   }
}
弄了好久,那个OLED一点反应都没啊:'(

1

主题

7

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
339
威望
182
贡献
95
兑换币
108
注册时间
2013-4-24
在线时间
31 小时
毕业学校
金华职业技术学院
推荐
发表于 2014-2-27 10:24:46 | 只看该作者
信意电子 发表于 2013-11-24 20:35
D0:CLK时钟
D1:MOSI数据
RST:复位

D0连接到普通IO口可以吗?
回复 支持 1 反对 0

使用道具 举报

49

主题

272

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1387

优秀会员奖章活跃会员奖章

威望
709
贡献
354
兑换币
388
注册时间
2013-9-12
在线时间
162 小时
毕业学校
广东石油化工学院
2#
 楼主| 发表于 2013-11-24 20:29:14 | 只看该作者
DO是命令或数据选择端,RST是复位端,求大神帮助!!
回复 支持 反对

使用道具 举报

0

主题

31

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
470
QQ
威望
248
贡献
150
兑换币
168
注册时间
2013-11-24
在线时间
36 小时
3#
发表于 2013-11-24 20:30:39 | 只看该作者
D0应该是SCLK
回复 支持 反对

使用道具 举报

49

主题

272

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
1387

优秀会员奖章活跃会员奖章

威望
709
贡献
354
兑换币
388
注册时间
2013-9-12
在线时间
162 小时
毕业学校
广东石油化工学院
4#
 楼主| 发表于 2013-11-24 20:34:45 | 只看该作者
信意电子 发表于 2013-11-24 20:30
D0应该是SCLK

那个是DO,不是D0,意思是DATA或ORDER,
回复 支持 反对

使用道具 举报

0

主题

31

帖子

0

精华

中级会员

Rank: 3Rank: 3

积分
470
QQ
威望
248
贡献
150
兑换币
168
注册时间
2013-11-24
在线时间
36 小时
5#
发表于 2013-11-24 20:35:52 | 只看该作者
D0:CLK时钟
D1:MOSI数据
RST:复位
DC:数据/命令
CS:片选信号
回复 支持 反对

使用道具 举报

6

主题

228

帖子

0

精华

金牌会员

Rank: 6Rank: 6

积分
2593
威望
1332
贡献
825
兑换币
872
注册时间
2013-3-12
在线时间
218 小时
6#
发表于 2013-11-24 21:34:37 | 只看该作者
要共地吧,分开供电可能不行,
回复 支持 反对

使用道具 举报

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

本版积分规则

关于我们|联系我们|小黑屋|智能车制作 ( 黑ICP备2022002344号

GMT+8, 2024-11-7 02:32 , Processed in 0.045164 second(s), 28 queries , Gzip On.

Powered by Discuz! X3.2

© 2001-2013 Comsenz Inc.

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