Ревич, Ю.В. Программирование микроконтроллеров AVR: от Arduino к ассемблеру
Глава 1б. Некоторые Аrdиiпо-задачи на ассемблере ldi temp, $C7 ; вывод русской буквы «Я» в текущую позицию курсора rcall LCD data 4 1 7 Вывод одного символа занимает время около 1 50 микросекунд, потому обычно не мешает другим процедурам в программе. Но вывод целой строки в 1 6 символов займет уже 2,5 миллисекунды, и может появиться необходимость это учесть в ка ких-то случаях. Если вам позарез потребуется сократить время выполнения вывода символов, то для конкретных дисплеев можно попробовать уменьшить задержку на 1 50 мкс в конце процедуры LCD_data, при каждом изменении экспериментально проверяя надежность работы дисплея на макете . Кроме символов из таблицы, можно выводить свои рисованные символы. В ориги нальной таблице HD44780 по какой-то причине отсутствует нормальный значок градуса, и в файл LCD1 602 . prg включена процедура его отрисовки: SymЬol_degree. Вызывать ее надо обычным rcall и до того, как вы соберетесь выводить этот значок. Очищать дисплей целиком, как правило, не требуется - просто новые символы выводятся на те же места, а ненужные забиваются пробелами. Потому отдельной процедуры для этого не предусмотрено, но при необходимости можно очистить дисплей следующей последовательностью команд: ldi temp, ObO O O O O O O l rcall LCD cornna nd 4bit ; дисплей clear rcall Del 5ms Set_cursor 0 , 0 ; курсор в позицию 0 , 0 В процедурах файла LCD 1 602 .prg предусмотрены три опции, которые задействуются в необходимых случаях (примеры мы увидим далее). Это подключение возможно сти мигания символом в позиции курсора, подключение русско-английской табли цы там, где она не подключена по умолчанию (ориентирована на ОLЕD-дисплеи Winstar), а также замена символа «0» буквой «0» . Подключаются эти опции указа нием в начале программы следующих строк: #define Blink ;мигание символа в позиции курсора #define Rus_taЫe ; подключение русской таблицы №2 #de fine ZerosymЬ ; поДJУiена О на букву О Если какие-либо из опций не требуются, то соответствующую строку можно за комментировать или просто не указывать. Последняя опция может вызвать недо умение : зачем заменять «0» на букву «0»? Дело· в том, что нормальный ноль на дисплеях с матричными шрифтами неотличим от буквы «0», и потому всегда изо бражается перечеркнутым. Я уважаю производителей дисплеев за приверженность традициям, но смотрится этот архаизм в современном антураже, на мой взгляд, безобразно. Отсюда и отключаемая опция - для себя я ноль всегда заменяю на букву «0» безоговорочно, но может быть кому-то это не понравится (сравните изо бражение нуля на рис . 1 6 .6 и 1 6 .7) .
Made with FlippingBook
RkJQdWJsaXNoZXIy MTExODQxMg==