Jan. 23rd, 2014

zepete: (Default)

Программы для arduino пишутся на обычном c++.
Для поддержки lcd там имеется специальный класс LiquidCrystal (LiquidCrystal Library), только он не доработан:
-нет метода аналогичного printf;
-не может читать позицию курсора и символ по конкретным координатам;
-на 4 строчном экране, после вывода на первую строку переходит писать на третью, а после третьей переходит на вторую:)

Для устранения этих недостатков придется редактировать этот класс, ибо производный от него не будет наследовать необходимые переменные (назначение выводов arduino) и функций.
Моя доработка касается только конфигурации с передачей байтов за два прохода по 4 бита (8 битная передача только занимает лишние 4 провода и мне она не нужна) и для четырех строчных экранов по 20 символов, вроде WinStar WEH002004ALPP5N00000.
Под катом текст файлов LCD.cpp и LCD.h для замены стандартных. )


В моем классе LCD дополнительно доступны методы.
1. void printf(const char * format, ... ) - обычный printf.
2. void printf_noscroll(const char * format, ... ) - printf без прокрутки экрана вврех.
3. void CharOut(const char) - вывод символа в текущую позицию курсора.
4. void CharOut_noscroll(const char c) - вывод символа в текущую позицию курсора без прокрутки изображения, если кончиться экран.
5. void getCursor(uint8_t& col,uint8_t& row) - получение позиции курсора.
6. void setChar(uint8_t addr,char c) - запись символа "c" в адрес видеобуфера "addr".
7. char getChar(uint8_t addr) - получение содержимого ячейки видеобуфера addr.
8. char  LCD::getChar(uint8_t col, uint8_t row) - получение символа в колонке col и строке row.
9. void ScrollUp() - прокрутка экрана вверх.

Profile

zepete: (Default)
zepete

January 2026

S M T W T F S
    1 23
4 56 78910
11121314151617
18192021222324
25262728293031

Most Popular Tags

Style Credit

Expand Cut Tags

No cut tags
Page generated Jan. 14th, 2026 11:31 pm
Powered by Dreamwidth Studios