/* Displays string in progmem at current cursor location and increment cursor location */ void lcd_str_p(const char *progmem_s) /* print string from program memory on lcd (no auto linefeed) */ { register char c; while ( (c = pgm_read_byte(progmem_s++)) ) { lcd_chr(c); } }
void main() { Lcd_Init(); INTCON=0b11000000; PIE1=0b00100000; UART1_Init(9600); // Initialize UART module at 9600 bps Delay_ms(300); // Wait for UART module to stabilize trisc=0b10000000; trisd=0; portc=255; portc.f0=0; uart1_write_text("ready"); for(;;){ lcd_chr(1,1,rec[14]); for (co=15;co<23;co++){ lcd_chr_cp(rec[co]); } lcd_chr(2,1,rec[26]); for (co=27;co<36;co++){ lcd_chr_cp(rec[co]); } }}
void main() { char txt[16]; trisc=0; portc=0; Keypad_Init(); Lcd_Init(); Lcd_Cmd(_LCD_CLEAR); Lcd_Cmd(_LCD_CURSOR_OFF); while(1){ lcd_out(1,1,"EnterTemp="); x=0; do{ kp = 0; kp = Keypad_Key_Click(); } while(!kp); switch (kp) { case 1: kp = 49;previous_value=1;break; // 1 case 2: kp = 50;previous_value=2;break; // 2 case 3: kp = 51;previous_value=3;break; // 3 case 4: kp = 65;break;// A case 5: kp = 52;previous_value=4;break;// 4 case 6: kp = 53;previous_value=5;break; // 5 case 7: kp = 54;previous_value=6;break; // 6 case 8: kp = 66;break; // B case 9: kp = 55;previous_value=7;break; // 7 case 10: kp = 56;previous_value=8;break; // 8 case 11: kp = 57;previous_value=9;break; // 9 case 12: kp = 67;break; // C case 13: kp = 42;break; // * case 14: kp = 48;previous_value=0;break;// 0 case 15: kp = 35;break; // # case 16: kp = 68;break; // D } if(kp==42&&x==0){ //clear the screen lcd_cmd(_lcd_clear); shift=10; first=1000; second=1000; third=1000; desired_temp=0; previous_value=0; get_temp=0; real_temp=0; kp=0; x=1; } if(first==1000&&second==1000&&third==1000&&kp!=35&&x==0){ first=previous_value; shift++; lcd_chr(1,shift,kp); } else if(first!=1000&&second==1000&&third==1000&&kp!=35&&x==0){ second=previous_value; shift++; lcd_chr(1,shift,kp); } else if(first!=1000&&second!=1000&&third==1000&&kp!=35&&x==0){ third=previous_value; shift++; lcd_chr(1,shift,kp); } if(kp==35&&x==0){ shift++; lcd_chr(1,shift,kp); delay_ms(1000); if(first!=1000&&second==1000&&third==1000){ desired_temp=first; } else if(first!=1000&&second!=1000&&third==1000){ first=first*10; desired_temp=first+second; } else if(first!=1000&&second!=1000&&third!=1000){ first=first*100; second=second*10; desired_temp=first+second+third; } while(kp==35&&x==0){ lcd_cmd(_lcd_clear); get_temp=adc_read(0); real_temp=(500.0*get_temp)/1023; inttostr(real_temp,txt); lcd_out(2,1,"RealTemp="); lcd_out_cp(txt); while(real_temp>desired_temp){ get_temp=adc_read(0); real_temp=(500.0*get_temp)/1023; inttostr(real_temp,txt); lcd_out(2,1,"RealTemp="); lcd_out_cp(txt); ac_fan=1; lcd_out(1,1,"cooling"); } while(real_temp<=desired_temp){ get_temp=adc_read(0); real_temp=(500.0*get_temp)/1023; inttostr(real_temp,txt); lcd_out(2,1,"RealTemp="); lcd_out_cp(txt); ac_fan=0; lcd_out(1,1,"process done"); lcd_out(2,1,"RealTemp="); lcd_out_cp(txt); } } } } }
// Displays null terminated string at current cursor location and increment cursor location void lcd_str(char *str) { while(*str) lcd_chr(*str++); }
void main() { char r; Lcd_Init(); INTCON=0b11000000; PIE1=0b00100000; UART1_Init(9600); // Initialize UART module at 9600 bps Delay_ms(300); adcon1=7; trisa=0; porta=0; TRISD=0; PORTD=0b11111111; //portd.f6=0; //GPS Rx portd.f0=0; //GSM TX TRISC=0; portd.f3=0; //zigbee Rx portc.f4=1; delay_ms(2000); TRISC=255; delay_ms(2000); lcd_cmd(_LCD_CURSOR_OFF); for(;;){ if(mode==0) { hr[0]=rr/100+48; rem=rr%100; hr[1]=rem/10+48; hr[2]=rem%10+48; lcd_out(1,1,hear); lcd_out_cp(hr); //lcd_chr(2,1,rr); } if(mode==1) { PORTD=0b11111111; portd.f0=0; //GSM TX portd.f6=0; //GPS Rx lcd_cmd(_LCD_CLEAR); porta.f1=1; delay_ms(500); porta.f1=0; mode=2; while(v<6) { } delay_ms(2000); lcd_chr(1,1,rec[14]); for (r=15;r<23;r++){ lcd_chr_cp(rec[r]); } lcd_chr(2,1,rec[26]); for (r=27;r<36;r++){ lcd_chr_cp(rec[r]); } delay_ms(2000); UART1_WRITE_TEXT("AT+CMGF=1"); UART1_WRITE(13); delay_ms(300); UART1_WRITE_TEXT(we); delay_ms(300); UART1_WRITE_TEXT("Latu:"); for (r=14;r<23;r++){ UART1_WRITE(rec[r]); } //UART1_WRITE(10); UART1_WRITE(13); UART1_WRITE_TEXT("Long:"); delay_ms(300); for (r=26;r<36;r++){ UART1_WRITE(rec[r]); } UART1_WRITE(13); delay_ms(300); UART1_WRITE(26); delay_ms(1000); } } }
int sjalfstyring(){ // Sjalfstyring byrjar int pallur1, pallur2, pallur4, pallur5; // breytur fyrir palla int kassi, val; // breyta fyrir kassa og val lcd_out(1,1, "Hvada kassa a "); // Skrifa spurningu a skja lcd_out(2,1, "hver pall ad fa?"); // -- lyklabord(1); // Smelle a einhvern takka til ad halda afram lcd_out(1,1, "Pallur nr 1 a ad"); // Skrifa spurningu a skja lcd_out(2,1, "fa kassa numer? "); // -- do{ // Do-while lykkja til ad flokka kassa val = lyklabord(1); // Innslattur pallur1 = val; // Faeri val inni breytu fyrir pall 1 }while(val < 1 || val > 4); // do-while endar lcd_out(1,1, "Pallur nr 2 a ad"); // breyti spurningu do{ // Do-while lykkja til ad flokka kassa val = lyklabord(1); // Innslattur pallur2 = val; // Faeri val inni breytu fyrir pall 2 }while(val < 1 || val > 4 || val == pallur1); // do-while endar lcd_out(1,1, "Pallur nr 4 a ad"); // breyti spurningu do{ // Do-while lykkja til ad flokka kassa val = lyklabord(1); // Innslattur pallur4 = val; // Faeri val inni breytu fyrir pall 2 }while(val < 1 || val > 4 || val == pallur1 || val == pallur2); switch(pallur1 + pallur2 + pallur4){ // kubburinn sem er eftir fer a sidasta pallin case 6: // summa kubbana pallur5 = 4; // sa sem ekki er buin setttur inn break; // haettir i switch case setningunni case 7: // summa kubbana pallur5 = 3; // sa sem ekki er buin setttur inn break; // haettir i switch case setningunni case 8: // summa kubbana pallur5 = 2; // sa sem ekki er buin setttur inn break; // haettir i switch case setningunni case 9: // summa kubbana pallur5 = 1; // sa sem ekki er buin setttur inn break; // haettir i switch case setningunni } // switch case endar lcd_out(1,1, "P1 = K_:P2 = K_ "); // Skrifa hvada kassi fer hvert lcd_out(2,1, "P4 = K_:P5 = K_ "); // -- lcd_chr(1,7, pallur1 + 48); // -- lcd_chr(1,15, pallur2 + 48); // -- lcd_chr(2,7, pallur4 + 48); // -- lcd_chr(2,15, pallur5 + 48); // -- lyklabord(1); // Smelle a einhvern takka til ad halda afram for(int i = 0; i < 4; i++){ Mot_mata_f = 1; // byrja keyrslu Mot_flok_f = 1; kassi = segul_teljari(); // finna numer kassa if(pallur1 == kassi){ Mot_flok_f = 0; while(!R_yta1_uti){ Yta_1_ut__ = 1; } Yta_1_ut__ = 0; while(!R_yta1_hei){ Yta_1_heim = 1; } Yta_1_heim = 0; } if(pallur2 == kassi){ while(!M_yta2_kub); Mot_flok_f = 0; while(!R_yta2_uti){ Yta_2_ut__ = 1; } Yta_2_ut__ = 0; while(!R_yta2_hei){ Yta_2_heim = 1; } Yta_2_heim = 0; } if(pallur4 == kassi){ // Kassi á að fara á pall 4 while(!L_pal3_kub){ // Bíða þartil kubbur er á palli 3 __delay_ms(10); } __delay_ms(100); // Töf til að kubbur fari alla leið á pall 3 Mot_flok_f = 0; // Stoppa flokkara færiband Mot_armur_ = 1; // Set arm í gang til að færa kubb af palli 3 til færibands __delay_ms(1000); // töf, einn hringur á armi Mot_armur_ = 0; // Slekk á armi FB_pallar_4_5(0, 1, 35); // set færiband í gang til Hægri } if(pallur5 == kassi){ // Kassi á að fara á pall 5 while(!L_pal3_kub){ // Bíða þartil kubbur er á palli 3 __delay_ms(10); } __delay_ms(100); // Töf til að kubbur fari alla leið á pall 3 Mot_flok_f = 0; // Stoppa flokkara færiband Mot_armur_ = 1; // Set arm í gang til að færa kubb af palli 3 til færibands __delay_ms(1000); // töf, einn hringur á armi Mot_armur_ = 0; // Slekk á armi FB_pallar_4_5(1, 0, 35); // set færiband í gang til Vinstri } } Mot_mata_f = 0; // Slökkva á færiböndum ef for lykkja endar Mot_flok_f = 0; H_bru_eitt = 0; // Núllstilla H-brú H_bru__tvo = 0; // --- } // Sjalfstyring endar