感谢大家!问题已解决,记录一下解决办法:
1. 转换时加延时;
2.模拟端口2^6、2^7换成2^0、2^1;前面两个端口模拟总是无法成功,加了延时也没有效果,原因不明。
//=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
//=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
#include <STC32G.h>
//#include "stc15w4k32s4.h"
//#include <reg52.h>
#include <intrins.h>
#define Uchar unsigned char
#define Uint unsigned int
#define Ulong unsigned long
#define uchar unsigned char
#define uint unsigned int
//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
// Pin Definition
//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
//sbit SDA3=P2^6; //2_6串行的数据口51
//sbit SCL3=P2^7; //2_7串行的同步时钟52
sbit SDA3=P2^0; //2_6串行的数据口41
sbit SCL3=P2^1; //2_7串行的同步时钟42
sbit p3_0=P3^0;
sbit p3_1=P3^1;
//*********************************************************************0.66
char code color13[]={
/*-- 调入了一幅图像:F:\工作\8051\OLED3\12832\1.bmp --*/
/*-- 宽度x高度=128x32 --*/
0xFF,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
0x41,0x41,0x41,0xE1,0xF1,0xF1,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0xC1,0xE1,0xF1,0x31,0x11,0x31,
0xF1,0xE1,0xC1,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x81,0xE1,0xF1,0xF9,0xF9,0x01,
0x01,0x01,0x01,0x01,0x41,0x71,0x39,0x1F,0x4F,0x77,0x39,0x1F,0x0F,0x07,0x01,0x01,
0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0xFF,
0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,
0x00,0xFF,0xFF,0xFF,0x00,0x00,0x60,0x78,0x5C,0x47,0x43,0x40,0xFF,0xFF,0xFF,0x40,
0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,
0xFF,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0xE0,0x00,0x00,
0x08,0x08,0xC8,0x2F,0x2F,0x2F,0xC8,0x08,0x08,0xC0,0x20,0x20,0x20,0xCE,0x0E,0x2E,
0xEE,0x00,0x20,0xE0,0x20,0x00,0x00,0x40,0x20,0x20,0x23,0xC7,0x0F,0x0C,0xC8,0x2C,
0x2F,0x27,0xC3,0x00,0x20,0xE0,0x20,0x20,0x40,0x80,0x08,0x88,0x4F,0x2F,0x2F,0x48,
0x88,0x00,0x00,0x60,0x20,0xE0,0x20,0x60,0x00,0x00,0xC0,0x20,0x20,0x20,0x60,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0xFF,
0xFF,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,
0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0xA0,0xBF,0xA0,0x80,
0x80,0x80,0xB0,0xA8,0xA4,0xA2,0xA1,0x80,0x80,0x9C,0xA3,0xA2,0xA3,0x9C,0x80,0xA0,
0xB8,0xA7,0x87,0xB8,0xA0,0x80,0x80,0x90,0xA0,0xA1,0xA1,0x9E,0x80,0x80,0xB0,0xA8,
0xA4,0xA2,0xA1,0x80,0xA0,0xBF,0xA0,0xA0,0x90,0x8F,0x80,0x8F,0x90,0xA0,0xA0,0x90,
0x8F,0x80,0x80,0x80,0xA0,0xBF,0xA0,0x80,0x80,0x80,0xB0,0xA1,0xA2,0xA2,0x9C,0x80,
0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,
0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0xFF
};
char code color14[]={/*-- 调入了一幅图像:F:\工作\8051\OLED3\12832\中文显示1.bmp --*/
/*-- 宽度x高度=128x32 --*/
0x00,0x20,0xA0,0x78,0x20,0xF8,0x20,0x00,0x00,0x00,0x10,0xF8,0x00,0x00,0x00,0x00,
0xF0,0x08,0x08,0x08,0xF0,0x00,0x00,0x00,0xC0,0xC0,0x00,0x00,0x00,0x00,0xF8,0x88,
0x88,0x88,0xFE,0x88,0x88,0x88,0x88,0xF8,0x00,0x00,0x20,0x10,0xF8,0x06,0x20,0x20,
0x7E,0x90,0x88,0x88,0x84,0xE0,0x00,0x00,0x00,0x00,0x00,0x80,0x7E,0x80,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0xFE,0x92,0x92,0x92,0xF2,0x92,0x92,0x92,0x9E,0x80,0x80,
0x00,0x00,0x08,0x08,0x08,0xFE,0x08,0x08,0x08,0xFE,0x08,0x08,0x00,0x00,0x20,0x24,
0xA4,0xFC,0xA2,0x22,0x20,0xF8,0x08,0x08,0xF8,0x00,0x00,0x00,0xFE,0x02,0x4A,0x4A,
0xFA,0x4A,0xCA,0x4A,0x02,0xFE,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x02,0x0F,0x02,0x0F,0x02,0x02,0x00,0x00,0x00,0x08,0x0F,0x08,0x00,0x00,0x00,
0x07,0x08,0x08,0x08,0x07,0x00,0x00,0x00,0x0C,0x0C,0x00,0x00,0x00,0x00,0x01,0x00,
0x00,0x00,0x1F,0x00,0x00,0x00,0x00,0x01,0x80,0x00,0x02,0x02,0x02,0x02,0x02,0x1F,
0x02,0x02,0x02,0x02,0x02,0x82,0x00,0x10,0x08,0x84,0x02,0x01,0x00,0x01,0x02,0x04,
0x08,0x18,0x08,0x00,0x00,0x1F,0x10,0x08,0x84,0x00,0x03,0x04,0x08,0x10,0x10,0x1C,
0x00,0x01,0x11,0x09,0x05,0x03,0x01,0x01,0x03,0x05,0x09,0x11,0x01,0x00,0x04,0x03,
0x00,0x1F,0x00,0x01,0x00,0x0F,0x04,0x04,0x07,0x00,0x00,0x00,0x1F,0x0A,0x0A,0x0A,
0x0B,0x0A,0x0A,0x0B,0x0A,0x1F,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x20,0xE0,0x3C,0x20,0xE0,0x3C,0x20,0x00,0x00,0x08,0x08,0xFC,0x00,0x00,0x00,
0x00,0x00,0x38,0x04,0x04,0x04,0xC4,0x38,0x00,0x00,0x00,0x00,0x60,0x60,0x00,0x00,
0x00,0x00,0x00,0xFE,0x04,0x04,0x04,0x04,0xFF,0x04,0x04,0x04,0x04,0xFE,0x04,0x00,
0x00,0x10,0x08,0x04,0xFE,0x01,0x01,0x08,0x88,0x3F,0x44,0x44,0x42,0x43,0x72,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x60,0x1F,0xE1,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0xFF,0x49,0x49,0x49,0x49,0x79,0xC9,0x49,0x49,0x4F,0x40,0x40,0x00,
0x00,0x00,0x08,0x08,0x08,0x08,0xFF,0x08,0x08,0x08,0x08,0xFF,0x08,0x08,0x08,0x00,
0x00,0x00,0x12,0x12,0xD2,0xFE,0x91,0x11,0x11,0x00,0xFC,0x04,0x04,0x04,0xFC,0x00,
0x00,0x02,0x1F,0x02,0x02,0x1F,0x02,0x02,0x00,0x00,0x10,0x10,0x1F,0x10,0x10,0x00,
0x00,0x00,0x18,0x14,0x12,0x11,0x10,0x18,0x00,0x00,0x00,0x00,0x18,0x18,0x00,0x00,
0x00,0x00,0x00,0x03,0x01,0x01,0x01,0x01,0x7F,0x01,0x01,0x01,0x01,0x03,0x00,0x00,
0x00,0x00,0x02,0x02,0x02,0x02,0x02,0x02,0x7F,0x02,0x02,0x02,0x02,0x02,0x02,0x02,
0x00,0x00,0x20,0x10,0x08,0x06,0x01,0x00,0x00,0x00,0x03,0x06,0x0C,0x18,0x30,0x10,
0x00,0x00,0x00,0x7F,0x20,0x10,0x08,0x00,0x00,0x01,0x06,0x08,0x10,0x20,0x78,0x00,
0x00,0x01,0x01,0x41,0x21,0x19,0x0F,0x05,0x01,0x01,0x03,0x05,0x19,0x71,0x21,0x01,
0x00,0x08,0x04,0x03,0x00,0x7F,0x00,0x07,0x02,0x00,0x1F,0x08,0x08,0x08,0x1F,0x00
};
//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
void delay_ms(Uint t)
{
Uchar i,j;
while(--t)
{
i=50;
j=100;
while(--j)
while(--i);
}
}
void uDelay(Uchar l)
{
while(l--);
}
void Delay(Uchar n)
{
Uchar i,j,k;
for(k=0;k<n;k++)
{
for(i=0;i<131;i++)
{
for(j=0;j<15;j++)
{
uDelay(203);
}
}
}
}
//****************************************************************************
//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
// Read/Write Sequence
//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
void I2C_3(Uchar mcmd)
{
Uchar length = 8; // Send Command
while(length--)
{
if(mcmd & 0x80)
{
SDA3=1;
}
else
{
SDA3=0;
}
uDelay(3);
SCL3=1;
uDelay(3);
SCL3=0;
uDelay(3);
mcmd = mcmd << 1;
}
}
void I2C_Ack3()
{
SDA3=1;
uDelay(3);
SCL3=1;
uDelay(3);
SCL3=0;
uDelay(3);
}
void I2C_NAck3()
{
SDA3=0;
uDelay(3);
SCL3=1;
uDelay(3);
SCL3=0;
uDelay(3);
}
void I2C_Start3()
{
SDA3=0;
uDelay(3);
SCL3=1;
uDelay(3);
SCL3=0;
uDelay(3);
I2C_3(0x78);
I2C_Ack3();
}
void I2C_Stop3()
{
SCL3=1;
uDelay(5);
SDA3=0;
uDelay(5);
SDA3=1;
uDelay(5);
}
void Write_Command3(Uchar Data)
{
I2C_Start3();
I2C_3(0x00);
I2C_Ack3();
I2C_3(Data);
I2C_Ack3();
I2C_Stop3();
}
void Write_Data3(Uchar Data)
{
I2C_Start3();
I2C_3(0x40);
I2C_Ack3();
I2C_3(Data);
I2C_Ack3();
I2C_Stop3();
}
//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
void LCD_Init3(void)
{
Write_Command3(0xae); //--turn off oled panel
Write_Command3(0x00); //--set low column address
Write_Command3(0x10); //--set high column address
Write_Command3(0x00); //--set start line address
Write_Command3(0xb0); //--set page address
Write_Command3(0x81); //--set contrast control register
Write_Command3(0xff);
Write_Command3(0xa1); //--set segment re-map 127 to 0 a0:0 to seg127
Write_Command3(0xa6); //--set normal display
Write_Command3(0xc8); //--set com(N-1)to com0 c0:com0 to com(N-1)
Write_Command3(0xa8); //--set multiples ratio(1to64)
Write_Command3(0x1f); //--1/64 duty
Write_Command3(0xd3); //--set display offset
Write_Command3(0x00); //--not offset
Write_Command3(0xd5); //--set display clock divide ratio/oscillator frequency
Write_Command3(0x80); //--set divide ratio
Write_Command3(0xd9); //--set pre-charge period
Write_Command3(0x04);
Write_Command3(0xda); //--set com pins hardware configuration
Write_Command3(0x00);
Write_Command3(0xdb); //--set vcomh
Write_Command3(0x30);
Write_Command3(0x8d); //--set chare pump enable/disable
Write_Command3(0x14); //--set(0x10) disable
//Write_Command3(0x10); //--set(0x10) disable
Write_Command3(0xaf); //--turn on oled panel
//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=void LCD_Init(void)
}
//***********************************************************************
void clr_display3(void)
{
Uchar i,j;
for(j=0;j<4;j++)
{
Write_Command3(0x22);//--set page1
Write_Command3(j);//--set start page
Write_Command3(0x03);//--set end page
for(i=0;i<128;i++) //显示单色数据到LCD
{
Write_Data3(0x00);
}
}
}
//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
void pic13(void)
{
Uchar i,j;
Uint k;
k=0;
for(j=0;j<4;j++)
{
Write_Command3(0x22);//--set page1
Write_Command3(j);//--set start page
Write_Command3(0x03);//--set end page
for(i=0;i<128;i++) //显示单色数据到LCD
{
Write_Data3(color13[k]);
k=k+1;
}
}
}
void pic14(void)
{
Uchar i,j;
Uint k;
k=0;
for(j=0;j<4;j++)
{
Write_Command3(0x22);//--set page1
Write_Command3(j);//--set start page
Write_Command3(0x03);//--set end page
for(i=0;i<128;i++) //显示单色数据到LCD
{
Write_Data3(color14[k]);
k=k+1;
}
}
}
//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
void main()
{
WTST = 0; //设置程序指令延时参数,赋值为0可将CPU执行指令的速度设置为最快
EAXFR = 1; //扩展寄存器(XFR)访问使能
CKCON = 0; //提高访问XRAM速度
P2M0 = 0x00; P2M1 = 0x00;
P2PU = 0xff;
LCD_Init3();
p3_0=1;p3_1=0;
while(1)
{
pic13();
delay_ms(10);
pic14();
delay_ms(10);
p3_0=~p3_0;
}
}
|