Разработка цифрового термометра с диапазоном измеряемых температур 0-70 °C, страница 3

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()