智能车制作

标题: OLED一直不亮,求助啊!! [打印本页]

作者: "沉沉睡去.    时间: 2013-11-24 20:27
标题: OLED一直不亮,求助啊!!
单片机是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一点反应都没啊:'(
作者: "沉沉睡去.    时间: 2013-11-24 20:29
DO是命令或数据选择端,RST是复位端,求大神帮助!!
作者: 信意电子    时间: 2013-11-24 20:30
D0应该是SCLK
作者: "沉沉睡去.    时间: 2013-11-24 20:34
信意电子 发表于 2013-11-24 20:30
D0应该是SCLK

那个是DO,不是D0,意思是DATA或ORDER,
作者: 信意电子    时间: 2013-11-24 20:35
D0:CLK时钟
D1:MOSI数据
RST:复位
DC:数据/命令
CS:片选信号
作者: 夜雨寒    时间: 2013-11-24 21:34
要共地吧,分开供电可能不行,
作者: 车车爱好者    时间: 2014-2-27 10:24
信意电子 发表于 2013-11-24 20:35
D0:CLK时钟
D1:MOSI数据
RST:复位

D0连接到普通IO口可以吗?





欢迎光临 智能车制作 (http://dns.znczz.com/) Powered by Discuz! X3.2