Урок 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 с адаптером можно здесь USBASP USBISP 3.3 с адаптером
Смотреть ВИДЕОУРОК
На 32 меге не пошло что нужно поменять
В функции ADC_Init() замените название разряда регистра ADCSRA с ADFR на ADATE. При условии что все ножки контроллера подключены правильно, на 32 меге все будет работать. Иногда полезно читать даташиты.
Dear Prof
How are you?
Thanks for your lessons and tutorials on your YouTube channel, it is very helpful.
I have a question, how I can use the ADC in ATMEGA to read the status of 5 push buttons (using Interrupt) and at the same time use the ADC to read the Temperature of LM35?