久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3982|回復: 6
收起左側

89C52單片機無法點亮oled屏

[復制鏈接]
ID:956003 發表于 2021-7-23 21:37 | 顯示全部樓層 |閱讀模式
關于oled的原理圖如上,電路已經打板焊接好了。
代碼就是用賣家提供的例程,已經附在附件中 (03)C51例程(STC89C52).rar (62.37 KB, 下載次數: 17)
1.jpg
回復

使用道具 舉報

ID:123289 發表于 2021-7-24 08:40 | 顯示全部樓層
先年芯片手冊,把原理弄懂了,問題基本上就解決了。
原理不懂,弄亮了,對你也無多大幫助。
回復

使用道具 舉報

ID:190577 發表于 2021-7-24 09:27 | 顯示全部樓層
sbit OLED_SCL=P1^2;                           //D0OLEDCLK) ,時鐘腳,由MCU控OLED
sbit OLED_SDA=P1^3;                                 //D1(MOSI) ,主輸出從輸入數據腳,OLEDCU控制
sbit OLED_RST=P3^6;                                  //RES 模塊復位管腳 OLED
sbit OLED_DC =P3^7;                                  //DC  命令數據選擇管腳
sbit OLED_CS =P2^7;
#define XLevelL                0x00
#define XLevelH                0x10
#define XLevel                ((XLevelH&0x0F)*16+XLevelL)
#define Max_Column        128
#define Max_Row                64
#define        Brightness        0xCF

#define X_WIDTH     128
#define Y_WIDTH     64
/*
4線SPI使用說明:
VBT 供內部DC-DC電壓,3.3~4.3V,如果使用5V電壓,為保險起見串一個100~500歐的電阻
VCC 供內部邏輯電壓 1.8~6V   
GND 地

BS0 低電平
BS1 低電平
BS2 低電平

CS  片選管腳
DC  命令數據選擇管腳
RES 模塊復位管腳
D0(SCLK) ,時鐘腳,由MCU控制
D1(MOSI) ,主輸出從輸入數據腳,由MCU控制

D2 懸空      
D3-D7 , 低電平 , 也可懸空,但最好設為低電平
RD  低電平 ,也可懸空,但最好設為低電平
RW  低電平 ,也可懸空,但最好設為低電平
RD  低電平 ,也可懸空,但最好設為低電平   
*/
//======================================
//****************************函數說明*******************************************
//            
//函數功能:        128X64I液晶底層驅動[6X8]字體庫

//參數說明:[6X8]西文字符的字模數據 (縱向取模,字節倒序)

