Обсуждаем цифровые устройства...
Ответить

Re: Копировщик RFID-ключей T5557

Чт июл 06, 2017 10:47:02

Доработал схему с первой страницы. А именно, убрал МС MAX232 и сом-разъем. Вместо этого применил китайский переходник за 40 рублей на чипе CH340. Теперь копир стыкуется с компом сразу по USB-разъему.
Развел плату на smd элементах, кроме процессора, кварца и дросселя.
На плате есть место под три конденсатора для настройки контура: у меня получилось два 1,8нФ и 270 пФ.
Дроссель применил в виде резистора с индуктивностью 820 мкГн, на самом деле по прибору - 780 мкГн. Исходя из этой индуктивности и частоты 125 кГц рассчитал емкость.
В итоге напряжение 42 вольта.
Транзисторы применил ВС847 и ВС857
В архивных файлах имеется вся необходимая информация для повторения. Схема работает через комп, т.е. без выносного дисплея.
Вложения
ФотоДляФорума.rar
Фото плат и переходника
(54.3 KiB) Скачиваний: 529
АрхивДляФорума.rar
Схема, плата, файлы прошивок
(26.55 KiB) Скачиваний: 568

Re: Копировщик RFID-ключей T5557

Ср июл 26, 2017 12:09:54

Помогите разобраться пожалуйста. Пытаюсь подключить дисплей к копиру но он почему-то могает при подключении одного из контактов платы к компаратору. Вчем может быть проблема? https://youtu.be/AaxSsCNGLMg

Re: Копировщик RFID-ключей T5557

Чт июл 27, 2017 18:34:56

А что это за дисплей? И зачем вы подключаете к компаратору контакты (дисплея?) ? А питаете вы подсветку дисплея от 12 вольт? Не может просто подсветка мерцать (проседает напряжение?) ?

Re: Копировщик RFID-ключей T5557

Пт июл 28, 2017 15:50:59

А что это за дисплей? И зачем вы подключаете к компаратору контакты (дисплея?) ? А питаете вы подсветку дисплея от 12 вольт? Не может просто подсветка мерцать (проседает напряжение?) ?


Похоже на питание нестабилизированным напряжением.

Re: Копировщик RFID-ключей T5557

Вс июл 30, 2017 22:03:24

А что это за дисплей?


ST7735 128x160 Изображение

И зачем вы подключаете к компаратору контакты (дисплея?) ?

Я не подключаю дисплей к компоратору он используется у вас в коде:
Код:
ACSR=(0<<ACD)|(0<<ACBG)|(0<<ACO)|(0<<ACI)|(1<<ACIE)|(0<<ACIC)|(0<<ACIS1)|(0<<ACIS0);

Или я ошибаюсь?

А питаете вы подсветку дисплея от 12 вольт?

подсветка не мерцает дисплей загружается и потом срабатывает прерывание я так понимаю и он тупо перезагружается и так без конца. Если в приведенной выше строчке отключить прерывание то магать перестает. Да кстати питание подсветки у этого дисплея от 3в начинается я питаю подсветку 5 в.


Похоже на питание нестабилизированным напряжением.

На дисплее стаит стабилизатор напряжении на 3 в
Изображение

Дисплей подключен через SPI

PB5 ----------
PB3 ----------
gnd ----------
PD5 ----------
PB0 ----------

Re: Копировщик RFID-ключей T5557

Пн июл 31, 2017 07:03:47

подсветка не мерцает дисплей загружается


Может, это не дисплей перезагружается, а атмега? Попробуйте на другой атмеге - вдруг у вас китайская отбраковка.

Re: Копировщик RFID-ключей T5557

Пн июл 31, 2017 17:09:48

Но до этого я пробывал запускать этот проект на этой же атмеге только с 1604 все работало замечательно страно. Ладно буду пробывать на другой атмеге.

Добавлено after 7 hours 14 minutes 44 seconds:
Перекинул reset на pd0 мирцание прекратилось появился новый глук. https://youtu.be/qWlefTcxpbw походу у меня где-то состояние портов неправильно выставляется.

Re: Копировщик RFID-ключей T5557

Пн июл 31, 2017 21:00:46

Очень может быть, что неправильно состояние портов.

Re: Копировщик RFID-ключей T5557

Пт сен 01, 2017 18:14:59

Добрый вечер! Вопрос к автору. Собрал базовую версию, напряжение в контрольной точке 83 вольта,
когда подношу карту, она считывается, а напряжение падает до 0. Запись не идет, выдает ошибку.
В монтаже все нормально. Должна ли срываться генерация или просто должно быть "проседание" амплитуды?

Re: Копировщик RFID-ключей T5557

Сб сен 02, 2017 18:08:10

Генерация точно не должна срываться. А питания по мощности хватает? 83 вольта - это как-то очень много. :) Снизьте до 40, уменьшив добротность. А то, может, atmege фигово. :)

Добавлено after 3 minutes 22 seconds:
Кстати, про дисплей ST7735S.

Спойлер
Код:
#ifndef ST7735S_H
#define ST7735S_H

#include "stm32f4xx_hal.h"

//цвета
#define ST7735S_RED     0xf800
#define ST7735S_GREEN   0x07e0
#define ST7735S_BLUE    0x001f
#define ST7735S_WHITE   0xffff
#define ST7735S_BLACK   0x0000
#define ST7735S_YELLOW  0xFFE0
#define ST7735S_GRAY0   0xEF7D      
#define ST7735S_GRAY1   0x8410         
#define ST7735S_GRAY2   0x4208

#define FONT_HEIGHT 14
#define FONT_WIDTH 8
#define SCREEN_WIDTH 160
#define SCREEN_HEIGHT 128

#ifndef bool
#define bool unsigned char
#endif

#ifndef true
#define true 1
#endif

#ifndef false
#define false 0
#endif

void ST7735S_Init(void);//инициализация дисплея
void ST7735S_SetArea(unsigned char x1, unsigned char y1, unsigned char x2, unsigned char y2);//задать область вывода графики
void ST7735S_OutColor(unsigned short color);//передать цвет точки
void ST7735S_PutPixel(unsigned char x, unsigned char y, unsigned short color);//вывести один пиксель
void ST7735S_PutSymbol(long x,long y,char symbol,unsigned short color);//вывод символа в позицию
void ST7735S_PutString(long x,long y,const char *string,unsigned short color);//вывод строчки в позицию
void ST7735S_Print(const char *string,unsigned short color);//вывести текст в текущую позицию
void ST7735S_Clear(void);//сбросить текущую позицию
#endif




Код:
#include "ST7735S.h"

//контакты дисплея
#define ST7735_GPIO_PIN_SCK   GPIO_PIN_1
#define ST7735_GPIO_PIN_SDA   GPIO_PIN_2
#define ST7735_GPIO_PIN_AD    GPIO_PIN_3
#define ST7735_GPIO_PIN_RESET GPIO_PIN_8
#define ST7735_GPIO_PIN_CS    GPIO_PIN_15

static long PrintYPosition=0;//позиция вывода строки

