楼主写错了吧,应该是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里面编译是有错误的哈