//作    者:晨啟&★☆⑦☆★待☆★
//*******************************************************************************
const unsigned char code F6x8[][6] =
{
    { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00 },   // sp
    { 0x00, 0x00, 0x00, 0x2f, 0x00, 0x00 },   // !
    { 0x00, 0x00, 0x07, 0x00, 0x07, 0x00 },   // "
    { 0x00, 0x14, 0x7f, 0x14, 0x7f, 0x14 },   // #
    { 0x00, 0x24, 0x2a, 0x7f, 0x2a, 0x12 },   // $
    { 0x00, 0x62, 0x64, 0x08, 0x13, 0x23 },   // %
    { 0x00, 0x36, 0x49, 0x55, 0x22, 0x50 },   // &
    { 0x00, 0x00, 0x05, 0x03, 0x00, 0x00 },   // '
    { 0x00, 0x00, 0x1c, 0x22, 0x41, 0x00 },   // (
    { 0x00, 0x00, 0x41, 0x22, 0x1c, 0x00 },   // )
    { 0x00, 0x14, 0x08, 0x3E, 0x08, 0x14 },   // *
    { 0x00, 0x08, 0x08, 0x3E, 0x08, 0x08 },   // +
    { 0x00, 0x00, 0x00, 0xA0, 0x60, 0x00 },   // ,
    { 0x00, 0x08, 0x08, 0x08, 0x08, 0x08 },   // -
    { 0x00, 0x00, 0x60, 0x60, 0x00, 0x00 },   // .
    { 0x00, 0x20, 0x10, 0x08, 0x04, 0x02 },   // /
    { 0x00, 0x3E, 0x51, 0x49, 0x45, 0x3E },   // 0
    { 0x00, 0x00, 0x42, 0x7F, 0x40, 0x00 },   // 1
    { 0x00, 0x42, 0x61, 0x51, 0x49, 0x46 },   // 2
    { 0x00, 0x21, 0x41, 0x45, 0x4B, 0x31 },   // 3
    { 0x00, 0x18, 0x14, 0x12, 0x7F, 0x10 },   // 4
    { 0x00, 0x27, 0x45, 0x45, 0x45, 0x39 },   // 5
    { 0x00, 0x3C, 0x4A, 0x49, 0x49, 0x30 },   // 6
    { 0x00, 0x01, 0x71, 0x09, 0x05, 0x03 },   // 7
    { 0x00, 0x36, 0x49, 0x49, 0x49, 0x36 },   // 8
    { 0x00, 0x06, 0x49, 0x49, 0x29, 0x1E },   // 9
    { 0x00, 0x00, 0x36, 0x36, 0x00, 0x00 },   // :
    { 0x00, 0x00, 0x56, 0x36, 0x00, 0x00 },   // ;
    { 0x00, 0x08, 0x14, 0x22, 0x41, 0x00 },   // <
    { 0x00, 0x14, 0x14, 0x14, 0x14, 0x14 },   // =
    { 0x00, 0x00, 0x41, 0x22, 0x14, 0x08 },   // >
    { 0x00, 0x02, 0x01, 0x51, 0x09, 0x06 },   // ?
    { 0x00, 0x32, 0x49, 0x59, 0x51, 0x3E },   // @
    { 0x00, 0x7C, 0x12, 0x11, 0x12, 0x7C },   // A
    { 0x00, 0x7F, 0x49, 0x49, 0x49, 0x36 },   // B
    { 0x00, 0x3E, 0x41, 0x41, 0x41, 0x22 },   // C
    { 0x00, 0x7F, 0x41, 0x41, 0x22, 0x1C },   // D
    { 0x00, 0x7F, 0x49, 0x49, 0x49, 0x41 },   // E
    { 0x00, 0x7F, 0x09, 0x09, 0x09, 0x01 },   // F
    { 0x00, 0x3E, 0x41, 0x49, 0x49, 0x7A },   // G
    { 0x00, 0x7F, 0x08, 0x08, 0x08, 0x7F },   // H
    { 0x00, 0x00, 0x41, 0x7F, 0x41, 0x00 },   // I
    { 0x00, 0x20, 0x40, 0x41, 0x3F, 0x01 },   // J
    { 0x00, 0x7F, 0x08, 0x14, 0x22, 0x41 },   // K
    { 0x00, 0x7F, 0x40, 0x40, 0x40, 0x40 },   // L
    { 0x00, 0x7F, 0x02, 0x0C, 0x02, 0x7F },   // M
    { 0x00, 0x7F, 0x04, 0x08, 0x10, 0x7F },   // N
    { 0x00, 0x3E, 0x41, 0x41, 0x41, 0x3E },   // O
    { 0x00, 0x7F, 0x09, 0x09, 0x09, 0x06 },   // P
    { 0x00, 0x3E, 0x41, 0x51, 0x21, 0x5E },   // Q
    { 0x00, 0x7F, 0x09, 0x19, 0x29, 0x46 },   // R
    { 0x00, 0x46, 0x49, 0x49, 0x49, 0x31 },   // S
    { 0x00, 0x01, 0x01, 0x7F, 0x01, 0x01 },   // T
    { 0x00, 0x3F, 0x40, 0x40, 0x40, 0x3F },   // U
    { 0x00, 0x1F, 0x20, 0x40, 0x20, 0x1F },   // V
    { 0x00, 0x3F, 0x40, 0x38, 0x40, 0x3F },   // W
    { 0x00, 0x63, 0x14, 0x08, 0x14, 0x63 },   // X
    { 0x00, 0x07, 0x08, 0x70, 0x08, 0x07 },   // Y
    { 0x00, 0x61, 0x51, 0x49, 0x45, 0x43 },   // Z
    { 0x00, 0x00, 0x7F, 0x41, 0x41, 0x00 },   // [
    { 0x00, 0x55, 0x2A, 0x55, 0x2A, 0x55 },   // 55
    { 0x00, 0x00, 0x41, 0x41, 0x7F, 0x00 },   // ]
    { 0x00, 0x04, 0x02, 0x01, 0x02, 0x04 },   // ^
    { 0x00, 0x40, 0x40, 0x40, 0x40, 0x40 },   // _
    { 0x00, 0x00, 0x01, 0x02, 0x04, 0x00 },   // '
    { 0x00, 0x20, 0x54, 0x54, 0x54, 0x78 },   // a
    { 0x00, 0x7F, 0x48, 0x44, 0x44, 0x38 },   // b
    { 0x00, 0x38, 0x44, 0x44, 0x44, 0x20 },   // c
    { 0x00, 0x38, 0x44, 0x44, 0x48, 0x7F },   // d
    { 0x00, 0x38, 0x54, 0x54, 0x54, 0x18 },   // e
    { 0x00, 0x08, 0x7E, 0x09, 0x01, 0x02 },   // f
    { 0x00, 0x18, 0xA4, 0xA4, 0xA4, 0x7C },   // g
    { 0x00, 0x7F, 0x08, 0x04, 0x04, 0x78 },   // h
    { 0x00, 0x00, 0x44, 0x7D, 0x40, 0x00 },   // i
    { 0x00, 0x40, 0x80, 0x84, 0x7D, 0x00 },   // j
    { 0x00, 0x7F, 0x10, 0x28, 0x44, 0x00 },   // k
    { 0x00, 0x00, 0x41, 0x7F, 0x40, 0x00 },   // l
    { 0x00, 0x7C, 0x04, 0x18, 0x04, 0x78 },   // m
    { 0x00, 0x7C, 0x08, 0x04, 0x04, 0x78 },   // n
    { 0x00, 0x38, 0x44, 0x44, 0x44, 0x38 },   // o
    { 0x00, 0xFC, 0x24, 0x24, 0x24, 0x18 },   // p
    { 0x00, 0x18, 0x24, 0x24, 0x18, 0xFC },   // q
    { 0x00, 0x7C, 0x08, 0x04, 0x04, 0x08 },   // r
    { 0x00, 0x48, 0x54, 0x54, 0x54, 0x20 },   // s
    { 0x00, 0x04, 0x3F, 0x44, 0x40, 0x20 },   // t
    { 0x00, 0x3C, 0x40, 0x40, 0x20, 0x7C },   // u
    { 0x00, 0x1C, 0x20, 0x40, 0x20, 0x1C },   // v
    { 0x00, 0x3C, 0x40, 0x30, 0x40, 0x3C },   // w
    { 0x00, 0x44, 0x28, 0x10, 0x28, 0x44 },   // x
    { 0x00, 0x1C, 0xA0, 0xA0, 0xA0, 0x7C },   // y
    { 0x00, 0x44, 0x64, 0x54, 0x4C, 0x44 },   // z
    { 0x14, 0x14, 0x14, 0x14, 0x14, 0x14 }    // horiz lines
};





