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
.basfile 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 منتشر شده است و استفاده از آن آزاد است.
