Чт июл 06, 2017 10:47:02
Ср июл 26, 2017 12:09:54
Чт июл 27, 2017 18:34:56
Пт июл 28, 2017 15:50:59
Вс июл 30, 2017 22:03:24
И зачем вы подключаете к компаратору контакты (дисплея?) ?
ACSR=(0<<ACD)|(0<<ACBG)|(0<<ACO)|(0<<ACI)|(1<<ACIE)|(0<<ACIC)|(0<<ACIS1)|(0<<ACIS0);
А питаете вы подсветку дисплея от 12 вольт?
Похоже на питание нестабилизированным напряжением.
Пн июл 31, 2017 07:03:47
подсветка не мерцает дисплей загружается
Пн июл 31, 2017 17:09:48
Пн июл 31, 2017 21:00:46
Пт сен 01, 2017 18:14:59
Сб сен 02, 2017 18:08:10
#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);
}
}
}
Пн сен 04, 2017 08:36:21
Пн сен 04, 2017 09:29:06
Вт сен 05, 2017 09:10:50
Вс сен 17, 2017 19:05:32
//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);
}
Пн дек 11, 2017 18:13:15
Вт дек 12, 2017 10:49:52
Сб дек 16, 2017 08:19:15
Сб дек 16, 2017 12:12:11
Сб дек 16, 2017 13:34:53
Grishanenko писал(а):ЗЫ Вспомнилась странность. Возможно, она на эту же тему. Родственники живут в соседнем доме. Разные домофоны установлены в разное время. Моим брелком открывается ихний подъезд, а на их брелок мой домофон не реагирует.
Сб дек 16, 2017 15:16:01
Почему не предположить, что код Вашего ключа прописан в их домофоне, а их в Вашем нет?