//****************************函數說明*******************************************
//            
//函數功能:        128X64I液晶底層驅動[14X16]字體庫

//參數說明:[14X16]中文字符的字模數據 取模方式:陰碼-列行式-逆向-C51

//作    者:晨啟&★☆⑦☆★待☆★
//*******************************************************************************
const unsigned char  F7x8[] = {  
       
0xC0,0x38,0x08,0x38,0xC0,0x07,0x18,0x20,0x18,0x07,/*"0",0*/
0x00,0x00,0xF8,0x00,0x00,0x00,0x20,0x3F,0x20,0x00,/*"1",0*/
0x00,0x38,0x08,0xF8,0x00,0x00,0x3C,0x22,0x31,0x00,/*"2",0*/
0x00,0x18,0x08,0xF8,0x00,0x00,0x30,0x20,0x1F,0x00,/*"3",0*/
0x00,0xC0,0x20,0xF8,0x00,0x06,0x05,0x24,0x3F,0x24,/*"4",0*/
0x00,0xF8,0x88,0x88,0x00,0x00,0x30,0x20,0x1F,0x00,/*"5",0*/
0xC0,0x30,0x88,0x98,0x00,0x07,0x19,0x20,0x31,0x0E,/*"6",0*/
0x00,0x18,0x88,0x78,0x00,0x00,0x00,0x3F,0x00,0x00,/*"7",0*/
0x30,0xC8,0x08,0xF8,0x00,0x1E,0x21,0x21,0x1F,0x00,/*"8",0*/
0xE0,0x18,0x08,0xF8,0x00,0x00,0x33,0x22,0x1F,0x00,/*"9",0*/

};


