跪求驱动型号为SA1101A的OLED模块与单片机直接连接的初始化程序和一些简单的示例程序?

如题所述

楼主写错了吧,应该是SH1101A,以下供参考:
#define uchar unsigned char
#define uint unsigned int

sbit res=P1^0;
sbit cs=P1^1;
sbit a0=P1^2;

/*********************************************************/
void delay_ms(uint sec)
{
uint i;
while(sec--)
{
for(i=0;i<1000;i++)
{
;
}
}
}

void write_c(uchar comm)
{
cs=0;
a0=0;
WR=0;
P0=comm;
WR=1;
cs=1;
}

void write_d(uchar dat)
{
cs=0;
a0=1;
WR=0;
P0=dat;
WR=1;
cs=1;
}
/**********************SH1101A初始化*************************/

void init_program()
{
write_c(0xae);

write_c(0xad); //master configuration
write_c(0x8b); //

write_c(0xd5); //Set Display Clock Divide Ratio/Oscillator Frequency
write_c(0xf0);

write_c(0xa8); //Set Mux
write_c(0x3f); //64

write_c(0xd9); //Set Pre-charge Period
write_c(0x1c);

write_c(0xa1); //Set Segment Re-map (0xa0 normal,0xa1 reverse)

write_c(0xda); //Set COM Pins Hardware Configuration

write_c(0x12); //COM两端引出,左右不镜像

write_c(0x81); //set contrast control for bank0
write_c(0x64);

write_c(0xa4); //out follows RAM content

write_c(0xa6); //Set Normal/Inverse Display (0xa6 normal,0xa7 inverse)

write_c(0xc8); //Set COM Output Scan Direction (0xc0 normal,0xc8 reverse)

write_c(0xdb); //Set VCOMH Deselect Level
write_c(0x40);

write_c(0xaf); //Set Display ON/OFF
}

/**********************清屏*************************/
void clear_screen()
{
uint i,j;
for(i=0;i<8;i++)
{
write_c (0xb0+i);
write_c (0x10);
write_c (0x02);
for(j=0;j<128;j++)
write_d(0);
}
}
/**********************全显*************************/
void all_screen()
{
uint i,j;
write_c(0xaf); //display on
write_c(0x40); //display start line:0
for(i=0;i<8;i++)
{
write_c (0xb0+i); //set page address
write_c (0x10); //column high bits
write_c (0x02); //column low bits
for(j=0;j<128;j++)
write_d (0xff);
}
}追问

不行啊,在keil里面编译是有错误的哈

温馨提示:答案为网友推荐,仅供参考