This project implements a simple, efficient menu system for the ATmega16 microcontroller using the concept of a Finite-State Machine (FSM). The menu is displayed on a 16x2 character LCD and controlled with three buttons (UP, DOWN, SELECT). The SELECT button uses INT0 external interrupt to enter/confirm menu actions.
- ⚙️ Structured menu navigation with a state machine
- 📟 LCD 16x2 menu interface
- 🎛️ 3-button control (UP, DOWN, SELECT)
- ⏱️ External interrupt (INT0) for clean SELECT behavior
- 💾 Edit and save settings interactively
- 🧪 Example options: LED control, temperature threshold
Component | Pin |
---|---|
LCD 16x2 | PA(0-5) |
LM35 | PA6 |
Button UP | PD3 |
Button DOWN | PD4 |
Button SELECT | PD2 (INT0) |
LED (optional) | PB0 |
Fan (optional) | PB1 |
AVR-Menu-BASCOM/
├── Bascom Code/
│ └── menu_state_machine.bas
├── Simulation (Proteus)/
│ └── AVR_Menu_Simulation.pdsprj
├── docs/
│ └── screenshot.png
├── LICENSE
└── README.md
- Open
.bas
file with BASCOM AVR IDE. - Compile and upload to an ATmega16 MCU.
- Connect LCD and buttons as per pin mapping.
- Press SELECT (INT0) to enter menu.
- Use UP/DOWN to navigate.
- Press SELECT again to confirm or enter edit mode.
- Press SELECT again to save and exit.
avr
bascom
lcd-menu
finite-state-machine
microcontroller
embedded
fsm
interrupt-driven-menu
This project is licensed under the MIT License.
این پروژه یک سیستم منوی ساده و ساختارمند را برای میکروکنترلر ATmega16 پیادهسازی میکند که مبتنی بر مفهوم ماشین حالت محدود (FSM) میباشد. این منو روی نمایشگر LCD 16x2 نمایش داده شده و با سه دکمه (بالا، پایین، انتخاب) کنترل میشود. دکمه انتخاب با استفاده از وقفه خارجی INT0 عمل میکند.
- ⚙️ پیمایش منو با استفاده از معماری ماشین حالت
- 📟 رابط منو روی LCD کاراکتری 16x2
- 🎛️ کنترل با سه دکمه (بالا، پایین، تایید)
- ⏱️ استفاده از وقفه خارجی برای دکمه تایید (INT0)
- 💾 امکان ویرایش تنظیمات و ذخیره آنها
- 🧪 گزینههای نمونه: کنترل LED، تنظیم دمای مرجع
قطعه | پایه متصل |
---|---|
LCD 16x2 | PA(0-5) |
LM35 | PA6 |
دکمه بالا | PD3 |
دکمه پایین | PD4 |
دکمه تایید (انتخاب) | PD2 (INT0) |
LED (اختیاری) | PB0 |
Fan (اختیاری) | PB1 |
AVR-Menu-BASCOM/
├── Bascom Code/
│ └── menu_state_machine.bas
├── Simulation (Proteus)/
│ └── AVR_Menu_Simulation.pdsprj
├── docs/
│ └── screenshot.png
├── LICENSE
└── README.md
- فایل
.bas
را با نرمافزار BASCOM AVR باز کنید. - کامپایل کرده و روی میکروکنترلر ATmega16 فلش کنید.
- LCD و دکمهها را طبق جدول بالا متصل کنید.
- دکمه تایید (INT0) را برای ورود به منو بزنید.
- با دکمههای بالا/پایین بین گزینهها حرکت کنید.
- دوباره دکمه تایید را برای ورود به ویرایش بزنید.
- بار دیگر دکمه تایید را برای ذخیره تنظیمات و خروج بزنید.
AVR
BASCOM
ماشین حالت
FSM
سیستم منو
میکروکنترلر
LCD منو
وقتی اینتراپت
پروژه AVR
این پروژه تحت مجوز MIT منتشر شده است و استفاده از آن آزاد است.