標(biāo)題:
I2C SSD1306 OLED的說明資料及51單片機(jī)example代碼
[打印本頁]
作者:
素食主義
時間:
2017-10-21 15:38
標(biāo)題:
I2C SSD1306 OLED的說明資料及51單片機(jī)example代碼
關(guān)于SSD1306基礎(chǔ)example 以及調(diào)色設(shè)置。
望采納~
0.png
(41.36 KB, 下載次數(shù): 42)
下載附件
2017-10-21 23:14 上傳
所有資料51hei提供下載:
0.96-IIC參考.rar
(2.33 MB, 下載次數(shù): 99)
2017-10-21 15:36 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
單片機(jī)源程序如下:
//=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
#include <at89x51.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
//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
//0.66bule
#define RES3 P3_0 // Reset
#define SCL3 P3_1 // Serial Clock Input
#define SDA3 P3_2 // Serial Data Input
code color13[]={
/*------------------------------------------------------------------------------
; 源文件 / 文字 : C:\Documents and Settings\Administrator\桌面\新建文件夾 (2)\logo.bmp字模
; 寬×高(像素): 128×64
------------------------------------------------------------------------------*/
//0x80,0x40,0x10,//寬的像素數(shù),高的像素數(shù),寬的字節(jié)數(shù),參數(shù)設(shè)置可選
0xFF,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,0x01,
…………限于本文篇幅 余下代碼請從51黑下載附件…………
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 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)
{
RES3=0;
//uDelay(2);
RES3=1;
//internal setting
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 com0 c0: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++) //顯示單色數(shù)據(jù)到LCD
{
Write_Data3(color13[k]);
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++) //顯示單色數(shù)據(jù)到LCD
{
Write_Data3(color14[k]);
k=k+1;
}
}
}
//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
void main()
{
LCD_Init3();
while(1)
{
pic13();
delay_ms(10);
pic14();
delay_ms(10);
}
}
復(fù)制代碼
作者:
kuqihanyan
時間:
2018-6-3 05:15
感謝,正需要
作者:
lixingzhe8
時間:
2019-2-14 14:59
正需要
作者:
小鍵
時間:
2020-3-1 17:44
頭文件,附件里面沒有,能發(fā)一下完整的代碼嗎?
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1