AVR УРОК 37. Модуль LCD 16×2. МЕНЮ. Часть 4



    Урок 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;

 

 

Соберём проект, проверим результат в протеусе, затем прошьём контроллер и посмотрим результат на живом контроллере и дисплее

 

image001 image002 image003 image004 image005 image006 image007 image008 image009

 

Как мы видим, меню наше работает и нормально откликается. Конечно в видеоверсии, прикрепленной в самом низу страницы, вы всё это сможете гораздо лучше посмотреть.

А в обработку реакций нажатий на кнопки меню в функции  MainMenuItemProcess вы можете писать любой код и вызывать любые функции.

Вот такое вот получилось у нас меню. Я думаю, удачное!

 

 

Предыдущая часть Программирование МК AVR Следующий урок

 

Исходный код

 

Программатор и дисплей можно приобрести здесь:

Программатор (продавец надёжный) USBASP USBISP 2.0

Дисплей LCD 16×2 с кнопками

 

 

Смотреть ВИДЕОУРОК

 

AVR Модуль LCD 16x2. МЕНЮ

3 комментария на “AVR УРОК 37. Модуль LCD 16×2. МЕНЮ. Часть 4
  1. Валерий:

    На 32 меге не пошло что нужно поменять

    • SERGIOKA:

      В функции ADC_Init() замените название разряда регистра ADCSRA с ADFR на ADATE. При условии что все ножки контроллера подключены правильно, на 32 меге все будет работать. Иногда полезно читать даташиты.

  2. 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?

Добавить комментарий

Ваш e-mail не будет опубликован. Обязательные поля помечены *

*