Код: Выделить всё
#include <mega8.h>
#include <delay.h>
// I2C Bus functions
#include <i2c.h>
// Alphanumeric LCD functions
#include <alcd.h>
// Declare your global variables here
void menu1 (void) //Пункт вкл\выкл LED
{
int led=0; // Переменная для определения состояния диода
lcd_clear();
lcd_gotoxy(2,0);
lcd_putsf("LED");
while(1) // Проверка состояния диода
{
if (led==0)
{
lcd_gotoxy(4,1);
lcd_putsf("OFF");
}
if (led==1)
{
lcd_gotoxy(4,1);
lcd_putsf("ON");
}
while(1)
{
if (PINC.5==0)
{
if (led==1) // Если диод включон
{
PORTC.2=0; // Выключаем
led=0;
lcd_clear();
lcd_gotoxy(2,0);
lcd_putsf("LED");
lcd_gotoxy(4,1);
lcd_putsf("OFF");
delay_ms(50);
break; // Прерываем цикл
}
if (led==0) // Если выключен
{
PORTC.2=1; // Включаем
led=1;
lcd_clear();
lcd_gotoxy(2,0);
lcd_putsf("LED");
lcd_gotoxy(4,1);
lcd_putsf("ON");
delay_ms(50);
break; // Прерывание
}
}
}
if (PINC.3==0)break; // Этим я хотеля вывести из функции в меню
}
}
void menu2 (void) // Демо пункт
{
lcd_clear();
lcd_gotoxy(5,0);
lcd_putsf("PIN5");
}
void menu3 (void) // Дело пункт
{
lcd_clear();
lcd_gotoxy(5,0);
lcd_putsf("PIN3");
}
void main(void)
{
int mn=1; // переменная счёта меню
PORTB=0x00;
DDRB=0x00;
PORTC=0x38;
DDRC=0x07;
PORTD=0x00;
DDRD=0x00;
TCCR0=0x00;
TCNT0=0x00;
TCCR1A=0x00;
TCCR1B=0x00;
TCNT1H=0x00;
TCNT1L=0x00;
ICR1H=0x00;
ICR1L=0x00;
OCR1AH=0x00;
OCR1AL=0x00;
OCR1BH=0x00;
OCR1BL=0x00;
ASSR=0x00;
TCCR2=0x00;
TCNT2=0x00;
OCR2=0x00;
MCUCR=0x00;
TIMSK=0x00;
UCSRB=0x00;
ACSR=0x80;
SFIOR=0x00;
ADCSRA=0x00;
SPCR=0x00;
TWCR=0x00;
i2c_init();
// Alphanumeric LCD initialization
// Connections are specified in the
// Project|Configure|C Compiler|Libraries|Alphanumeric LCD menu:
// RS - PORTB Bit 0
// RD - PORTB Bit 1
// EN - PORTB Bit 2
// D4 - PORTD Bit 4
// D5 - PORTD Bit 5
// D6 - PORTD Bit 6
// D7 - PORTD Bit 7
// Characters/line: 16
lcd_init(16);
lcd_gotoxy(0,0);
lcd_putsf("Welcome to");
delay_ms(700);
lcd_clear();
lcd_gotoxy(0,0);
lcd_putsf("I'm Ready!!!");
while (1)
{
if (PINC.4==0) // Щелкаем вверх минусуем mn
{
mn--;
}
if (PINC.3==0) // Щелкаем вниз плюсуем mn
{
mn++;
}
if (mn==2) // Пункт диода
{
lcd_clear(); //
lcd_gotoxy(2,0); //
lcd_putsf("LED"); // Здесь отображаю Название пункта
lcd_gotoxy(4,1); //
lcd_putsf("ON/OFF"); //
while (1) // Здесь если нужно войти ждем PC5, если нет, то вниз вверх
{
if (PINC.5==0)menu1();
if (PINC.4==0)mn--;
if (PINC.3==0)mn++;
}
}
if (mn==3) // Демо пункт
{
lcd_clear(); //
lcd_gotoxy(2,0); // Отображаю название
lcd_putsf("menu2") ; //
if (PINC.5==0) // Ждем 0 на PC5 если нужно войти
{
menu2();
}
}
if (mn==0)
{
mn=1;
}
}
}
- Вложения
-
- lcd_menu.zip
- (13.47 КБ) 223 скачивания


