标题:
SSD1306驱动程序
[打印本页]
作者:
单片机学习习
时间:
2025-7-19 18:12
标题:
SSD1306驱动程序
#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
//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
#define SCL3 P1_1 // Serial Clock Input
#define SDA3 P1_2 // 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();
}
//-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=-=
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 main()
{
LCD_Init3();
while(1)
{
pic13();
delay_ms(10);
}
}
复制代码
OLED12832程序.zip
(29.03 KB, 下载次数: 0)
2025-7-19 18:19 上传
点击文件名下载附件
源程序
下载积分: 黑币 -5
SSD1306-OLED驱动芯片中文手册.pdf
(1.64 MB, 下载次数: 0)
2025-7-19 18:14 上传
点击文件名下载附件
中文手册
下载积分: 黑币 -5
复制代码
原理图: 无
仿真: 无
代码:
00.png
(400.47 KB, 下载次数: 0)
下载附件
2025-7-20 21:15 上传
显示效果
作者:
WFX777888
时间:
2025-7-24 06:40
谢谢分享资料
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1