//****************************函數說明*******************************************
            
//函數功能:        OLED數據寫入函數

//參數說明:

//作    者:晨啟&★☆⑦☆★待☆★

//********************************************************OLED********************

void OLED_WrDat(unsigned char dat)
{
  unsigned char i=8;
  OLED_CS=0;;
  OLED_DC=1;;
  OLED_SCL=0;;   
  while(i--)
  {
    if(dat&0x80)
        {
        OLED_SDA=1;
        }
    else
        {
        OLED_SDA=0;
        }
    OLED_SCL=1;
    ;;;
                //;;            
    OLED_SCL=0;;   
    dat<<=1;   
  }
    OLED_CS=1;
}

//****************************函數說明*******************************************
            
//函數功能:        OLED命令寫入函數

//參數說明:

//作    者:晨啟&★☆⑦☆★待☆★

//********************************************************OLED********************

void OLED_WrCmd(unsigned char cmd)
{
  unsigned char i=8;
  OLED_CS=0;;
  OLED_DC=0;;
  OLED_SCL=0;;   
  while(i--)
  {
    if(cmd&0x80)
        {
        OLED_SDA=1;
        }
    else
        {
        OLED_SDA=0;;
        }
    OLED_SCL=1;;           
    OLED_SCL=0;;   
    cmd<<=1;;   
  }        
        OLED_CS=1;
}

//****************************函數說明*******************************************
            
//函數功能:        坐標設置

//參數說明:

//作    者:晨啟&★☆⑦☆★待☆★

//********************************************************OLED********************
void OLED_Set_Pos(unsigned char x, unsigned char y)
{
  OLED_WrCmd(0xb0+y);
  OLED_WrCmd(((x&0xf0)>>4)|0x10);         //
  OLED_WrCmd((x&0x0f)|0x00);                  //
}

//****************************函數說明*******************************************
            
//函數功能:        全屏

//參數說明:

//作    者:晨啟&★☆⑦☆★待☆★

//**********************************************************OLED******************
void OLED_Fill(unsigned char bmp_dat)
{
        unsigned char y,x;
       
        for(y=0;y<8;y++)
        {
                OLED_WrCmd(0xb0+y);
                OLED_WrCmd(0x01);
                OLED_WrCmd(0x10);
                for(x=0;x<X_WIDTH;x++)
                OLED_WrDat(bmp_dat);
        }
}

//****************************函數說明*******************************************
            
//函數功能:        OLED復位函數

//參數說明:

//作    者:晨啟&★☆⑦☆★待☆★

//********************************************************OLED********************
void OLED_CLS(void)
{
        unsigned char y,x;       
        for(y=0;y<8;y++)
        {
                OLED_WrCmd(0xb0+y);
                OLED_WrCmd(0x01);
                OLED_WrCmd(0x10);
                for(x=0;x<X_WIDTH;x++)
                        OLED_WrDat(0);
        }
}
//****************************函數說明*******************************************
            
//函數功能:        OLED延時函數

//參數說明:



//********************************************************OLED********************
void OLED_DLY_ms(unsigned int ms)
{                        
  unsigned int a;
  while(ms)
  {
    a=1335;
    while(a--);
    ms--;
  }
  return;
}

//****************************函數說明*******************************************
            
//函數功能:        OLED初始化函數

//參數說明:

//作    者:晨啟&★☆⑦☆★待☆★

