stc8H驱动ssd1315OLED屏怎么做啊,大佬们帮我看看
#include "STC8Hxxx.h"#include <stdio.h>
#include <INTRINS.H>
#define Uchar unsigned char
#define Uintunsigned int
#define Ulong unsigned long
#define uchar unsigned char
#define uintunsigned int
#define LOG 1
sbit ENC_A = P1^5;
sbit ENC_B = P1^7;
sbit ENC_SW = P1^6;
sbit led = P3^4;
void GPIO_Init (void);
void Uart_Init(void);
void IIC_Init(void);
void ADC_Init(void);
code color13[]={
/*------------------------------------------------------------------------------
;???? / ???? : C:\Documents and Settings\Administrator\????\???????? (2)\logo.bmp???
;????????????: 128??64
------------------------------------------------------------------------------*/
//0x80,0x40,0x10,//??????????,????????????????????????????????
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,
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,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,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,0x20,0x44,0x08,0x00,0x18,0x48,0x28,0xC8,0x08,0x28,0x48,0x18,0x00,
0x40,0x40,0xFC,0x40,0x40,0xFC,0x00,0x00,0xF8,0x00,0x00,0xFC,0x00,0x40,0x40,0xA0,
0x90,0x88,0x84,0x88,0x90,0x20,0x40,0x40,0x00,0x00,0x40,0x44,0xD8,0x20,0xF0,0xAC,
0xA8,0xE8,0xB8,0xA8,0xE0,0x00,0x00,0x00,0xC0,0x7C,0x54,0x54,0x54,0x54,0x54,0x54,
0x7C,0x40,0x40,0x00,0x00,0xF0,0x90,0x90,0x90,0xFC,0x90,0x90,0x90,0xF0,0x00,0x00,
0x00,0x80,0x88,0x88,0x88,0x88,0x88,0xE8,0xA8,0x98,0x8C,0x88,0x80,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,0x04,0x3E,0x01,0x10,0x11,0x09,0x05,0x3F,0x05,0x09,0x11,0x11,0x00,
0x08,0x18,0x0F,0x24,0x14,0x0F,0x00,0x00,0x0F,0x00,0x00,0x3F,0x00,0x20,0x22,0x2A,
0x32,0x22,0x3F,0x22,0x32,0x2A,0x22,0x20,0x00,0x00,0x20,0x10,0x0F,0x10,0x28,0x24,
0x23,0x20,0x2F,0x28,0x2A,0x2C,0x00,0x30,0x0F,0x04,0x3D,0x25,0x15,0x15,0x0D,0x15,
0x2D,0x24,0x24,0x00,0x00,0x07,0x04,0x04,0x04,0x1F,0x24,0x24,0x24,0x27,0x20,0x38,
0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x3F,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,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,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,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,0x80,0x80,0x80,0xFF,
0xFF,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
0x01,0x01,0x01,0x81,0x41,0x21,0x21,0x61,0x01,0x01,0x21,0xE1,0xE1,0x01,0xE1,0xE1,
0x21,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x21,0xE1,0x21,0x21,0x21,0x61,0x01,0x01,
0x21,0x21,0xE1,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
0x01,0x01,0x01,0x01,0x01,0x01,0xC1,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,0x21,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,0x0F,0x10,0x20,0x24,0x1C,0x04,0x00,0x20,0x3F,0x01,0x3E,0x01,0x3F,
0x20,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x3F,0x22,0x22,0x27,0x30,0x00,0x00,
0x20,0x20,0x3F,0x20,0x20,0x00,0x00,0x1E,0x25,0x25,0x25,0x16,0x00,0x00,0x1E,0x21,
0x21,0x21,0x13,0x00,0x01,0x01,0x1F,0x21,0x21,0x00,0x00,0x00,0x21,0x3F,0x22,0x21,
0x01,0x00,0x00,0x1E,0x21,0x21,0x21,0x1E,0x00,0x21,0x3F,0x22,0x01,0x01,0x3E,0x20,
0x00,0x21,0x21,0x3F,0x20,0x20,0x00,0x00,0x1E,0x21,0x21,0x21,0x13,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,0xF0,0x08,0x04,0x04,0x04,0x0C,0x00,0xF0,0x08,0x04,0x04,0x08,0xF0,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x80,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0xFC,0x04,0x00,
0x00,0x00,0x00,0x00,0x0C,0x04,0xFC,0x04,0x0C,0x00,0x04,0xFC,0x04,0x04,0x08,0xF0,
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,0x00,0xFF,
0xFF,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,
0x80,0x80,0x80,0x81,0x82,0x84,0x84,0x84,0x82,0x80,0x81,0x82,0x84,0x84,0x82,0x81,
0x80,0x80,0x86,0x86,0x80,0x80,0x80,0x80,0x80,0x85,0x83,0x80,0x80,0x80,0x80,0x80,
0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x84,0x87,0x84,0x84,
0x84,0x86,0x80,0x80,0x80,0x84,0x87,0x84,0x80,0x80,0x84,0x87,0x84,0x84,0x82,0x81,
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,
0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0x80,0xFF,
};
code color14[]={
/*--????????????F:\????\8051\OLED1\abcd.bmp--*/
/*--????x???=128x64--*/
0x00,0x00,0x00,0xF0,0x08,0x04,0x04,0x08,0xF0,0x00,0x04,0xFC,0x04,0x00,0x00,0x00,
0x00,0x04,0xFC,0x44,0x44,0xE4,0x0C,0x00,0x04,0xFC,0x04,0x04,0x08,0xF0,0x00,0xA8,
0xAE,0x98,0xFF,0xAC,0x8A,0x10,0xFC,0x0B,0x88,0x78,0x08,0x00,0x88,0x86,0x92,0x92,
0x92,0x92,0xD3,0xB2,0x92,0x82,0x8A,0x86,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x82,0x82,0xF2,0x92,0x97,0x92,0xFA,0x92,0x97,0xF2,
0x82,0x82,0x00,0x04,0x04,0x04,0x1C,0x64,0x85,0x06,0xC4,0x3C,0x04,0x04,0x04,0x00,
0x00,0x80,0x3E,0x2A,0xEA,0x2A,0x2A,0xEA,0x2A,0x3F,0x82,0x00,0x00,0x00,0x10,0x12,
0xD2,0x12,0x12,0xF2,0x12,0x52,0x93,0x1A,0x10,0x00,0x00,0xC0,0xC0,0x00,0x00,0x00,
0x00,0x00,0x00,0x01,0xC2,0x04,0xC4,0x02,0x81,0x40,0x44,0x47,0x84,0x04,0x04,0x06,
0x00,0x04,0x07,0x04,0x04,0x84,0xC6,0x00,0x04,0x07,0x84,0x44,0x42,0x41,0x80,0x08,
0x88,0x45,0x42,0x42,0x85,0x08,0x04,0x03,0x82,0xC4,0x08,0x00,0xC0,0x40,0x40,0x40,
0x40,0x08,0x8F,0x40,0x40,0xC0,0x00,0x00,0xC0,0x40,0x41,0xC2,0x46,0x00,0x80,0x40,
0x40,0x40,0x80,0x00,0x80,0x40,0x48,0x48,0x88,0x04,0x82,0x41,0x40,0x41,0x82,0x04,
0x08,0x08,0x00,0x08,0x08,0x08,0x44,0xC4,0x02,0x01,0x02,0x04,0x04,0x08,0x08,0x00,
0x08,0x08,0x09,0x0A,0x0F,0x48,0xC8,0x0F,0x0A,0x09,0xCC,0x08,0x00,0x04,0x42,0xC1,
0x40,0x40,0x88,0x0F,0x80,0x40,0x40,0x41,0xC6,0x00,0x40,0xC6,0x46,0x40,0x80,0x00,
0x00,0x00,0x09,0x3D,0x0B,0x3D,0x0B,0x09,0x03,0x34,0x24,0x24,0x1F,0x00,0x00,0x00,
0x21,0x00,0x00,0x00,0x00,0x20,0x3F,0x20,0x00,0x00,0x31,0x28,0x24,0x22,0x21,0x00,
0x10,0x20,0x22,0x22,0x1D,0x00,0x04,0x0B,0x08,0x3F,0x28,0x00,0x13,0x22,0x22,0x22,
0x1C,0x00,0x1F,0x22,0x22,0x22,0x1C,0x00,0x00,0x00,0x3E,0x01,0x00,0x00,0x1D,0x22,
0x22,0x22,0x1D,0x00,0x03,0x34,0x24,0x24,0x1F,0x00,0x1F,0x20,0x20,0x20,0x1F,0x00,
0x00,0x14,0x2A,0x2A,0x3C,0x20,0x00,0x3F,0x22,0x22,0x1C,0x00,0x00,0x1C,0x22,0x22,
0x26,0x00,0x00,0x1C,0x22,0x22,0x3F,0x20,0x20,0x3E,0x09,0x0F,0x38,0x20,0x20,0x3F,
0x22,0x22,0x1D,0x00,0x1F,0x20,0x20,0x20,0x10,0x00,0x20,0x3F,0x20,0x20,0x1F,0x00,
0x00,0x00,0x88,0xE8,0x9E,0xC8,0xBE,0x88,0x00,0x00,0x00,0x04,0xFE,0x00,0x00,0x00,
0x00,0xFC,0x02,0x02,0x02,0xFC,0x00,0x00,0x00,0x30,0x30,0x00,0x00,0x00,0x00,0x00,
0x04,0xFE,0x00,0x00,0x00,0x00,0x0C,0x82,0x42,0x22,0x1C,0x00,0x00,0x04,0x02,0x12,
0x12,0xEC,0x00,0x40,0xB0,0x88,0x84,0xFE,0x00,0x00,0x00,0xBE,0x12,0x12,0x12,0xE2,
0x00,0x00,0xF8,0x24,0x12,0x12,0xE6,0x00,0x00,0x20,0x90,0x50,0x50,0xE0,0x00,0x02,
0xFE,0x10,0x10,0x10,0xE0,0x00,0x00,0xE0,0x10,0x10,0x10,0x30,0x00,0x00,0xE0,0x10,
0x10,0x12,0xFE,0x00,0x00,0x80,0x78,0x46,0x78,0x80,0x00,0x02,0xFE,0x12,0x12,0x12,
0xEC,0x00,0xF8,0x04,0x02,0x02,0x02,0x06,0x00,0x02,0xFE,0x02,0x02,0x04,0xF8,0x00,
0x40,0xC0,0x78,0x43,0xC0,0x7B,0x40,0x00,0x00,0x10,0x10,0xFA,0x03,0x02,0x00,0x00,
0x00,0x71,0x0A,0x0A,0x0A,0x89,0x70,0x00,0x00,0x03,0x03,0xC0,0xC0,0x00,0x00,0x00,
0x02,0x13,0x12,0xF8,0x00,0x00,0x03,0x02,0x02,0x72,0x0A,0x08,0x08,0x89,0x72,0x02,
0x02,0x31,0x08,0x88,0x88,0x48,0x32,0x03,0x02,0x00,0xC0,0x21,0x12,0xFA,0x02,0x01,
0x00,0xF8,0x09,0x8A,0x8A,0x0A,0x09,0x00,0x00,0xE1,0x12,0x8A,0x8A,0x1B,0x02,0x00,
0x03,0x02,0x82,0x82,0x81,0x80,0x00,0x01,0x0A,0xFA,0x02,0x81,0x80,0x00,0x01,0x02,
0x02,0x02,0x03,0x82,0x82,0x83,0x02,0x00,0x02,0x03,0xC2,0x3A,0xE3,0x02,0x02,0x02,
0x09,0xF8,0x88,0x89,0x8A,0x72,0x02,0x01,0xC0,0x32,0x0B,0x0A,0x0A,0x09,0x38,0x00,
0x04,0x3F,0x04,0x04,0x3F,0x04,0x04,0x00,0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00,
0x00,0x30,0x28,0x24,0x22,0x21,0x30,0x00,0x00,0x00,0x00,0x30,0x30,0x00,0x00,0x00,
0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00,0x00,0x30,0x28,0x24,0x22,0x21,0x30,0x00,
0x00,0x18,0x20,0x20,0x20,0x11,0x0E,0x00,0x00,0x07,0x04,0x24,0x24,0x3F,0x24,0x00,
0x00,0x19,0x21,0x20,0x20,0x11,0x0E,0x00,0x00,0x0F,0x11,0x20,0x20,0x11,0x0E,0x00,
0x00,0x19,0x24,0x22,0x22,0x22,0x3F,0x20,0x00,0x3F,0x11,0x20,0x20,0x11,0x0E,0x00,
0x00,0x0E,0x11,0x20,0x20,0x20,0x11,0x00,0x20,0x3C,0x23,0x02,0x02,0x27,0x38,0x20,
0x20,0x3F,0x20,0x20,0x20,0x11,0x0E,0x00,0x07,0x18,0x20,0x20,0x20,0x10,0x08,0x00,
0x10,0x90,0xFE,0x10,0x10,0x90,0xFE,0x10,0x00,0x00,0x00,0x04,0x04,0xFE,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0xC0,0x30,0x08,0x04,0xFE,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x60,0x60,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x04,0xFE,0x00,0x00,0x00,0x00,
0x00,0x00,0x1C,0x02,0x02,0x02,0x02,0xC2,0x3C,0x00,0x00,0x00,0x1C,0x02,0x42,0x42,
0x62,0x9C,0x00,0x00,0x00,0x00,0x80,0x40,0x40,0x40,0x40,0x40,0x80,0x00,0x00,0x00,
0x02,0xFE,0x80,0x40,0x40,0x40,0x80,0x00,0x00,0x00,0x00,0x80,0x40,0x40,0x40,0x80,
0x00,0x00,0x00,0x00,0x00,0x80,0x78,0x06,0x78,0x80,0x00,0x00,0x00,0x00,0x02,0xFE,
0x42,0x42,0x42,0x62,0x9C,0x00,0x00,0x00,0xF0,0x08,0x04,0x02,0x02,0x02,0x04,0x0E,
0x04,0x3F,0x04,0x04,0x04,0x3F,0x04,0x04,0x00,0x00,0x00,0x20,0x20,0x3F,0x20,0x20,
0x00,0x00,0x00,0x00,0x03,0x02,0x02,0x22,0x22,0x3F,0x22,0x22,0x00,0x00,0x00,0x00,
0x00,0x30,0x30,0x00,0x00,0x00,0x00,0x00,0x00,0x20,0x20,0x3F,0x20,0x20,0x00,0x00,
0x00,0x00,0x30,0x28,0x24,0x22,0x21,0x20,0x38,0x00,0x00,0x00,0x1C,0x20,0x20,0x20,
0x20,0x10,0x0F,0x00,0x00,0x00,0x19,0x24,0x24,0x22,0x22,0x22,0x3F,0x20,0x30,0x00,
0x00,0x3F,0x10,0x20,0x20,0x20,0x10,0x0F,0x00,0x00,0x0F,0x10,0x20,0x20,0x20,0x11,
0x08,0x00,0x00,0x20,0x38,0x27,0x02,0x02,0x02,0x27,0x38,0x20,0x00,0x00,0x20,0x3F,
0x20,0x20,0x20,0x20,0x10,0x0F,0x00,0x00,0x07,0x18,0x20,0x20,0x20,0x20,0x10,0x0C,
};
void Delay1000ms() //@12.000MHz
{
unsigned char data i, j, k;
_nop_();
_nop_();
i = 61;
j = 225;
k = 62;
do
{
do
{
while (--k);
} while (--j);
} while (--i);
}
//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
//Pin Definition
//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
//sbit SCL3 = P3^2; // Serial Clock Input
//sbit SDA3 = P3^3; // Serial Data Input
//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
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();
//}
//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
bit busy;
void Start()
{
busy = 1;
I2CMSCR = 0x81; //����START����
while (busy);
}
void SendData(char dat)
{
I2CTXD = dat; //д���ݵ����ݻ�����
busy = 1;
I2CMSCR = 0x82; //����SEND����
while (busy);
}
void RecvACK()
{
busy = 1;
I2CMSCR = 0x83; //����ACK����
while (busy);
}
char RecvData()
{
busy = 1;
I2CMSCR = 0x84; //����RECV����
while (busy);
return I2CRXD;
}
void SendACK()
{
I2CMSST = 0x00; //����ACK�ź�
busy = 1;
I2CMSCR = 0x85; //����ACK����
while (busy);
}
void SendNAK()
{
I2CMSST = 0x01; //����NAK�ź�
busy = 1;
I2CMSCR = 0x85; //����ACK����
while (busy);
}
void Stop()
{
busy = 1;
I2CMSCR = 0x86; //����STOP����
while (busy);
}
void Delay()
{
int i;
for (i=0; i<3000; i++)
{
_nop_();
_nop_();
_nop_();
_nop_();
}
}
void Write_Command3(Uchar Data) //дָ��
{
Start();
SendData(0x00);
RecvACK();
SendData(Data);
RecvACK();
Stop();
}
void Write_Data3(u8 addr, u8 *p, u8 number)/*WordAddress,First Data Address,Byte lenth */
{
EAXSFR(); /* MOVX A,@DPTR/MOVX @DPTR,A???????????????SFR(XSFR) */
Start(); //???????????
SendData(0x00); //?????��???+��????
RecvACK();
SendData(addr); //????��???
RecvACK();
do
{
SendData(*p++);
RecvACK();
}
while(--number);
Stop(); //??????????
EAXRAM(); /* MOVX A,@DPTR/MOVX @DPTR,A???????????????RAM(XRAM) */
}
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(0x40); //--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(0xc9); //--set com(N-1)to com0c0:com0 to com(N-1)
Write_Command3(0xa8); //--set multiples ratio(1to64)
Write_Command3(0x3f); //--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(0xf1);
Write_Command3(0xda); //--set com pins hardware configuration
Write_Command3(0x12);
Write_Command3(0xdb); //--set vcomh
Write_Command3(0x40);
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 pic13(void)
{
Uchar i,j;
Uint k;
k=0;
for(j=0;j<8;j++)
{
Write_Command3(0x22);//--set page1
Write_Command3(j);//--set start page
Write_Command3(0x07);//--set end page
for(i=0;i<128;i++) //???????????LCD
{
Write_Data3(0,&color13,8);
k=k+1;
}
}
}
//
//
//void pic14(void)
//{
// Uchar i,j;
// Uint k;
// k=0;
// for(j=0;j<8;j++)
// {
// Write_Command3(0x22);//--set page1
// Write_Command3(j);//--set start page
// Write_Command3(0x07);//--set end page
//
// for(i=0;i<128;i++) //???????????LCD
// {
// Write_Data3(color14);
// k=k+1;
//
// }
// }
//}
void main (void)
{
GPIO_Init();
Uart_Init();
IIC_Init();
// ADC_Init();
LCD_Init3();
led = 0;
Delay1000ms();
led = 1;
Delay1000ms();
led = 0;
EA = 1;
// TI = 1;
// printf("��ʼ�����\n");
// TI = 0;
pic13();
while (1)
{
/* code */
}
}
void GPIO_Init (void)
{
//����IO����ģʽ
P0M0 = 0x00; P0M1 = 0x00;
P1M0 = 0x14; P1M1 = 0x08;
P2M0 = 0x00; P2M1 = 0x00;
P3M0 = 0x10; P3M1 = 0x80;
P4M0 = 0x00; P4M1 = 0x00;
P5M0 = 0x00; P5M1 = 0x00;
P6M0 = 0x00; P6M1 = 0x00;
P7M0 = 0x00; P7M1 = 0x00;
P1PU = 0xe0;
P1NCS = 0x00;
P1IE = 0xff;
P_SW2 |= 0x80; //ʹ�ܷ���XFR
P_SW2 |= 0x30; //�����SCL_4/P3.2, SDA_4/P3.3
}
void Uart_Init(void) //115200bps@22.1184MHz
{
SCON = 0x50; //8λ����,�ɱ䲨����
AUXR |= 0x40; //��ʱ��ʱ��1Tģʽ
AUXR &= 0xFE; //����1ѡ��ʱ��1Ϊ�����ʷ�����
TMOD &= 0x0F; //���ö�ʱ��ģʽ
TL1 = 0xD0; //���ö�ʱ��ʼֵ
TH1 = 0xFF; //���ö�ʱ��ʼֵ
ET1 = 0; //��ֹ��ʱ���ж�
ES = 1; //ʹ�ܴ����ж�
TR1 = 1; //��ʱ��1��ʼ��ʱ
}
void IIC_Init(void)
{
P_SW2 |= 0x80; //ʹ�ܷ���XFR
I2CCFG |= 0x80; //����I2C����
I2CCFG |= 0x40; //ʹ��I2C����ģʽ
I2CCFG |= 0x3f; //���������ٶ�
I2CMSCR = 0x80; //ʹ��I2C�ж�;
I2CMSAUX = 0x00; //�����Զ�����
}
void ADC_Init(void)
{
ADCTIM = 0x3f; //����ADC�ڲ�ʱ��
P_SW2 &= 0x7f;
ADCCFG = 0x00;
ADC_CONTR = 0xc0; //ʹ�ܲ�����ADCģ��
EADC = 1; //ʹ��ADC�ж�
// EA = 1;
}
//=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-
void UART1_Isr() interrupt 4
{
// if (TI)
//{
// TI = 0; //���жϱ�־
// //���ӷ��ʹ���
//
//}
if (RI)
{
RI = 0; //���жϱ�־
}
}
void I2C_Isr() interrupt 24
{
_push_(P_SW2);
P_SW2 |= 0x80;
if (I2CMSST & 0x40)
{
I2CMSST &= ~0x40; //���жϱ�־
led = !led; //���Զ˿�
busy = 0;
}
_pop_(P_SW2);
}
void ADC_Isr() interrupt 5
{
ADC_CONTR &= ~0x20; //���жϱ�־
P0 = ADC_RES; //���Զ˿�
P2 = ADC_RESL; //���Զ˿�
}
MCU:STC8H1K08
本帖最后由 liuyuhe 于 2023-5-25 10:38 编辑
MCU:STC8H1K08
屏幕:ssd1315
屏幕例程给的是软件模拟I2C,我想改成用硬件中断做的,好久没搞了不知道这个有啥问题,逻辑分析仪抓到的只有一个起始信号,仿真的时候recvack() 被跳过了没有执行
老刘爱捣鼓示波器,OLED12864的程序看过吗 ?
在开天斧程序包中下载
页:
[1]