Портал для радиолюбителей и разработчиков электроники · с 2003 годаРеклама на сайте
Найти компонент, схему или даташит

Даташиты, справочник отечественных приборов, схемы с разбором и живой форум


 
Опции темы

Не работает экран OLED 128X64 I2C на SSD1306, что не так?

Непрочитано 06.10.2018, 17:48  
Donker
Временная регистрация
 
Регистрация: 12.09.2018
Сообщений: 92
Сказал спасибо: 6
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
Donker на пути к лучшему
По умолчанию Не работает экран OLED 128X64 I2C на SSD1306, что не так?

Купил такой дисплей https://radiokot.ru/forum/download/file.php?id=315824

тут: http://ali.onl/16Oi

Хочу подключить его к ATmega48PA, нашёл пример работы на этом же сайте https://www.radiokot.ru/articles/77/
Там пример методом ногодрыга, что меня вполне устраивает, впрочем физически он подключен у меня на макетке на выход
аппаратной шины I2C так что я могу использовать оба варианта.

Выкладываю проект (https://radiokot.ru/forum/download/file.php?id=315825), сделан Atmel Studio 7 + схема Proteus 8.7

Для начала, почему он не хочет работать даже в Протеусе?

Подходящая ли протеуская модель?

Правильно ли подключены выводы в модели экрана, особенно к шине?

Схема из Протеуса (на осциллографе самое начало передачи на экран ):

https://radiokot.ru/forum/download/file.php?id=315840


Листинг кода из примера:

Нажмите, чтобы открыть спойлер

#define F_CPU 8000000UL

#include ‹avr/io.h›
#include ‹avr/pgmspace.h›
#include ‹util/delay.h›

#define CL_HI DDRA&=~(1‹‹0) //PORTA.0 = SCL = SCK
#define CL_LOW DDRA|=(1‹‹0) //PORTA.0
#define DA_HI DDRA&=~(1‹‹1) //PORTA.1 = SDA
#define DA_LOW DDRA|=(1‹‹1) //PORTA.1

#define LED_ON PORTD|=(1‹‹6) //для отладки
#define LED_OFF PORTD&=~(1‹‹6) //для отладки

#define NAME 0b01111000 //АДРЕС УСТРОЙСТВА НА ШИНЕ
#define DATS 0b01000000 //ПЕРЕДАЧА НЕСКОЛЬКИХ БАЙТ ДАННЫХ
#define DAT 0b11000000 //ПЕРЕДАЧА ОДНОГО БАЙТа ДАННЫХ
#define COM 0b10000000 //ПЕРЕДАЧА ОДНОГО БАЙТа КОМАНДЫ

//МАССИВ ДЛЯ ИНИЦИАЛИЗАЦИИ
//A0 - начало в правом углу; A1 - начало в левом углу
//C0 - начало снизу экрана; C8 - начало сверху экрана
//12 - прямая линия, 02, 22 - линия через строчку
//7F - яркость (максимум 0xFF)
unsigned char PROGMEM init[18]=
{
0xA8,0x3F,0xD3,0x00,0x40,0xA1,0xC8,0xDA,0x12,
0x81,0x7F,0xA4,0xA6,0xD5,0x80,0x8D,0x14,0xAF,
};

//НАДПИСЬ RADIOKOT.RU и РИСУНОК КОТА
unsigned char PROGMEM screen_1[1024]=
{
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0xE0, 0xE0, 0x60, 0x60, 0x60, 0xE0, 0xC0, 0x00,
0x00, 0x00, 0x00, 0xC0, 0xE0, 0xE0, 0xC0, 0x00,
0x00, 0x00, 0x00, 0xE0, 0xE0, 0x60, 0x60, 0x60,
0x60, 0xC0, 0x80, 0x00, 0x00, 0xE0, 0xE0, 0x00,
0x00, 0x80, 0xC0, 0xE0, 0x60, 0x60, 0x60, 0xE0,
0xC0, 0x80, 0x00, 0x00, 0xE0, 0xE0, 0x00, 0x00,
0x80, 0xE0, 0x60, 0x00, 0x00, 0x80, 0xC0, 0xE0,
0x60, 0x60, 0x60, 0xE0, 0xC0, 0x80, 0x00, 0x60,
0x60, 0x60, 0xE0, 0xE0, 0x60, 0x60, 0x60, 0x00,
0x00, 0x00, 0x00, 0x00, 0xE0, 0xE0, 0x60, 0x60,
0x60, 0xE0, 0xC0, 0x00, 0x00, 0xE0, 0xE0, 0x00,
0x00, 0x00, 0x00, 0xE0, 0xE0, 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,
0x7F, 0x7F, 0x06, 0x06, 0x1E, 0x7B, 0x73, 0x40,
0x00, 0x78, 0x7F, 0x1F, 0x18, 0x18, 0x1F, 0x7E,
0x70, 0x00, 0x00, 0x7F, 0x7F, 0x60, 0x60, 0x60,
0x70, 0x3F, 0x1F, 0x00, 0x00, 0x7F, 0x7F, 0x00,
0x00, 0x1F, 0x3F, 0x70, 0x60, 0x60, 0x60, 0x70,
0x3F, 0x1F, 0x00, 0x00, 0x7F, 0x7F, 0x06, 0x07,
0x1F, 0x78, 0x60, 0x40, 0x00, 0x1F, 0x3F, 0x70,
0x60, 0x60, 0x60, 0x70, 0x3F, 0x1F, 0x00, 0x00,
0x00, 0x00, 0x7F, 0x7F, 0x00, 0x00, 0x00, 0x00,
0x60, 0x60, 0x00, 0x00, 0x7F, 0x7F, 0x06, 0x06,
0x0E, 0x3F, 0x71, 0x40, 0x00, 0x1F, 0x3F, 0x70,
0x60, 0x60, 0x70, 0x3F, 0x1F, 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, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0xC0,
0xC0, 0xC0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0,
0xE0, 0xF0, 0xE0, 0xE0, 0xF0, 0x70, 0x70, 0xB0,
0xF0, 0xB0, 0xE0, 0x20, 0xE0, 0x60, 0xE0, 0xE0,
0xE0, 0xE0, 0xE0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0,
0x80, 0x80, 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, 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,
0x00, 0x80, 0xC0, 0xC0, 0xF0, 0xF0, 0xF8, 0xF8,
0xFC, 0xFC, 0xFE, 0xFE, 0xFF, 0xFF, 0x7F, 0xFF,
0xBF, 0xBF, 0xDF, 0xFF, 0xEF, 0xF7, 0xFB, 0xFF,
0xFB, 0xFD, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFD,
0xFD, 0xF7, 0xAF, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFE, 0xFC,
0xFC, 0xF8, 0xF8, 0xF0, 0xE0, 0xE0, 0xC0, 0xC0,
0x80, 0x80, 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, 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, 0xE0, 0xFC, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F,
0xBF, 0xFF, 0xCF, 0xF7, 0xFB, 0xFE, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F,
0x7F, 0x9F, 0xCF, 0xF2, 0xFF, 0xE7, 0xDF, 0x97,
0x37, 0x77, 0xFF, 0xF7, 0xEF, 0xEF, 0xEF, 0xFF,
0xF7, 0xF7, 0xF7, 0xF7, 0xFB, 0xFB, 0xFB, 0xFB,
0xFB, 0xFB, 0xFB, 0xFB, 0xFA, 0xF8, 0xF4, 0xF4,
0xFC, 0xE0, 0xE0, 0xE0, 0xF0, 0xF0, 0x78, 0x38,
0x98, 0x38, 0x18, 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, 0xE0, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0x7F, 0xDF, 0xFB, 0xFC, 0xFE, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xBF, 0xFF, 0xDF, 0xFF,
0xF7, 0xFF, 0xFF, 0xFD, 0xFE, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xDF, 0x7F,
0xDC, 0x5A, 0x54, 0x7F, 0x5F, 0x5F, 0x5F, 0x7F,
0x5F, 0x3F, 0xFF, 0xB3, 0xF9, 0xF3, 0xFF, 0xFF,
0xDF, 0xFF, 0xFF, 0xF3, 0xF9, 0xB3, 0x7F, 0x3F,
0x7F, 0x5F, 0x7F, 0x5F, 0x5F, 0x7C, 0x54, 0x91,
0x90, 0xA0, 0x00, 0xA0, 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, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0xFF, 0xEF,
0xF7, 0xFD, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF,
0xFF, 0xFD, 0xFD, 0xF7, 0xFE, 0xDF, 0xBE, 0xFF,
0x7E, 0x7F, 0x7E, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF,
0x7E, 0x7F, 0xBE, 0x1F, 0x6E, 0x43, 0xC1, 0x80,
0x02, 0x00, 0x01, 0x00, 0x01, 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, 0x07, 0x0F, 0x1F, 0x3F, 0x3F,
0x3F, 0x7F, 0x3F, 0x7F, 0x7F, 0x7F, 0x3F, 0x7F,
0x7F, 0x7F, 0x7F, 0x3F, 0x7F, 0x3F, 0x1F, 0x1F,
0x0F, 0x0F, 0x17, 0x1B, 0x1E, 0x1F, 0x0F, 0x0F,
0x0F, 0x1F, 0x0F, 0x0F, 0x0F, 0x0F, 0x1F, 0x0F,
0x0F, 0x0F, 0x1F, 0x0F, 0x0F, 0x0F, 0x1F, 0x0F,
0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F,
0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F,
0x1F, 0x1F, 0x1F, 0x1E, 0x1E, 0x1E, 0x14, 0x30,
0x20, 0x20, 0x30, 0x1A, 0x0E, 0x0E, 0x0E, 0x0F,
0x1F, 0x17, 0x13, 0x18, 0x18, 0x08, 0x09, 0x0F,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
};

//ЦИФРЫ
unsigned char PROGMEM DIGIT[5][24]=
{
{
0x00, 0x00, 0x00, 0x30, 0x30, 0xF8, 0xF8, 0x00, //1
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18,
0x18, 0x1F, 0x1F, 0x18, 0x18, 0x00, 0x00, 0x00,
},

{
0x00, 0x00, 0x30, 0x18, 0x18, 0x18, 0x98, 0xF8, //2
0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x1C,
0x1E, 0x1B, 0x19, 0x18, 0x18, 0x00, 0x00, 0x00,
},

{
0x00, 0x00, 0x30, 0x98, 0x98, 0x98, 0x98, 0xF8, //3
0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x19,
0x19, 0x19, 0x19, 0x1F, 0x0F, 0x00, 0x00, 0x00,
},

{
0x00, 0x00, 0x00, 0xC0, 0xF0, 0x38, 0xF8, 0xF8, //4
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07,
0x06, 0x06, 0x1F, 0x1F, 0x06, 0x00, 0x00, 0x00,
},

{
0x00, 0x00, 0xF8, 0xF8, 0x98, 0x98, 0x98, 0x98, //5
0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0D, 0x19,
0x19, 0x19, 0x19, 0x1F, 0x0F, 0x00, 0x00, 0x00,
},
};

//СТАРТ
void START (void)
{
DA_HI;
CL_HI;
DA_LOW;
CL_LOW;
}

//СТОП
void STOP (void)
{
DA_LOW;
CL_HI;
DA_HI;
}

//ПЕРЕДАЧА БАЙТА и АСК
void SEND (unsigned char data)
{
unsigned char k;

for(k=8;k›0;k--)
{
if(data&(1‹‹(k-1)))
{
CL_LOW;
DA_HI;
CL_HI;
CL_LOW;
}
else
{
CL_LOW;
DA_LOW;
CL_HI;
CL_LOW;
}
}

//ACK
DA_HI;
CL_HI;
if(!(PINA&(1‹‹1)))
CL_LOW;
}

//ИНИЦИАЛИЗАЦИЯ ДИСПЛЕЯ
void OLED_INIT (void)
{
unsigned char k;

START();
SEND(NAME);

for(k=0;k‹18;k++)
{
SEND(COM);
SEND(pgm_read_byte(init+k));
}

STOP();
}

//ОЧИСТКА ЭКРАНА ДИСПЛЕЯ
void CLR_SCR (void)
{
unsigned char k, kk;

START();
SEND(NAME);

//выбираем Horizontal Addressing Mode (заполнение экрана по типу того как читаем книгу)
SEND(COM);
SEND(0x20);
SEND(COM);
SEND(0x00);

//заполняем строку слева направо
SEND(DATS);
for(kk=0;kk‹8;kk++)
{
for(k=0;k‹128;k++) SEND(0x00); //LSB вверху, MSB снизу
}

STOP();
}

int main (void)
{
unsigned int k;
unsigned char kk;

CLKPR=0x80;
CLKPR=0x00; //предделитель отключён, рабочая частота 8 MHz

PORTA=0x00; //РА0 будет SCK, РА1 будет SDA
DDRA =0x00;

PORTD=0b00100000; //настройки СИДА для отладки, так можно обнулять
DDRD =0b01000000; //настройки СИДА для отладки, так можно обнулять

PORTB=0x00; //на всякий случай
DDRB =0x00; //на всякий случай

ACSR=0x80; //отключение компаратора для уменьшения потребления тока

_delay_ms(500); //пауза перед инициализацией - у меня очень нестабильное включение питания

OLED_INIT(); //инициализация дисплея
CLR_SCR(); //очистка экрана дисплея

while(1)
{
//рисуем кота
START();
SEND(NAME); //посыл адреса+0

SEND(DATS);
for(k=0;k‹1024;k++) SEND(pgm_read_byte(screen_1+k));

STOP();
_delay_ms(2000);

//последовательно выводим цифры от 1-го до 5-ти
while(1)
{
for(kk=0;kk‹5;kk++)
{
START();
SEND(NAME);

SEND(COM);
SEND(0x21); //Set Column Address (21h)
SEND(COM);
SEND(115); //будем выводить между 115...
SEND(COM);
SEND(126); //...и 126 колонками

SEND(COM);
SEND(0x22); //Set Page Address (22h)
SEND(COM);
SEND(6); //Будем крутиться между 6-ой...
SEND(COM);
SEND(7); //...и 7-ой страницами (строчками)

SEND(DATS);
for(k=0;k‹12;k++) SEND(pgm_read_byte(DIGIT[kk]+k)); //рисуем верхнюю часть цифры
for(k=12;k‹24;k++) SEND(pgm_read_byte(DIGIT[kk]+k)); //рисуем нижнюю часть цифры

STOP();
_delay_ms(1000);
}
}
}

return 0;
}

Реклама:
Donker вне форума  
Непрочитано 06.10.2018, 17:55  
CERGEI1982
Почётный гражданин KAZUS.RUN
 
Аватар для CERGEI1982
 
Регистрация: 03.01.2007
Адрес: Россия,Иркутская обл.
Сообщений: 2,578
Сказал спасибо: 351
Сказали Спасибо 315 раз(а) в 193 сообщении(ях)
CERGEI1982 на пути к лучшему
По умолчанию Re: Не работает экран OLED 128X64 I2C на SSD1306, что не так?

Для проектов SSD1306 не понравился мне,вот nextion более интересен и стоит 1000 руб на али.
__________________
Глаза боятся,а руки делают.
CERGEI1982 вне форума  
Непрочитано 06.10.2018, 20:10  
Signalshik2
Вид на жительство
 
Аватар для Signalshik2
 
Регистрация: 11.08.2015
Сообщений: 409
Сказал спасибо: 17
Сказали Спасибо 37 раз(а) в 28 сообщении(ях)
Signalshik2 на пути к лучшему
По умолчанию Re: Не работает экран OLED 128X64 I2C на SSD1306, что не так?

Сообщение от Donker Посмотреть сообщение
Код:
#include 
#include 
#include
- что это за пустые инклуды в файле - самое начало кода.
В Proteuse: Что-то резисторы подтяжки к +5(В) по шине I2C маловаты - обычно 4,7(кОм) ставят - Proteus все прощает.
Что за код бредовый вообще. ПОЛНЫЙ БРЕД!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!!
Сообщение от Donker Посмотреть сообщение
Код:
#define CL_HI DDRA&=~(1‹‹0) //PORTA.0 = SCL = SCK
#define CL_LOW DDRA|=(1‹‹0) //PORTA.0
#define DA_HI DDRA&=~(1‹‹1) //PORTA.1 = SDA
#define DA_LOW DDRA|=(1‹‹1) //PORTA.1
Косяки:
1) Во-первых, у микроконтроллера ATMega48 имеется свой собственный модуль TWI(I2C) - ему не надо через ноги портов обращаться;
2) И во-вторых, даже если Вы обращаетесь к шине I2C через ноги порта - зачем Вы все время обращаетесь к регистру направления данных(DDRA) и никогда не обращаетесь к самому порту(PORTC - для этого микроконтроллера)?

