06.10.2018, 17:48
|
|
Временная регистрация
Регистрация: 12.09.2018
Сообщений: 92
Сказал спасибо: 6
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Не работает экран 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;
}
|
|
|
|
06.10.2018, 17:55
|
|
Почётный гражданин KAZUS.RU
Регистрация: 03.01.2007
Адрес: Россия,Иркутская обл.
Сообщений: 2,579
Сказал спасибо: 351
Сказали Спасибо 315 раз(а) в 193 сообщении(ях)
|
Re: Не работает экран OLED 128X64 I2C на SSD1306, что не так?
Для проектов SSD1306 не понравился мне,вот nextion более интересен и стоит 1000 руб на али.
__________________
Глаза боятся,а руки делают.
|
|
|
|
06.10.2018, 20:10
|
|
Вид на жительство
Регистрация: 11.08.2015
Сообщений: 408
Сказал спасибо: 17
Сказали Спасибо 37 раз(а) в 28 сообщении(ях)
|
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.
Причина: Добавил фразу.
|
|
|
|
06.10.2018, 21:22
|
|
Временная регистрация
Регистрация: 12.09.2018
Сообщений: 92
Сказал спасибо: 6
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
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.
|
|
|
|
06.10.2018, 21:51
|
|
Почётный гражданин KAZUS.RU
Регистрация: 30.09.2006
Сообщений: 1,560
Сказал спасибо: 158
Сказали Спасибо 661 раз(а) в 431 сообщении(ях)
|
Re: Не работает экран OLED 128X64 I2C на SSD1306, что не так?
давайте уж, если тут хотите обсуждать свой вопрос - выкладывайте всё в первом посте. С чего все должны скакать по разным Вашим ссылкам?
|
|
|
|
06.10.2018, 22:03
|
|
Временная регистрация
Регистрация: 12.09.2018
Сообщений: 92
Сказал спасибо: 6
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: Не работает экран OLED 128X64 I2C на SSD1306, что не так?
Пока таймаут, я тут брудфорсом решил перебрать все 256 адресов,
есть активность - рисует кота с глюками, нужно время для локализации
правильного адреса!
|
|
|
|
07.10.2018, 00:01
|
|
Временная регистрация
Регистрация: 12.09.2018
Сообщений: 92
Сказал спасибо: 6
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
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, но должно же работать ?
|
|
|
|
07.10.2018, 09:38
|
|
Вид на жительство
Регистрация: 11.08.2015
Сообщений: 408
Сказал спасибо: 17
Сказали Спасибо 37 раз(а) в 28 сообщении(ях)
|
Re: Не работает экран OLED 128X64 I2C на SSD1306, что не так?
Разбирайтесь в I2C - TWI для Вашего микроконтроллера - ATMega48. Ногодрыг нафиг не нужен.
НУ да, форум, что-то косячит при добавлении кода. - Это я тоже заметил.
Последний раз редактировалось Signalshik2; 07.10.2018 в 10:33.
Причина: Добавил фразу.
|
|
|
|
07.10.2018, 12:09
|
|
Временная регистрация
Регистрация: 12.09.2018
Сообщений: 92
Сказал спасибо: 6
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
Re: Не работает экран OLED 128X64 I2C на SSD1306, что не так?
Я хочу научится с ним работать обоими способами, просто начал с этого потому что нашёл подходящий пример, другие примеры попадаются то на ассемблере, то для PIC или STM.
|
|
|
|
07.10.2018, 13:57
|
|
Временная регистрация
Регистрация: 12.09.2018
Сообщений: 92
Сказал спасибо: 6
Сказали Спасибо 0 раз(а) в 0 сообщении(ях)
|
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);
}
}
//--------------------------------------------------------------
}
}
|
|
|
|
Ваши права в разделе
|
Вы не можете создавать новые темы
Вы не можете отвечать в темах
Вы не можете прикреплять вложения
Вы не можете редактировать свои сообщения
HTML код Выкл.
|
|
|
Часовой пояс GMT +4, время: 07:05.
|
|