if(bnID==7) LCD_string("7");
if(bnID==8) LCD_string("8");
if(bnID==9) LCD_string("9");
if(bnID==10) LCD_string("0");
if(bnID==11) LCD_string("A");
if(bnID==12) LCD_string("B");
if(bnID==13) LCD_string("C");
if(bnID==14) LCD_string("D");
if(bnID==15) LCD_string("*");
if(bnID==16) LCD_string("#");
LCD_xy(0,2);
if(bnIDl==0) LCD_string("_");
if(bnIDl==1) LCD_string("1");
if(bnIDl==2) LCD_string("2");
if(bnIDl==3) LCD_string("3");
if(bnIDl==4) LCD_string("4");
if(bnIDl==5) LCD_string("5");
if(bnIDl==6) LCD_string("6");
if(bnIDl==7) LCD_string("7");
if(bnIDl==8) LCD_string("8");
if(bnIDl==9) LCD_string("9");
if(bnIDl==10) LCD_string("0");
if(bnIDl==11) LCD_string("A");
if(bnIDl==12) LCD_string("B");
if(bnIDl==13) LCD_string("C");
if(bnIDl==14) LCD_string("D");
if(bnIDl==15) LCD_string("*");
if(bnIDl==16) LCD_string("#");*/
}
//----------------------------------------------------------------------------void MenuMainInit()
// инициализация главного меню
{
// инициялизация дисплея
DDRA=0xF0; // 11110000 инициализация входа АЦП
Caption();
LCD_xy(1,2);
LCD_string1(TADCH);
LCD_xy(2,5);
LCD_string1(TU);
LCD_xy(3,5);
LCD_string1(TT);
// настройка портов
DDRD=0xff;
// начальные установки
//interv=0;
SDOUT=1;
Uop=_Uop;
bnID=0;
}
//----------------------------------------------------------------------------void MenuMain()
{
float interv=0;
MenuMainInit();
while(1){
// задержка
__delay_ms(STDDEL);
interv=interv+STDDEL/1000.0;
// индикатор цикла
if(SDOUT==1)
if(PIND==0xff) PORTD=0;
else PORTD=0xff;
else
PORTD=0x00;
if(interv>=1){ // с интервалом в 1000 мс (1с)
interv=0;
// читаем АЦП
ADCSRA=0xC7;
while(!(ADCSRA & 0x10));
D=ADCH;
if(ADCH<100) D=ADCH-7;
if(ADCH>193) D=ADCH+7;
if((ADCH-7)>255) D=255;
LCD_xy(1,7);
PrintJKI(D,0);
// преобразование в напряжение
U=(D*Uop)/255.0;
LCD_xy(2,7);
PrintJKI(U,2);
// преобразовываем в температуру
if((ADCH1-ADCH2)!=0)
T=T2-D*(T2-T1)/(ADCH1-ADCH2)+3;
else
T=0;
LCD_xy(3,7);
PrintJKI(T,2);
}
// обрабатываем клавиатуру
SkanKlav(0);
if(bnID==1) MenuSveto(); // 1 - светоиодное меню
if(bnID==2) MenuOptions(); // 2 - меню опций
if(bnID==13) MenuKalibr(); // C - калибровка температуры
if(bnID==14) // D - вкл/отключить мерцающий СД
if(SDOUT==0) SDOUT=1;
else SDOUT=0;
}
}
//----------------------------------------------------------------------------KRdelayMs(unsigned long delay)
{
int i,j=0;
for(i=1;i<=delay*16000; i++) j++;//__no_operation();
}
//----------------------------------------------------------------------------void MenuSveto()
{
char cid=0;
// инициализация меню
Caption();
LCD_xy(1,2);
LCD_string("А-вкл/выкл сд.");
LCD_xy(2,2);
LCD_string1(Bcikl);
LCD_xy(3,2);
LCD_string1(Cexit);
DDRD=0xff;
SDOUT=1;
// рабочий цикл
for(;;){
__delay_ms(STDDEL);
SkanKlav(0);
// цикличекски
if(cid==1)
if(PIND==0xff) PORTD=0;
else PORTD=0xff;
// обработка клавиш
if(bnID==11) // A - вкл/выкл всетодиод
if(PIND==0xff) PORTD=0;
else PORTD=0xff;
if(bnID==12) // B - цикл
if(cid==0) cid=1;
else cid=0;
if(bnID==13){ // C - выход
MenuMainInit();
return;
}
}
}
//----------------------------------------------------------------------------void MenuOptions()
Уважаемый посетитель!
Чтобы распечатать файл, скачайте его (в формате Word).
Ссылка на скачивание - внизу страницы.