Слайд 3
Функции инициализации и очистки
void InitTFT();
// Инциализация дисплея
void ClearScreen()
// Очистка экрана
void SetOrientation(int degrees);
// Задает поворот дисплея на
0, 90, 180, 270 градусов
Слайд 4
Функции отрисовки линий
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 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 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);
// задает
позицию курсора (не отображается), где 0
задает позицию курсора в начало заданной строки, где 0
void WriteChar(char ch, int color);
// выводит символ заданного цвета в текущей позиции курсора
void WriteInt(int i);
// выводит число заданного цвета в текущей позиции курсора
void WriteHex(int i);
// выводит число заданного цвета в шестнадцатеричном коде в
// текущей позиции курсора
void WriteString(char *text, int color);
// выводит строку заданного цвета в текущей позиции курсора
Слайд 10
Строки – массив символов, заканчивающийся нулем
int main() {
//
массив символов, заканчивающийся нулем
char string1[] = {0x41, 0x54, 0x2D,
0x30, 0x38, 0x2D, 0x32, 0x00};
}
Что за строка записана в string1?
Слайд 11
Более удобный способ задания строк
int main() {
// массив
символов, заканчивающийся нулем
char string2[] = {‘A’, ‘T’, ‘-’, ‘0’,
‘8’, ‘-’, ‘2’, 0x00};
}
Вместо кода символа можно писать сам символ в одинарных кавычках
Слайд 12
Нормальный способ задания строк
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
Для строки полезны модули:
Определение длины строки: функция strlen()
Форматированный вывод строк
Много других полезных
функций
Описание http://www.nongnu.org/avr-libc/user-manual/modules.html
Слайд 15
Форматированный вывод (функция 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-разрядное представление целого числа
}