Программирование ЖК дисплея

Содержание

Слайд 2

Характеристики дисплея

Характеристики дисплея

Слайд 3

Функции инициализации и очистки void InitTFT(); // Инциализация дисплея void ClearScreen()

Функции инициализации и очистки

void InitTFT();
// Инциализация дисплея
void ClearScreen()
// Очистка экрана
void

SetOrientation(int degrees);
// Задает поворот дисплея на 0, 90, 180, 270 градусов
Слайд 4

Функции отрисовки линий void HLine(byte x0, byte x1, byte y, int

Функции отрисовки линий

void HLine(byte x0, byte x1, byte y, int color);
//

горизонтальная линия заданного цвета
void VLine(byte x, byte y0, byte y1, int color);
// вертикальная линия заданного цвета
void Line(int x0, int y0, int x1, int y1, int color);
// линия произвольного положения на основе алгоритма Брезенхэма
// https://ru.wikipedia.org/wiki/Алгоритм_Брезенхэма
Слайд 5

Функции отрисовки прямоугольников void DrawRect(byte x0, byte y0, byte x1, byte

Функции отрисовки прямоугольников

void DrawRect(byte x0, byte y0, byte x1, byte y1,

int color);
// прямоугольник заданного цвета
void FillRect(byte x0, byte y0, byte x1, byte y1, int color);
// закрашенный прямоугольник заданного цвета
void RoundRect(byte x0, byte y0, byte x1, byte y1, byte r, int color);
// прямоугольник со скругленными углами (r - радиус скругления)
// координаты: левый верхний угол = x0,y0; нижний правый угол = x1,y1
Слайд 6

Функции отрисовки окружностей и эллипсов void Circle(byte xPos, byte yPos, byte

Функции отрисовки окружностей и эллипсов

void Circle(byte xPos, byte yPos, byte radius,

int color);
// окружность с центром в заданной точке, с заданным радиусом и цветом
void FillCircle(byte xPos, byte yPos, byte radius, int color);
// круг с центром в заданной точке, с заданным радиусом и цветом
void CircleQuadrant(byte xPos, byte yPos, byte radius, byte quad, int color);
// отрисовывает окружность в заданном квадранте с заданным радиусом и цветом
// квадрант кодируется битами в quad, причем квадранты нумерются сверху вниз
// бит 0: квадрант I (нижний правый)
// бит 1: квадрант IV (верхний правый)
// бит 2: квадрант II (нижний левый)
// бит 3: квадрант III (верхний левый)
void Ellipse(int x0, int y0, int width, int height, int color);
// эллипс заданной ширины и высоты
// Алгоритм Брезенхэма для окружностей
// https://ru.wikipedia.org/wiki/Алгоритм_Брезенхэма
// Особенность: небольой разрыв между частями узких эллипсов
void FillEllipse(int xPos, int yPos, int width, int height, int color);
// закрашенный эллипс заданной ширины и высоты
Слайд 7

Функции вывода текста void GotoXY(byte x, byte y); // задает позицию

Функции вывода текста

void GotoXY(byte x, byte y);
// задает позицию курсора (не

отображается), где 0void GotoLine(byte y);
// задает позицию курсора в начало заданной строки, где 0void WriteChar(char ch, int color);
// выводит символ заданного цвета в текущей позиции курсора
void WriteInt(int i);
// выводит число заданного цвета в текущей позиции курсора
void WriteHex(int i);
// выводит число заданного цвета в шестнадцатеричном коде в
// текущей позиции курсора
void WriteString(char *text, int color);
// выводит строку заданного цвета в текущей позиции курсора
Слайд 8

Кодировка ASCII

Кодировка ASCII

Слайд 9

Кодировка Windows-1251

Кодировка Windows-1251

Слайд 10

Строки – массив символов, заканчивающийся нулем int main() { // массив

Строки – массив символов, заканчивающийся нулем

int main() {
// массив символов, заканчивающийся

нулем
char string1[] = {0x41, 0x54, 0x2D, 0x30, 0x38, 0x2D, 0x32, 0x00};
}

Что за строка записана в string1?

Слайд 11

Более удобный способ задания строк int main() { // массив символов,

Более удобный способ задания строк

int main() {
// массив символов, заканчивающийся нулем
char

string2[] = {‘A’, ‘T’, ‘-’, ‘0’, ‘8’, ‘-’, ‘2’, 0x00};
}

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

Слайд 12

Нормальный способ задания строк int main() { char string3[] = “AT-08-2”;

Нормальный способ задания строк

int main() {
char string3[] = “AT-08-2”;
}

Последовательность символов-строка записывается

в двойных кавычках

- Задан ли здесь ноль на конце?
- И все-таки, зачем он нужен?

Слайд 13

Зачем нужен ноль в конце строки Как передать строку в функцию,

Зачем нужен ноль в конце строки

Как передать строку в функцию, которая,

например, считает длину строки?

int main() {
char string3[] = "AT-08-2";

char* first_symbol = &string3[0]; // указатель на первый символ строки
int leng = string_length(first_symbol);
}

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

int string_length(char* string) {
int length = 0;
for (char* current_char = string; *current_char != 0; ++current_char)
{
length++;
}
return length;
}

Слайд 14

Стандартная библиотека C Для строки полезны модули: Определение длины строки: функция

Стандартная библиотека C

Для строки полезны модули:
Определение длины строки:

функция strlen()
Форматированный вывод строк
Много других полезных функций
Описание http://www.nongnu.org/avr-libc/user-manual/modules.html
Слайд 15

Форматированный вывод (функция printf) #include #include // собирать проект с опциями:

Форматированный вывод (функция printf)

#include
#include
// собирать проект с опциями:
// -Wl,-u,vfprintf

-lprintf_flt -lm
int main() {
char str[20];
sprintf(str, "%u", -1); // беззнаковое число
sprintf(str, "%7d", 15); // знаковое целое на 7 знакомест
sprintf(str, "%10.2f", -24.3); // вещественное на 10 целых и 2 дробных знакоместа
sprintf(str, "%x", 255); // 16-разрядное представление целого числа
}