связанная с константой screen_1[1024]
main.h
Спойлер
#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 "I2C.h"
#include "SSD1306_I2C.h"
//--------------------------------------------------------------------------
const unsigned char PROGMEM screen_1[1024]= //НАДПИСЬ RADIOKOT.RU и РИСУНОК КОТА
{
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_ */
main.cpp
Спойлер
//===========#include "main.h"
//===========
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;
PORTC=0x00; //линии I2C никогда не должны включаться на выход c высоким уровнем если контроллер питается более 3,3v - монитор сгорит.
migalka(); //однократно мигаем тремя светодиодами по очереди
_delay_ms(500); //пауза перед инициализацией - для завершения переходных процессов включения дисплея
SSD1306_I2C_INIT(); //инициализация дисплея
SSD1306_I2C_CLR(); //очистка экрана дисплея
I2C_Start(); //рисуем кота
I2C_SendByte(NAME); //посыл адреса+0
I2C_SendByte(DATS);
for(unsigned int i=0;i<1024;i++)
{
//I2C_SendByte(pgm_read_byte(screen_1+i));
}
I2C_Stop();
_delay_ms(2000);
while(1)
{
//---------------------------------------------------------------------------------------------------------
PORTB |= (1<<0); // Мигает светодиодом на PB0 перед каждым блоком цифр 1 ... 5
_delay_ms(500);
PORTB &= ~(1<<0);
_delay_ms(500);
//---------------------------------------------------------------------------------------------------------
for(unsigned char k=0; k<5; k++)
{
I2C_Start();
I2C_SendByte(NAME);
I2C_SendByte(COM);
I2C_SendByte(0x21); //Set Column Address (21h)
I2C_SendByte(COM);
I2C_SendByte(115); //будем выводить между 115...
I2C_SendByte(COM);
I2C_SendByte(126); //...и 126 колонками
I2C_SendByte(COM);
I2C_SendByte(0x22); //Set Page Address (22h)
I2C_SendByte(COM);
I2C_SendByte(6); //Будем крутиться между 6-ой...
I2C_SendByte(COM);
I2C_SendByte(7); //...и 7-ой страницами (строчками)
I2C_SendByte(DATS);
for(unsigned int i=0; i<12; i++) //рисуем верхнюю часть цифры
{
I2C_SendByte(pgm_read_byte(DIGIT[k]+i));
}
for(unsigned int i=12; i<24;i++) //рисуем нижнюю часть цифры
{
I2C_SendByte(pgm_read_byte(DIGIT[k]+i));
}
I2C_Stop();
_delay_ms(1000);
}
}
//----------------------------------------------------------------------------------------------------------
}
- Вложения
-
- ATmega48P + SSD1306 (3).zip
- (104.39 КБ) 207 скачиваний
-
- ATmega48P + SSD1306 (ap.).zip
- (102.61 КБ) 194 скачивания



