qdgd的个人空间 https://www.eechina.com/space-uid-161219.html [收藏] [复制] [RSS]

博客

-40℃低温OLED模块HCS2022应用参考电路以及样例程序

已有 592 次阅读2019-8-12 14:34 | -40℃OLED模块

    HCS2022是一款-40~80℃工作的OLED显示模块,规格为20*2字符型(可以显示2行字符,每行20个字符),供电电压有5V 也有3.3V,接口可以选择6800时序,SPI串口时序,I2C串口时序等多种时序,下面以I2C串口为例,说明下这款产品的应用
1,-40℃低温OLED模块HCS2022应用参考电路如下:

2,-40℃低温OLED模块HCS2022样例程序:
#include<reg51.h>
#include <string.h>
#include <intrins.h>
#include <math.h>
#define uchar unsigned char
#define uint unsigned int
sbit SCL =P1^0;
sbit SDA =P1^1;   
uchar code tab1[]={"Tsingtek-OLED"};
uchar code tab2[]={"HCS2022-Y-EH-I2C"};
uchar code tab3[]={"Tel:13701081790 Miss Liu"};
//此程序测试于 24M 晶震,51单片机;
//注意,关与 IS RE SD这3位,起始时是000,我们每次用完命令之后也复位成000;
//此程序为清达光电编写,有问题请联系 13701081790 刘经理
/******************************************************************
      延时子程序  
*****************************************************************/

void delay(uint z)
{
uint x,y;
for(x=z;x>0;x--)
   for(y=124;y>0;y--);
}

void del(void)
{
_nop_(); _nop_();
}


void start(void)
{
SDA=1;del();
SCL=1;del();
SDA=0;del();
SCL=0;del();
}



void stop(void)
{
SDA=0;del();
SCL=1;del();
SDA=1;del();

}

void ack(void)
{
uchar i=0;
SCL=1;
//while((SDA==1)&&(i<200))i++; 
del();
SCL=0;
del();
}

void wr_byte(uchar b)
{
uchar i;
for(i=0;i<8;i++)
   {
  
   SCL=0;del();
   SDA=b&0x80;del();
   b=b<<1;
   SCL=1;del();
   SCL=0;del();
   }
SDA=1;del();

ack();
}

void wr_data(uchar b)
{
start();
wr_byte(0x78);
wr_byte(0x40);
wr_byte(b);
stop();
}
void wr_com(uchar com)
{
start();
wr_byte(0x78);
wr_byte(0x00);
wr_byte(com);
stop();
}

/******************************************************************
   定位地址(一个地址对应5*8字符和)
   x--> 水平方向地址数(0~39)    ;y-->  垂直方向字符数(0~1);
*****************************************************************/

void  dot(uchar x,uchar y)
{
if(y) x|=0x40;
x|=0x80;
wr_com(x);
}

/******************************************************************
  清屏;
*****************************************************************/

void clear(void)
{
wr_com(0x01);delay(5);
}

/******************************************************************
  字符的输入(5*8)
x--> 水平方向地址数(0~39)    ;y-->  垂直方向字符数(0~1);s-->字符代码首地址;
*****************************************************************/
void en_c_r(uchar x,uchar y,uchar code  * s)  
{
  dot(x,y);
  while(*s>0&&x<20)
   {
   wr_data(*s);
   s++;
   x++;
   }
}

/******************************************************************
  初始化设置;
*****************************************************************/

void init(void)
{
     
      delay(50);
     
//      RES=1;delay(5);
//      RES=1;delay(5);
//      RES=1;delay(5);     
         
         
// 设置电源模式;
      wr_com(0x2a);
      wr_com(0x71);
      wr_data(0x00);          /* 设置为3.3V模式 */
      wr_com(0x28);

// 显示开关;
      wr_com(0x08);              /* 关显示 */

// 设置Fosc和DCLK;
      wr_com(0x2a);
      wr_com(0x79);
      wr_com(0xd5);
      wr_com(0x70);              /* Fosc=7 DCLK=1 */     
      wr_com(0x78);
      wr_com(0x28);
// 设置显示模式;
      wr_com(0x2a);
      wr_com(0x08);             /* 字宽=5   1/2行显示 */
      wr_com(0x28);
// 设置地图模式;
      wr_com(0x2a);
      wr_com(0x06);                /* BDC=1(C0-->C31)   BDS=0(S99-->S0) (已规定,客户不可自行修改) */
      wr_com(0x28);
             
// 选择内部ROM和CGRAM;
      wr_com(0x2a);
      wr_com(0x72);             
      wr_data(0x00);         /* ROM=A  CGRAM=8 */
      wr_com(0x28);



// 设置OLED特性;
      wr_com(0x2a);
      wr_com(0x79);             /* 进入OLED设置 */

      wr_com(0xda);
      wr_com(0x10);             /* SEG硬件结构  (已规定,客户不可自行修改) */

      wr_com(0xdc);
      wr_com(0x00);              /* 内部VSL  GPIO输出无效 */

      wr_com(0x81);
      wr_com(0x7f);             /* 共256级对比度,选一半 */

      wr_com(0xd9);
      wr_com(0xf1);             /* P2=15DCLK  P1=4DCLK */


      wr_com(0xdb);
      wr_com(0x30);             /* Vcom=0.83Vcc  */

      wr_com(0x78);
      wr_com(0x28);             /* 退出OLED设置 */


//准备开显示;
      wr_com(0x01);            /*  清屏 */
      delay(5);
      wr_com(0x80);            /*  设置DDRAM地址  */
      wr_com(0x0c);            /*  开显示 */

     

       
}

/******************************************************************
  主程序;
*****************************************************************/
int main(void)
{
init();
while(1)
    {
    en_c_r(1,0,tab1);    delay(1000);
    en_c_r(0,1,tab2);     delay(1000);
    while(1);
    }
}


-40℃低温OLED模块HCS2022显示图片


路过

鸡蛋

鲜花

握手

雷人

评论 (0 个评论)

facelist

您需要登录后才可以评论 登录 | 立即注册

关于我们  -  服务条款  -  使用指南  -  站点地图  -  友情链接  -  联系我们
电子工程网 © 版权所有   京ICP备16069177号 | 京公网安备11010502021702
返回顶部