Последний раз редактировалось Signalshik2; 06.10.2018 в 20:31. Причина: Добавил фразу.
Signalshik2 вне форума  
Непрочитано 06.10.2018, 21:22  
Donker
Временная регистрация
 
Регистрация: 12.09.2018
Сообщений: 92
Сказал спасибо: 6
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
Donker на пути к лучшему
По умолчанию Re: Не работает экран OLED 128X64 I2C на SSD1306, что не так?

В копипастинг вкралась ошибка на самом деле:

Код:
#include avr/io.h›
#include avr/pgmspace.h›
#include util/delay.h›
вопрос к движку форума

Листинг не мой, а отсюда https://www.radiokot.ru/articles/77/ как то же он
картинку вывел!

Цитата:
2) И во-вторых, даже если Вы обращаетесь к шине I2C через ноги порта - зачем Вы все время обращаетесь к регистру направления данных(DDRA) и никогда не обращаетесь к самому порту(PORTC - для этого микроконтроллера)?
Я так понял, это такой костыль для AVR, что бы можно было использовать внешние резисторы подтяжки (я их уже поменял на 4,7к - не помогло) иначе рискую сжечь экран, когда он захочет прижать линии шины к земле. Это работает ведь на осциллографе есть сигнал!
https://radiokot.ru/forum/download/file.php?id=315840

