Микроконтроллеры | Цифровой термометр на МК и LCD nokia 3310 |
|
---|---|---|
Так-с, нашел про макросы в книге Программирование на языке СИ для AVR и PIC микроконтроллеров. Только я считаю там скупо написано. Поэтому если можно, то поподробней о макросах. |
|
|
Еще просьба. АНТОХА, распиши пожалуйста алгоритм работы с ЖК, инициализацию. Просто словами. А я попробую реализовать и выложу на проверку . Так будет интересней и для меня понятней. Что за чем надо делать. |
|
|
serg_svd: Действительно удобней и понятней. Дело не только в этом. У меня эти макросы есть для всех микропроцессоров, с которыми я работаю. То есть, не приходится каждый раз вспоминать названия портов и механизмы их настройки. serg_svd: если можно, то поподробней о макросах. А чего там подробнее-то? #define DELAY_VALUE 10 и потом везде, где встретит слово DELAY_VALUE, вместо него вставляет 10. Вот и всё. serg_svd: команды LCD взяты из даташита на контроллер PCD8544 Да, конечно. |
|
|
Так я же там специально всё построчно комментировал: // инициализация ЖКИ void nokia_init(void) { // сначала инициализируем ножки on(NOKIA_SCK); on(NOKIA_RESET); direct(NOKIA_SCK, O); direct(NOKIA_RESET, O); direct(NOKIA_DOUT, O); direct(NOKIA_D_C, O); // Сброс ЖКИ off(NOKIA_RESET); asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop"); asm volatile ("nop"); on(NOKIA_RESET); // Включаем расширенный набор команд nokia_cmd(GLCD_FUNCTIONSETEXT); // Задаём температурный коэффициент nokia_cmd(GLCD_TEMPCOEF); // Задаём режим мультиплексирования 1:48 nokia_cmd(GLCD_SET_BIAS | GLCD_BIAS_1_48); // Контраст (заодно отключает расширенный набор команд) nokia_set_contrast(120); // выключим инверсию. nokia_set_inverse(FALSE); } Что конкретно здесь неясно? |
|
|
AHTOXA: Что конкретно здесь неясно? |
|
|
serg_svd: Ну если разберусь, то станет понятней ;). 1. Настроить ножки процессора, которые используются для обмена с ЖКИ: с остальными ногами то же самое. 2. Сброс ЖКИ. 3. Теперь выдаём команды для контроллера ЖКИ. 3.1. nokia_cmd(GLCD_FUNCTIONSETEXT); // Включаем расширенный набор команд 3.2. nokia_cmd(GLCD_TEMPCOEF); //Задаём температурный коэффициент 3.3. nokia_cmd(GLCD_SET_BIAS | GLCD_BIAS_1_48); // Задаём режим мультиплексирования 1:48 3.4. nokia_set_contrast(120); // контраст 3.5. nokia_set_inverse(FALSE); // собственно включаем дисплей (без инверсии). Вот и всё. serg_svd: перед инициализацией ЖК надо запускать таймер и прерывания? Нет, не надо. У меня задержка при сбросе была сначала сделана на таймерной задержке, потом заменил на nop-ы. |
|
|
ОК. Спасибо. И еще просьба, если уж начинаю учится по твоему примеру с макросами, то выложи пожалуйста имеющиеся у тебя. AHTOXA: Нет, не надо. У меня задержка при сбросе была сначала сделана на таймерной задержке, потом заменил на nop-ы. |
|
|
serg_svd: А что означает мультиплексирование? Ну, упрощённо: Точки на дисплее организованы по строчкам и столбцам. Чтобы зажечь точку с координатами X, Y, надо подать 1 на вывод строки X и столбца Y. Но так получается слишком много ножек надо, поэтому группируют строчки/столбцы по несколько штук и зажигают по очереди. Вот это и называется мультиплексирование. serg_svd: почему из всех значений выбрано именно 1/48? Потому что у этого дисплея такое мультиплексирование Контроллер-то рассчитан на работу с разными дисплеями, вот и приходится указывать. serg_svd: выложи пожалуйста имеющиеся у тебя. Не понял, что выложить? Я же там приложил файл macros.h. serg_svd: Т.е я так понял, что для работы прерывания не понвдобятся? И отсчет времени? Да, таймер можно выкинуть. |
|
|
AHTOXA: Не понял, что выложить? Я же там приложил файл macros.h. |
|
|
serg_svd: ну это же только для МК tiny2313 или для всех МК ? Это для всех АВРок. Есть ещё для MSP-430, для Fujitsu MB90, для MSC51. Какие надо? |
|
|
Форум про радио — сайт, посвященный обсуждению электроники, компьютеров и смежных тем. pro-radio.online | Обратная связь |
© 2003—2024 |