Chinaunix首页 | 论坛 | 博客
  • 博客访问: 1137914
  • 博文数量: 241
  • 博客积分: 10
  • 博客等级: 民兵
  • 技术积分: 2279
  • 用 户 组: 普通用户
  • 注册时间: 2012-11-27 19:53
个人简介

JustForFun

文章分类

全部博文(241)

文章存档

2023年(8)

2022年(2)

2021年(3)

2020年(30)

2019年(11)

2018年(27)

2017年(54)

2016年(83)

2015年(23)

我的朋友

分类: LINUX

2018-12-16 22:12:55

 OLED液晶模块SSD1306


图片

图片

图片

图片

图片

#define  OLED_VCC_EN()     do{ GPIO_WriteHigh(GPIOD,GPIO_PIN_2);}while(0)
//******************************************************************************
#define OLED_CS_ENABLE()  do{GPIO_WriteLow(GPIOD,GPIO_PIN_6);}while(0)
#define OLED_CS_DISENABLE()  do{GPIO_WriteHigh(GPIOD,GPIO_PIN_6);}while(0)
 
#define CONTROL_IS_DATA()      do{GPIO_WriteHigh(GPIOD,GPIO_PIN_5);}while(0)
#define CONTROL_IS_COMMAND()  do{GPIO_WriteLow(GPIOD,GPIO_PIN_5);}while(0)
#define SCLK_OLED_H() do{GPIO_WriteHigh(GPIOD,GPIO_PIN_4);}while(0)
#define SCLK_OLED_L() do{GPIO_WriteLow(GPIOD,GPIO_PIN_4);}while(0)
#define SDIN_OLED_H() do{GPIO_WriteHigh(GPIOD,GPIO_PIN_3);}while(0)
#define SDIN_OLED_L() do{GPIO_WriteLow(GPIOD,GPIO_PIN_3);}while(0)


void write_command(unsigned char dat)
{
 u8 i;
  OLED_CS_ENABLE();
 uDelay(20);
 
 CONTROL_IS_COMMAND();
 uDelay(20);

for(i=0; i<8; i++)
   {
    SCLK_OLED_L();
    uDelay(20);
    if((dat & 0x80)==0x80)   
        SDIN_OLED_H();
    else   
        SDIN_OLED_L();
 
     SCLK_OLED_H();
     dat = (dat<<1);   
       
   }
 //CONTROL_IS_DATA();
 OLED_CS_DISENABLE();
}
 
void  write_data(unsigned char dat)//数据
{
  u8 i;
  OLED_CS_ENABLE();
  uDelay(20);

 CONTROL_IS_DATA();
  uDelay(20);
 for(i=0; i<8; i++)
 {
  SCLK_OLED_L();
   uDelay(20);
  if((dat & 0x80)==0x80)  
   SDIN_OLED_H();
  else 
   SDIN_OLED_L();
   uDelay(20);
   SCLK_OLED_H();
   dat = (dat<<1); 
   
 }
  uDelay(20);
  //CONTROL_IS_DATA();
  OLED_CS_DISENABLE();
}


void uDelay(unsigned char l)
{
 while(l--);
}



 
阅读(2366) | 评论(0) | 转发(0) |
给主人留下些什么吧!~~