找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 3891|回復(fù): 2
打印 上一主題 下一主題
收起左側(cè)

在用stm8s以13線方式驅(qū)動OLED屏?xí)r,遇到些問題,求大神指點(diǎn)

[復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
#
ID:81678 發(fā)表于 2015-6-20 05:49 | 只看該作者 回帖獎勵 |正序?yàn)g覽 |閱讀模式
15黑幣
我就貼上幾個初始化的函數(shù)把

#define OLED_CS_PORT              GPIOC
#define OLED_CS_PIN               GPIO_PIN_2

#define Set_OLED_CS  GPIO_WriteHigh(OLED_CS_PORT,OLED_CS_PIN)
#define Clr_OLED_CS  GPIO_WriteLow(OLED_CS_PORT,OLED_CS_PIN)

#define OLED_RS_PORT              GPIOC
#define OLED_RS_PIN               GPIO_PIN_3

#define Set_OLED_RS  GPIO_WriteHigh(OLED_RS_PORT,OLED_RS_PIN)
#define Clr_OLED_RS  GPIO_WriteLow(OLED_RS_PORT,OLED_RS_PIN)

#define OLED_WR_PORT              GPIOC
#define OLED_WR_PIN               GPIO_PIN_7

#define Set_OLED_WR  GPIO_WriteHigh(OLED_WR_PORT,OLED_WR_PIN)
#define Clr_OLED_WR  GPIO_WriteLow(OLED_WR_PORT,OLED_WR_PIN)

#define OLED_RD_PORT              GPIOC
#define OLED_RD_PIN               GPIO_PIN_5

#define Set_OLED_RD  GPIO_WriteHigh(OLED_RD_PORT,OLED_RD_PIN)
#define Clr_OLED_RD  GPIO_WriteLow(OLED_RD_PORT,OLED_RD_PIN)

#define OLED_REST_PORT   GPIOC
#define OLED_REST_PIN  GPIO_PIN_6

#define Set_OLED_REST  GPIO_WriteHigh(OLED_REST_PORT,OLED_REST_PIN)
#define Clr_OLED_REST  GPIO_WriteLow(OLED_REST_PORT,OLED_REST_PIN)

#define OLED_GPIO_DATA_PORT        GPIOB
#define DATAOUT(DataValue) GPIO_Write(OLED_GPIO_DATA_PORT,DataValue);

#define OLED_CMD 0 //寫命令
#define OLED_DATA 1 // 寫數(shù)據(jù)


void main()
{
  CLK_HSIPrescalerConfig(CLK_PRESCALER_HSIDIV1);
  OLED_IOInit();
  OLED_init();
  OLED_ShowString(0,0, "0.96' OLED TEST");  
  OLED_Refresh_Gram();
  while(1);
}

IO初始化
void OLED_IOInit()
{
  GPIO_DeInit(GPIOB);
  GPIO_Init(GPIOB, GPIO_PIN_ALL, GPIO_MODE_OUT_PP_HIGH_FAST);
  
  GPIO_DeInit(GPIOC);
  GPIO_Init(GPIOC, GPIO_PIN_ALL, GPIO_MODE_OUT_PP_HIGH_FAST);
}
OLED寫命令\數(shù)據(jù)
void OLED_WR_Byte(u8 dat,u8 cmd)
{
  DATAOUT(dat);          
  if(cmd==1) {Set_OLED_RS;}
  else {Clr_OLED_RS;}
  Clr_OLED_CS;          
  Clr_OLED_WR;         
  Set_OLED_WR;
  Set_OLED_CS;         
  Set_OLED_RS;         
}
OLED初始化
void OLED_init()
{
        Clr_OLED_REST;
        delay1(50);
        Set_OLED_REST;
  OLED_WR_Byte(0xAE,OLED_CMD); //關(guān)閉顯示
OLED_WR_Byte(0xD5,OLED_CMD); //設(shè)置時鐘分頻因子,震蕩頻率
OLED_WR_Byte(80,OLED_CMD);   //【3:0】分頻因子【7:4】震蕩頻率
OLED_WR_Byte(0xA8,OLED_CMD); //設(shè)置驅(qū)動路數(shù)
OLED_WR_Byte(0X3F,OLED_CMD); //默認(rèn)0X3F(1/64)
OLED_WR_Byte(0xD3,OLED_CMD); //設(shè)置顯示偏移
OLED_WR_Byte(0X00,OLED_CMD); //默認(rèn)為0

OLED_WR_Byte(0x40,OLED_CMD); //設(shè)置顯示開始行[5:0],行數(shù)
   
OLED_WR_Byte(0x8D,OLED_CMD); //電荷泵設(shè)置
OLED_WR_Byte(0x14,OLED_CMD); //bit2,開啟/關(guān)閉
OLED_WR_Byte(0x20,OLED_CMD); //設(shè)置內(nèi)存地址模式
OLED_WR_Byte(0x02,OLED_CMD); //[1:0],00列地址模式;01行地址模式;10,頁地址模式;默認(rèn)0;
OLED_WR_Byte(0xA1,OLED_CMD); //段重定義設(shè)置,bit0:0,0->0;1,0->127;
OLED_WR_Byte(0xC0,OLED_CMD); //設(shè)置COM掃描方向;bit3:0,?普通模式;1,?重定義模式 COM[N-1]->COM0;N:驅(qū)動路數(shù)
OLED_WR_Byte(0xDA,OLED_CMD); //設(shè)置COM硬件引腳配置
OLED_WR_Byte(0x12,OLED_CMD); //[5:4]配置

OLED_WR_Byte(0x81,OLED_CMD); //對比度設(shè)置
OLED_WR_Byte(0xEF,OLED_CMD); //1~255;默認(rèn)0X7F (亮度設(shè)置,越大越亮)
OLED_WR_Byte(0xD9,OLED_CMD); //設(shè)置預(yù)充電周期
OLED_WR_Byte(0xf1,OLED_CMD); //[3:0],PHASE 1;[7:4],PHASE 2;
OLED_WR_Byte(0xDB,OLED_CMD); //設(shè)置VCOMH 電壓倍率
OLED_WR_Byte(0x30,OLED_CMD); //[6:4] 000,0.65*vcc;001,0.77*vcc;011,0.83*vcc;

OLED_WR_Byte(0xA4,OLED_CMD); //全局開啟顯示;bit0:1,卡其;0,1關(guān)閉
OLED_WR_Byte(0xA6,OLED_CMD); //設(shè)置顯示方式0:1,反向顯示;0,正常顯示              
OLED_WR_Byte(0xAF,OLED_CMD); //開啟顯示         
OLED_Clear();
}

個人分析是端口初始化或?qū)懨頫數(shù)據(jù)的函數(shù)不對,可不知道怎么改


oled.rar

756.96 KB, 下載次數(shù): 7

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復(fù)

使用道具 舉報

沙發(fā)
ID:87412 發(fā)表于 2015-8-15 16:48 | 只看該作者
好吧   我也不會
回復(fù)

使用道具 舉報

樓主
ID:87412 發(fā)表于 2015-8-15 16:47 | 只看該作者
還是沒看太明白
回復(fù)

使用道具 舉報

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

本版積分規(guī)則

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

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表