Урок 37
Часть 4
Модуль LCD 16×2 .МЕНЮ
В предыдущей части мы продолжили писать исходный код по реализации меню.
Сегодня, я думаю мы его завершим.
Осталось нам, наконец-то, добавить реакцию на выбор пунктов меню в функции MainMenuProcess
case MAIN_MENU_STATE_MM1: //выбор пункта 1
main_menu_state = MAIN_MENU_STATE_IDLE;
MainMenuItemProcess(1);
clearlcd();
break;
case MAIN_MENU_STATE_MM2: //выбор пункта 2
main_menu_state = MAIN_MENU_STATE_IDLE;
MainMenuItemProcess(2);
clearlcd();
break;
case MAIN_MENU_STATE_MM3: //выбор пункта 3
main_menu_state = MAIN_MENU_STATE_IDLE;
MainMenuItemProcess(3);
clearlcd();
break;
case MAIN_MENU_STATE_MM4: //выбор пункта 4
main_menu_state = MAIN_MENU_STATE_IDLE;
MainMenuItemProcess(4);
clearlcd();
break;
case MAIN_MENU_STATE_MM5: //выбор пункта 5
main_menu_state = MAIN_MENU_STATE_IDLE;
MainMenuItemProcess(5);
clearlcd();
break;
case MAIN_MENU_STATE_EXIT: //выбор пункта EXIT
menu_state = MENU_STATE_IDLE;
return;
break;
Соберём проект, проверим результат в протеусе, затем прошьём контроллер и посмотрим результат на живом контроллере и дисплее
Как мы видим, меню наше работает и нормально откликается. Конечно в видеоверсии, прикрепленной в самом низу страницы, вы всё это сможете гораздо лучше посмотреть.
А в обработку реакций нажатий на кнопки меню в функции MainMenuItemProcess вы можете писать любой код и вызывать любые функции.
Вот такое вот получилось у нас меню. Я думаю, удачное!
Предыдущая часть Программирование МК AVR Следующий урок
Программатор и дисплей можно приобрести здесь:
Программатор (продавец надёжный) USBASP USBISP 2.0
Смотреть ВИДЕОУРОК
На 32 меге не пошло что нужно поменять
В функции ADC_Init() замените название разряда регистра ADCSRA с ADFR на ADATE. При условии что все ножки контроллера подключены правильно, на 32 меге все будет работать. Иногда полезно читать даташиты.