要是有I2C的库就好了。
黑马 发表于 2012-3-20 17:14 static/image/common/back.gif
请教一下,我用4线SPI连接到MEGA,你的库文件,发现刷新一次数据要220ms左右,怎么都觉得不应该这么慢啊…… ...
没道理啊,我没用过MEGA那么高档的东西;P
SS1306的驱动,特别流畅,超过了很多LED屏的显示速度
悠然小调 发表于 2012-3-20 18:04 static/image/common/back.gif
要是有I2C的库就好了。
实在抱歉,我还不会自己写裤,只能改改。
这个裤驱动spi响应速度很快,做图形不错
哪位大师会用指令调节这个视频?
哪位大师会用指令调节这个OLED的亮度?
本帖最后由 thomas 于 2012-4-3 09:17 编辑
ssd1306说明书上查的指令,这个库里好像不带,396行写了功能,但空着。需要高人加入
//Set Fade Out and Blinking
//OLED_Send_Comm(0x23);
//OLED_Send_Comm(0x30);
我ssd1306.CCP里看到的是这行,可也是空的,郁闷
void SSD1306::ssd1306_set_brightness(uint8_t val) {
}
thomas 发表于 2012-3-21 09:30 static/image/common/back.gif
没道理啊,我没用过MEGA那么高档的东西
SS1306的驱动,特别流畅,超过了很多LED屏的显示速度
我实验的结果也是刷新一次耗时约200多ms.
Oled.display() 这函数,就占了200ms了.
乞求善心人士能提供8080的驱动...
我有8080的例子,谁会改
/**********************************************************************************************
Project Code : LM096-128064
Dot Matrix : 128X64
Driver IC : SSD1306Z
Interface : 8080
MCU : AT89C52
Revision : A
Date : 2011/9/18
Editor : Frank chen
Copyright (c): Li Yuan Electronics Co.,Ltd.
Contact us : Tel: +86 755 26523608Email: [email protected]
**********************************************************************************************/
#include "reg52.h"
#define high 1
#define low 0
#define DBL P0
/*************Pin Define***************/
sbit R_D=P1^2;
sbit W_R=P1^3;
sbit DC=P1^4;
sbit CS=P1^5;
sbit RES=P1^6;
/****************************************************/
void Initial_LY096BG30();
void Delay_50ms(unsigned int Del_50ms);
void Delay_1ms(unsigned int Del_1ms);
void Write_Command(unsigned char IIC_Command);
void Write_Data(unsigned char IIC_Data);
void fill_picture(unsigned char fill_Data);
void Picture_1();
/***********************Initial code*********************/
void Initial_LY096BG30()
{
Write_Command(0xAE); //display off
Write_Command(0x20); //Set Memory Addressing Mode
Write_Command(0x10); //00,Horizontal Addressing Mode;01,Vertical Addressing Mode;10,Page Addressing Mode (RESET);11,Invalid
Write_Command(0xb0); //Set Page Start Address for Page Addressing Mode,0-7
Write_Command(0xc8); //Set COM Output Scan Direction
Write_Command(0x00);//---set low column address
Write_Command(0x10);//---set high column address
Write_Command(0x40);//--set start line address
Write_Command(0x81);//--set contrast control register
Write_Command(0x7f);
Write_Command(0xa1);//--set segment re-map 0 to 127
Write_Command(0xa6);//--set normal display
Write_Command(0xa8);//--set multiplex ratio(1 to 64)
Write_Command(0x3F);//
Write_Command(0xa4);//0xa4,Output follows RAM content;0xa5,Output ignores RAM content
Write_Command(0xd3);//-set display offset
Write_Command(0x00);//-not offset
Write_Command(0xd5);//--set display clock divide ratio/oscillator frequency
Write_Command(0xf0);//--set divide ratio
Write_Command(0xd9);//--set pre-charge period
Write_Command(0x22); //
Write_Command(0xda);//--set com pins hardware configuration
Write_Command(0x12);
Write_Command(0xdb);//--set vcomh
Write_Command(0x20);//0x20,0.77xVcc
Write_Command(0x8d);//--set DC-DC enable
Write_Command(0x14);//
Write_Command(0xaf);//--turn on oled panel
}
/***********************Picture Code**************************/
unsigned char code show1[]=
{
0x00,0x00,0x00,0x00,0x00,0x01,0x01,0xFF,0x01,0x01,0x00,0x00,0x00,0x00,0x20,0xF1,
0x00,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0x07,0x19,0xE0,0x10,0x0D,0x03,0x01,0x01,
0x10,0xF0,0x00,0x00,0x10,0xF0,0x00,0x00,0x20,0x90,0x90,0x50,0xE0,0x00,0x20,0xF0,
0x20,0x10,0x10,0xE0,0x00,0x00,0x00,0x00,0x00,0x01,0x01,0xFF,0x21,0x21,0x21,0x71,
0x03,0x00,0x02,0xFF,0x00,0x00,0xE0,0x50,0x50,0x50,0x60,0x00,0x00,0xE0,0x10,0x10,
0x10,0x20,0x00,0x10,0xFC,0x10,0x10,0x20,0xF0,0x20,0x10,0x10,0x00,0xC0,0x20,0x10,
0x10,0x20,0xC0,0x00,0x20,0xF0,0x20,0x10,0x10,0xE0,0x00,0x20,0xF1,0x00,0x00,0xE0,
0x10,0x10,0x10,0x20,0x00,0x00,0x60,0x90,0x90,0x30,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x04,0x04,0x07,0x04,0x04,0x04,0x04,0x06,0x01,0x04,0x07,
0x04,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x04,0x04,0x07,0x04,0x04,0x00,0x00,0x00,
0x00,0x03,0x04,0x04,0x02,0x07,0x02,0x00,0x07,0x04,0x04,0x02,0x07,0x04,0x04,0x07,
0x04,0x00,0x04,0x07,0x04,0x00,0x00,0x00,0x00,0x04,0x04,0x07,0x04,0x04,0x04,0x04,
0x06,0x01,0x04,0x07,0x04,0x00,0x03,0x04,0x04,0x04,0x02,0x00,0x00,0x03,0x04,0x04,
0x04,0x02,0x00,0x00,0x07,0x04,0x02,0x04,0x07,0x04,0x00,0x00,0x00,0x01,0x02,0x04,
0x04,0x02,0x01,0x00,0x04,0x07,0x04,0x00,0x04,0x07,0x04,0x04,0x07,0x04,0x00,0x03,
0x04,0x04,0x04,0x02,0x00,0x00,0x06,0x04,0x04,0x03,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x80,0x80,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x80,0x80,
0x00,0x00,0x00,0x00,0x00,0x80,0x80,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x80,0x80,0x80,0x80,0x00,0x00,0x00,0x80,0x80,0x80,0x00,0x00,
0x00,0x00,0x80,0x80,0x80,0x80,0x80,0x80,0x00,0x80,0x80,0x80,0x80,0x80,0x80,0x00,
0x00,0x00,0x00,0x00,0x00,0x80,0x80,0x80,0x00,0x00,0x00,0x00,0x00,0x80,0x80,0x80,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x7F,0x80,0x80,0x80,0x7F,0x00,0x00,0x80,0x00,0x8F,0x90,0x50,0x30,
0x1F,0x00,0x7C,0x8A,0x85,0x84,0x78,0x00,0x88,0xFC,0x80,0x88,0xFC,0x88,0x04,0x84,
0xF8,0x80,0x00,0x78,0x84,0x84,0x4C,0x00,0x81,0xFF,0x88,0x04,0x84,0xF8,0x80,0x00,
0x00,0x00,0x3E,0x41,0x80,0x80,0x80,0x80,0x41,0x3E,0x00,0x80,0xFF,0x80,0x80,0x80,
0x80,0x40,0x80,0xFF,0x88,0x88,0x9C,0x81,0x40,0x80,0xFF,0x80,0x80,0x80,0x80,0x41,
0x3E,0x00,0x00,0x00,0x00,0x80,0xFF,0x81,0x0E,0x70,0x80,0x70,0x0E,0x81,0xFF,0x80,
0x00,0x00,0x78,0x84,0x84,0x84,0x78,0x00,0x00,0x78,0x84,0x84,0x49,0xFF,0x40,0x04,
0x7C,0x80,0x80,0x44,0xFC,0x40,0x81,0xFF,0x80,0x00,0x78,0x94,0x94,0x58,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x40,0x40,0x40,0x80,0xC0,0x00,
0x00,0x40,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x80,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0xC0,0x40,
0x40,0x40,0x80,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,0x80,0x40,0x40,0x40,0x80,0xC0,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x80,0xC0,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,0x71,0x22,0x42,0x44,0x44,0x39,0x00,
0x44,0x7E,0x40,0x44,0x7E,0x44,0x02,0x42,0x7C,0x40,0x00,0xEC,0x52,0x52,0x52,0x4E,
0x82,0x40,0x7F,0x40,0x00,0x3C,0x4A,0x4A,0x2C,0x00,0x00,0x00,0x00,0x40,0x7F,0x44,
0x04,0x04,0x03,0x00,0x00,0x3C,0x42,0x42,0x42,0x3C,0x00,0x02,0x1E,0x60,0x12,0x1E,
0x62,0x18,0x06,0x02,0x00,0x3C,0x4A,0x4A,0x2C,0x00,0x44,0x7E,0x44,0x02,0x00,0x00,
0x00,0x71,0x22,0x42,0x44,0x44,0x39,0x00,0x02,0x3E,0x40,0x40,0x22,0x7E,0x20,0x04,
0xFE,0x24,0x42,0x42,0x3C,0x00,0x04,0xFE,0x24,0x42,0x42,0x3C,0x00,0x40,0x7F,0x40,
0x02,0x0E,0x32,0xC0,0x3A,0x06,0x02,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,
0x00,0x00,0x80,0x40,0x40,0x40,0x80,0x00,0x80,0x40,0x40,0x40,0x80,0x00,0x80,0x40,
0x40,0x40,0x80,0x00,0x80,0x40,0x40,0x40,0x80,0x00,0x00,0x01,0x02,0xC2,0x22,0x02,
0x81,0x40,0x40,0xC0,0x00,0x00,0x80,0x40,0x40,0x40,0x80,0x00,0x80,0x40,0x40,0x40,
0x80,0x00,0x80,0x40,0x40,0x40,0x80,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x40,0x40,
0xC0,0x40,0x40,0x00,0x80,0x40,0x40,0x40,0x80,0x00,0x80,0x40,0x40,0x40,0xC0,0x00,
0x00,0x00,0x00,0x00,0x00,0x00,0x80,0x40,0x40,0x40,0x80,0x00,0x00,0x00,0x00,0xC2,
0x23,0x02,0x00,0x00,0x80,0xC0,0x02,0x03,0x02,0x00,0x00,0x00,0x00,0x00,0x80,0x40,
0x42,0x42,0xC3,0x00,0x40,0xC0,0x40,0x40,0x80,0x00,0x40,0x40,0xC0,0x40,0x40,0x00,
0x00,0x00,0x1D,0x22,0x22,0x22,0x1D,0x00,0x1F,0x20,0x20,0x20,0x1F,0x00,0x1D,0x22,
0x22,0x22,0x1D,0x00,0x1F,0x20,0x20,0x20,0x1F,0x00,0x40,0x38,0x06,0x01,0x00,0x00,
0x1F,0x22,0x22,0x22,0x1C,0x00,0x1D,0x22,0x22,0x22,0x1D,0x00,0x1F,0x20,0x20,0x20,
0x1F,0x00,0x1F,0x20,0x20,0x20,0x1F,0x00,0x80,0x60,0x00,0x00,0x00,0x00,0x20,0x20,
0x3F,0x20,0x20,0x00,0x31,0x28,0x24,0x22,0x21,0x00,0x1F,0x20,0x20,0x20,0x10,0x00,
0x80,0x60,0x00,0x00,0x00,0x00,0x10,0x20,0x22,0x22,0x1D,0x00,0x40,0x38,0x06,0x01,
0x00,0x00,0x04,0x0B,0x08,0x3F,0x28,0x00,0x02,0x02,0x02,0x02,0x02,0x00,0x31,0x22,
0x22,0x24,0x18,0x00,0x20,0x3F,0x22,0x02,0x01,0x00,0x20,0x20,0x3F,0x20,0x20,0x00,
};
/**********************************************
// Write Command
**********************************************/
void Write_Command(unsigned char RegisterName)
{
R_D=1;
CS=0;
DC=0;
DBL=RegisterName;
W_R=0;
W_R=1;
CS=1;
R_D=0;
}
/**********************************************
// Write Data
**********************************************/
void Write_Data(unsigned char RegisterValue)
{
R_D=1;
CS=0;
DC=1;
DBL=RegisterValue;
W_R=0;
W_R=1;
CS=1;
R_D=0;
}
/********************************************
// fill_Picture
********************************************/
void fill_picture(unsigned char fill_Data)
{
unsigned char m,n;
for(m=0;m<8;m++)
{
Write_Command(0xb0+m); //page0-page1
Write_Command(0x00); //low column start address
Write_Command(0x10); //high column start address
for(n=0;n<128;n++)
{
Write_Data(fill_Data);
}
}
}
/******************************************
// picture
******************************************/
void picture_1()
{
unsigned char x,y;
unsigned int i=0;
for(y=0;y<8;y++)
{
Write_Command(0xb0+y);
Write_Command(0x00);
Write_Command(0x10);
for(x=0;x<128;x++)
{
Write_Data(show1);
}
}
}
/***********************Delay****************************************/
void Delay_50ms(unsigned int Del_50ms) //delay50ms
{
unsigned int m;
for(;Del_50ms>0;Del_50ms--)
for(m=6245;m>0;m--);
}
void Delay_1ms(unsigned int Del_1ms) //delay1ms
{
unsigned char j;
while(Del_1ms--)
{
for(j=0;j<123;j++);
}
}
/*******************************Main*******************************/
void main(void)
{
RES=0;
Delay_1ms(10);
RES=1;
Delay_1ms(10);
Initial_LY096BG30();
Delay_1ms(5);
R_D=1;
while(1)
{
fill_picture(0xff); Delay_50ms(40);
fill_picture(0xf0); Delay_50ms(40);
Picture_1(); Delay_50ms(100);
}
}
thomas 发表于 2012-3-11 16:04 static/image/common/back.gif
编辑帖子老出错。先说接线图。
由于OLED多工作于3.3v,因此为了匹配输入端电压,用了一块缓冲器CD4050.
介 ...
4050的1脚接5V?感觉不太对呢?:o
本帖最后由 thomas 于 2012-4-14 10:57 编辑
应该对吧。我最近尝试在数据线串了100r电阻,工作正常
什么时候教教我烧mega8吧,调到天亮都没弄出来
哈哈我的最小系统还在理论阶段呢,准备在成品板上调试好了再研究
thomas 发表于 2012-4-14 10:55 static/image/common/back.gif
应该对吧。我最近尝试在数据线串了100r电阻,工作正常
什么时候教教我烧mega8吧,调到天亮都没弄出来
128064也是接1脚,那岂不是5V给oled供电?
thomas 发表于 2012-4-14 10:55 static/image/common/back.gif
应该对吧。我最近尝试在数据线串了100r电阻,工作正常
什么时候教教我烧mega8吧,调到天亮都没弄出来
mega8 的bootloader吗?这个弘毅不是写出来怎么烧了吗?还是什么问题!
8L也木问题。。。我改造了一个8L的。。。今天做完事情,明天补充个帖子。