//*******************************************************OLED*********************
void OLED_Init(void)        
{  
        OLED_SCL=1;
        OLED_CS=1;        //預制SLK和SS為高電?        
        OLED_RST=0;
        OLED_DLY_ms(50);
        OLED_RST=1;
       
        //從上電到下面開始初始化要有足夠的時間,糘LED待RC復位完畢   

  OLED_WrCmd(0xae);//---            關閉OLED屏幕OLED
  OLED_WrCmd(0x00);//---     設置低位地OLED
  OLED_WrCmd(0x10);//---     設置高位地OLED
  OLED_WrCmd(0x40);//---     設置起始行地址和映射RAM顯示起始行?x00~0x3F)
  OLED_WrCmd(0x81);//--      設置對比度控制糘LED器
  OLED_WrCmd(0xcf); //       設置SEG輸出電流罯LED
  OLED_WrCmd(0xa1);//--      設置SEG/列映射       0xa0左右反置 0OLED正常
  OLED_WrCmd(0xc8);//        設置COM/行掃描方向   0xc0上下反置OLEDc8正常
  OLED_WrCmd(0xa6);//--      設置正常顯?
  OLED_WrCmd(0xa8);//--      設置多路復用比率(1OLED)
  OLED_WrCmd(0x3f);//--      1/64 duty
  OLED_WrCmd(0xd3);//-       設置顯示偏移移位映射RAM計數器(0OLED~0x3F)
  OLED_WrCmd(0x00);//-       不偏移OLED
  OLED_WrCmd(0xd5);//--      設置顯示時鐘分頻比/OLED雌髕德蔕LED
  OLED_WrCmd(0x80);//--      設置分頻比,將時鐘設置OLED00幀/秒
  OLED_WrCmd(0xd9);//--      設置預充電諳LED
  OLED_WrCmd(0xf1);//        將預充電設置為15個時鐘,放OLED柚夢?個時OLED
  OLED_WrCmd(0xda);//--      set com pins hardware configuration
  OLED_WrCmd(0x12);
  OLED_WrCmd(0xdb);//--      set vcomh
  OLED_WrCmd(0x40);//        Set VCOM Deselect Level
  OLED_WrCmd(0x20);//-       Set Page Addressing Mode (0x00/0x01/0x02)        設置頁面地址腛LED
  OLED_WrCmd(0x02);//
  OLED_WrCmd(0x8d);//--      set Charge Pump enable/disable
  OLED_WrCmd(0x14);//--      set(0x10) disable
  OLED_WrCmd(0xa4);//        Disable Entire Display On (0xa4/0xa5)
  OLED_WrCmd(0xa6);//        Disable Inverse Display On (0xa6/a7)
  OLED_WrCmd(0xaf);//--      turn on oled panel                打開OLED屏幕OLED
  OLED_Fill(0x00);  //       初始清屏OLED
  OLED_Set_Pos(0,0);        
}

//****************************函數說明*******************************************
            
//函數功能:        寫入一組標準ASCII字符串          6*8

//參數說明:顯示的位置(x,y),y為頁范圍0~7,要顯示的字符串

//作    者:晨啟&★☆⑦☆★待☆★

//******************************OLED**********************************************
void OLED_P6x8Str(unsigned char x,unsigned char y,unsigned char ch[])
{
  unsigned char c=0,i=0,j=0;      
  while (ch[j]!='\0')
  {   
    c =ch[j]-32;
    if(x>126){x=0;y++;}
    OLED_Set_Pos(x,y);   
          for(i=0;i<6;i++)     
            OLED_WrDat(F6x8[c][i]);  
          x+=6;
          j++;
  }
}

//****************************函數說明*******************************************
            
//函數功能:        輸出漢字字符串

//參數說明:顯示的位置(x,y),y為頁范圍0~7,顯示的漢字位置

//作    者:晨啟&★☆⑦☆★待☆★

