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);
}