#include #include #include #include uint8_t tim1 = 0; uint8_t tim2 = 0; uint8_t min1 = 0; uint8_t min2 = 0; uint8_t sek = 0; int avbrott = 0; int in =0; //graf värde int rad = 0;//graf raden int messure = 0; float temp; float printtemp; int number; int tiotal; int ental; int dec; int temp24h[120]; float medel=0; int mintemp = 200; uint8_t mintim1 = 0; uint8_t mintim2 = 0; uint8_t minmin1 = 0; uint8_t minmin2 = 0; int maxtemp = 0; uint8_t maxtim1 = 0; uint8_t maxtim2 = 0; uint8_t maxmin1 = 0; uint8_t maxmin2 = 0; int grans; int grans2; int larmtemplow = 100; int larmtemphigh = 130; int mflag = 0; char wflag =0; char wflag2 =0; char chargen(int in){ //gör char av int if(in==0){ return'0'; }else if(in==1){ return'1'; }else if(in==2){ return'2'; }else if(in==3){ return'3'; }else if(in==4){ return'4'; }else if(in==5){ return'5'; }else if(in==6){ return'6'; }else if(in==7){ return'7'; }else if(in==8){ return'8'; }else if(in==9){ return'9'; } return' '; } void init(void){ //initierar avbrott OCR0 = 0xc3; //räknar till 195 = 0,02496 s (255 = ?) TCCR0 = 0x0d; //inställning TIMSK = 0x02; //tillåter avbrott TCNT0 = 0x00; //nollställning SREG = SREG|0x80; return; } void SIG_OUTPUT_COMPARE0(void){ //avbrottsrutin avbrott = avbrott+1; if(avbrott==400){ //10sek har gått wflag=1; avbrott=0; sek = sek+1; if(sek==6){ sek=0; min1 = min1+1; } if(min1==10){ min1=0; min2 = min2+1; } if(min2==6){ min2=0; tim1=tim1+1; } if((tim2==2) && (tim1==4)){ tim1=0; tim2=0; }else if(tim1==10){ tim1=0; tim2 = tim2+1; } ADConv(); } SREG = SREG|0x80; return; } void busy(int chip){ //kollar om displayen är redo DDRD = 0x00; //sätter dataporten i läsningsläge uint8_t val = 0x01; //varibel där läsningen ska sparas och kollas,sätts till 1 för att gå in i while-satsen while(val != 0){ //körs till busy-biten är 0 = ready if(chip==1){ //vänster display-halva PORTB = 0x38; PORTB = 0xB8; val = PIND; PORTB = 0x38; PORTB = 0x34; }else if(chip==2){ //höger display-halva PORTB = 0x34; PORTB = 0xB4; val = PIND; PORTB = 0x34; PORTB = 0x38; } val = val&0x80; //maskar ut busy-biten } DDRD = 0xff; //sätter dataporten i skrivläge igen PORTB = 0x1c; _delay_loop_2(10); //väntar ca 12,5 microsekunder return; } void comandLCD (uint8_t com,int chip){ //komando till displayen busy(chip); //kontrollerar om displayen är redo för skrivning PORTD = com; //kommando data if (chip==1){ //vänster display-halva PORTB = 0x18; PORTB = 0x98; PORTB = 0x18; PORTB = 0x74; }else if(chip==2){//höger display-halva PORTB = 0x14; PORTB = 0x94; PORTB = 0x14; PORTB = 0x78; } PORTB = 0x1c; return; } void writeLCD(uint8_t wri,int chip){ //Skriver till displayen busy(chip); //kontrollerar om displayen är redo för skrivning PORTD = wri; //data som ska skrivas if (chip==1){ //vänster halva PORTB = 0x58; PORTB = 0xd8; PORTB = 0x58; PORTB = 0x34; }else if(chip==2){//höger halva PORTB = 0x54; PORTB = 0xd4; PORTB = 0x54; PORTB = 0x38; } PORTB = 0x1C; return; } void write(char ch, int chip){ //skriver bokstäver till displayen if(ch==' '){ writeLCD(0x00,chip); }else if(ch=='a'){ writeLCD(0x60,chip); writeLCD(0x94,chip); writeLCD(0x94,chip); writeLCD(0x78,chip); //writeLCD(0x80,chip); }else if(ch=='c'){ writeLCD(0x70,chip); writeLCD(0x88,chip); writeLCD(0x88,chip); }else if(ch=='C'){ writeLCD(0x3c,chip); writeLCD(0x42,chip); writeLCD(0x81,chip); writeLCD(0x81,chip); }else if(ch=='d'){ writeLCD(0x60,chip); writeLCD(0x90,chip); writeLCD(0x90,chip); writeLCD(0x7e,chip); writeLCD(0x80,chip); }else if(ch=='e'){ writeLCD(0x70,chip); writeLCD(0xa8,chip); writeLCD(0xa8,chip); writeLCD(0x90,chip); writeLCD(0x40,chip); }else if(ch=='f'){ writeLCD(0x10,chip); writeLCD(0xfc,chip); writeLCD(0x12,chip); writeLCD(0x04,chip); }else if(ch=='g'){ writeLCD(0x48,chip); writeLCD(0x94,chip); writeLCD(0x94,chip); writeLCD(0x78,chip); }else if(ch=='h'){ writeLCD(0xfe,chip); writeLCD(0x20,chip); writeLCD(0x10,chip); writeLCD(0xe0,chip); }else if(ch=='i'){ writeLCD(0xf4,chip); }else if(ch=='j'){ writeLCD(0x40,chip); writeLCD(0x80,chip); writeLCD(0x74,chip); }else if(ch=='K'){ writeLCD(0xff,chip); writeLCD(0x18,chip); writeLCD(0x24,chip); writeLCD(0xc3,chip); }else if(ch=='k'){ writeLCD(0xfe,chip); writeLCD(0x20,chip); writeLCD(0x50,chip); writeLCD(0x88,chip); }else if(ch=='L'){ writeLCD(0xfe,chip); writeLCD(0x80,chip); writeLCD(0x80,chip); }else if(ch=='l'){ writeLCD(0x7e,chip); writeLCD(0x80,chip); }else if(ch=='M'){ writeLCD(0xff,chip); writeLCD(0x02,chip); writeLCD(0x04,chip); writeLCD(0x02,chip); writeLCD(0xff,chip); }else if(ch=='m'){ writeLCD(0xf8,chip); writeLCD(0x10,chip); writeLCD(0x08,chip); writeLCD(0x70,chip); writeLCD(0x08,chip); writeLCD(0xf0,chip); }else if(ch=='n'){ writeLCD(0xf8,chip); writeLCD(0x10,chip); writeLCD(0x08,chip); writeLCD(0xf0,chip); }else if(ch=='o'){ writeLCD(0x70,chip); writeLCD(0x88,chip); writeLCD(0x88,chip); writeLCD(0x70,chip); }else if(ch=='p'){ writeLCD(0xf0,chip); writeLCD(0x28,chip); writeLCD(0x28,chip); writeLCD(0x10,chip); }else if(ch=='r'){ writeLCD(0xf8,chip); writeLCD(0x10,chip); writeLCD(0x08,chip); writeLCD(0x10,chip); }else if(ch=='s'){ writeLCD(0x90,chip); writeLCD(0xa8,chip); writeLCD(0x48,chip); }else if(ch=='S'){ writeLCD(0x46,chip); writeLCD(0x89,chip); writeLCD(0x89,chip); writeLCD(0x72,chip); }else if(ch=='t'){ writeLCD(0x08,chip); writeLCD(0x7e,chip); writeLCD(0x88,chip); writeLCD(0x40,chip); }else if(ch=='T'){ writeLCD(0x01,chip); writeLCD(0x01,chip); writeLCD(0xff,chip); writeLCD(0x01,chip); writeLCD(0x01,chip); }else if(ch=='u'){ writeLCD(0x78,chip); writeLCD(0x80,chip); writeLCD(0x80,chip); writeLCD(0x78,chip); }else if(ch=='v'){ writeLCD(0x78,chip); writeLCD(0x80,chip); writeLCD(0x78,chip); }else if(ch=='x'){ writeLCD(0xd8,chip); writeLCD(0x20,chip); writeLCD(0xd8,chip); }else if(ch=='y'){ writeLCD(0x4c,chip); writeLCD(0x90,chip); writeLCD(0x90,chip); writeLCD(0x7c,chip); }else if(ch=='ö'){ writeLCD(0x72,chip); writeLCD(0x88,chip); writeLCD(0x88,chip); writeLCD(0x72,chip); }else if(ch=='ä'){ writeLCD(0x61,chip); writeLCD(0x94,chip); writeLCD(0x94,chip); writeLCD(0x79,chip); }else if(ch=='0'){ writeLCD(0x7e,chip); writeLCD(0x81,chip); writeLCD(0x81,chip); writeLCD(0x7e,chip); }else if(ch=='1'){ writeLCD(0x84,chip); writeLCD(0x82,chip); writeLCD(0xff,chip); writeLCD(0x80,chip); }else if(ch=='2'){ writeLCD(0xe2,chip); writeLCD(0x91,chip); writeLCD(0x89,chip); writeLCD(0x86,chip); }else if(ch=='3'){ writeLCD(0x42,chip); writeLCD(0x81,chip); writeLCD(0x89,chip); writeLCD(0x76,chip); }else if(ch=='4'){ writeLCD(0x10,chip); writeLCD(0x1c,chip); writeLCD(0x12,chip); writeLCD(0xff,chip); //writeLCD(0x10,chip); }else if(ch=='5'){ writeLCD(0x5f,chip); writeLCD(0x89,chip); writeLCD(0x89,chip); writeLCD(0x71,chip); }else if(ch=='6'){ writeLCD(0x7e,chip); writeLCD(0x91,chip); writeLCD(0x91,chip); writeLCD(0x61,chip); //writeLCD(0x80,chip); }else if(ch=='7'){ writeLCD(0xe1,chip); writeLCD(0x19,chip); writeLCD(0x05,chip); writeLCD(0x03,chip); }else if(ch=='8'){ writeLCD(0x76,chip); writeLCD(0x89,chip); writeLCD(0x89,chip); writeLCD(0x76,chip); }else if(ch=='9'){ writeLCD(0x86,chip); writeLCD(0x89,chip); writeLCD(0x89,chip); writeLCD(0x7e,chip); }else if(ch=='.'){ writeLCD(0x80,chip); }else if(ch==':'){ writeLCD(0x44,chip); }else if(ch=='('){ writeLCD(0x7e,chip); writeLCD(0x81,chip); }else if(ch==')'){ writeLCD(0x81,chip); writeLCD(0x7e,chip); }else if(ch=='?'){ writeLCD(0x02,chip); writeLCD(0x01,chip); writeLCD(0xb1,chip); writeLCD(0x09,chip); writeLCD(0x06,chip); }else if(ch=='*'){ writeLCD(0x02,chip); writeLCD(0x05,chip); writeLCD(0x02,chip); }else if(ch=='-'){ writeLCD(0x10,chip); writeLCD(0x10,chip); writeLCD(0x10,chip); writeLCD(0x10,chip); } return; } void clearline(uint8_t line,int chip){ //rensar en rad comandLCD(64,chip);//sätter y start(64+ystart) uint8_t nline = line+184; comandLCD(nline,chip);//X start(184+rad) int i=0; for(i=0;i<=63;i++){ writeLCD(0,chip); } comandLCD(64,1);//sätter y start chip1(64+ystart) return; } void fillline(uint8_t line,int chip){ //fyller en rad comandLCD(64,1);//sätter y start chip1(64+ystart) uint8_t nline = line+184; comandLCD(nline,1);//X start chip 1(184+rad) int i=0; for(i=0;i<=63;i++){ writeLCD(0xff,chip); } return; } void clear(int chip){ //rensar en displayhalva uint8_t line=0; for(line=0;line<=7;line++){ clearline(line,chip); } return; } void fill(int chip){ //fyller en displayhalva uint8_t line=0; for(line=0;line<=7;line++){ fillline(line,chip); } return; } void ADConv(void){ //AD omvandling, hämtar mätvärde ADMUX = 0x20; //använder PA0 och AREF som refferens ADLAR=1 ADCSR = 0x87; //1100 0111 enable+startar conversion+Division factor 128 sbi(ADCSR,ADSC); messure=0; loop_until_bit_is_set(ADCSR,ADIF);//flaggkontroll sbi(ADCSR,ADIF); messure = ADCH; //sparar data PORTC = messure; //test //indikerar mätning if(!bit_is_set(PINA,2)){ sbi(PORTA,2); //alarm på _delay_loop_2(3664); _delay_loop_2(5664); cbi(PORTA,2); //alarm av }else{ cbi(PORTA,2); //alarm av _delay_loop_2(3664); _delay_loop_2(5664); sbi(PORTA,2); //alarm på } if(messurelarmtemphigh){ sbi(PORTA,2); //alarm på //PORTC=0x02; }else{ cbi(PORTA,2); //alarm av //PORTC=0x03; } if(messuremaxtemp){ //Största uppmätta Temperatur maxtemp=messure; maxtim1=tim1; maxtim2=tim2; maxmin1=min1; maxmin2=min2; } if(mflag==1){ // Lagrar ett värde var 10 sek (12 min <-- 71=mflag) mflag=0; for (int i=0; i<=118;i++){ temp24h[i]=temp24h[i+1]; } temp24h[119]=messure; } mflag=mflag+1; return; } void printTemp(uint8_t y, uint8_t x, uint8_t sid, int temp){ //y:0-64 x:0-7 sid:1,2 temp:1-3 //1:Aktuell temp //2:Max temp //3:Min temp //4:Medel temp //5:Max gäns temp //6:Min gäns temp if(temp==1)printtemp = messure*52.3; if(temp==2)printtemp = maxtemp*52.3; if(temp==3)printtemp = mintemp*52.3; if(temp==4)printtemp = medel*52.3; if(temp==5)printtemp = larmtemphigh*52.3; if(temp==6)printtemp = larmtemplow*52.3; printtemp=printtemp/256; number = printtemp/10; comandLCD(64+y,sid); //y start (64+pos) comandLCD(184+x,sid);//X start chip 1 (184+rad) comandLCD(192,sid);//X pagestart (192+rad) write(' ',sid); write(chargen(number),sid); write(' ',sid); printtemp -= number*10; number = printtemp/1; write(chargen(number),sid); write(' ',sid); write('.',sid); write(' ',sid); printtemp -= number; number = printtemp/0.1; write(chargen(number),sid); write(' ',sid); write('*',sid); write('C',sid); } int main(void){// >>>> ----------Main Metod----------- <<<< //-----Instruktioner----- // 1 Sätter Direction till skriv på port D&B DDRA = 0x04; DDRB = 0xff; DDRD = 0xff; DDRC = 0xff; //DDRC = 0xff; //testning // 2 Display ON comandLCD(0x3f,1);//sätter chip1 i läge ON comandLCD(63,2);//sätter chip2 i läge ON // 3 Set address Y (0-63) 6 sista bitarna, (64+ystart) //comandLCD(64,1);//sätter y start chip1 //comandLCD(64,2);//sätter y start chip2 // 4 set rad X (0-7) 3 sista bitarna, (184+rad) //comandLCD(184,1);//X start chip 1 //comandLCD(184,2);//X start chip 2 //page //comandLCD(192,1);//X start chip 1 192+rad //comandLCD(192,2);//X start chip 2 tim2=1; tim1=5; min2=3; min1=1; sek=3; maxtim2=1; maxtim1=1; maxmin2=1; maxmin1=1; mintim2=0; mintim1=0; minmin2=0; minmin1=0; wflag2=0; //_delay_loop_2(333); clear(1); clear(2); wflag=1; wflag2=0; init(); //ADConv();//<--test while(1){ if(bit_is_clear(PINA,3)){ //Knapp1+ ===========> Meny2 loop_until_bit_is_set(PINA,3); clear(1); clear(2); comandLCD(112,1); //y star (64+pos) comandLCD(184,1);//X start chip 1 (184+rad) comandLCD(192,1);//X pagestart (192+rad) write('M',1); write(' ',1); write('e',1); write(' ',1); write('n',1); comandLCD(72,1); //y star (64+pos) comandLCD(186,1);//X start chip 1 (184+rad) comandLCD(192,1);//X pagestart (192+rad) write('M',1); write(' ',1); write('a',1); write(' ',1); write('x',1); write(' ',1); write('.',1); write(' ',1); write('T',1); write(' ',1); write('e',1); write(' ',1); write('m',1); write(' ',1); write('p',1); write(' ',1); write(':',1); comandLCD(72,1); //y star (64+pos) comandLCD(187,1);//X start chip 1 (184+rad) comandLCD(192,1);//X pagestart (192+rad) write('T',1); write(' ',1); write('i',1); write(' ',1); write('d',1); write(' ',1); write(':',1); comandLCD(72,1); //y star (64+pos) comandLCD(189,1);//X start chip 1 (184+rad) comandLCD(192,1);//X pagestart (192+rad) write('M',1); write(' ',1); write('i',1); write(' ',1); write('n',1); write(' ',1); write('.',1); write(' ',1); write('T',1); write(' ',1); write('e',1); write(' ',1); write('m',1); write(' ',1); write('p',1); write(' ',1); write(':',1); comandLCD(72,1); //y star (64+pos) comandLCD(190,1);//X start chip 1 (184+rad) comandLCD(192,1);//X pagestart (192+rad) write('T',1); write(' ',1); write('i',1); write(' ',1); write('d',1); write(' ',1); write(':',1); comandLCD(86,1); //y star (64+pos) comandLCD(191,1);//X start chip 1 (184+rad) comandLCD(192,1);//X pagestart (192+rad) write('(',1); write(' ',1); write('r',1); write(' ',1); write('a',1); write(' ',1); write('d',1); write(' ',1); write('e',1); write(' ',1); write('r',1); write(' ',1); write('a',1); write(' ',1); write('?',1); write(' ',1); write(' ',1); write(' ',1); comandLCD(64,2); //y star (64+pos) comandLCD(184,2);//X start chip 1 (184+rad) comandLCD(192,2);//X pagestart (192+rad) write(' ',2); write('y',2); write(' ',2); write(' ',2); write(' ',2); write('2',2); printTemp(3,2,2,2); comandLCD(64,2); //y star (64+pos) comandLCD(187,2);//X start chip 1 (184+rad) comandLCD(192,2);//X pagestart (192+rad) write(' ',2); write(' ',2); write(' ',2); write(chargen(maxtim2),2); write(' ',2); write(chargen(maxtim1),2); write(' ',2); write(':',2); write(' ',2); write(chargen(maxmin2),2); write(' ',2); write(chargen(maxmin1),2); printTemp(3,5,2,3); comandLCD(64,2); //y star (64+pos) comandLCD(190,2);//X start chip 1 (184+rad) comandLCD(192,2);//X pagestart (192+rad) write(' ',2); write(' ',2); write(' ',2); write(chargen(mintim2),2); write(' ',2); write(chargen(mintim1),2); write(' ',2); write(':',2); write(' ',2); write(chargen(minmin2),2); write(' ',2); write(chargen(minmin1),2); comandLCD(64,2); //y star (64+pos) comandLCD(191,2);//X start chip 1 (184+rad) comandLCD(192,2);//X pagestart (192+rad) write('t',2); write(' ',2); write('r',2); write(' ',2); write('y',2); write(' ',2); write('c',2); write(' ',2); write('k',2); write(':',2); write(' ',2); write(' ',2); write('v',2); write(' ',2); write('ä',2); write(' ',2); write('l',2); write(' ',2); write('j',2); write(' ',2); write(')',2); _delay_loop_2(3664); while(bit_is_set(PINA,3)&&bit_is_set(PINA,4)&&bit_is_set(PINA,5)){ } if(bit_is_clear(PINA,4)){ //Knapp2Välj ==>Radera i meny2 sbi(PORTA,2); //tänder larm loop_until_bit_is_set(PINA,4); maxtemp=0; mintemp=250; clear(1); clear(2); comandLCD(106,1); //y star (64+pos) comandLCD(187,1);//X start chip 1 (184+rad) comandLCD(192,1);//X pagestart (192+rad) write('r',1); write(' ',1); write('a',1); write(' ',1); write('d',1); write(' ',1); write('e',1); comandLCD(64,2); //y star (64+pos) comandLCD(187,2);//X start chip 1 (184+rad) comandLCD(192,2);//X pagestart (192+rad) write(' ',2); write('r',2); write(' ',2); write('a',2); write(' ',2); write('t',2); _delay_loop_2(3664); //väntar ca 125 microsekunder while(bit_is_set(PINA,3)&&bit_is_set(PINA,4)&&bit_is_set(PINA,5)){ } loop_until_bit_is_set(PINA,3); loop_until_bit_is_set(PINA,4); loop_until_bit_is_set(PINA,5); } if(bit_is_clear(PINA,3)){ //Knapp1+ ==========> Meny3 //sbi(PORTA,2); //tänder larm loop_until_bit_is_set(PINA,3); clear(1); clear(2); comandLCD(112,1); //y star (64+pos) comandLCD(184,1);//X start chip 1 (184+rad) comandLCD(192,1);//X pagestart (192+rad) write('M',1); write(' ',1); write('e',1); write(' ',1); write('n',1); comandLCD(64,2); //y star (64+pos) comandLCD(184,2);//X start chip 1 (184+rad) comandLCD(192,2);//X pagestart (192+rad) write(' ',2); write('y',2); write(' ',2); write('3',2); comandLCD(102,1); //y star (64+pos) comandLCD(185,1);//X start chip 1 (184+rad) comandLCD(192,1);//X pagestart (192+rad) write('L',1); write(' ',1); write('a',1); write(' ',1); write('r',1); write(' ',1); write('m',1); write(' ',1); write('g',1); write(' ',1); comandLCD(64,2); //y star (64+pos) comandLCD(185,2);//X start chip 1 (184+rad) comandLCD(192,2);//X pagestart (192+rad) write('r',2); write(' ',2); write('ä',2); write(' ',2); write('n',2); write(' ',2); write('s',2); write(' ',2); write('e',2); write(' ',2); write('r',2); comandLCD(102,1); //y star (64+pos) comandLCD(187,1);//X start chip 1 (184+rad) comandLCD(192,1);//X pagestart (192+rad) write('ö',1); write(' ',1); write('v',1); write(' ',1); write('r',1); write(' ',1); write('e',1); write(' ',1); write(':',1); printTemp(11,5,2,6); comandLCD(100,1); //y star (64+pos) comandLCD(189,1);//X start chip 1 (184+rad) comandLCD(192,1);//X pagestart (192+rad) write('u',1); write(' ',1); write('n',1); write(' ',1); write('d',1); write(' ',1); write('r',1); write(' ',1); write('e',1); write(' ',1); write(':',1); printTemp(11,3,2,5); comandLCD(86,1); //y star (64+pos) comandLCD(191,1);//X start chip 1 (184+rad) comandLCD(192,1);//X pagestart (192+rad) write('(',1); write(' ',1); write('ä',1); write(' ',1); write('n',1); write(' ',1); write('d',1); write(' ',1); write('r',1); write(' ',1); write('a',1); write(' ',1); write('?',1); write(' ',1); write(' ',1); write(' ',1); comandLCD(64,2); //y star (64+pos) comandLCD(191,2);//X start chip 1 (184+rad) comandLCD(192,2);//X pagestart (192+rad) write('t',2); write(' ',2); write('r',2); write(' ',2); write('y',2); write(' ',2); write('c',2); write(' ',2); write('k',2); write(':',2); write(' ',2); write(' ',2); write('v',2); write(' ',2); write('ä',2); write(' ',2); write('l',2); write(' ',2); write('j',2); write(' ',2); write(')',2); _delay_loop_2(3664); //väntar ca 125 microsekunder while(bit_is_set(PINA,3)&&bit_is_set(PINA,4)&&bit_is_set(PINA,5)){ } if(bit_is_clear(PINA,4)){ //Knapp2Välj ==>Ändra i meny3 //sbi(PORTA,2); //tänder larm loop_until_bit_is_set(PINA,4); clear(1); clear(2); comandLCD(112,1); //y star (64+pos) comandLCD(184,1);//X start chip 1 (184+rad) comandLCD(192,1);//X pagestart (192+rad) write('M',1); write(' ',1); write('e',1); write(' ',1); write('n',1); comandLCD(64,2); //y star (64+pos) comandLCD(184,2);//X start chip 1 (184+rad) comandLCD(192,2);//X pagestart (192+rad) write(' ',2); write('y',2); write(' ',2); write('3',2); //skriva och plussa comandLCD(64,1); //y star (64+pos) comandLCD(187,1);//X start chip 1 (184+rad) comandLCD(192,1);//X pagestart (192+rad) write('ö',1); write(' ',1); write('v',1); write(' ',1); write('r',1); write(' ',1); write('e',1); write(' ',1); write(':',1); comandLCD(64,1); //y star (64+pos) comandLCD(189,1);//X start chip 1 (184+rad) comandLCD(192,1);//X pagestart (192+rad) write('u',1); write(' ',1); write('n',1); write(' ',1); write('d',1); write(' ',1); write('r',1); write(' ',1); write('e',1); write(' ',1); write(':',1); comandLCD(64,2); //y star (64+pos) comandLCD(187,2);//X start chip 1 (184+rad) comandLCD(192,2);//X pagestart (192+rad) write('1',2); write(' ',2); write('0',2); write(' ',2); write(':',2); write(' ',2); write('t',2); write(' ',2); write('a',2); write(' ',2); write('l',2); write(' ',2); write(' ',2); write(' ',2); write('*',2); write('C',2); write(' ',2); write(':',2); comandLCD(64,2); //y star (64+pos) comandLCD(188,2);//X start chip 1 (184+rad) comandLCD(192,2);//X pagestart (192+rad) write('1',2); write(' ',2); write(':',2); write(' ',2); write('t',2); write(' ',2); write('a',2); write(' ',2); write('l',2); write(' ',2); write(' ',2); write(' ',2); write('*',2); write('C',2); write(' ',2); write(':',2); comandLCD(64,2); //y star (64+pos) comandLCD(189,2);//X start chip 1 (184+rad) comandLCD(192,2);//X pagestart (192+rad) write('1',2); write(' ',2); write('0',2); write(' ',2); write(':',2); write(' ',2); write('t',2); write(' ',2); write('a',2); write(' ',2); write('l',2); write(' ',2); write(' ',2); write(' ',2); write('*',2); write('C',2); write(' ',2); write(':',2); comandLCD(64,2); //y star (64+pos) comandLCD(190,2);//X start chip 1 (184+rad) comandLCD(192,2);//X pagestart (192+rad) write('1',2); write(' ',2); write(':',2); write(' ',2); write('t',2); write(' ',2); write('a',2); write(' ',2); write('l',2); write(' ',2); write(' ',2); write(' ',2); write('*',2); write('C',2); write(' ',2); write(':',2); grans=0; while(bit_is_set(PINA,4)){ if(bit_is_clear(PINA,3)){ if(grans==9){ grans=0; }else{ grans++; } _delay_loop_2(3664); loop_until_bit_is_set(PINA,3); } if(bit_is_clear(PINA,5)){ if(grans==0){ grans=9; }else{ grans--; } _delay_loop_2(3664); loop_until_bit_is_set(PINA,5); } comandLCD(100,2); //y star (64+pos) comandLCD(187,2);//X start chip 1 (184+rad) comandLCD(192,2);//X pagestart (192+rad) write(chargen(grans),2); _delay_loop_2(2664); loop_until_bit_is_set(PINA,3); loop_until_bit_is_set(PINA,4); loop_until_bit_is_set(PINA,5); while(bit_is_set(PINA,3)&&bit_is_set(PINA,4)&&bit_is_set(PINA,5)){ } } loop_until_bit_is_set(PINA,4); while(bit_is_set(PINA,4)){ if(bit_is_clear(PINA,3)){ if(grans2==9){ grans2=0; }else{ grans2++; } _delay_loop_2(3664); loop_until_bit_is_set(PINA,3); } if(bit_is_clear(PINA,5)){ if(grans2==0){ grans2=9; }else{ grans2--; } _delay_loop_2(3664); loop_until_bit_is_set(PINA,5); } comandLCD(100,2); //y star (64+pos) comandLCD(188,2);//X start chip 1 (184+rad) comandLCD(192,2);//X pagestart (192+rad) write(chargen(grans2),2); _delay_loop_2(2664); loop_until_bit_is_set(PINA,3); loop_until_bit_is_set(PINA,5); while(bit_is_set(PINA,3)&&bit_is_set(PINA,4)&&bit_is_set(PINA,5)){ } } loop_until_bit_is_set(PINA,4); grans=grans*10; grans=grans+grans2; larmtemphigh=grans*256; larmtemphigh=larmtemphigh/52.3; grans=0; grans2=0; while(bit_is_set(PINA,4)){ if(bit_is_clear(PINA,3)){ if(grans==9){ grans=0; }else{ grans++; } _delay_loop_2(3664); loop_until_bit_is_set(PINA,3); } if(bit_is_clear(PINA,5)){ if(grans==0){ grans=9; }else{ grans--; } _delay_loop_2(3664); loop_until_bit_is_set(PINA,5); } comandLCD(100,2); //y star (64+pos) comandLCD(189,2);//X start chip 1 (184+rad) comandLCD(192,2);//X pagestart (192+rad) write(chargen(grans),2); _delay_loop_2(2664); loop_until_bit_is_set(PINA,3); loop_until_bit_is_set(PINA,5); while(bit_is_set(PINA,3)&&bit_is_set(PINA,4)&&bit_is_set(PINA,5)){ } } loop_until_bit_is_set(PINA,4); while(bit_is_set(PINA,4)){ if(bit_is_clear(PINA,3)){ if(grans2==9){ grans2=0; }else{ grans2++; } _delay_loop_2(3664); loop_until_bit_is_set(PINA,3); } if(bit_is_clear(PINA,5)){ if(grans2==0){ grans2=9; }else{ grans2--; } _delay_loop_2(3664); loop_until_bit_is_set(PINA,5); } comandLCD(100,2); //y star (64+pos) comandLCD(190,2);//X start chip 1 (184+rad) comandLCD(192,2);//X pagestart (192+rad) write(chargen(grans2),2); _delay_loop_2(2664); loop_until_bit_is_set(PINA,3); loop_until_bit_is_set(PINA,5); while(bit_is_set(PINA,3)&&bit_is_set(PINA,4)&&bit_is_set(PINA,5)){ } } loop_until_bit_is_set(PINA,4); grans=grans*10; grans=grans+grans2; larmtemplow=grans*256; larmtemplow=larmtemplow/52.3; _delay_loop_2(3664); //väntar ca 250 microsekunder //while(bit_is_set(PINA,3)&&bit_is_set(PINA,4)&&bit_is_set(PINA,5)){ //} loop_until_bit_is_set(PINA,3); loop_until_bit_is_set(PINA,4); loop_until_bit_is_set(PINA,5); } if(bit_is_clear(PINA,3)){ //Knapp1+ ==========>Meny4 //sbi(PORTA,2); //tänder larm loop_until_bit_is_set(PINA,3); clear(1); clear(2); comandLCD(112,1); //y star (64+pos) comandLCD(184,1);//X start chip 1 (184+rad) comandLCD(192,1);//X pagestart (192+rad) write('M',1); write(' ',1); write('e',1); write(' ',1); write('n',1); comandLCD(64,2); //y star (64+pos) comandLCD(184,2);//X start chip 1 (184+rad) comandLCD(192,2);//X pagestart (192+rad) write(' ',2); write('y',2); write(' ',2); write('4',2); comandLCD(84,1); //y star (64+pos) comandLCD(186,1);//X start chip 1 (184+rad) comandLCD(192,1);//X pagestart (192+rad) write('M',1); write(' ',1); write('e',1); write(' ',1); write('d',1); write(' ',1); write('e',1); write(' ',1); write('l',1); write(' ',1); write('t',1); write(' ',1); write('e',1); write(' ',1); write('m',1); comandLCD(64,2); //y star (64+pos) comandLCD(186,2);//X start chip 1 (184+rad) comandLCD(192,2);//X pagestart (192+rad) write(' ',2); write('p',2); write(' ',2); write('e',2); write(' ',2); write('r',2); write(' ',2); write('a',2); write(' ',2); write('t',2); write(' ',2); write('u',2); write(' ',2); write('r',2); write(' ',2); write(' ',2); write('1',2); write(' ',2); write('h',2); medel=0; for(int i=114;i<=119;i++){ medel+=temp24h[i]; } medel=medel/6; //räknar medelvärde för 1 h //skriva medelvärdet... printTemp(0,4,2,4); medel=0; _delay_loop_2(3664); //väntar ca 125 microsekunder while(bit_is_set(PINA,3)&&bit_is_set(PINA,4)&&bit_is_set(PINA,5)){ } if(bit_is_clear(PINA,3)){ //Knapp1+ =============>Meny5 //sbi(PORTA,2); //tänder larm loop_until_bit_is_set(PINA,3); clear(1); clear(2); comandLCD(112,1); //y star (64+pos) comandLCD(184,1);//X start chip 1 (184+rad) comandLCD(192,1);//X pagestart (192+rad) write('M',1); write(' ',1); write('e',1); write(' ',1); write('n',1); comandLCD(64,2); //y star (64+pos) comandLCD(184,2);//X start chip 1 (184+rad) comandLCD(192,2);//X pagestart (192+rad) write(' ',2); write('y',2); write(' ',2); write('5',2); comandLCD(114,1); //y star (64+pos) comandLCD(186,1);//X start chip 1 (184+rad) comandLCD(192,1);//X pagestart (192+rad) write('K',1); write(' ',1); write('l',1); write(' ',1); write('o',1); write(' ',1); comandLCD(64,2); //y star (64+pos) comandLCD(186,2);//X start chip 1 (184+rad) comandLCD(192,2);//X pagestart (192+rad) write('c',2); write(' ',2); write('k',2); write(' ',2); write('a',2); comandLCD(115,1); //y star (64+pos) comandLCD(188,1);//X start chip 1 (184+rad) comandLCD(192,1);//X pagestart (192+rad) write(chargen(tim2),1); write(' ',1); write(chargen(tim1),1); write(' ',1); write(' ',1); write(' ',1); comandLCD(64,2); //y star (64+pos) comandLCD(188,2);//X start chip 1 (184+rad) comandLCD(192,2);//X pagestart (192+rad) write(':',2); write(' ',2); write(' ',2); write(' ',2); write(chargen(min2),2); write(' ',2); write(chargen(min1),2); comandLCD(86,1); //y star (64+pos) comandLCD(191,1);//X start chip 1 (184+rad) comandLCD(192,1);//X pagestart (192+rad) write('(',1); write(' ',1); write('ä',1); write(' ',1); write('n',1); write(' ',1); write('d',1); write(' ',1); write('r',1); write(' ',1); write('a',1); write(' ',1); write('?',1); write(' ',1); write(' ',1); write(' ',1); comandLCD(64,2); //y star (64+pos) comandLCD(191,2);//X start chip 1 (184+rad) comandLCD(192,2);//X pagestart (192+rad) write('t',2); write(' ',2); write('r',2); write(' ',2); write('y',2); write(' ',2); write('c',2); write(' ',2); write('k',2); write(':',2); write(' ',2); write(' ',2); write('v',2); write(' ',2); write('ä',2); write(' ',2); write('l',2); write(' ',2); write('j',2); write(' ',2); write(')',2); _delay_loop_2(3664); //väntar ca 125 microsekunder while(bit_is_set(PINA,3)&&bit_is_set(PINA,4)&&bit_is_set(PINA,5)){ } if(bit_is_clear(PINA,4)){ //Knapp2välj ==>ändra i Meny5 //sbi(PORTA,2); //tänder larm loop_until_bit_is_set(PINA,4); clear(1); clear(2); comandLCD(64,1); //y star (64+pos) comandLCD(186,1);//X start chip 1 (184+rad) comandLCD(192,1);//X pagestart (192+rad) write('1',1); write(' ',1); write('0',1); write(' ',1); write(':',1); write(' ',1); write('t',1); write(' ',1); write('a',1); write(' ',1); write('l',1); write(' ',1); write(' ',1); write(' ',1); write(' ',1); write('h',1); write(' ',1); write(':',1); comandLCD(64,1); //y star (64+pos) comandLCD(187,1);//X start chip 1 (184+rad) comandLCD(192,1);//X pagestart (192+rad) write('1',1); write(' ',1); write(':',1); write(' ',1); write('t',1); write(' ',1); write('a',1); write(' ',1); write('l',1); write(' ',1); write(' ',1); write(' ',1); write(' ',1); write('h',1); write(' ',1); write(':',1); comandLCD(64,1); //y star (64+pos) comandLCD(188,1);//X start chip 1 (184+rad) comandLCD(192,1);//X pagestart (192+rad) write('1',1); write(' ',1); write('0',1); write(' ',1); write(':',1); write(' ',1); write('t',1); write(' ',1); write('a',1); write(' ',1); write('l',1); write(' ',1); write(' ',1); write('m',1); write(' ',1); write('i',1); write(' ',1); write('n',1); write(' ',1); write(':',1); comandLCD(64,1); //y star (64+pos) comandLCD(189,1);//X start chip 1 (184+rad) comandLCD(192,1);//X pagestart (192+rad) write('1',1); write(' ',1); write(':',1); write(' ',1); write('t',1); write(' ',1); write('a',1); write(' ',1); write('l',1); write(' ',1); write('m',1); write(' ',1); write('i',1); write(' ',1); write('n',1); write(' ',1); write(':',1); _delay_loop_2(3664); uint8_t clock=tim2; while(bit_is_set(PINA,4)){ if(bit_is_clear(PINA,3)){ if(clock==2){ clock=0; }else{ clock++; } _delay_loop_2(3664); loop_until_bit_is_set(PINA,3); } if(bit_is_clear(PINA,5)){ if(clock==0){ clock=2; }else{ clock--; } _delay_loop_2(3664); loop_until_bit_is_set(PINA,5); } comandLCD(64,2); //y star (64+pos) comandLCD(186,2);//X start chip 1 (184+rad) comandLCD(192,2);//X pagestart (192+rad) write(chargen(clock),2); _delay_loop_2(3664); loop_until_bit_is_set(PINA,3); loop_until_bit_is_set(PINA,5); while(bit_is_set(PINA,3)&&bit_is_set(PINA,4)&&bit_is_set(PINA,5)){ } } loop_until_bit_is_set(PINA,4); tim2=clock; clock=tim1; _delay_loop_2(3664); if(tim2==2){ while(bit_is_set(PINA,4)){ if(bit_is_clear(PINA,3)){ if(clock==4){ clock=0; }else{ clock++; } _delay_loop_2(3664); loop_until_bit_is_set(PINA,3); } if(bit_is_clear(PINA,5)){ if(clock==0){ clock=3; }else{ clock--; } _delay_loop_2(3664); loop_until_bit_is_set(PINA,5); } comandLCD(64,2); //y star (64+pos) comandLCD(187,2);//X start chip 1 (184+rad) comandLCD(192,2);//X pagestart (192+rad) write(chargen(clock),2); _delay_loop_2(3664); loop_until_bit_is_set(PINA,3); loop_until_bit_is_set(PINA,5); while(bit_is_set(PINA,3)&&bit_is_set(PINA,4)&&bit_is_set(PINA,5)){ } } tim1=clock; clock=min2; loop_until_bit_is_set(PINA,4); }else{ while(bit_is_set(PINA,4)){ if(bit_is_clear(PINA,3)){ if(clock==9){ clock=0; }else{ clock++; } _delay_loop_2(3664); loop_until_bit_is_set(PINA,3); } if(bit_is_clear(PINA,5)){ if(clock==0){ clock=9; }else{ clock--; } _delay_loop_2(3664); loop_until_bit_is_set(PINA,5); } comandLCD(64,2); //y star (64+pos) comandLCD(187,2);//X start chip 1 (184+rad) comandLCD(192,2);//X pagestart (192+rad) write(chargen(clock),2); _delay_loop_2(3664); loop_until_bit_is_set(PINA,3); loop_until_bit_is_set(PINA,5); while(bit_is_set(PINA,3)&&bit_is_set(PINA,4)&&bit_is_set(PINA,5)){ } } tim1=clock; clock=min2; loop_until_bit_is_set(PINA,4); } loop_until_bit_is_set(PINA,4); _delay_loop_2(3664); while(bit_is_set(PINA,4)){ if(bit_is_clear(PINA,3)){ if(clock==5){ clock=0; }else{ clock++; } _delay_loop_2(3664); loop_until_bit_is_set(PINA,3); } if(bit_is_clear(PINA,5)){ if(clock==0){ clock=5; }else{ clock--; } _delay_loop_2(3664); loop_until_bit_is_set(PINA,5); } comandLCD(64,2); //y star (64+pos) comandLCD(188,2);//X start chip 1 (184+rad) comandLCD(192,2);//X pagestart (192+rad) write(chargen(clock),2); _delay_loop_2(2664); loop_until_bit_is_set(PINA,3); loop_until_bit_is_set(PINA,5); while(bit_is_set(PINA,3)&&bit_is_set(PINA,4)&&bit_is_set(PINA,5)){ } } loop_until_bit_is_set(PINA,4); min2=clock; clock=min1; _delay_loop_2(3664); while(bit_is_set(PINA,4)){ if(bit_is_clear(PINA,3)){ if(clock==9){ clock=0; }else{ clock++; } _delay_loop_2(2664); loop_until_bit_is_set(PINA,3); } if(bit_is_clear(PINA,5)){ if(clock==0){ clock=9; }else{ clock--; } _delay_loop_2(3664); loop_until_bit_is_set(PINA,5); } comandLCD(64,2); //y star (64+pos) comandLCD(189,2);//X start chip 1 (184+rad) comandLCD(192,2);//X pagestart (192+rad) write(chargen(clock),2); _delay_loop_2(2664); loop_until_bit_is_set(PINA,3); loop_until_bit_is_set(PINA,5); while(bit_is_set(PINA,3)&&bit_is_set(PINA,4)&&bit_is_set(PINA,5)){ } } min1=clock; loop_until_bit_is_set(PINA,4); _delay_loop_2(3664); //väntar ca 125 microsekunder while(bit_is_set(PINA,3)&&bit_is_set(PINA,4)&&bit_is_set(PINA,5)){ } //loop_until_bit_is_set(PINA,3); loop_until_bit_is_set(PINA,4); loop_until_bit_is_set(PINA,5); } if(bit_is_clear(PINA,3)){ //Knapp1+ ============>Meny6 sbi(PORTA,2); //tänder larm loop_until_bit_is_set(PINA,3); clear(1); clear(2); comandLCD(112,1); //y star (64+pos) comandLCD(184,1);//X start chip 1 (184+rad) comandLCD(192,1);//X pagestart (192+rad) write('M',1); write(' ',1); write('e',1); write(' ',1); write('n',1); comandLCD(64,2); //y star (64+pos) comandLCD(184,2);//X start chip 1 (184+rad) comandLCD(192,2);//X pagestart (192+rad) write(' ',2); write('y',2); write(' ',2); write(' ',2); write('6',2); comandLCD(119,2); //y star (64+pos) comandLCD(184,2);//X start chip 1 (184+rad) comandLCD(192,2);//X pagestart (192+rad) write('5',2); write(' ',2); write('0',2); comandLCD(123,2); //y star (64+pos) comandLCD(191,2);//X start chip 1 (184+rad) comandLCD(192,2);//X pagestart (192+rad) write('0',2); for(int i=0;i<=63;++i){ in = temp24h[i]; rad = 8-((in/32)+1); in -= (32*(7-rad)); comandLCD(64+i,1); comandLCD(184+rad,1); comandLCD(192,1);//X pagestart (192+rad) if (in<4) in = 128; if (in>=4 && in<=8) in = 64; if (in>=9 && in<=12) in = 32; if (in>=13 && in<=16) in = 16; if (in>=17 && in<=20) in = 8; if (in>=21 && in<=24) in = 4; if (in>=25 && in<=28) in = 2; if (in>=29 && in<=32) in = 1; writeLCD(in,1); } for(int i=64;i<=119;++i){ in = temp24h[i]; rad = 8-((in/32)+1); in -= (32*(7-rad)); //in = abs(in); comandLCD(i,2); comandLCD(184+rad,2); comandLCD(192,2);//X pagestart (192+rad) if (in<4) in = 128; if (in>=4 && in<=8) in = 64; if (in>=9 && in<=12) in = 32; if (in>=13 && in<=16) in = 16; if (in>=17 && in<=20) in = 8; if (in>=21 && in<=24) in = 4; if (in>=25 && in<=28) in = 2; if (in>=29 && in<=32) in = 1; writeLCD(in,2); } _delay_loop_2(3664); //väntar ca 125 microsekunder while(bit_is_set(PINA,3)&&bit_is_set(PINA,4)&&bit_is_set(PINA,5)){ } loop_until_bit_is_set(PINA,3);//knapp 1 loop_until_bit_is_set(PINA,4);//knapp 2 loop_until_bit_is_set(PINA,5);//knapp 3 } loop_until_bit_is_set(PINA,3); loop_until_bit_is_set(PINA,4); loop_until_bit_is_set(PINA,5); } loop_until_bit_is_set(PINA,3); loop_until_bit_is_set(PINA,4); loop_until_bit_is_set(PINA,5); } loop_until_bit_is_set(PINA,3); loop_until_bit_is_set(PINA,4); loop_until_bit_is_set(PINA,5); } loop_until_bit_is_set(PINA,3); loop_until_bit_is_set(PINA,4); loop_until_bit_is_set(PINA,5); clear(1); clear(2); wflag2=1; }else if(bit_is_clear(PINA,4)&&(wflag2!=1)){ //Knapp2 Välj Meny1 cbi(PORTA,2); //släcker larm }else if(bit_is_clear(PINA,5)&&(wflag2!=1)){ //Knapp3- Meny1 cbi(PORTA,2); //släcker larm } if((wflag==1) || (wflag2==1)){ //Skriver Meny1 comandLCD(112,1); //y star (64+pos) comandLCD(184,1);//X start chip 1 (184+rad) comandLCD(192,1);//X pagestart (192+rad) write('M',1); write(' ',1); write('e',1); write(' ',1); write('n',1); comandLCD(72,1); //y star (64+pos) comandLCD(187,1);//X start chip 1 (184+rad) comandLCD(192,1);//X pagestart (192+rad) write('T',1); write(' ',1); write('e',1); write(' ',1); write('m',1); write(' ',1); write('p',1); write(' ',1); write('e',1); write(' ',1); write('r',1); write(' ',1); write('a',1); write(' ',1); write('t',1); write(' ',1); write('u',1); write(' ',1); write('r',1); write(' ',1); write(':',1); printTemp(6,3,2,1); //param 1:ystart 2:xstart 3:hö/Vä 4:typ(1=aktuell) comandLCD(72,1); //y star (64+pos) comandLCD(189,1);//X start chip 1 (184+rad) comandLCD(192,1);//X pagestart (192+rad) write('T',1); write(' ',1); write('i',1); write(' ',1); write('d',1); write(' ',1); write(':',1); comandLCD(64,2); //y star (64+pos) comandLCD(184,2);//X start chip 1 (184+rad) comandLCD(192,2);//X pagestart (192+rad) write(' ',2); write('y',2); write(' ',2); write(' ',2); write(' ',2); write('1',2); comandLCD(64,2); //y star (64+pos) comandLCD(189,2);//X start chip 1 (184+rad) comandLCD(192,2);//X pagestart (192+rad) write(' ',2); write(' ',2); write(' ',2); write(chargen(tim2),2); write(' ',2); write(chargen(tim1),2); write(' ',2); write(':',2); write(' ',2); write(chargen(min2),2); write(' ',2); write(chargen(min1),2); wflag=0; wflag2=0; } } return 1; }