const unsigned char Font8x14[224][14]=
{
 { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},//' '=0x20
 { 0x00, 0x10, 0x38, 0x38, 0x38, 0x10, 0x10, 0x10, 0x00, 0x10, 0x10, 0x00, 0x00, 0x00},//'!'=0x21
 { 0x00, 0x66, 0x66, 0x22, 0x44, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},//'"'=0x22
 { 0x00, 0x44, 0x44, 0xFE, 0xFE, 0x44, 0x44, 0xFE, 0xFE, 0x44, 0x44, 0x00, 0x00, 0x00},//'#'=0x23
 { 0x18, 0x18, 0x7C, 0xC6, 0xC2, 0xC0, 0x7C, 0x06, 0x06, 0x86, 0xC6, 0x7C, 0x18, 0x18},
 { 0x00, 0x00, 0x00, 0xC2, 0xC6, 0x0C, 0x18, 0x30, 0x60, 0xC6, 0x86, 0x00, 0x00, 0x00},
 { 0x00, 0x38, 0x6C, 0x6C, 0x38, 0x76, 0xDC, 0xCC, 0xCC, 0xCC, 0x76, 0x00, 0x00, 0x00},
 { 0x00, 0x30, 0x30, 0x30, 0x60, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
 { 0x00, 0x0C, 0x18, 0x30, 0x30, 0x30, 0x30, 0x30, 0x30, 0x18, 0x0C, 0x00, 0x00, 0x00},
 { 0x00, 0x30, 0x18, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0x18, 0x30, 0x00, 0x00, 0x00},
 { 0x00, 0x00, 0x00, 0x00, 0x66, 0x3C, 0xFF, 0x3C, 0x66, 0x00, 0x00, 0x00, 0x00, 0x00},
 { 0x00, 0x00, 0x00, 0x10, 0x10, 0x10, 0x7C, 0x7C, 0x10, 0x10, 0x10, 0x00, 0x00, 0x00},
 { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x18, 0x30, 0x00, 0x00},
 { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x7C, 0x7C, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
 { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x18, 0x18, 0x18, 0x00, 0x00, 0x00},
 { 0x02, 0x06, 0x04, 0x0C, 0x08, 0x18, 0x10, 0x30, 0x20, 0x60, 0x40, 0x00, 0x00, 0x00},
 { 0x00, 0x7C, 0xC6, 0xC6, 0xCE, 0xDE, 0xF6, 0xE6, 0xC6, 0xC6, 0x7C, 0x00, 0x00, 0x00},
 { 0x00, 0x18, 0x38, 0x78, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x7E, 0x00, 0x00, 0x00},
 { 0x00, 0x7C, 0xC6, 0x06, 0x0C, 0x18, 0x30, 0x60, 0xC0, 0xC6, 0xFE, 0x00, 0x00, 0x00},
 { 0x00, 0x7C, 0xC6, 0x06, 0x06, 0x3C, 0x06, 0x06, 0x06, 0xC6, 0x7C, 0x00, 0x00, 0x00},
 { 0x00, 0x0C, 0x1C, 0x3C, 0x6C, 0xCC, 0xFE, 0x0C, 0x0C, 0x0C, 0x1E, 0x00, 0x00, 0x00},
 { 0x00, 0xFE, 0xC0, 0xC0, 0xC0, 0xFC, 0x06, 0x06, 0x06, 0xC6, 0x7C, 0x00, 0x00, 0x00},
 { 0x00, 0x38, 0x60, 0xC0, 0xC0, 0xFC, 0xC6, 0xC6, 0xC6, 0xC6, 0x7C, 0x00, 0x00, 0x00},
 { 0x00, 0xFE, 0xC6, 0x06, 0x06, 0x0C, 0x18, 0x30, 0x30, 0x30, 0x30, 0x00, 0x00, 0x00},
 { 0x00, 0x7C, 0xC6, 0xC6, 0xC6, 0x7C, 0xC6, 0xC6, 0xC6, 0xC6, 0x7C, 0x00, 0x00, 0x00},
 { 0x00, 0x7C, 0xC6, 0xC6, 0xC6, 0x7E, 0x06, 0x06, 0x06, 0x0C, 0x78, 0x00, 0x00, 0x00},
 { 0x00, 0x00, 0x00, 0x18, 0x18, 0x00, 0x00, 0x00, 0x18, 0x18, 0x00, 0x00, 0x00, 0x00},
 { 0x00, 0x00, 0x00, 0x18, 0x18, 0x00, 0x00, 0x00, 0x18, 0x18, 0x30, 0x00, 0x00, 0x00},
 { 0x00, 0x00, 0x06, 0x0C, 0x18, 0x30, 0x60, 0x30, 0x18, 0x0C, 0x06, 0x00, 0x00, 0x00},
 { 0x00, 0x00, 0x00, 0x00, 0x7E, 0x7E, 0x00, 0x00, 0x7E, 0x7E, 0x00, 0x00, 0x00, 0x00},
 { 0x00, 0x00, 0x60, 0x30, 0x18, 0x0C, 0x06, 0x0C, 0x18, 0x30, 0x60, 0x00, 0x00, 0x00},
 { 0x00, 0x7C, 0xC6, 0xC6, 0x0C, 0x18, 0x18, 0x18, 0x00, 0x18, 0x18, 0x00, 0x00, 0x00},
 { 0x00, 0x00, 0x7C, 0xC6, 0xC6, 0xDE, 0xDE, 0xDE, 0xDC, 0xC0, 0x7C, 0x00, 0x00, 0x00},
 { 0x00, 0x10, 0x38, 0x6C, 0xC6, 0xC6, 0xFE, 0xC6, 0xC6, 0xC6, 0xC6, 0x00, 0x00, 0x00},
 { 0x00, 0xFC, 0x66, 0x66, 0x66, 0x7C, 0x66, 0x66, 0x66, 0x66, 0xFC, 0x00, 0x00, 0x00},
 { 0x00, 0x3C, 0x66, 0xC2, 0xC0, 0xC0, 0xC0, 0xC0, 0xC2, 0x66, 0x3C, 0x00, 0x00, 0x00},
 { 0x00, 0xF8, 0x6C, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x6C, 0xF8, 0x00, 0x00, 0x00},
 { 0x00, 0xFE, 0x66, 0x62, 0x68, 0x78, 0x68, 0x60, 0x62, 0x66, 0xFE, 0x00, 0x00, 0x00},
 { 0x00, 0xFE, 0x66, 0x62, 0x68, 0x78, 0x68, 0x60, 0x60, 0x60, 0xF0, 0x00, 0x00, 0x00},
 { 0x00, 0x3C, 0x66, 0xC2, 0xC0, 0xC0, 0xDE, 0xC6, 0xC6, 0x66, 0x3A, 0x00, 0x00, 0x00},
 { 0x00, 0xC6, 0xC6, 0xC6, 0xC6, 0xFE, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0x00, 0x00, 0x00},
 { 0x00, 0x3C, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x3C, 0x00, 0x00, 0x00},
 { 0x00, 0x1E, 0x0C, 0x0C, 0x0C, 0x0C, 0x0C, 0xCC, 0xCC, 0xCC, 0x78, 0x00, 0x00, 0x00},
 { 0x00, 0xE6, 0x66, 0x66, 0x6C, 0x78, 0x78, 0x6C, 0x66, 0x66, 0xE6, 0x00, 0x00, 0x00},
 { 0x00, 0xF0, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0x62, 0x66, 0xFE, 0x00, 0x00, 0x00},
 { 0x00, 0xC6, 0xEE, 0xFE, 0xFE, 0xD6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0x00, 0x00, 0x00},
 { 0x00, 0xC6, 0xE6, 0xF6, 0xFE, 0xDE, 0xCE, 0xC6, 0xC6, 0xC6, 0xC6, 0x00, 0x00, 0x00},
 { 0x00, 0x7C, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0x7C, 0x00, 0x00, 0x00},
 { 0x00, 0xFC, 0x66, 0x66, 0x66, 0x7C, 0x60, 0x60, 0x60, 0x60, 0xF0, 0x00, 0x00, 0x00},
 { 0x00, 0x7C, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xD6, 0xDE, 0x7C, 0x0C, 0x0E, 0x00},
 { 0x00, 0xFC, 0x66, 0x66, 0x66, 0x7C, 0x6C, 0x66, 0x66, 0x66, 0xE6, 0x00, 0x00, 0x00},
 { 0x00, 0x7C, 0xC6, 0xC6, 0x60, 0x38, 0x0C, 0x06, 0xC6, 0xC6, 0x7C, 0x00, 0x00, 0x00},
 { 0x00, 0x7E, 0x7E, 0x5A, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x3C, 0x00, 0x00, 0x00},
 { 0x00, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0x7C, 0x00, 0x00, 0x00},
 { 0x00, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0x6C, 0x38, 0x10, 0x00, 0x00, 0x00},
 { 0x00, 0xC6, 0xC6, 0xC6, 0xC6, 0xD6, 0xD6, 0xD6, 0xFE, 0xEE, 0x6C, 0x00, 0x00, 0x00},
 { 0x00, 0xC6, 0xC6, 0x6C, 0x7C, 0x38, 0x38, 0x7C, 0x6C, 0xC6, 0xC6, 0x00, 0x00, 0x00},
 { 0x00, 0x66, 0x66, 0x66, 0x66, 0x3C, 0x18, 0x18, 0x18, 0x18, 0x3C, 0x00, 0x00, 0x00},
 { 0x00, 0xFE, 0xC6, 0x86, 0x0C, 0x18, 0x30, 0x60, 0xC2, 0xC6, 0xFE, 0x00, 0x00, 0x00},
 { 0x00, 0x3C, 0x3C, 0x20, 0x20, 0x20, 0x20, 0x20, 0x20, 0x3C, 0x3C, 0x00, 0x00, 0x00},
 { 0x40, 0x60, 0x20, 0x30, 0x10, 0x18, 0x08, 0x0C, 0x04, 0x06, 0x02, 0x00, 0x00, 0x00},
 { 0x00, 0x3C, 0x3C, 0x04, 0x04, 0x04, 0x04, 0x04, 0x04, 0x3C, 0x3C, 0x00, 0x00, 0x00},
 { 0x10, 0x38, 0x6C, 0xC6, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
 { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0x00},
 { 0x00, 0x20, 0x20, 0x10, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
 { 0x00, 0x00, 0x00, 0x00, 0x78, 0x0C, 0x7C, 0xCC, 0xCC, 0xCC, 0x76, 0x00, 0x00, 0x00},
 { 0x00, 0xE0, 0x60, 0x60, 0x78, 0x6C, 0x66, 0x66, 0x66, 0x66, 0x7C, 0x00, 0x00, 0x00},
 { 0x00, 0x00, 0x00, 0x00, 0x7C, 0xC6, 0xC0, 0xC0, 0xC0, 0xC6, 0x7C, 0x00, 0x00, 0x00},
 { 0x00, 0x1C, 0x0C, 0x0C, 0x3C, 0x6C, 0xCC, 0xCC, 0xCC, 0xCC, 0x76, 0x00, 0x00, 0x00},
 { 0x00, 0x00, 0x00, 0x00, 0x7C, 0xC6, 0xFE, 0xC0, 0xC0, 0xC6, 0x7C, 0x00, 0x00, 0x00},
 { 0x00, 0x38, 0x6C, 0x64, 0x60, 0xF0, 0x60, 0x60, 0x60, 0x60, 0xF0, 0x00, 0x00, 0x00},
 { 0x00, 0x00, 0x00, 0x00, 0x76, 0xCC, 0xCC, 0xCC, 0xCC, 0x7C, 0x0C, 0xCC, 0x78, 0x00},
 { 0x00, 0xE0, 0x60, 0x60, 0x6C, 0x76, 0x66, 0x66, 0x66, 0x66, 0xE6, 0x00, 0x00, 0x00},
 { 0x00, 0x18, 0x18, 0x00, 0x38, 0x18, 0x18, 0x18, 0x18, 0x18, 0x3C, 0x00, 0x00, 0x00},
 { 0x00, 0x06, 0x06, 0x00, 0x0E, 0x06, 0x06, 0x06, 0x06, 0x06, 0x66, 0x66, 0x3C, 0x00},
 { 0x00, 0xE0, 0x60, 0x60, 0x66, 0x6C, 0x78, 0x78, 0x6C, 0x66, 0xE6, 0x00, 0x00, 0x00},
 { 0x00, 0x38, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x3C, 0x00, 0x00, 0x00},
 { 0x00, 0x00, 0x00, 0x00, 0xEC, 0xFE, 0xD6, 0xD6, 0xD6, 0xD6, 0xC6, 0x00, 0x00, 0x00},
 { 0x00, 0x00, 0x00, 0x00, 0xDC, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x00, 0x00, 0x00},
 { 0x00, 0x00, 0x00, 0x00, 0x7C, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0x7C, 0x00, 0x00, 0x00},
 { 0x00, 0x00, 0x00, 0x00, 0xDC, 0x66, 0x66, 0x66, 0x66, 0x66, 0x7C, 0x60, 0xF0, 0x00},
 { 0x00, 0x00, 0x00, 0x00, 0x76, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0x7C, 0x0C, 0x1E, 0x00},
 { 0x00, 0x00, 0x00, 0x00, 0xDC, 0x76, 0x66, 0x60, 0x60, 0x60, 0xF0, 0x00, 0x00, 0x00},
 { 0x00, 0x00, 0x00, 0x00, 0x7C, 0xC6, 0x60, 0x38, 0x0C, 0xC6, 0x7C, 0x00, 0x00, 0x00},
 { 0x00, 0x10, 0x30, 0x30, 0xFC, 0x30, 0x30, 0x30, 0x30, 0x36, 0x1C, 0x00, 0x00, 0x00},
 { 0x00, 0x00, 0x00, 0x00, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0x76, 0x00, 0x00, 0x00},
 { 0x00, 0x00, 0x00, 0x00, 0x66, 0x66, 0x66, 0x66, 0x66, 0x3C, 0x18, 0x00, 0x00, 0x00},
 { 0x00, 0x00, 0x00, 0x00, 0xC6, 0xC6, 0xD6, 0xD6, 0xD6, 0xFE, 0x6C, 0x00, 0x00, 0x00},
 { 0x00, 0x00, 0x00, 0x00, 0xC6, 0x6C, 0x38, 0x38, 0x38, 0x6C, 0xC6, 0x00, 0x00, 0x00},
 { 0x00, 0x00, 0x00, 0x00, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0x7E, 0x06, 0xC6, 0x7C, 0x00},
 { 0x00, 0x00, 0x00, 0x00, 0xFE, 0xCC, 0x18, 0x30, 0x60, 0xC6, 0xFE, 0x00, 0x00, 0x00},
 { 0x00, 0x0E, 0x18, 0x18, 0x18, 0x70, 0x18, 0x18, 0x18, 0x18, 0x0E, 0x00, 0x00, 0x00},
 { 0x00, 0x10, 0x10, 0x10, 0x10, 0x00, 0x00, 0x10, 0x10, 0x10, 0x10, 0x00, 0x00, 0x00},
 { 0x00, 0x70, 0x18, 0x18, 0x18, 0x0E, 0x18, 0x18, 0x18, 0x18, 0x70, 0x00, 0x00, 0x00},
 { 0x00, 0x76, 0xDC, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
 { 0x00, 0x00, 0x00, 0x10, 0x38, 0x6C, 0xC6, 0xC6, 0xC6, 0xFE, 0x00, 0x00, 0x00, 0x00},
 { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x01, 0x01, 0x03, 0x03},
 { 0x00, 0x00, 0x03, 0x07, 0x0F, 0x1F, 0x3F, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF},
 { 0x00, 0x18, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF},
 { 0x00, 0x00, 0xC0, 0xE1, 0xF1, 0xF9, 0xF9, 0xF9, 0xFD, 0xFC, 0xFC, 0xFE, 0xFE, 0xFE},
 { 0x00, 0x00, 0x00, 0xC0, 0x20, 0xA0, 0xE0, 0xA0, 0xE0, 0x20, 0xC0, 0x00, 0x00, 0x00},
 { 0x07, 0x0F, 0x0F, 0x0F, 0x1F, 0x1F, 0x1F, 0x3F, 0x3F, 0x3F, 0x3F, 0x3F, 0x7F, 0x7F},
 { 0xFB, 0xF9, 0xF1, 0xF0, 0xE0, 0xE0, 0xE0, 0xC0, 0xC0, 0xC0, 0x80, 0x80, 0x80, 0xC0},
 { 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0x7F, 0x7E, 0x3E, 0x3E, 0x3C, 0x1C, 0x1E},
 { 0xFF, 0xDF, 0xCF, 0x8F, 0x87, 0x87, 0x07, 0x03, 0x03, 0x03, 0x01, 0x01, 0x01, 0x00},
 { 0x00, 0x80, 0x80, 0x80, 0xC0, 0xC0, 0xC0, 0xE0, 0xE0, 0xE0, 0xF0, 0xF0, 0xF0, 0xF8},
 { 0x7F, 0x7F, 0x7C, 0x7C, 0x7C, 0x78, 0x78, 0x78, 0x70, 0x70, 0x70, 0x60, 0x60, 0x60},
 { 0xE0, 0xE0, 0xE0, 0xF0, 0xF0, 0xF0, 0x78, 0x78, 0x78, 0x3C, 0x3C, 0x3C, 0x1E, 0x1E},
 { 0x1F, 0x0F, 0x0F, 0x0F, 0x07, 0x07, 0x07, 0x03, 0x03, 0x03, 0x01, 0x01, 0x01, 0x00},
 { 0x00, 0x00, 0x00, 0x80, 0x80, 0x80, 0xC0, 0xC0, 0xC0, 0xE0, 0xE0, 0xE0, 0xF0, 0xF0},
 { 0x78, 0x78, 0x3C, 0x3C, 0x3C, 0x1E, 0x1E, 0x1E, 0x1F, 0x0F, 0x0F, 0x0F, 0x07, 0x07},
 { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
 { 0x1F, 0x1F, 0x3F, 0x3F, 0x3F, 0x7F, 0x7F, 0x7F, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF},
 { 0x00, 0x00, 0x80, 0x80, 0x80, 0xC0, 0xC1, 0xC1, 0xE1, 0xE3, 0xE3, 0xF3, 0xF7, 0xFF},
 { 0x78, 0x78, 0x78, 0x7C, 0xFC, 0xFC, 0xFE, 0xFE, 0xFE, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF},
 { 0x04, 0x04, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x80, 0x80},
 { 0x03, 0x03, 0x01, 0x01, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
 { 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x7F, 0x3F, 0x1F, 0x0F, 0x07, 0x03, 0x00, 0x00, 0x00},
 { 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x18, 0x00, 0x00},
 { 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFE, 0xFC, 0xF8, 0xF0, 0xC0, 0x00, 0x00, 0x00},
 { 0x80, 0xC0, 0xC0, 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, 0x00, 0x00},
 { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
 { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
 { 0x18, 0x3C, 0x24, 0x24, 0x24, 0x24, 0x3C, 0x18, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
 { 0x00, 0x10, 0x10, 0x7C, 0x7C, 0x10, 0x10, 0x00, 0x7C, 0x7C, 0x00, 0x00, 0x00, 0x00},
 { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
 { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
 { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
 { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
 { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
 { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
 { 0x28, 0x00, 0xFE, 0x66, 0x62, 0x68, 0x78, 0x68, 0x62, 0x66, 0xFE, 0x00, 0x00, 0x00},
 { 0x3C, 0x66, 0x42, 0x81, 0x99, 0xBD, 0xA1, 0xA1, 0xBD, 0x99, 0x81, 0x42, 0x66, 0x3C},
 { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
 { 0x00, 0x00, 0x00, 0x00, 0x00, 0x33, 0x66, 0xCC, 0x66, 0x33, 0x00, 0x00, 0x00, 0x00},
 { 0x55, 0xAA, 0x55, 0xAA, 0x55, 0xAA, 0x55, 0xAA, 0x55, 0xAA, 0x55, 0xAA, 0x55, 0xAA},
 { 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF},
 { 0x3C, 0x66, 0x42, 0x81, 0xB9, 0xBD, 0xA5, 0xB9, 0xBD, 0xA5, 0x81, 0x42, 0x66, 0x3C},
 { 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
 { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x1F, 0x1F, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10},
 { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xF0, 0xF0, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10},
 { 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x1F, 0x1F, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
 { 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0xF0, 0xF0, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
 { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
 { 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10},
 { 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0x1F, 0x1F, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10},
 { 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0xF0, 0xF0, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10},
 { 0x00, 0x28, 0x28, 0x00, 0x7C, 0xC6, 0xFE, 0xC0, 0xC0, 0xC6, 0x7C, 0x00, 0x00, 0x00},
 { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10},
 { 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0xFF, 0xFF, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00},
 { 0x00, 0x00, 0x00, 0x00, 0x00, 0xCC, 0x66, 0x33, 0x66, 0xCC, 0x00, 0x00, 0x00, 0x00},
 { 0x10, 0x10, 0x10, 0x10, 0x10, 0x10, 0xFF, 0xFF, 0x10, 0x10, 0x10, 0x10, 0x10, 0x10},
 { 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0x00, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF},
 { 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0, 0xF0},
 { 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F, 0x0F},
 { 0x00, 0x1E, 0x36, 0x66, 0xC6, 0xC6, 0xFE, 0xC6, 0xC6, 0xC6, 0xC6, 0x00, 0x00, 0x00},
 { 0x00, 0xFE, 0x62, 0x62, 0x60, 0x7C, 0x66, 0x66, 0x66, 0x66, 0xFC, 0x00, 0x00, 0x00},
 { 0x00, 0xFC, 0x66, 0x66, 0x66, 0x7C, 0x66, 0x66, 0x66, 0x66, 0xFC, 0x00, 0x00, 0x00},
 { 0x00, 0xFE, 0x62, 0x62, 0x60, 0x60, 0x60, 0x60, 0x60, 0x60, 0xF0, 0x00, 0x00, 0x00},
 { 0x00, 0x1E, 0x36, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0x66, 0xFF, 0xC3, 0x81, 0x00},
 { 0x00, 0xFE, 0x66, 0x62, 0x68, 0x78, 0x68, 0x60, 0x62, 0x66, 0xFE, 0x00, 0x00, 0x00},
 { 0x00, 0xD6, 0xD6, 0x54, 0x54, 0x7C, 0x7C, 0x54, 0xD6, 0xD6, 0xD6, 0x00, 0x00, 0x00},
 { 0x00, 0x7C, 0xC6, 0x06, 0x06, 0x3C, 0x06, 0x06, 0x06, 0xC6, 0x7C, 0x00, 0x00, 0x00},
 { 0x00, 0xC6, 0xC6, 0xCE, 0xCE, 0xD6, 0xE6, 0xE6, 0xC6, 0xC6, 0xC6, 0x00, 0x00, 0x00},
 { 0x28, 0x10, 0xC6, 0xC6, 0xCE, 0xCE, 0xD6, 0xE6, 0xE6, 0xC6, 0xC6, 0x00, 0x00, 0x00},
 { 0x00, 0xE6, 0x66, 0x6C, 0x6C, 0x78, 0x78, 0x6C, 0x6C, 0x66, 0xE6, 0x00, 0x00, 0x00},
 { 0x00, 0x1E, 0x36, 0x66, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0x00, 0x00, 0x00},
 { 0x00, 0xC6, 0xEE, 0xFE, 0xFE, 0xD6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0x00, 0x00, 0x00},
 { 0x00, 0xC6, 0xC6, 0xC6, 0xC6, 0xFE, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0x00, 0x00, 0x00},
 { 0x00, 0x7C, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0x7C, 0x00, 0x00, 0x00},
 { 0x00, 0xFE, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0x00, 0x00, 0x00},
 { 0x00, 0xFC, 0x66, 0x66, 0x66, 0x7C, 0x60, 0x60, 0x60, 0x60, 0xF0, 0x00, 0x00, 0x00},
 { 0x00, 0x3C, 0x66, 0xC2, 0xC0, 0xC0, 0xC0, 0xC0, 0xC2, 0x66, 0x3C, 0x00, 0x00, 0x00},
 { 0x00, 0x7E, 0x5A, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x18, 0x3C, 0x00, 0x00, 0x00},
 { 0x00, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0x7E, 0x06, 0x06, 0xC6, 0x7C, 0x00, 0x00, 0x00},
 { 0x3C, 0x18, 0x7E, 0xDB, 0xDB, 0xDB, 0xDB, 0xDB, 0x7E, 0x18, 0x3C, 0x00, 0x00, 0x00},
 { 0x00, 0xC6, 0xC6, 0x6C, 0x7C, 0x38, 0x38, 0x7C, 0x6C, 0xC6, 0xC6, 0x00, 0x00, 0x00},
 { 0x00, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xFE, 0x06, 0x06, 0x00},
 { 0x00, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0x7E, 0x06, 0x06, 0x06, 0x06, 0x00, 0x00, 0x00},
 { 0x00, 0xDB, 0xDB, 0xDB, 0xDB, 0xDB, 0xDB, 0xDB, 0xDB, 0xDB, 0xFF, 0x00, 0x00, 0x00},
 { 0x00, 0xDB, 0xDB, 0xDB, 0xDB, 0xDB, 0xDB, 0xDB, 0xDB, 0xDB, 0xFF, 0x03, 0x03, 0x00},
 { 0x00, 0xF8, 0xB0, 0x30, 0x30, 0x3C, 0x36, 0x36, 0x36, 0x36, 0x7C, 0x00, 0x00, 0x00},
 { 0x00, 0xC3, 0xC3, 0xC3, 0xC3, 0xF3, 0xDB, 0xDB, 0xDB, 0xDB, 0xF3, 0x00, 0x00, 0x00},
 { 0x00, 0xF0, 0x60, 0x60, 0x60, 0x7C, 0x66, 0x66, 0x66, 0x66, 0xFC, 0x00, 0x00, 0x00},
 { 0x00, 0x7C, 0xC6, 0x06, 0x26, 0x3E, 0x26, 0x06, 0x06, 0xC6, 0x7C, 0x00, 0x00, 0x00},
 { 0x00, 0xCE, 0xDB, 0xDB, 0xDB, 0xFB, 0xDB, 0xDB, 0xDB, 0xDB, 0xCE, 0x00, 0x00, 0x00},
 { 0x00, 0x3F, 0x66, 0x66, 0x66, 0x3E, 0x3E, 0x66, 0x66, 0x66, 0xE7, 0x00, 0x00, 0x00},
 { 0x00, 0x00, 0x00, 0x00, 0x78, 0x0C, 0x7C, 0xCC, 0xCC, 0xCC, 0x76, 0x00, 0x00, 0x00},
 { 0x02, 0x06, 0x3C, 0x60, 0x60, 0x7C, 0x66, 0x66, 0x66, 0x66, 0x3C, 0x00, 0x00, 0x00},
 { 0x00, 0x00, 0x00, 0x00, 0xFC, 0x66, 0x66, 0x7C, 0x66, 0x66, 0xFC, 0x00, 0x00, 0x00},
 { 0x00, 0x00, 0x00, 0x00, 0x7E, 0x32, 0x32, 0x30, 0x30, 0x30, 0x78, 0x00, 0x00, 0x00},
 { 0x00, 0x00, 0x00, 0x00, 0x1E, 0x36, 0x36, 0x66, 0x66, 0x66, 0xFF, 0xC3, 0xC3, 0x00},
 { 0x00, 0x00, 0x00, 0x00, 0x7C, 0xC6, 0xFE, 0xC0, 0xC0, 0xC6, 0x7C, 0x00, 0x00, 0x00},
 { 0x00, 0x00, 0x00, 0x00, 0xD6, 0xD6, 0x54, 0x7C, 0x54, 0xD6, 0xD6, 0x00, 0x00, 0x00},
 { 0x00, 0x00, 0x00, 0x00, 0x3C, 0x66, 0x06, 0x0C, 0x06, 0x66, 0x3C, 0x00, 0x00, 0x00},
 { 0x00, 0x00, 0x00, 0x00, 0xC6, 0xC6, 0xCE, 0xD6, 0xE6, 0xC6, 0xC6, 0x00, 0x00, 0x00},
 { 0x00, 0x00, 0x28, 0x10, 0xC6, 0xC6, 0xCE, 0xD6, 0xE6, 0xC6, 0xC6, 0x00, 0x00, 0x00},
 { 0x00, 0x00, 0x00, 0x00, 0xE6, 0x6C, 0x78, 0x78, 0x6C, 0x66, 0xE6, 0x00, 0x00, 0x00},
 { 0x00, 0x00, 0x00, 0x00, 0x1E, 0x36, 0x66, 0x66, 0x66, 0x66, 0x66, 0x00, 0x00, 0x00},
 { 0x00, 0x00, 0x00, 0x00, 0xC6, 0xEE, 0xFE, 0xFE, 0xD6, 0xD6, 0xC6, 0x00, 0x00, 0x00},
 { 0x00, 0x00, 0x00, 0x00, 0xC6, 0xC6, 0xC6, 0xFE, 0xC6, 0xC6, 0xC6, 0x00, 0x00, 0x00},
 { 0x00, 0x00, 0x00, 0x00, 0x7C, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0x7C, 0x00, 0x00, 0x00},
 { 0x00, 0x00, 0x00, 0x00, 0xFE, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0x00, 0x00, 0x00},
 { 0x00, 0x00, 0x00, 0x00, 0xDC, 0x66, 0x66, 0x66, 0x66, 0x66, 0x7C, 0x60, 0xF0, 0x00},
 { 0x00, 0x00, 0x00, 0x00, 0x7C, 0xC6, 0xC0, 0xC0, 0xC0, 0xC6, 0x7C, 0x00, 0x00, 0x00},
 { 0x00, 0x00, 0x00, 0x00, 0x7E, 0x5A, 0x18, 0x18, 0x18, 0x18, 0x3C, 0x00, 0x00, 0x00},
 { 0x00, 0x00, 0x00, 0x00, 0xC6, 0xC6, 0xC6, 0xC6, 0xC6, 0x7E, 0x06, 0xC6, 0x7C, 0x00},
 { 0x00, 0x00, 0x00, 0x3C, 0x18, 0x7E, 0xDB, 0xDB, 0xDB, 0xDB, 0x7E, 0x18, 0x3C, 0x00},
 { 0x00, 0x00, 0x00, 0x00, 0xC6, 0x6C, 0x38, 0x38, 0x38, 0x6C, 0xC6, 0x00, 0x00, 0x00},
 { 0x00, 0x00, 0x00, 0x00, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xCC, 0xFE, 0x06, 0x06, 0x00},
 { 0x00, 0x00, 0x00, 0x00, 0xC6, 0xC6, 0xC6, 0xC6, 0x7E, 0x06, 0x06, 0x00, 0x00, 0x00},
 { 0x00, 0x00, 0x00, 0x00, 0xD6, 0xD6, 0xD6, 0xD6, 0xD6, 0xD6, 0xFE, 0x00, 0x00, 0x00},
 { 0x00, 0x00, 0x00, 0x00, 0xD6, 0xD6, 0xD6, 0xD6, 0xD6, 0xD6, 0xFE, 0x03, 0x03, 0x00},
 { 0x00, 0x00, 0x00, 0x00, 0xF8, 0xB0, 0x30, 0x3E, 0x33, 0x33, 0x7E, 0x00, 0x00, 0x00},
 { 0x00, 0x00, 0x00, 0x00, 0xC6, 0xC6, 0xC6, 0xF6, 0xDE, 0xDE, 0xF6, 0x00, 0x00, 0x00},
 { 0x00, 0x00, 0x00, 0x00, 0xF0, 0x60, 0x60, 0x7C, 0x66, 0x66, 0xFC, 0x00, 0x00, 0x00},
 { 0x00, 0x00, 0x00, 0x00, 0x3C, 0x66, 0x06, 0x1E, 0x06, 0x66, 0x3C, 0x00, 0x00, 0x00},
 { 0x00, 0x00, 0x00, 0x00, 0xCE, 0xDB, 0xDB, 0xFB, 0xDB, 0xDB, 0xCE, 0x00, 0x00, 0x00},
 { 0x00, 0x00, 0x00, 0x00, 0x7E, 0xCC, 0xCC, 0xFC, 0x6C, 0xCC, 0xCE, 0x00, 0x00, 0x00}
};


//----------
//инициализация GPIO
//----------
void ST7735S_GPIOInit(void)
{
 //дисплей подключен к порту A
 //A1-SCK
 //A2-SDA
 //A3-AD
 //A8-RESET
 //A15-CS      
 __HAL_RCC_GPIOA_CLK_ENABLE();
   
 //GPIO_Pin – номера выводов, которые конфигурируются. Пример для нескольких выводов:
 //GPIO_InitStructure.GPIO_Pin = GPIO_Pin_0 | GPIO_Pin_1 | GPIO_Pin_2;
 //GPIO_Speed – задает скорость для выбранных выводов.
 //GPIO_Mode – задает режим работы выводов.

 //настраиваем параметры порта
 GPIO_InitTypeDef ST7735S_GPIO_Init;
 ST7735S_GPIO_Init.Mode=GPIO_MODE_OUTPUT_PP;
 ST7735S_GPIO_Init.Pull=GPIO_NOPULL;
 ST7735S_GPIO_Init.Pin=ST7735_GPIO_PIN_SCK|ST7735_GPIO_PIN_SDA|ST7735_GPIO_PIN_AD|ST7735_GPIO_PIN_RESET|ST7735_GPIO_PIN_CS;
 ST7735S_GPIO_Init.Speed=GPIO_SPEED_HIGH;
 HAL_GPIO_Init(GPIOA,&ST7735S_GPIO_Init);   
}
//----------
//включить SDA
//----------
void ST7735S_SetSDA(void)
{
 HAL_GPIO_WritePin(GPIOA,ST7735_GPIO_PIN_SDA,GPIO_PIN_SET);
}
//----------
//отключить SDA
//----------
void ST7735S_ResetSDA(void)
{
 HAL_GPIO_WritePin(GPIOA,ST7735_GPIO_PIN_SDA,GPIO_PIN_RESET);
}
//----------
//включить SCK
//----------
void ST7735S_SetSCK(void)
{
 HAL_GPIO_WritePin(GPIOA,ST7735_GPIO_PIN_SCK,GPIO_PIN_SET);
}
//----------
//отключить SCK
//----------
void ST7735S_ResetSCK(void)
{
 HAL_GPIO_WritePin(GPIOA,ST7735_GPIO_PIN_SCK,GPIO_PIN_RESET);
}

//----------
//включить AD
//----------
void ST7735S_SetAD(void)
{
 HAL_GPIO_WritePin(GPIOA,ST7735_GPIO_PIN_AD,GPIO_PIN_SET);
}
//----------
//отключить AD
//----------
void ST7735S_ResetAD(void)
{
 HAL_GPIO_WritePin(GPIOA,ST7735_GPIO_PIN_AD,GPIO_PIN_RESET);
}

//----------
//включить RESET
//----------
void ST7735S_SetRESET(void)
{
 HAL_GPIO_WritePin(GPIOA,ST7735_GPIO_PIN_RESET,GPIO_PIN_SET);
}
//----------
//отключить RESET
//----------
void ST7735S_ResetRESET(void)
{
 HAL_GPIO_WritePin(GPIOA,ST7735_GPIO_PIN_RESET,GPIO_PIN_RESET);
}

//----------
//включить CS
//----------
void ST7735S_SetCS(void)
{
 HAL_GPIO_WritePin(GPIOA,ST7735_GPIO_PIN_CS,GPIO_PIN_SET);
}
//----------
//отключить CS
//----------
void ST7735S_ResetCS(void)
{
 HAL_GPIO_WritePin(GPIOA,ST7735_GPIO_PIN_CS,GPIO_PIN_RESET);
}


//----------
//передать байт по программному SPI (SPI срабатывает по низкому уровню сигнала SCK!)
//----------
unsigned char ST7735S_SPITransmitt(unsigned char byte)
{
 unsigned char response=0;
 for (unsigned char i=0;i<8;i++,byte=byte<<1)
 {
  response=response<<1;
  if (byte&128) ST7735S_SetSDA();
           else ST7735S_ResetSDA();
  ST7735S_ResetSCK();   
  //if (LPT_GetACKState()==true) response|=1;
  ST7735S_SetSCK();
 }
 return(response);
}
//----------
//отправить байт дисплею
//----------
void ST7735S_SendByte(unsigned char byte,bool command)
{
 ST7735S_ResetCS();
 if (command==true) ST7735S_ResetAD();
               else ST7735S_SetAD();
 ST7735S_SetSCK();
 ST7735S_SPITransmitt(byte);
 ST7735S_SetCS();
}
//----------
//отправить слово 16 бит дисплею
//----------
void ST7735S_SendShort(unsigned short value)
{
 ST7735S_SendByte((value>>8)&0xff,false);
 ST7735S_SendByte(value&0xff,false);
}

//----------
//инициализация дисплея
//----------
void ST7735S_Init(void)
{
 ST7735S_GPIOInit();
 HAL_Delay(100);
 ST7735S_ResetRESET();
 HAL_Delay(10);
 ST7735S_SetRESET();
 HAL_Delay(10);

 unsigned int i=0;
 ST7735S_SendByte(0xB9,true);//SETEXTC
 ST7735S_SendByte(0xFF,false);
 ST7735S_SendByte(0x83,false);
 ST7735S_SendByte(0x53,false);

 ST7735S_SendByte(0xB0,true);//RADJ
 ST7735S_SendByte(0x3C,false);
 ST7735S_SendByte(0x01,false);

 ST7735S_SendByte(0xB6,true);//VCOM
 ST7735S_SendByte(0x94,false);
 ST7735S_SendByte(0x6C,false);
 ST7735S_SendByte(0x50,false);

 ST7735S_SendByte(0xB1,true);//PWR
 ST7735S_SendByte(0x00,false);
 ST7735S_SendByte(0x01,false);
 ST7735S_SendByte(0x1B,false);
 ST7735S_SendByte(0x03,false);
 ST7735S_SendByte(0x01,false);
 ST7735S_SendByte(0x08,false);
 ST7735S_SendByte(0x77,false);
 ST7735S_SendByte(0x89,false);

 ST7735S_SendByte(0xE0,true); //Gamma setting for tpo Panel
 ST7735S_SendByte(0x50,false);
 ST7735S_SendByte(0x77,false);
 ST7735S_SendByte(0x40,false);
 ST7735S_SendByte(0x08,false);
 ST7735S_SendByte(0xBF,false);
 ST7735S_SendByte(0x00,false);
 ST7735S_SendByte(0x03,false);
 ST7735S_SendByte(0x0F,false);
 ST7735S_SendByte(0x00,false);
 ST7735S_SendByte(0x01,false);
 ST7735S_SendByte(0x73,false);
 ST7735S_SendByte(0x00,false);
 ST7735S_SendByte(0x72,false);
 ST7735S_SendByte(0x03,false);
 ST7735S_SendByte(0xB0,false);
 ST7735S_SendByte(0x0F,false);
 ST7735S_SendByte(0x08,false);
 ST7735S_SendByte(0x00,false);
 ST7735S_SendByte(0x0F,false);

 ST7735S_SendByte(0x3A,true);
 ST7735S_SendByte(0x05,false);//05

 ST7735S_SendByte(0x36,true);
 ST7735S_SendByte(0xC0,false);//83  //0B

 ST7735S_SendByte(0x11,true);//SLPOUT
 HAL_Delay(10);

 ST7735S_SendByte(0x29,true);//display on
 HAL_Delay(10);

 ST7735S_SendByte(0x2D,true);//Look up table
 for(i=0;i<32;i++) ST7735S_SendByte(2*i,false); //Red
 for(i=0;i<64;i++) ST7735S_SendByte(1*i,false); //Green
 for(i=0;i<32;i++) ST7735S_SendByte(2*i,false); //Blue

 ST7735S_SendByte(0x2c,true);   
 
 HAL_Delay(100);
}


//----------
//задать область вывода графики
//----------
void ST7735S_SetArea(unsigned char x1, unsigned char y1, unsigned char x2, unsigned char y2)
{
 ST7735S_SendByte(0x2a,true);
 ST7735S_SendByte(0,false);
 ST7735S_SendByte(y1,false);
 ST7735S_SendByte(0,false);
 ST7735S_SendByte(y2,false);
 ST7735S_SendByte(0x2b,true);
 ST7735S_SendByte(0,false);
 ST7735S_SendByte(x1,false);
 ST7735S_SendByte(0,false);
 ST7735S_SendByte(x2,false);
 ST7735S_SendByte(0x2c,true);
}
//----------
//передать цвет точки
//----------
void ST7735S_OutColor(unsigned short color)
{
 ST7735S_SendShort(color);
}
//----------
//вывести один пиксель
//----------
void ST7735S_PutPixel(unsigned char x, unsigned char y, unsigned short color)
{
 ST7735S_SetArea((160-x),y,(160-x),y);
 ST7735S_OutColor(color);
}

//----------
//вывод символа в позицию
//----------
void ST7735S_PutSymbol(long x,long y,char symbol,unsigned short color)
{
 unsigned char s=(unsigned char)(symbol);
 if (s<=32) return;
 s-=32;
 if (s>223) return;
 //рисуем символ
 for(long ys=0;ys<FONT_HEIGHT;ys++)
 {
  unsigned char byte=Font8x14[s][ys];
  unsigned char mask=128;
  for(long xs=0;xs<FONT_WIDTH;xs++,mask>>=1)
  {   
   if (x+xs<0 || x+xs>=SCREEN_WIDTH) continue;
   if (y+ys<0 || y+ys>=SCREEN_HEIGHT) continue;
   if (byte&mask) ST7735S_PutPixel(x+xs,y+ys,color);
  }
 }
}

//----------
//вывод строчки в позицию
//----------
void ST7735S_PutString(long x,long y,const char *string,unsigned short color)
{
 while((*string)!=0)
 {
  ST7735S_PutSymbol(x,y,*string,color);
   x+=FONT_WIDTH; 
   string++;
 }
}

//----------
//вывести текст в текущую позицию
//----------
void ST7735S_Print(const char *string,unsigned short color)
{
 if (PrintYPosition+FONT_HEIGHT>=SCREEN_HEIGHT) ST7735S_Clear();
 ST7735S_PutString(0,PrintYPosition,string,color);
 PrintYPosition+=FONT_HEIGHT;
}
//----------
//сбросить текущую позицию
//----------
void ST7735S_Clear(void)
{
 PrintYPosition=0;
 ST7735S_SetArea(0,0,160,128);
 for(long x=0;x<160;x++)
 {
  for(long y=0;y<128;y++)
  { 
   ST7735S_OutColor(ST7735S_BLACK);
  }
 }   
}


Я его временно подключил к STM32F4Discovery (с программным SPI), пока штатный не пришёл. Для атмеги в коде надо очевидные функции заменить на дёрганье ножками в стиле атмеги.

Re: Копировщик RFID-ключей T5557

Пн сен 04, 2017 08:36:21

Добрый день! Благодарю за совет. Мощности по питанию хватает, пробовал разные источники. Сейчас попробую перемотать катушку.

Re: Копировщик RFID-ключей T5557

Пн сен 04, 2017 09:29:06

Возможно, питание к чему-то не подходит (например, земля оторвана) и питается через элементы схемы.

Re: Копировщик RFID-ключей T5557

Вт сен 05, 2017 09:10:50

Добрый день! По вашей рекомендации понизил напряжение до 50в. Самое интересное, брелки 5577 записываются не смотря на то, что выдает ошибку: "Не получен ответ от устройства". Записанные брелки работают, проверил.

Re: Копировщик RFID-ключей T5557

Вс сен 17, 2017 19:05:32

Вот ещё код запуска для дисплея на HX8347-D.
Вот для такого вот:
Изображение
Дисплей я купил тут.

И обломался с запуском. Оказалось, в нём HX8347-D.

Исходники я нашёл тут.

Спойлер
Код:
//LCD-экран HX8347-D

//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
//настройки контактов LCD-экрана
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
//линия ChipSelect
#define LCD_PORT_CS    PORTC
#define LCD_DDR_CS     DDRC
#define LCD_CS         6
//линия Rst
#define LCD_PORT_RST   PORTC
#define LCD_DDR_RST    DDRC
#define LCD_RST        7
//линия Rs
#define LCD_PORT_RS    PORTB
#define LCD_DDR_RS     DDRB
#define LCD_RS         0
//линия Wr
#define LCD_PORT_WR    PORTB
#define LCD_DDR_WR     DDRB
#define LCD_WR         1
//линия Rd
#define LCD_PORT_RD    PORTB
#define LCD_DDR_RD     DDRB
#define LCD_RD         2

//шина данных
#define LCD_PORT_DATA  PORTA
#define LCD_DDR_DATA   DDRA


#define LCD_BLACK     0x0000
#define LCD_RED       0xF800
#define LCD_ORANGE    0xFBE0
#define LCD_YELLOW    0xFFE0
#define LCD_GREEN     0x07E0
#define LCD_CYAN      0x07FF
#define LCD_BLUE      0x001F
#define LCD_MAGENTA   0xF81F
#define LCD_VIOLET    0x881F
#define LCD_WHITE     0xFFFF


#define LCD_WIDTH 320UL
#define LCD_HEIGHT 240UL

//код команды паузы в миллисекундах
#define DELAY_CODE 0xFFFF

//инициализация дисплея
unsigned short HX8347D_Init[] PROGMEM=
{
 0x00EA,0x0000, //PTBA[15:8] 
 0x00EB,0x0020, //PTBA[7:0] 
 0x00EC,0x000C, //STBA[15:8] 
 0x00ED,0x00C4, //STBA[7:0] 
 0x00E8,0x0040, //OPON[7:0] 
 0x00E9,0x0038, //OPON1[7:0] 
 0x00F1,0x0001, //OTPS1B 
 0x00F2,0x0010, //GEN 
 0x0027,0x00A3, // 
   
 //Gamma 2.2 Setting 
 0x0040,0x0000, // 
 0x0041,0x0000, // 
 0x0042,0x0001, // 
 0x0043,0x0012, // 
 0x0044,0x0010, // 
 0x0045,0x0026, // 
 0x0046,0x0008, // 
 0x0047,0x0053, // 
 0x0048,0x0002, // 
 0x0049,0x0015, // 
 0x004A,0x0019, // 
 0x004B,0x0019, // 
 0x004C,0x0016, // 
 0x0050,0x0019, // 
 0x0051,0x002F, // 
 0x0052,0x002D, // 
 0x0053,0x003E, // 
 0x0054,0x003F, // 
 0x0055,0x003F, // 
 0x0056,0x002C, // 
 0x0057,0x0077, // 
 0x0058,0x0009, // 
 0x0059,0x0006, // 
 0x005A,0x0006, // 
 0x005B,0x000A, // 
 0x005C,0x001D, // 
 0x005D,0x00CC, // 
   
 //Power Voltage Setting 
 0x001B,0x001B, //VRH=4.65V 
 0x001A,0x0001, //BT (VGH~15V,VGL~-10V,DDVDH~5V) 
 0x0024,0x002F, //VMH(VCOM High voltage ~3.2V) 
 0x0025,0x0057, //VML(VCOM Low voltage -1.2V) 
   
 //****VCOM offset**/// 
 0x0023,0x0097, //for Flicker adjust //can reload from OTP
 
 //Power on Setting 
 0x0018,0x0036, //I/P_RADJ,N/P_RADJ, Normal mode 75Hz 
 0x0019,0x0001, //OSC_EN='1', start Osc 
 0x0001,0x0000, //DP_STB='0', out deep sleep 
 0x001F,0x0088,// GAS=1, VOMG=00, PON=0, DK=1, XDK=0, DVDH_TRI=0, STB=0 
 DELAY_CODE,5,  //delay(5)
 0x001F,0x0080,// GAS=1, VOMG=00, PON=0, DK=0, XDK=0, DVDH_TRI=0, STB=0 
 DELAY_CODE,5,  //delay(5)
 0x001F,0x0090,// GAS=1, VOMG=00, PON=1, DK=0, XDK=0, DVDH_TRI=0, STB=0 
 DELAY_CODE,5,  //delay(5)
 0x001F,0x00D0,// GAS=1, VOMG=10, PON=1, DK=0, XDK=0, DDVDH_TRI=0, STB=0 
 DELAY_CODE,5,  //delay(5)
   
 //262k/65k color selection 
 0x0017,0x0005, //default 0x0006 262k color // 0x0005 65k color 
   
 //SET PANEL 
 0x0036,0x0000, //SS_P, GS_P,REV_P,BGR_P 
   
 //Display ON Setting 
 0x0028,0x0038, //GON=1, DTE=1, D=1000 
 DELAY_CODE,40,  //delay(40)
 0x0028,0x003C, //GON=1, DTE=1, D=1100 
   
 //Set GRAM Area 
 0x0002,0x0000, 
 0x0003,0x0000, //Column Start 
 0x0004,0x0000, 
 0x0005,0x00EF, //Column End 
 0x0006,0x0000, 
 0x0007,0x0000, //Row Start 
 0x0008,0x0001, 
 0x0009,0x003F, //Row End 
 //WR_8B_FORMAT(0x0022, //Start GRAM write 
 // Power Off Setting 
 0x0028,0x0038, //GON=ЎЇ1ЎЇ DTE=ЎЇ1ЎЇ D[1:0]=ЎЇ10ЎЇ 
 DELAY_CODE,40,  //delay(40)
 0x001F,0x0089, // GAS=1, VOMG=00, PON=0, DK=1, XDK=0, DVDH_TRI=0, STB=1 
 DELAY_CODE,40,  //delay(40)
 0x0028,0x0004, //GON=ЎЇ0ЎЇ DTE=ЎЇ0ЎЇ D[1:0]=ЎЇ01ЎЇ 
 DELAY_CODE,40,  //delay(40)
 0x0019,0x0000, //OSC_EN=ЎЇ0ЎЇ 
 DELAY_CODE,5,  //delay(5)
 //M51_WR_REG(U05_LCD_POWER_ON, 0x0000, //VCI & IOVCC OFF
 
 //################################################################## 
 // ENTER IDLE mode Setting 
 0x0018,0x0034, //I/P_RADJ,N/P_RADJ, IDLE mode 55Hz 
 0x002F,0x0011, //IDLE mode line inversion 
 0x0001,0x0004, //IDLE='1' , enter IDLE mode 
   
 // EXIT IDLE mode Setting 
 0x0018,0x0036, //I/P_RADJ,N/P_RADJ, Normal mode 75Hz 
 0x002F,0x0011, //Normal mode line inversion 
 0x0001,0x0000, //IDLE='0', EXIT IDLE mode 
   
 //################################################################## 
 // ENTER Partial mode Setting 32line 
 0x0018,0x0036, //I/P_RADJ,N/P_RADJ Partial mode 75Hz 
 0x002F,0x0011, //Partial mode line inversion 
 0x0001,0x0001, //PTL='1', Enter Partial mode 
 0x000A,0x0000, //PSL[15:8]=0x0000 
 0x000B,0x0020, //PSL[7:0]=0x0020 
 0x000C,0x0000, //PEL[15:8]=0x0000 
 0x000D,0x0047, //PEL[7:0]=0x0047 
 0x0026,0x0001, //refresh cycle=5frame 
   
 // EXIT Partial mode Setting 
 0x0018,0x0036, //I/P_RADJ,N/P_RADJ, Normal mode 75Hz 
 0x002F,0x0011, //Normal mode, line inversion 
 0x0001,0x0000, //PTL='0', EXIT Partial mode 
   
 // ENTER Partial + IDLE mode Setting 32line 
 0x0018,0x0036, //I/P_RADJ,N/P_RADJ, Partial mode 55Hz 
 0x002F,0x0011, // Partial + IDLE mode line inversion 
 0x0001,0x0009, // PTL='1' IDLE=ЎЇ1ЎЇ, Enter Partial + IDLE mode 
 0x000A,0x0000, //PSL[15:8]=0x0000 
 0x000B,0x0020, //PSL[7:0]=0x0020 
 0x000C,0x0000, //PEL[15:8]=0x0000 
 0x000D,0x0047, //PEL[7:0]=0x0047 
 0x0026,0x0001, //refresh cycle=5frame 
   
 // EXIT Partial + IDLE mode Setting 
 0x0018,0x0036, //I/P_RADJ,N/P_RADJ ,Normal mode 75Hz 
 0x002F,0x0011, //Normal mode, line inversion 
 0x0001,0x0000, // PTL='0' IDLE=ЎЇ0ЎЇ, EXIT Partial + IDLE mode 
   
 //################################################################## 
 // Enter Sleep mode Setting 
 0x0028,0x00B8, //GON=ЎЇ1ЎЇ DTE=ЎЇ1ЎЇ D[1:0]=ЎЇ10ЎЇ 
 DELAY_CODE,40,  //delay(40)
 0x001F,0x0089, // GAS=1, VOMG=00, PON=0, DK=1, XDK=0, DVDH_TRI=0, STB=1 
 DELAY_CODE,40,  //delay(40)
 0x0028,0x0004, //GON=ЎЇ0ЎЇ DTE=ЎЇ0ЎЇ D[1:0]=ЎЇ01ЎЇ 
 DELAY_CODE,40,  //delay(40)
 0x0019,0x0000, //OSC_EN=ЎЇ0ЎЇ 
 DELAY_CODE,5,  //delay(5)
 // Exit Sleep mode Setting 
 0x0018,0x0036, //I/P_RADJ,N/P_RADJ, Normal mode 75Hz 
 0x0019,0x0001, //OSC_EN='1', start Osc 
 0x001F,0x0088,// GAS=1, VOMG=00, PON=0, DK=1, XDK=0, DVDH_TRI=0, STB=0 
 DELAY_CODE,5,  //delay(5)
 0x001F,0x0080,// GAS=1, VOMG=00, PON=0, DK=0, XDK=0, DVDH_TRI=0, STB=0 
 DELAY_CODE,5,  //delay(5)
 0x001F,0x0090,// GAS=1, VOMG=00, PON=1, DK=0, XDK=0, DVDH_TRI=0, STB=0 
 DELAY_CODE,5,  //delay(5)
 0x001F,0x00D0,// GAS=1, VOMG=10, PON=1, DK=0, XDK=0, DDVDH_TRI=0, STB=0 
 DELAY_CODE,5,  //delay(5)
 0x0028,0x0038, //GON=1, DTE=1, D=1000 
 DELAY_CODE,40,  //delay(40)
 0x0028,0x003F, //GON=1, DTE=1, D=1100 
 
 // Enter Deep Sleep mode Setting 
 0x0028,0x00B8, //GON=ЎЇ1ЎЇ DTE=ЎЇ1ЎЇ D[1:0]=ЎЇ10ЎЇ 
 DELAY_CODE,40,  //delay(40)
 0x001F,0x0089, // GAS=1, VOMG=00, PON=0, DK=1, XDK=0, DVDH_TRI=0, STB=1 
 DELAY_CODE,40,  //delay(40)
 0x0028,0x0004, //GON=ЎЇ0ЎЇ DTE=ЎЇ0ЎЇ D[1:0]=ЎЇ01ЎЇ 
 DELAY_CODE,40,  //delay(40)
 0x0019,0x0000, //OSC_EN=ЎЇ0ЎЇ 
 DELAY_CODE,5,  //delay(5)
 0x0001,0x00C0, //DP_STB[1:0]=ЎЇ11ЎЇ 
   
 // Exit Deep Sleep mode Setting 
 0x0001,0x0000, //DP_STB='0', out deep sleep 
 DELAY_CODE,10,  //delay(10)
 0x0019,0x0001, //OSC_EN='1', start Osc 
 0x001F,0x0088,// GAS=1, VOMG=00, PON=0, DK=1, XDK=0, DVDH_TRI=0, STB=0 
 DELAY_CODE,5,  //delay(5)
 0x001F,0x0080,// GAS=1, VOMG=00, PON=0, DK=0, XDK=0, DVDH_TRI=0, STB=0 
 DELAY_CODE,5,  //delay(5)
 0x001F,0x0090,// GAS=1, VOMG=00, PON=1, DK=0, XDK=0, DVDH_TRI=0, STB=0 
 DELAY_CODE,5,  //delay(5)
 0x001F,0x00D0,// GAS=1, VOMG=10, PON=1, DK=0, XDK=0, DDVDH_TRI=0, STB=0 
 DELAY_CODE,5,  //delay(5)
 0x0028,0x0038, //GON=1, DTE=1, D=1000 
 DELAY_CODE,40,  //delay(40)
 0x0028,0x003F //GON=1, DTE=1, D=1100 
};


 


//----------
//глобальные переменные
//----------

//ориентация экрана


//----------
//прототипы функций
//----------
void LCD_Init(void);//инициализация LCD-экрана

void LCD_CS_One(void);//выставить на CS 1
void LCD_CS_Zero(void);//выставить на CS 0

void LCD_RS_One(void);//выставить на RS 1
void LCD_RS_Zero(void);//выставить на RS 0

void LCD_WR_One(void);//выставить на WR 1
void LCD_WR_Zero(void);//выставить на WR 0

void LCD_RST_One(void);//выставить на RST 1
void LCD_RST_Zero(void);//выставить на RST 0

void LCD_RD_One(void);//выставить на RD 1
void LCD_RD_Zero(void);//выставить на RD 0

void LCD_SetData(unsigned char byte);//задать значение на шине данных

void LCD_Write8(unsigned char byte);//передать байт
void LCD_Write16(unsigned short value) ;//передать 16 бит
void LCD_WriteRegister16(unsigned short reg,unsigned short value) ;//записать в регистр 16 бит
void LCD_Reset(void);//выполнить сброс
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
//общие функции
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
//++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++

//----------
//инициализация LCD-экрана
//----------
void LCD_Init(void)
{
 //настраиваем порты
 LCD_DDR_CS|=(1<<LCD_CS);
 LCD_DDR_RS|=(1<<LCD_RS);
 LCD_DDR_RST|=(1<<LCD_RST);
 LCD_DDR_RD|=(1<<LCD_RD);
 LCD_DDR_WR|=(1<<LCD_WR);
 LCD_DDR_DATA=0x00;
 //инициализируем дисплей
 LCD_Reset();
 LCD_CS_Zero();
 LCD_DDR_DATA=0xFF;

 long command_amount=sizeof(HX8347D_Init)/sizeof(unsigned short);
 for(long n=0;n<command_amount;)
 {
  unsigned short reg=pgm_read_word(&HX8347D_Init[n]);
  n++;
  unsigned short value=pgm_read_word(&HX8347D_Init[n]);
  n++;
  if (reg==DELAY_CODE)//пауза
  {
   _delay_ms(value); 
   continue;
  }
  //значение для регистра
  LCD_WriteRegister16(reg,value); 
 }
 long i=0;
 unsigned short color[]={LCD_BLACK,LCD_RED,LCD_ORANGE,LCD_YELLOW,LCD_GREEN,LCD_CYAN,LCD_BLUE,LCD_MAGENTA,LCD_VIOLET,LCD_WHITE};
 while(1)
 {
  //выбираем регистр вывода изображения
  LCD_RS_Zero();
  LCD_Write16(0x22);
  //передаём данные картинки
  LCD_RS_One();
  for(long x=0;x<LCD_WIDTH;x++)
  {
   for(long y=0;y<LCD_HEIGHT;y++)
   {
    LCD_Write16(color[i]); 
   }
  }
  i++;
  i%=10;
 }
}
//----------
//выставить на CS 1
//----------
inline void LCD_CS_One(void)
{
 LCD_PORT_CS|=(1<<LCD_CS);
}
//----------
//выставить на CS 0
//----------
inline void LCD_CS_Zero(void)
{
 LCD_PORT_CS&=0xFF^(1<<LCD_CS);
}
//----------
//выставить на RS 1
//----------
inline void LCD_RS_One(void)
{
 LCD_PORT_RS|=(1<<LCD_RS);
}
//----------
//выставить на RS 0
//----------
inline void LCD_RS_Zero(void)
{
 LCD_PORT_RS&=0xFF^(1<<LCD_RS);
}
//----------
//выставить на WR 1
//----------
inline void LCD_WR_One(void)
{
 LCD_PORT_WR|=(1<<LCD_WR);
}
//----------
//выставить на WR 0
//----------
inline void LCD_WR_Zero(void)
{
 LCD_PORT_WR&=0xFF^(1<<LCD_WR);
}
//----------
//выставить на RST 1
//----------
inline void LCD_RST_One(void)
{
 LCD_PORT_RST|=(1<<LCD_RST);
}
//----------
//выставить на RST 0
//----------
inline void LCD_RST_Zero(void)
{
 LCD_PORT_RST&=0xFF^(1<<LCD_RST);
}
//----------
//выставить на RD 1
//----------
inline void LCD_RD_One(void)
{
 LCD_PORT_RD|=(1<<LCD_RD);
}
//----------
//выставить на RD 0
//----------
inline void LCD_RD_Zero(void)
{
 LCD_PORT_RD&=0xFF^(1<<LCD_RD);
}
//----------
//задать значение на шине данных
//----------
inline void LCD_SetData(unsigned char byte)
{
 LCD_PORT_DATA=byte;
}

//----------
//выполнить сброс
//----------
void LCD_Reset(void)
{
 LCD_CS_One();
 LCD_RS_One();
 LCD_RD_One();
 LCD_WR_One();
 LCD_RST_One();   
 _delay_ms(10);
 LCD_RST_Zero();
 _delay_ms(10);
 LCD_RST_One();
 _delay_ms(250);
}
//----------
//передать байт
//----------
inline void LCD_Write8(unsigned char byte)
{
 LCD_SetData(byte);
 LCD_WR_Zero();
 LCD_WR_One();
}
//----------
//передать 16 бит
//----------
inline void LCD_Write16(unsigned short value)
{
 LCD_Write8((value>>8)&0xFF);
 LCD_Write8(value&0xFF);
}
//----------
//записать в регистр 16 бит
//----------
inline void LCD_WriteRegister16(unsigned short reg,unsigned short value)
{
 LCD_RS_Zero();
 LCD_Write16(reg);
 LCD_RS_One();
 LCD_Write16(value);
}
Вложения
HX8347.JPG
(17.96 KiB) Скачиваний: 2599

Re: Копировщик RFID-ключей T5557

Пн дек 11, 2017 18:13:15

Доброго времени! Подскажите, пожалуйста, какие фьюзы для базовой версии (ATmega8A)? Благодарю заранее.

Re: Копировщик RFID-ключей T5557

Вт дек 12, 2017 10:49:52

Все программаторы для AVR имеют различные установки фьюзов. У некоторых фьюзы в инверсном виде.
Если у вас RSTDISBL установлен, то вы должны сделать так (1 - установлен):

WTDON - 1
SPIEN - 0
CKOPT - 1
BOOTSZ1 - 1
BOOTSZ0 - 1
BOOTRST - 1

BODLEVEL - 1
BODEN - 1
SUT1 - 1
SUT0 - 1
CKSEL3 - 1
CKSEL2 - 1
CKSEL1 - 1
CKSEL0 - 1

Остальные не важны.

Если же у вас RSTDISBL сброшен, то вы должны сбросить все вышеперечисленные.

Re: Копировщик RFID-ключей T5557

Сб дек 16, 2017 08:19:15

Пролистал всю тему. Вижу что T5557, T5577 и EM4305 отличаются с точки зрения записи. А что по поводу чтения? Поймет ли домофон, у которого родной ключ один из этих трех, другие два ключа?
Просто на Ali, у некоторых продавцов, все смешано в кучу:
https://www.aliexpress.com/item/10pcs-b ... 13715.html
А по-местному есть только многоразовые EM4305, а T5557 и T5577 не упоминаются совсем:
http://www.kosmodrom.com.ua/prodlist.ph ... B%E0%E4%F3

ЗЫ Вспомнилась странность. Возможно, она на эту же тему. Родственники живут в соседнем доме. Разные домофоны установлены в разное время. Моим брелком открывается ихний подъезд, а на их брелок мой домофон не реагирует.

Re: Копировщик RFID-ключей T5557

Сб дек 16, 2017 12:12:11

Читаются они одинаково.
Домофоны могут иметь защиту от копий. Как сделано? Очень просто - перезаписываемые брелоки EM4305 и T5577/5557 не имеют возможности стать 100% "кирпичом" и даже при блокировании записи ключа имеют команды, на которые способны отвечать. Этим и пользуется домофон, чтобы их отфильтровать.

Re: Копировщик RFID-ключей T5557

Сб дек 16, 2017 13:34:53

Grishanenko писал(а):ЗЫ Вспомнилась странность. Возможно, она на эту же тему. Родственники живут в соседнем доме. Разные домофоны установлены в разное время. Моим брелком открывается ихний подъезд, а на их брелок мой домофон не реагирует.

Почему не предположить, что код Вашего ключа прописан в их домофоне, а их в Вашем нет?

Re: Копировщик RFID-ключей T5557

Сб дек 16, 2017 15:16:01

Почему не предположить, что код Вашего ключа прописан в их домофоне, а их в Вашем нет?


Надеюсь, этот слишком очевидный вариант был Grishanenko отвергнут сразу же. :)
Ответить