文章详情

3.5寸240128点阵OLED显示屏HGS2401281参考例程

日期:2024-03-28 16:28
浏览次数:1477
摘要:3.5寸240128点阵OLED显示屏低温-30℃,黑底黄字或者黑底绿字

   3.5寸240128点阵OLED显示屏HGS2401281是清达光电提供的,这款240128宽温OLED屏有黑底黄字和黑底绿字,接口是8080 8位并口,供电电压为3.3v,的,主控IC为SSD1322主控,另外同样尺寸的也有带中文字库SPI接口/UART接口/RS232接口的款式,HGS2401281参考例程如下:

#include<reg51.h>

#include <string.h>

#include <intrins.h>

#include <math.h>

#define uchar unsigned char

#define uint unsigned int

#define DATA  P1

sbit CD  = P3^0;

sbit WR1 = P3^1;

sbit RD1 = P3^2;

sbit CS  = P3^3;

sbit RES = P3^4;

uchar RAM_data[4];

uchar INV=0;

//逐行式  顺向(高位在前)

uchar code table_88[]={};//篇幅限制 省略

uchar code table_816[]={};//篇幅限制 省略

uchar code table_1616[]={};// 篇幅限制 省略

uchar code table_3232[][128]={};//篇幅限制 省略

/******************************************************************

     延时子程序

*****************************************************************/

void uDelay(uchar n)

{

while(n--);

}

void delay(uint z)

{

uint x,y;

for(x=z;x>0;x--)

  for(y=124;y>0;y--);

}

void delay_100us(uchar z)

{

z=z*16;

while(z--);

}

/*********************************************************************

  写入指令和数据

************************************************************************/

void wr_data(uchar b) //写数据  ;

{

RD1=1;

CS=0;

CD=1;

WR1=0;

DATA=b;

//uDelay(1);

WR1=1;

//_nop_();

CS=1;

}

void wr_com(uchar com)  //写命令;

{

RD1=1;

CS=0;

CD=0;

WR1=0;

DATA=com;

WR1=1;

CS=1;

}


/*********************************************************************

  初始化函数;

************************************************************************/

void init(void)

{

     delay(50);

     RES=1;delay(1);

     RES=0;delay(1);

     RES=1;delay(1);

// 准备接受命令;

     wr_com(0xFD);

 wr_data(0x12);       /* 12H接受,16H拒绝 */

//休眠开关;

 wr_com(0xAE);   /* AEH开休眠,AF关休眠 */

// 设置列窗口;

 wr_com(0x15);

 wr_data(0x24);      

 wr_data(0x5f);            /*256列 */

//设置行窗口;

 wr_com(0x75);

 wr_data(0x00);      

 wr_data(0x7f);            /*64行 */

// 设置可逆地图;

 wr_com(0xA0);

 wr_data(0x36);        /* 选高字节在前,COM扫描反向 ,水平地址模式 */

 wr_data(0x01);      /*选双屏模式 */

// 设置起始行;

 wr_com(0xA1);

 wr_data(0x00);        /* 0 */

// 设置显示分支;

 wr_com(0xA2);    

 wr_data(0x00);            /* 无分支 */

// 设置显示模式;

 wr_com(0xA6);        /* A4H全关,A5H全开,A6H正常,A7H反显 */

 wr_com(0xA6);

// 设置反显;

     wr_com(0xA8);

  wr_data(0x00);      

  wr_data(0x7f);

// 设置部分显示;

 wr_com(0xA9);        /* A8H进入部分显示,A9H退出 */

// Vdd来源;

 wr_com(0xAB);

 wr_data(0x01);       /* 00H为外部,01H为内部 */

// 设置P1 P2 ;

 wr_com(0xB1);       /*P1=29,P2=7 */

 wr_data(0xd2);

// 设置D和Fosc;

 wr_com(0xB3);  

 //wr_data(0xe1);           /*F=9,D=1 */

 wr_data(0xf1);

// 设置显示质量和Vsl来源;

 wr_com(0xB4);  

 wr_data(0xA0);       /* A0H为外部Vsl,A2H为内部Vsl */

 wr_data(0xfd);       /*FDH为提高质量,B5H为正常 */

//设置Tp3

     wr_com(0xB6);

 wr_data(0x08);

//设置Vp2;

    wr_com(0xBB);

wr_data(0x1F);

// 设置Vcomh;

    wr_com(0xBE);

wr_data(0x06); /* Vcomh=0.86Vcc  */  

//设置GPIO;

     wr_com(0xB5);

 wr_data(0x0a);  

//设置灰度值;

 wr_com(0xB8);

 wr_data(0x0c);

 wr_data(0x18);

 wr_data(0x24);

 wr_data(0x30);

 wr_data(0x3c);

 wr_data(0x48);

 wr_data(0x54);

 wr_data(0x60);

 wr_data(0x6c);

 wr_data(0x78);

 wr_data(0x84);

 wr_data(0x90);

 wr_data(0x9c);

 wr_data(0xa8);

 wr_data(0x93);//b4  

//使能灰阶;

    wr_com(0x00);

//设置对比度;

    wr_com(0xC1);

wr_data(0x80); /* 共256级选第128级  */  

//设置SEG电流范围;

    wr_com(0xC7);

wr_data(0x0F); /* 满范围  */

//设置显示行;

    wr_com(0xCA);

wr_data(0x7F);  /* 64 */  

//设置显示质量;

    wr_com(0xD1);

wr_data(0xA2);

wr_data(0x20);

all_screen(0X00); //清屏

    wr_com(0xAF); /* 开显示  */  

}

main()

{

uchar i,j=0;

init();

for(i=0;i<8;i++)

{ j=i*16;

 show_1616(2,j,0,13); //清达光电技术有限公司显示模组

}

delay(1000);

fill(0x00); //清屏

show_3232(14,5,0,3);  //OLED

show_3232(2,37,4,10); //240*128

show_1616(10,80,0,9);//清达光电技术有限公司

show_816(6,100,0,23);//www.china-lcdmodules.com

while(1);

}