📄 my01.c
字号:
#include <REG2051.H>
#define DAT P1
sbit RD=P3^2;
sbit DC=P3^3;
sbit RES=P3^4;
sbit CS=P3^5;
sbit WR=P3^7;
sbit UP=P3^1;
sbit DOWN=P3^0;
unsigned char cc;
void WriteCommand(unsigned com);
void WriteData(unsigned dat);
void esbusini(void);
void ini_oled(void);
void ini_dis(void);
void delay(unsigned char);
/*unsigned char code d[256]={
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//",",8//
0x01,0xF0,0x01,0x0C,0x00,0x30,0x01,0xC0,0x00,0x30,0x01,0x0C,0x01,0xF0,0x01,0x00,//"w",0//
0x01,0xF0,0x01,0x0C,0x00,0x30,0x01,0xC0,0x00,0x30,0x01,0x0C,0x01,0xF0,0x01,0x00,//"w",1//
0x01,0xF0,0x01,0x0C,0x00,0x30,0x01,0xC0,0x00,0x30,0x01,0x0C,0x01,0xF0,0x01,0x00,//"w",2//
0x00,0x00,0x00,0x0C,0x00,0x0C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//".",3//
0x10,0x04,0x1F,0xFC,0x00,0x84,0x01,0x00,0x01,0x00,0x01,0x04,0x00,0xFC,0x00,0x04,//"h",4//
0x10,0x04,0x1F,0xFC,0x00,0x84,0x01,0x00,0x01,0x00,0x01,0x04,0x00,0xFC,0x00,0x04,//"h",5//
0x00,0x00,0x00,0x70,0x00,0x88,0x01,0x04,0x01,0x04,0x11,0x08,0x1F,0xFC,0x00,0x04,//"d",6//
0x00,0x00,0x01,0x84,0x01,0x0C,0x01,0x34,0x01,0x44,0x01,0x84,0x01,0x0C,0x00,0x00,//"z",7//
0x01,0xF0,0x01,0x0C,0x00,0x30,0x01,0xC0,0x00,0x30,0x01,0x0C,0x01,0xF0,0x01,0x00,//"w",8//
0x00,0x00,0x00,0x0C,0x00,0x0C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//".",9//
0x00,0x00,0x00,0x70,0x00,0x88,0x01,0x04,0x01,0x04,0x01,0x04,0x00,0x88,0x00,0x00,//"c",10//
0x00,0x00,0x00,0xF8,0x01,0x04,0x01,0x04,0x01,0x04,0x01,0x04,0x00,0xF8,0x00,0x00,//"o",11//
0x01,0x04,0x01,0xFC,0x01,0x04,0x01,0x00,0x01,0xFC,0x01,0x04,0x01,0x00,0x00,0xFC,//"m",12//
};*/
unsigned char code d[]={
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//" ",0//
0x1F,0xC0,0x10,0x3C,0x00,0xE0,0x1F,0x00,0x00,0xE0,0x10,0x3C,0x1F,0xC0,0x00,0x00,//"W",1//
0x1F,0xC0,0x10,0x3C,0x00,0xE0,0x1F,0x00,0x00,0xE0,0x10,0x3C,0x1F,0xC0,0x00,0x00,//"W",2//
0x1F,0xC0,0x10,0x3C,0x00,0xE0,0x1F,0x00,0x00,0xE0,0x10,0x3C,0x1F,0xC0,0x00,0x00,//"W",3//
0x00,0x00,0x00,0x0C,0x00,0x0C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//".",4//
0x01,0x04,0x01,0xFC,0x01,0x04,0x01,0x00,0x01,0xFC,0x01,0x04,0x01,0x00,0x00,0xFC,//"m",5//
0x01,0x01,0x01,0x81,0x01,0x71,0x00,0x0E,0x00,0x18,0x01,0x60,0x01,0x80,0x01,0x00,//"y",6//
0x00,0x00,0x00,0x70,0x00,0x88,0x01,0x04,0x01,0x04,0x01,0x04,0x00,0x88,0x00,0x00,//"c",7//
0x00,0x00,0x10,0x04,0x10,0x04,0x1F,0xFC,0x00,0x04,0x00,0x04,0x00,0x00,0x00,0x00,//"l",8//
0x01,0x00,0x01,0xF8,0x00,0x04,0x00,0x04,0x00,0x04,0x01,0x08,0x01,0xFC,0x00,0x04,//"u",9//
0x10,0x00,0x1F,0xFC,0x00,0x88,0x01,0x04,0x01,0x04,0x00,0x88,0x00,0x70,0x00,0x00,//"b",10//
0x00,0x00,0x0E,0x0C,0x10,0x14,0x10,0x24,0x10,0x44,0x11,0x84,0x0E,0x0C,0x00,0x00,//"2",11//
0x00,0x00,0x00,0x0C,0x00,0x0C,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,//".",12//
0x00,0x00,0x00,0x70,0x00,0x88,0x01,0x04,0x01,0x04,0x01,0x04,0x00,0x88,0x00,0x00,//"c",13//
0x00,0x00,0x00,0xF8,0x01,0x04,0x01,0x04,0x01,0x04,0x01,0x04,0x00,0xF8,0x00,0x00,//"o",14//
0x01,0x04,0x01,0xFC,0x01,0x04,0x01,0x00,0x01,0xFC,0x01,0x04,0x01,0x00,0x00,0xFC,//"m",15//
};
unsigned char code d1[256]={
0x28,0x04,0x24,0x08,0x22,0x32,0x21,0xC2,0x26,0xC2,0x38,0x34,0x04,0x04,0x18,0x08,
0xF0,0x30,0x17,0xC0,0x10,0x60,0x10,0x18,0x14,0x0C,0x18,0x06,0x10,0x04,0x00,0x00,/*"欢",0*/
0x02,0x02,0x82,0x04,0x73,0xF8,0x20,0x04,0x00,0x02,0x3F,0xE2,0x20,0x42,0x40,0x82,
0x40,0x02,0x3F,0xFA,0x20,0x02,0x20,0x42,0x20,0x22,0x3F,0xC2,0x00,0x02,0x00,0x00,/*"迎",1*/
0x01,0x00,0x02,0x00,0x0F,0xFE,0x34,0x00,0xC2,0x08,0x04,0x30,0x19,0xC0,0xF0,0x84,
0x50,0x02,0x17,0xFC,0x10,0x00,0x11,0x00,0x14,0xC0,0x38,0x38,0x10,0x10,0x00,0x00,/*"你",2*/
0x02,0x00,0x04,0x00,0x0F,0xFE,0x38,0x00,0xE0,0x02,0x4F,0x82,0x29,0x44,0x29,0x28,
0x29,0x30,0xFF,0xC8,0x29,0x08,0x29,0x0C,0x29,0x04,0x2F,0x86,0x20,0x04,0x00,0x00,/*"使",3*/
0x00,0x01,0x00,0x02,0x00,0x0C,0x7F,0xF0,0x44,0x40,0x44,0x40,0x44,0x40,0x44,0x40,
0x7F,0xFF,0x44,0x40,0x44,0x40,0x44,0x42,0x44,0x41,0x7F,0xFE,0x00,0x00,0x00,0x00,/*"用",4*/
0x04,0x44,0x0C,0x66,0x34,0xC4,0xC5,0x48,0x06,0x48,0x18,0x4A,0x00,0x02,0x10,0x02,
0x10,0x02,0x10,0x02,0x1F,0xFE,0x10,0x02,0x10,0x02,0x30,0x06,0x10,0x02,0x00,0x00,/*"红",5*/
0x20,0x40,0x20,0x80,0x23,0x00,0x3F,0xFF,0x28,0x00,0xF4,0x00,0x25,0xF8,0x25,0x10,
0x25,0x10,0x25,0xF8,0xF4,0x02,0x24,0x01,0x27,0xFE,0x24,0x00,0x24,0x00,0x00,0x00,/*"荷",6*/
0x00,0x00,0x00,0x00,0x1F,0xF0,0x12,0x20,0x12,0x20,0x12,0x20,0x12,0x20,0xFF,0xFC,
0x12,0x22,0x12,0x22,0x12,0x22,0x12,0x22,0x1F,0xF2,0x00,0x02,0x00,0x0E,0x00,0x00,/*"电",7*/
};
unsigned char code d2[]={
0x00,0x80,0x00,0x80,0x40,0x80,0x40,0x80,0x40,0x80,0x40,0x82,0x40,0x81,0x47,0xFE,
0x48,0x80,0x50,0x80,0x60,0x80,0x40,0x80,0x00,0x80,0x01,0x80,0x00,0x80,0x00,0x00,/*"子",0*/
0x00,0x02,0x20,0x0C,0x27,0xF0,0x22,0x00,0x32,0x00,0x2E,0x00,0x2A,0x00,0xA2,0x00,
0x62,0x00,0x26,0x00,0x2A,0x00,0x32,0x00,0x22,0x00,0x26,0x00,0x22,0x00,0x00,0x00,/*"产",1*/
0x00,0x00,0x00,0xFE,0x00,0x84,0x00,0x84,0x7E,0x84,0x44,0x84,0x44,0xFE,0x44,0x00,
0x44,0xFE,0x44,0x84,0x44,0x84,0x7E,0x84,0x00,0x84,0x00,0xFE,0x00,0x00,0x00,0x00,/*"品",2*/
0x00,0x01,0x00,0x0D,0x00,0x0E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*",",3*/
0x08,0x00,0x8F,0x01,0x68,0x01,0x11,0xFA,0x09,0x02,0x13,0x04,0x23,0x08,0xE5,0x70,
0x25,0x08,0x39,0x08,0x25,0x04,0x33,0xF6,0x32,0x03,0x21,0x02,0x01,0x00,0x00,0x00,/*"资",4*/
0x04,0x10,0x24,0x60,0x15,0x80,0x0E,0x00,0xFF,0xFF,0x16,0x00,0x25,0x80,0x04,0x40,
0x42,0x40,0x31,0xC0,0x00,0x40,0x00,0x40,0xFF,0xFF,0x00,0x80,0x00,0x80,0x00,0x00,/*"料",5*/
0x00,0x00,0x20,0x80,0x20,0x82,0x20,0x84,0x21,0x18,0x31,0xE0,0xAA,0x00,0x64,0x00,
0x24,0x00,0x2A,0x00,0x31,0xFF,0x21,0x00,0x20,0x80,0x20,0xC0,0x20,0x80,0x00,0x00,/*"齐",6*/
0x00,0x00,0x01,0x02,0x02,0x02,0x06,0x22,0x0A,0x22,0x12,0x22,0x22,0x22,0xC3,0xFE,
0x22,0x22,0x12,0x22,0x0A,0x22,0x0E,0x62,0x06,0x22,0x04,0x06,0x00,0x02,0x00,0x00,/*"全",7*/
0x00,0x01,0x00,0x0D,0x00,0x0E,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,/*",",8*/
};
unsigned char code d3[]=
{
0x02,0x00,0x42,0x00,0x32,0x00,0x23,0xFE,0x00,0x04,0x44,0x08,0x55,0xFF,0x55,0x50,
0x55,0x50,0xFD,0x50,0x55,0x52,0x55,0x51,0x55,0xFE,0x44,0x00,0x04,0x00,0x00,0x00,/*"请",0*/
0x02,0x00,0x82,0x00,0x72,0x00,0x23,0xFC,0x00,0x08,0x10,0x12,0x10,0x04,0x10,0x18,
0x90,0xE0,0x7F,0x00,0x52,0x04,0x12,0x06,0x12,0x04,0x13,0xF8,0x10,0x00,0x00,0x00,/*"访",1*/
0x00,0x00,0x00,0x00,0x1F,0xFF,0x80,0x00,0x60,0x00,0x07,0xC0,0x44,0x40,0x44,0x40,
0x44,0x40,0x44,0x40,0x47,0xC0,0x40,0x02,0x40,0x01,0x7F,0xFE,0x00,0x00,0x00,0x00,/*"问",2*/
0x04,0x44,0x0C,0x66,0x34,0xC4,0xC5,0x48,0x06,0x48,0x18,0x4A,0x00,0x02,0x10,0x02,
0x10,0x02,0x10,0x02,0x1F,0xFE,0x10,0x02,0x10,0x02,0x30,0x06,0x10,0x02,0x00,0x00,/*"红",3*/
0x20,0x40,0x20,0x80,0x23,0x00,0x3F,0xFF,0x28,0x00,0xF4,0x00,0x25,0xF8,0x25,0x10,
0x25,0x10,0x25,0xF8,0xF4,0x02,0x24,0x01,0x27,0xFE,0x24,0x00,0x24,0x00,0x00,0x00,/*"荷",4*/
0x00,0x00,0x00,0x00,0x1F,0xF0,0x12,0x20,0x12,0x20,0x12,0x20,0x12,0x20,0xFF,0xFC,
0x12,0x22,0x12,0x22,0x12,0x22,0x12,0x22,0x1F,0xF2,0x00,0x02,0x00,0x0E,0x00,0x00,/*"电",5*/
0x00,0x80,0x00,0x80,0x40,0x80,0x40,0x80,0x40,0x80,0x40,0x82,0x40,0x81,0x47,0xFE,
0x48,0x80,0x50,0x80,0x60,0x80,0x40,0x80,0x00,0x80,0x01,0x80,0x00,0x80,0x00,0x00,/*"子",6*/
0x00,0x00,0x7F,0xFE,0x40,0x10,0x48,0x20,0x44,0xC0,0x43,0x00,0x44,0xC0,0x58,0x30,
0x44,0x20,0x42,0x40,0x41,0x80,0x4E,0x64,0x44,0x06,0x7F,0xFC,0x00,0x00,0x00,0x00,/*"网",0*/
};
void timer0(void) interrupt 1 using 1
{ TH0=(65535-50000)/256; //50ms定时
TL0=(65535-50000)%256;
cc++;
if(cc>200)
{
cc=0;WriteCommand(0xAE);
}
}
void main()
{
unsigned int j;
unsigned char b=0x20;
// unsigned char cc;
ini_oled();
WriteCommand(0xaf);
WriteCommand(0xAD); /* Set DC-DC */
WriteCommand(0x8B); /* 8B=ON, 8A=Off */
WriteCommand(0xaf);
WriteCommand (0xb6); //设置显示位置—行
WriteCommand (0x00); //设置显示位置—列低地址
WriteCommand (0x10); //设置显示位置—列高地址
for(j=1;j<=255;j+=2)
WriteData(d[j]); //屏幕显示,全亮
WriteCommand (0xb7); //设置显示位置—行
WriteCommand (0x00); //设置显示位置—列低地址
WriteCommand (0x10); //设置显示位置—列高地址
for(j=0;j<=255;j+=2)
WriteData(d[j]); //屏幕显示,全亮
//-----------------------------------------------------------------------
WriteCommand (0x40);
WriteCommand (0xb4); //设置显示位置—行
WriteCommand (0x00); //设置显示位置—列低地址
WriteCommand (0x10); //设置显示位置—列高地址
for(j=1;j<=255;j+=2)
WriteData(d1[j]); //屏幕显示,全亮
WriteCommand (0xb5); //设置显示位置—行
WriteCommand (0x00); //设置显示位置—列低地址
WriteCommand (0x10); //设置显示位置—列高地址
for(j=0;j<255;j+=2)
WriteData(d1[j]); //屏幕显示,全亮
//-----------------------------------------------------------------------
WriteCommand (0x40);
WriteCommand (0xb2); //设置显示位置—行
WriteCommand (0x00); //设置显示位置—列低地址
WriteCommand (0x10); //设置显示位置—列高地址
for(j=1;j<=255;j+=2)
WriteData(d2[j]); //屏幕显示,全亮
WriteCommand (0xb3); //设置显示位置—行
WriteCommand (0x00); //设置显示位置—列低地址
WriteCommand (0x10); //设置显示位置—列高地址
for(j=0;j<255;j+=2)
WriteData(d2[j]); //屏幕显示,全亮
//-----------------------------------------------------------------------
WriteCommand (0x40);
WriteCommand (0xb0); //设置显示位置—行
WriteCommand (0x00); //设置显示位置—列低地址
WriteCommand (0x10); //设置显示位置—列高地址
for(j=1;j<=255;j+=2)
WriteData(d3[j]); //屏幕显示,全亮
WriteCommand (0xb1); //设置显示位置—行
WriteCommand (0x00); //设置显示位置—列低地址
WriteCommand (0x10); //设置显示位置—列高地址
for(j=0;j<255;j+=2)
WriteData(d3[j]); //屏幕显示,全亮
TMOD=0X11;
TH0=(65535-50000)/256;
TL0=(65535-50000)%256;
TR0=1;//启动计时器
ET0=1;
EA=1;
while(1)
{
if(!DOWN)
{ delay(10);
if(!DOWN)
{
cc=0;
WriteCommand(0xAf); // AF=ON , AE=OFF
b-=5;
if(b<0) b=255;
WriteCommand(0x81);
WriteCommand(b);
}
}
if(!UP)
{ delay(10);
if(!UP)
{
cc=0;
WriteCommand(0xAF); // AF=ON , AE=OFF
b+=5;
if(b>255) b=0;
WriteCommand(0x81);
WriteCommand(b);
}
} // key panduan
}
}
/**************************实现函数********************************************
*函数原型: unsigned char ReadCommand(void);
*功 能: 从oled上读当前命令到控制器。
*******************************************************************************/
void WriteCommand(unsigned com)
{
CS=1;
DC=0;
WR=0;
RD=1;
CS=0;
DAT=com;
CS=1;
}
/**************************实现函数********************************************
*函数原型: void WriteData(unsigned dat);
*功 能: 写数据到oled显示屏。
*******************************************************************************/
void WriteData(unsigned dat)
{
CS=1;
DC=1;
WR=0;
RD=1;
CS=0;
DAT=dat;
CS=1;
}
/**************************实现函数********************************************
*函数原型: void esbusini(void);
*功 能: 总线初始化。
*******************************************************************************/
void esbusini(void)
{
RES=0;
RES=1;
}
/**************************实现函数********************************************
*函数原型: void ini_dis(void);
*功 能: 显示初始化。
*******************************************************************************/
void ini_dis(void)
{
unsigned char i,j;
for(i=0;i<8;i++)
{
WriteCommand (0xb0+i); //设置显示位置—行
WriteCommand (0x00); //设置显示位置—列低地址
WriteCommand (0x10); //设置显示位置—列高地址
for(j=0;j<128;j++)
WriteData(0x00); //屏幕显示,全亮
}
}
/**************************实现函数********************************************
*函数原型: void ini_oled(void);
*功 能: oled显示的准备工作。
*******************************************************************************/
void ini_oled(void)
{
esbusini();
/*************************************************
// SSD1303 Initialization Command
*************************************************/
// Lower Column Address
WriteCommand(0x00); /* Set Lower Column Address */
// High Column Address
WriteCommand(0x10); /* Set Higher Column Address*/
// Display Start Line
WriteCommand(0x40); /* Set Display Start Line */
// Contrast Control Register
WriteCommand(0x81); /* Set Contrast Control */
WriteCommand(0x20); /* 0 ~ 255 */
// Re-map
WriteCommand(0xA0); /* [A0]:column address 0 is map
to SEG0 , [A1]: columnaddress 131 is map to SEG0*/
// Entire Display ON/OFF
WriteCommand(0xA4); /* A4=ON */
// Normal or Inverse Display
WriteCommand(0XA6); /* Normal Display*/
// Multiplex Ratio
WriteCommand(0xA8); /* Set Multiplex Ratio */
WriteCommand(0x3f); /* Set to 36 Mux*/
// Set DC-DC
WriteCommand(0xAD); /* Set DC-DC */
WriteCommand(0x8A); /* 8B=ON, 8A=Off */
// Display ON/OFF
WriteCommand(0xAE); /* AF=ON , AE=OFF*/
// Display Offset
WriteCommand(0xD3); /* Set Display Offset */
WriteCommand(0x00); /* No offset */
// Display Clock Divide
WriteCommand(0xD5); /* Set Clock Divide */
WriteCommand(0x20); /* Set to 80Hz */
// Area Color Mode
WriteCommand(0xD8); /* Set Area Color On or Off*/
WriteCommand(0x00); /* Mono Mode */
// COM Pins Hardware Configuration
WriteCommand(0xDA); /* Set Pins HardwareConfiguration */
WriteCommand(0x12);
// VCOMH
WriteCommand(0xDB); /* Set VCOMH */
WriteCommand(0x00);
// VP
WriteCommand(0xD9); /* Set VP */
WriteCommand(0x22); /* P1=2 , P2=2 */
WriteCommand(0xc0);//配置成标准应用
ini_dis();
}
void delay(unsigned char m)
{
unsigned char i,j;
while(--m)
{
for(i=0;i<50;i++)
for(j=0;j<80;j++);
}
}
⌨️ 快捷键说明
复制代码
Ctrl + C
搜索代码
Ctrl + F
全屏模式
F11
切换主题
Ctrl + Shift + D
显示快捷键
?
增大字号
Ctrl + =
减小字号
Ctrl + -