//********************************OLED********************************************
void OLED_P7x8Ch(unsigned char x,unsigned char y,unsigned char N)
{
        unsigned char wm=0,ii = 0;
        unsigned int adder=10*N;           
          OLED_Set_Pos(x , y);
          for(wm = 0;wm < 5;wm++)               
          {
                  OLED_WrDat(F7x8[adder]);       
                  adder += 1;
          }                                                                               //第一頁顯示
          OLED_Set_Pos(x,y + 1);
          for(wm = 0;wm < 5;wm++)         
          {
                  OLED_WrDat(F7x8[adder]);
                  adder += 1;
          }                                                                                       //第二頁顯示
}
void delay(int ms)
{
   int ii,jj;
   if (ms<1) ms=1;
   for(ii=0;ii<ms;ii++)
     for(jj=0;jj<500;jj++);  
      
}
unsigned char code hao[10]={0,1,2,3,4,5,6,7,8,9};

void dig_scan(unsigned char x,unsigned char y,unsigned int dat )
{
        unsigned char i=0;
        switch(i)
        {
                case 0:
                {
                        OLED_P7x8Ch(x,y,hao[dat]);
                        break;
                }
                case 1:
                {
                        OLED_P7x8Ch(x,y,hao[dat]);
                        break;
                }
        }
        delay(5);
        ++i;
        if(i>1)
                i=0;

}


//****************************函數說明*******************************************
//            
//函數功能:        BMP圖片顯示函數

//參數說明:x0 ,y0:初始坐標(默認0,0);x1:水平128個點(默認),y1:8頁(默認寫8);BMP:圖片序號;

//作    者:晨啟&★☆⑦☆★待☆★
//*******************************************************************************
/*void Draw_BMP(unsigned char x0, y0,x1, y1,unsigned char BMP[])
{        
unsigned int j=0;
unsigned char x,y;
  
  //if(y1%8==0) y=y1/8;      
  //else y=y1/8+1;
        for(y=y0;y<y1;y++)
        {
                OLED_Set_Pos(x0,y);
    for(x=x0;x<x1;x++)
            {      
                    OLED_WrDat(BMP[j++]);                   
            }
        }
}*/
void main(void)
{  

  OLED_Init();

     while(1)
    {
         OLED_P6x8Str(2,2,"count down:");
        }
       
}
}
我之前程序也不行,用這個就可以了
回復

使用道具 舉報

ID:517951 發表于 2021-7-31 17:05 | 顯示全部樓層
用邏輯分析儀或者示波器抓一下串行輸出的波形,以及發出的initial code 是否正確, 點不了要么是串口時序不對,要么是初始化代碼不對。
回復

使用道具 舉報

ID:507641 發表于 2021-8-1 21:53 | 顯示全部樓層
背光有電了沒?晶振對不對
回復

使用道具 舉報

ID:584195 發表于 2021-8-4 23:14 | 顯示全部樓層
建議你買個幾十塊的邏輯分析儀,看看是不是有時鐘出來了。時序對不對。
回復

使用道具 舉報

ID:637144 發表于 2021-8-5 12:17 | 顯示全部樓層
看各個角的電平
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 一区二区三区在线观看视频 | 精品在线一区 | 欧美日韩国产在线 | 国产精品久久久精品 | 亚洲激情综合 | 国产一区二区精品在线 | 亚洲精品一区二区另类图片 | 欧美日韩精品久久久免费观看 | 久久一区二区三区免费 | 免费黄篇| 成人午夜视频在线观看 | 亚洲国产欧美日韩 | 国产xxxx岁13xxxxhd| 亚洲国产一区二区三区在线观看 | 日日摸日日碰夜夜爽亚洲精品蜜乳 | 国产999精品久久久 精品三级在线观看 | 欧美日韩精品一区 | 一本色道久久综合亚洲精品高清 | 国产精品视频久久 | 一级毛片在线播放 | 在线视频 亚洲 | а天堂中文最新一区二区三区 | 欧美999 | 久久久精选 | 在线一区视频 | www国产成人免费观看视频,深夜成人网 | 国产传媒在线播放 | 中文字幕免费 | 成人三级网址 | 9久久| 亚洲精品国产综合区久久久久久久 | 免费国产视频 | 午夜资源| 天天插天天射天天干 | 九七午夜剧场福利写真 | 亚洲视频免费在线看 | 国产成人黄色 | 中文字幕亚洲一区二区三区 | 影音先锋中文字幕在线观看 | 亚洲精品久久久一区二区三区 | 国产不卡一区在线观看 |