Кстати, я через полчасика выложу более подробный скрин с осциллографа, на этом по моему вообще перепутан сигнал даты и тактирования.

Тут ещё тоже обсуждение идёт:https://radiokot.ru/forum/viewtopic....73218#p3473218

Последний раз редактировалось Donker; 06.10.2018 в 21:26.
Donker вне форума  
Непрочитано 06.10.2018, 21:51  
Ara41
Почётный гражданин KAZUS.RUN
 
Регистрация: 30.09.2006
Сообщений: 1,557
Сказал спасибо: 157
Сказали Спасибо 660 раз(а) в 430 сообщении(ях)
Ara41 на пути к лучшему
По умолчанию Re: Не работает экран OLED 128X64 I2C на SSD1306, что не так?

давайте уж, если тут хотите обсуждать свой вопрос - выкладывайте всё в первом посте. С чего все должны скакать по разным Вашим ссылкам?
Ara41 вне форума  
Непрочитано 06.10.2018, 22:03  
Donker
Временная регистрация
 
Регистрация: 12.09.2018
Сообщений: 92
Сказал спасибо: 6
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
Donker на пути к лучшему
По умолчанию Re: Не работает экран OLED 128X64 I2C на SSD1306, что не так?

Пока таймаут, я тут брудфорсом решил перебрать все 256 адресов,
есть активность - рисует кота с глюками, нужно время для локализации
правильного адреса!
Donker вне форума  
Непрочитано 07.10.2018, 00:01  
Donker
Временная регистрация
 
Регистрация: 12.09.2018
Сообщений: 92
Сказал спасибо: 6
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
Donker на пути к лучшему
По умолчанию Re: Не работает экран OLED 128X64 I2C на SSD1306, что не так?

Заработало с адресом 0b01111000 но глючно см. скрин (https://radiokot.ru/forum/download/file.php?id=315922)
Выкладываю подправленный проект с которого сделан скрин (https://radiokot.ru/forum/download/file.php?id=315919)

Каждый раз полоски в другом месте, один раз кот нарисовался нормально, почему так?

Цифры не выводятся вообще, почему?

Снижение частоты ,например, до 8мГц и 4мГц глюки не убирает.

Откуда на линии стробирования SCL берётся такая неравномерность битов
(промежутки плавно сокращаются в каждом байте, см. осциллограф на скрине)
это нормально ?

В железе ничего не работает, хотя если туда прошить другой проект, начинает нормально работать такой экран:
http://ali.onl/16RD (в режиме аппаратного I2C)

В на плате OLED экрана стоит стабилизатор на 3,3v и линии SCL SDA подтянуты к 3,3v резисторами по 10к.

Контроллер ATmega48PA питается от 5v, но должно же работать ?
Donker вне форума  
Непрочитано 07.10.2018, 09:38  
Signalshik2
Вид на жительство
 
Аватар для Signalshik2
 
Регистрация: 11.08.2015
Сообщений: 409
Сказал спасибо: 17
Сказали Спасибо 37 раз(а) в 28 сообщении(ях)
Signalshik2 на пути к лучшему
По умолчанию Re: Не работает экран OLED 128X64 I2C на SSD1306, что не так?

Разбирайтесь в I2C - TWI для Вашего микроконтроллера - ATMega48. Ногодрыг нафиг не нужен.
НУ да, форум, что-то косячит при добавлении кода. - Это я тоже заметил.

Последний раз редактировалось Signalshik2; 07.10.2018 в 10:33. Причина: Добавил фразу.
Signalshik2 вне форума  
Непрочитано 07.10.2018, 12:09  
Donker
Временная регистрация
 
Регистрация: 12.09.2018
Сообщений: 92
Сказал спасибо: 6
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
Donker на пути к лучшему
По умолчанию Re: Не работает экран OLED 128X64 I2C на SSD1306, что не так?

Я хочу научится с ним работать обоими способами, просто начал с этого потому что нашёл подходящий пример, другие примеры попадаются то на ассемблере, то для PIC или STM.
Donker вне форума  
Непрочитано 07.10.2018, 13:57  
Donker
Временная регистрация
 
Регистрация: 12.09.2018
Сообщений: 92
Сказал спасибо: 6
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
Donker на пути к лучшему
По умолчанию Re: Не работает экран OLED 128X64 I2C на SSD1306, что не так?

Добавил задержки, глюки без изменений.
Выкладываю новую версию проекта с задержками ( https://radiokot.ru/forum/download/file.php?id=315936 )
Вроде тайминги I2C не где не нарушены, подозрительное место - ответ экрана, девятый строб в датаграмме
в конце посылки каждого байта. (надо скачивать проект и смотреть в Протеусе)

Листинг кода этого проекта:

Нажмите, чтобы открыть спойлер
#ifndef MAIN_H_
#define MAIN_H_

#define F_CPU 20000000UL

#include ‹avr/io.h›
#include ‹avr/interrupt.h›
#include ‹util/delay.h›
#include ‹stdio.h›
#include ‹stdlib.h›


//----------------------------------------------------------------
#include ‹avr/pgmspace.h›

#define CL_HI DDRC&=~(1‹‹5) //PORTC.5 = SCL = SCK
#define CL_LOW DDRC|=(1‹‹5) //PORTC.5
#define DA_HI DDRC&=~(1‹‹4) //PORTC.4 = SDA
#define DA_LOW DDRC|=(1‹‹4) //PORTC.4


#define NAME 0b01111000 //АДРЕС УСТРОЙСТВА НА ШИНЕ
#define DATS 0b01000000 //ПЕРЕДАЧА НЕСКОЛЬКИХ БАЙТ ДАННЫХ
#define DAT 0b11000000 //ПЕРЕДАЧА ОДНОГО БАЙТа ДАННЫХ
#define COM 0b10000000 //ПЕРЕДАЧА ОДНОГО БАЙТа КОМАНДЫ

//МАССИВ ДЛЯ ИНИЦИАЛИЗАЦИИ
//A0 - начало в правом углу; A1 - начало в левом углу
//C0 - начало снизу экрана; C8 - начало сверху экрана
//12 - прямая линия, 02, 22 - линия через строчку
//7F - яркость (максимум 0xFF)


const unsigned char PROGMEM init[18]=
{
0xA8,0x3F,0xD3,0x00,0x40,0xA1,0xC8,0xDA,0x12,
0x81,0x7F,0xA4,0xA6,0xD5,0x80,0x8D,0x14,0xAF,
};

//НАДПИСЬ RADIOKOT.RU и РИСУНОК КОТА
const unsigned char PROGMEM screen_1[1024]=
{
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0xE0, 0xE0, 0x60, 0x60, 0x60, 0xE0, 0xC0, 0x00,
0x00, 0x00, 0x00, 0xC0, 0xE0, 0xE0, 0xC0, 0x00,
0x00, 0x00, 0x00, 0xE0, 0xE0, 0x60, 0x60, 0x60,
0x60, 0xC0, 0x80, 0x00, 0x00, 0xE0, 0xE0, 0x00,
0x00, 0x80, 0xC0, 0xE0, 0x60, 0x60, 0x60, 0xE0,
0xC0, 0x80, 0x00, 0x00, 0xE0, 0xE0, 0x00, 0x00,
0x80, 0xE0, 0x60, 0x00, 0x00, 0x80, 0xC0, 0xE0,
0x60, 0x60, 0x60, 0xE0, 0xC0, 0x80, 0x00, 0x60,
0x60, 0x60, 0xE0, 0xE0, 0x60, 0x60, 0x60, 0x00,
0x00, 0x00, 0x00, 0x00, 0xE0, 0xE0, 0x60, 0x60,
0x60, 0xE0, 0xC0, 0x00, 0x00, 0xE0, 0xE0, 0x00,
0x00, 0x00, 0x00, 0xE0, 0xE0, 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,
0x7F, 0x7F, 0x06, 0x06, 0x1E, 0x7B, 0x73, 0x40,
0x00, 0x78, 0x7F, 0x1F, 0x18, 0x18, 0x1F, 0x7E,
0x70, 0x00, 0x00, 0x7F, 0x7F, 0x60, 0x60, 0x60,
0x70, 0x3F, 0x1F, 0x00, 0x00, 0x7F, 0x7F, 0x00,
0x00, 0x1F, 0x3F, 0x70, 0x60, 0x60, 0x60, 0x70,
0x3F, 0x1F, 0x00, 0x00, 0x7F, 0x7F, 0x06, 0x07,
0x1F, 0x78, 0x60, 0x40, 0x00, 0x1F, 0x3F, 0x70,
0x60, 0x60, 0x60, 0x70, 0x3F, 0x1F, 0x00, 0x00,
0x00, 0x00, 0x7F, 0x7F, 0x00, 0x00, 0x00, 0x00,
0x60, 0x60, 0x00, 0x00, 0x7F, 0x7F, 0x06, 0x06,
0x0E, 0x3F, 0x71, 0x40, 0x00, 0x1F, 0x3F, 0x70,
0x60, 0x60, 0x70, 0x3F, 0x1F, 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, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80, 0xC0,
0xC0, 0xC0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0, 0xE0,
0xE0, 0xF0, 0xE0, 0xE0, 0xF0, 0x70, 0x70, 0xB0,
0xF0, 0xB0, 0xE0, 0x20, 0xE0, 0x60, 0xE0, 0xE0,
0xE0, 0xE0, 0xE0, 0xC0, 0xC0, 0xC0, 0xC0, 0xC0,
0x80, 0x80, 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, 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,
0x00, 0x80, 0xC0, 0xC0, 0xF0, 0xF0, 0xF8, 0xF8,
0xFC, 0xFC, 0xFE, 0xFE, 0xFF, 0xFF, 0x7F, 0xFF,
0xBF, 0xBF, 0xDF, 0xFF, 0xEF, 0xF7, 0xFB, 0xFF,
0xFB, 0xFD, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFD,
0xFD, 0xF7, 0xAF, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFE, 0xFE, 0xFC,
0xFC, 0xF8, 0xF8, 0xF0, 0xE0, 0xE0, 0xC0, 0xC0,
0x80, 0x80, 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, 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, 0xE0, 0xFC, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F,
0xBF, 0xFF, 0xCF, 0xF7, 0xFB, 0xFE, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F,
0x7F, 0x9F, 0xCF, 0xF2, 0xFF, 0xE7, 0xDF, 0x97,
0x37, 0x77, 0xFF, 0xF7, 0xEF, 0xEF, 0xEF, 0xFF,
0xF7, 0xF7, 0xF7, 0xF7, 0xFB, 0xFB, 0xFB, 0xFB,
0xFB, 0xFB, 0xFB, 0xFB, 0xFA, 0xF8, 0xF4, 0xF4,
0xFC, 0xE0, 0xE0, 0xE0, 0xF0, 0xF0, 0x78, 0x38,
0x98, 0x38, 0x18, 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, 0xE0, 0xFC, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0x7F, 0xDF, 0xFB, 0xFC, 0xFE, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xBF, 0xFF, 0xDF, 0xFF,
0xF7, 0xFF, 0xFF, 0xFD, 0xFE, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xDF, 0x7F,
0xDC, 0x5A, 0x54, 0x7F, 0x5F, 0x5F, 0x5F, 0x7F,
0x5F, 0x3F, 0xFF, 0xB3, 0xF9, 0xF3, 0xFF, 0xFF,
0xDF, 0xFF, 0xFF, 0xF3, 0xF9, 0xB3, 0x7F, 0x3F,
0x7F, 0x5F, 0x7F, 0x5F, 0x5F, 0x7C, 0x54, 0x91,
0x90, 0xA0, 0x00, 0xA0, 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, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFD, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0xFF, 0xEF,
0xF7, 0xFD, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF,
0xFF, 0xFD, 0xFD, 0xF7, 0xFE, 0xDF, 0xBE, 0xFF,
0x7E, 0x7F, 0x7E, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF,
0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFF,
0x7E, 0x7F, 0xBE, 0x1F, 0x6E, 0x43, 0xC1, 0x80,
0x02, 0x00, 0x01, 0x00, 0x01, 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, 0x07, 0x0F, 0x1F, 0x3F, 0x3F,
0x3F, 0x7F, 0x3F, 0x7F, 0x7F, 0x7F, 0x3F, 0x7F,
0x7F, 0x7F, 0x7F, 0x3F, 0x7F, 0x3F, 0x1F, 0x1F,
0x0F, 0x0F, 0x17, 0x1B, 0x1E, 0x1F, 0x0F, 0x0F,
0x0F, 0x1F, 0x0F, 0x0F, 0x0F, 0x0F, 0x1F, 0x0F,
0x0F, 0x0F, 0x1F, 0x0F, 0x0F, 0x0F, 0x1F, 0x0F,
0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F,
0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F, 0x1F,
0x1F, 0x1F, 0x1F, 0x1E, 0x1E, 0x1E, 0x14, 0x30,
0x20, 0x20, 0x30, 0x1A, 0x0E, 0x0E, 0x0E, 0x0F,
0x1F, 0x17, 0x13, 0x18, 0x18, 0x08, 0x09, 0x0F,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00,
};

//ЦИФРЫ
const unsigned char PROGMEM DIGIT[5][24]=
{
{
0x00, 0x00, 0x00, 0x30, 0x30, 0xF8, 0xF8, 0x00, //1
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18,
0x18, 0x1F, 0x1F, 0x18, 0x18, 0x00, 0x00, 0x00,
},

{
0x00, 0x00, 0x30, 0x18, 0x18, 0x18, 0x98, 0xF8, //2
0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x1C,
0x1E, 0x1B, 0x19, 0x18, 0x18, 0x00, 0x00, 0x00,
},

{
0x00, 0x00, 0x30, 0x98, 0x98, 0x98, 0x98, 0xF8, //3
0x70, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0C, 0x19,
0x19, 0x19, 0x19, 0x1F, 0x0F, 0x00, 0x00, 0x00,
},

{
0x00, 0x00, 0x00, 0xC0, 0xF0, 0x38, 0xF8, 0xF8, //4
0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x07, 0x07,
0x06, 0x06, 0x1F, 0x1F, 0x06, 0x00, 0x00, 0x00,
},

{
0x00, 0x00, 0xF8, 0xF8, 0x98, 0x98, 0x98, 0x98, //5
0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x0D, 0x19,
0x19, 0x19, 0x19, 0x1F, 0x0F, 0x00, 0x00, 0x00,
},
};


//----------------------------------------------------------------

#endif /* MAIN_H_ */


Нажмите, чтобы открыть спойлер
//================================================== ===============
#include "main.h"
//================================================== ===============


void START (void) //СТАРТ
{
DA_HI;
CL_HI;
DA_LOW;
_delay_us(1); //подобрать
CL_LOW;
}
void STOP (void) //СТОП
{
DA_LOW;
CL_HI;
_delay_us(1); //подобрать
DA_HI;
}
void SEND (unsigned char data) //ПЕРЕДАЧА БАЙТА и АСК
{
unsigned char k;

for(k=8;k›0;k--)
{
if(data&(1‹‹(k-1)))
{
CL_LOW;
DA_HI;
_delay_us(1); //подобрать
CL_HI;
_delay_us(1); //подобрать
CL_LOW;
}
else
{
CL_LOW;
DA_LOW;
_delay_us(1); //подобрать
CL_HI;
_delay_us(1); //подобрать
CL_LOW;
}
}
_delay_us(1); //подобрать
//ACK
DA_HI;
_delay_us(1); //подобрать
CL_HI;
_delay_us(1); //подобрать
if(!(PINC&(1‹‹4)))
CL_LOW;
_delay_us(3); //подобрать
}
void OLED_INIT (void) //ИНИЦИАЛИЗАЦИЯ ДИСПЛЕЯ
{
unsigned char k;

START();
SEND(NAME);

for(k=0;k‹18;k++)
{
SEND(COM);
SEND(pgm_read_byte(init+k));
}

STOP();
}
void CLR_SCR (void) //ОЧИСТКА ЭКРАНА ДИСПЛЕЯ
{
unsigned char k, kk;

START();
SEND(NAME);

//выбираем Horizontal Addressing Mode (заполнение экрана по типу того как читаем книгу)
SEND(COM);
SEND(0x20);
SEND(COM);
SEND(0x00);

//заполняем строку слева направо
SEND(DATS);
for(kk=0;kk‹8;kk++)
{
for(k=0;k‹128;k++) SEND(0x00); //LSB вверху, MSB снизу
}

STOP();
}

void migalka (void)
{

for (unsigned int i =0; i‹3; i++)
{
PORTB |= (1‹‹i);
_delay_ms(500);
PORTB &= ~(1‹‹i);
}

}

int main(void)
{

DDRB = 0b00000111;
PORTB = 0b00000000;

migalka(); //однократно мигаем тремя светодиодами по очереди

while(1)
{

unsigned int k;
unsigned char kk;


// CLKPR=0x80;
// CLKPR=0x00; //предделитель отключён, рабочая частота 8 MHz

PORTC=0x00; //РC5 будет SCK, РC4 будет SDA
DDRC =0x00;

// PORTD=0b00100000; //настройки СИДА для отладки, так можно обнулять
// DDRD =0b01000000; //настройки СИДА для отладки, так можно обнулять
//
// PORTB=0x00; //на всякий случай
// DDRB =0x00; //на всякий случай
//
// ACSR=0x80; //отключение компаратора для уменьшения потребления тока

_delay_ms(500); //пауза перед инициализацией - у меня очень нестабильное включение питания

OLED_INIT(); //инициализация дисплея
CLR_SCR(); //очистка экрана дисплея


//рисуем кота
START();
SEND(NAME); //посыл адреса+0

SEND(DATS);
for(k=0;k‹1024;k++) SEND(pgm_read_byte(screen_1+k));

STOP();



_delay_ms(2000);

while(1)
{
//-------------------------------------------------------------------------
PORTB |= (1‹‹0); // Мигает светодиодом на PB0 перед каждой цифрой
_delay_ms(500);
PORTB &= ~(1‹‹0);
_delay_ms(500);
//--------------------------------------------------------------------------
for(kk=0;kk‹5;kk++)
{
START();
SEND(NAME);

SEND(COM);
SEND(0x21); //Set Column Address (21h)
SEND(COM);
SEND(115); //будем выводить между 115...
SEND(COM);
SEND(126); //...и 126 колонками

SEND(COM);
SEND(0x22); //Set Page Address (22h)
SEND(COM);
SEND(6); //Будем крутиться между 6-ой...
SEND(COM);
SEND(7); //...и 7-ой страницами (строчками)

SEND(DATS);
for(k=0;k‹12;k++) SEND(pgm_read_byte(DIGIT[kk]+k)); //рисуем верхнюю часть цифры
for(k=12;k‹24;k++) SEND(pgm_read_byte(DIGIT[kk]+k)); //рисуем нижнюю часть цифры

STOP();
_delay_ms(1000);
}
}

//--------------------------------------------------------------
}
}
Donker вне форума  
 
Опции темы

Ваши права в разделе
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения

BB коды Вкл.
Смайлы Вкл.
[IMG] код Вкл.
HTML код Выкл.

Быстрый переход

Похожие темы
Тема Автор Раздел Ответов Последнее сообщение
OLED ssd1306 + STM32f030f4 miwutka Песочница (вопросы новичков) 195 07.01.2019 15:38
Видеокамера SONY DCR-HC35-просит настроить дату время - сенсорный экран не работает sobyninsk Видеотехника 3 25.12.2014 09:34
Не работает I2C в ATMega128 pifa AVR 1 05.09.2014 19:45
Atmega16 + 24c04 не работает в железе eu8cc Микроконтроллеры, АЦП, память и т.д 25 29.06.2012 21:54
Proteus 7.6sp0 не корректно работает I2C ( TWI ) в AVR. chapa Proteus 5 15.12.2010 09:41


Часовой пояс GMT +4, время: 00:28.


Powered by vBulletin® Version 3.8.4
Copyright ©2000 - 2026, Jelsoft Enterprises Ltd.