int count=0; int Digit=0; int co=0; int led=0; //##################################################GARBAGE######################################################################### //##################################################GARBAGE######################################################################### #include #include #include "lcd.h" #pragma udata extern void _startup (void); #pragma code _RESET_INTERRUPT_VECTOR = 0x000800 void _reset (void) { _asm goto _startup _endasm } #pragma code #pragma code _HIGH_INTERRUPT_VECTOR = 0x000808 void _high_ISR (void) { ; } #pragma code _LOW_INTERRUPT_VECTOR = 0x000818 void _low_ISR (void) { ; } #pragma code #pragma code #define LCD_RS PORTDbits.RD6 #define LCD_EN PORTDbits.RD4 #define LCD_WR PORTDbits.RD5 unsigned char data; void lcd_write_cmd(signed char cmd) { unsigned char temp2; LCD_RS = 0; Delay10TCYx(4); temp2 = cmd; temp2 = temp2 >> 4; PORTD = temp2 & 0x0F; Delay1KTCYx(10); lcd_strobe(); Delay1KTCYx(10); temp2 = cmd; PORTD = temp2 & 0x0F; Delay1KTCYx(10); lcd_strobe(); Delay1KTCYx(10); } void lcd_write_data(char data) { char temp1; LCD_RS = 1; Delay10TCYx(4); temp1 = data; temp1 = temp1 >> 4; PORTD = temp1 & 0x0F; Delay1KTCYx(10); LCD_RS = 1; Delay1KTCYx(10); lcd_strobe(); Delay1KTCYx(10); temp1 = data; PORTD = temp1 & 0x0F; Delay1KTCYx(10); LCD_RS = 1; Delay1KTCYx(10); lcd_strobe(); Delay1KTCYx(10); } void lcd_strobe(void) { LCD_EN = 1; Delay1KTCYx(100); LCD_EN = 0; Delay1KTCYx(100); } void lcd_init(void) { TRISD = 0x00; PORTD = 0x00; LCD_EN = 0; LCD_RS = 0; LCD_WR = 0; Delay10KTCYx(250); Delay10KTCYx(250); Delay10KTCYx(250); Delay10KTCYx(250); lcd_write_cmd(0x33); lcd_write_cmd(0x32); lcd_write_cmd(0x28); lcd_write_cmd(0x0E); lcd_write_cmd(0x06); lcd_write_cmd(0x01); Delay1KTCYx(20); } //##################################################GARBAGE######################################################################### //##################################################GARBAGE######################################################################### main(void) { ADCON1 = 0x0F; CMCON = 0x07; lcd_init(); LCD_RS = 1; Delay1KTCYx(1); PORTC = 0b00000000; TRISA = 0b00011111; TRISC = 0b00000000; lcd_write_cmd(0x80); while(1) { unsigned int i,k; PORTCbits.RC1=0; PORTA = 0b00000000; while(PORTAbits.RA2==0 && PORTAbits.RA3==0 && PORTAbits.RA1==0 && PORTAbits.RA0==0 && PORTAbits.RA4==0); count++; if(PORTAbits.RA0==1){ //Check which button is pressed and in which order //PORTAbits.RA4 = 1; PORTCbits.RC7 = 1; for(k = 0x01FF; k>0; k--) { for(i = 0xFF; i>0; i--); PORTCbits.RC1 = !PORTCbits.RC1; } Delay10KTCYx(200); if(count==1){ Digit = Digit+1000; } else if(count==2) { Digit = Digit+100; } else if(count==3) { Digit = Digit+10; } else if(count==4) { Digit = Digit+1; } } else if(PORTAbits.RA1==1){ //PORTAbits.RA4 = 1; PORTCbits.RC7 = 1; for(k = 0x01FF; k>0; k--) //Determines duration of tone { for(i = 0xC9; i>0; i--); //Determines pitch of tone PORTCbits.RC1 = !PORTCbits.RC1; //Invert logic level at RC0 } Delay10KTCYx(200); if(count==1){ Digit = Digit+2000; } else if(count==2) { Digit = Digit+200; } else if(count==3) { Digit = Digit+20; } else if(count==4) { Digit = Digit+2; } } else if(PORTAbits.RA2==1){ //PORTAbits.RA4 = 1; PORTCbits.RC7 = 1; for(k = 0x01FF; k>0; k--) //Determines duration of tone { for(i = 0x97; i>0; i--); //Determines pitch of tone PORTCbits.RC1 = !PORTCbits.RC1; //Invert logic level at RC0 } Delay10KTCYx(200); if(count==1){ Digit = Digit+3000; } else if(count==2) { Digit = Digit+300; } else if(count==3) { Digit = Digit+30; } else if(count==4) { Digit = Digit+3; } } else if(PORTAbits.RA3==1){ //PORTAbits.RA4 = 1; PORTCbits.RC7 = 1; for(k = 0x01FF; k>0; k--) //Determines duration of tone { for(i = 0x63; i>0; i--); //Determines pitch of tone PORTCbits.RC1 = !PORTCbits.RC1; //Invert logic level at RC0 } Delay10KTCYx(200); if(count==1){ Digit = Digit+4000; } else if(count==2) { Digit = Digit+400; } else if(count==3) { Digit = Digit+40; } else if(count==4) { Digit = Digit+4; } } else if(PORTAbits.RA4==1){ PORTCbits.RC7 = 1; for(k = 0x01FF; k>0; k--) //Determines duration of tone { for(i = 0x00; i>0; i--); //Determines pitch of tone PORTCbits.RC1 = !PORTCbits.RC1; //Invert logic level at RC0 } Delay10KTCYx(200); Digit = 5; } else { //Error code for wrong buttons pressed PORTCbits.RC0 = 1; PORTCbits.RC1 = 1; Delay10KTCYx(250); Delay10KTCYx(250); PORTCbits.RC0 = 0; PORTCbits.RC1 = 0; count=0; Digit=0; } if(count==0){ PORTC = 0b00000000; }else if(count==1 && Digit==5){ PORTC = 0b10000001; }else if(count==1){ PORTC = 0b00000001; }else if(count==2){ PORTC = 0b00000101; }else if(count==3){ PORTC = 0b01000101; }else if(count==3){ PORTC = 0b11000101; }else{ PORTC = 0b01000001; } if(count>3 || Digit==5){ if(co==20){ lcd_write_cmd(0xC0); } if(Digit==1234){ //AEIOU Comparisons lcd_write_data(0x41); co++; }else if(Digit==1324){ lcd_write_data(0x45); co++; }else if(Digit==1342){ lcd_write_data(0x49); co++; }else if(Digit==1423){ lcd_write_data(0x4F); co++; }else if(Digit==1432){ lcd_write_data(0x55); co++; }else if(Digit==1111){ //Capital Alphabets lcd_write_data(0x42); //-B co++; }else if(Digit==1112){ lcd_write_data(0x43); //C co++; }else if(Digit==1113){ lcd_write_data(0x44); //D co++; }else if(Digit==1114){ lcd_write_data(0x46); //-F co++; }else if(Digit==1121){ lcd_write_data(0x47); //G co++; }else if(Digit==1122){ lcd_write_data(0x48); //H co++; }else if(Digit==1123){ lcd_write_data(0x4A); //-J co++; }else if(Digit==1124){ lcd_write_data(0x4B); //K co++; }else if(Digit==1131){ lcd_write_data(0x4C); //L co++; }else if(Digit==1132){ lcd_write_data(0x4D); //M co++; }else if(Digit==1133){ lcd_write_data(0x4E); //N co++; }else if(Digit==1134){ lcd_write_data(0x50); //-P co++; }else if(Digit==1141){ lcd_write_data(0x51); //Q co++; }else if(Digit==1142){ lcd_write_data(0x52); //R co++; }else if(Digit==1143){ lcd_write_data(0x53); //S co++; }else if(Digit==1144){ lcd_write_data(0x54); //T co++; }else if(Digit==1211){ lcd_write_data(0x56); //-V co++; }else if(Digit==1212){ lcd_write_data(0x57); //W co++; }else if(Digit==1213){ lcd_write_data(0x58); //X co++; }else if(Digit==1214){ lcd_write_data(0x59); //Y co++; }else if(Digit==1221){ lcd_write_data(0x5A); // co++; }else if(Digit==2234){ //Small letters lcd_write_data(0x61); co++; }else if(Digit==2324){ lcd_write_data(0x65); co++; }else if(Digit==2342){ lcd_write_data(0x69); co++; }else if(Digit==2423){ lcd_write_data(0x6F); co++; }else if(Digit==2432){ lcd_write_data(0x75); co++; }else if(Digit==2111){ //SMALL LETTERS lcd_write_data(0x62); //-B co++; }else if(Digit==2112){ lcd_write_data(0x63); //C co++; }else if(Digit==2113){ lcd_write_data(0x64); //D co++; }else if(Digit==2114){ lcd_write_data(0x66); //-F co++; }else if(Digit==2121){ lcd_write_data(0x67); //G co++; }else if(Digit==2122){ lcd_write_data(0x68); //H co++; }else if(Digit==2123){ lcd_write_data(0x6A); //-J co++; }else if(Digit==2124){ lcd_write_data(0x6B); //K co++; }else if(Digit==2131){ lcd_write_data(0x6C); //L co++; }else if(Digit==2132){ lcd_write_data(0x6D); //M co++; }else if(Digit==2133){ lcd_write_data(0x6E); //N co++; }else if(Digit==2134){ lcd_write_data(0x70); //-P co++; }else if(Digit==2141){ lcd_write_data(0x71); //Q co++; }else if(Digit==2142){ lcd_write_data(0x72); //R co++; }else if(Digit==2143){ lcd_write_data(0x73); //S co++; }else if(Digit==2144){ lcd_write_data(0x74); //T co++; }else if(Digit==2211){ lcd_write_data(0x76); //-V co++; }else if(Digit==2212){ lcd_write_data(0x77); //W co++; }else if(Digit==2213){ lcd_write_data(0x78); //X co++; }else if(Digit==2214){ lcd_write_data(0x79); //Y co++; }else if(Digit==2221){ lcd_write_data(0x7A); //z co++; }else if(Digit==3111){ //Numbers lcd_write_data(0x30); //0 co++; }else if(Digit==3112){ lcd_write_data(0x31); //1 co++; }else if(Digit==3113){ lcd_write_data(0x32); //2 co++; }else if(Digit==3114){ lcd_write_data(0x33); //3 co++; }else if(Digit==3121){ lcd_write_data(0x34); //4 co++; }else if(Digit==3122){ lcd_write_data(0x35); //5 co++; }else if(Digit==3123){ lcd_write_data(0x36); //6 co++; }else if(Digit==3124){ lcd_write_data(0x37); //7 co++; }else if(Digit==3131){ lcd_write_data(0x38); //8 co++; }else if(Digit==3132){ lcd_write_data(0x39); //9 co++; }else if(Digit==4111){ //Symbols lcd_write_data(0x2C); //, co++; }else if(Digit==4112){ lcd_write_data(0x2E); //. co++; }else if(Digit==4113){ lcd_write_data(0x3F); //? co++; }else if(Digit==4114){ lcd_write_data(0x21); //! co++; }else if(Digit==4121){ lcd_write_data(0x2F); /// co++; }else if(Digit==4122){ lcd_write_data(0x4A); //\ co++; }else if(Digit==4123){ lcd_write_data(0x3C); //< co++; }else if(Digit==4124){ lcd_write_data(0x3E); //> co++; }else if(Digit==4131){ lcd_write_data(0x3A); //: co++; }else if(Digit==4132){ lcd_write_data(0x3B); //; co++; }else if(Digit==4133){ lcd_write_data(0x27); //' co++; }else if(Digit==4134){ lcd_write_data(0x22); //" co++; }else if(Digit==4141){ lcd_write_data(0x28); //( co++; }else if(Digit==4142){ lcd_write_data(0x29); //) co++; }else if(Digit==4143){ lcd_write_data(0x5B); //[ co++; }else if(Digit==4144){ lcd_write_data(0x5D); //] co++; }else if(Digit==4211){ lcd_write_data(0x7B); //{ co++; }else if(Digit==4212){ lcd_write_data(0x7D); //} co++; }else if(Digit==4213){ lcd_write_data(0x7C); //| co++; }else if(Digit==4214){ lcd_write_data(0x5F); //_ co++; }else if(Digit==4221){ lcd_write_data(0x2D); //- co++; }else if(Digit==4222){ lcd_write_data(0x2B); //+ co++; }else if(Digit==4223){ lcd_write_data(0x3D); //= co++; }else if(Digit==4224){ lcd_write_data(0x40); //@ co++; }else if(Digit==4231){ lcd_write_data(0x23); //# co++; }else if(Digit==4232){ lcd_write_data(0x24); //$ co++; }else if(Digit==4233){ lcd_write_data(0x25); //% co++; }else if(Digit==4234){ lcd_write_data(0x5E); //^ co++; }else if(Digit==4241){ lcd_write_data(0x26); //& co++; }else if(Digit==4242){ lcd_write_data(0x2A); //* co++; }else if(Digit==4243){ lcd_write_data(0x7E); //~ co++; }else if(Digit==4244){ lcd_write_data(0x60); //` co++; }else if(Digit==5){ //SPACE and DEL if(co==1){ //DEL lcd_write_cmd(0x80); lcd_write_data(0x20); lcd_write_cmd(0x80); }else if(co==2){ //DEL lcd_write_cmd(0x81); lcd_write_data(0x20); lcd_write_cmd(0x81); }else if(co==3){ //DEL lcd_write_cmd(0x82); lcd_write_data(0x20); lcd_write_cmd(0x82); }else if(co==4){ //DEL lcd_write_cmd(0x83); lcd_write_data(0x20); lcd_write_cmd(0x83); }else if(co==5){ //DEL lcd_write_cmd(0x84); lcd_write_data(0x20); lcd_write_cmd(0x84); }else if(co==6){ //DEL lcd_write_cmd(0x85); lcd_write_data(0x20); lcd_write_cmd(0x85); }else if(co==7){ //DEL lcd_write_cmd(0x86); lcd_write_data(0x20); lcd_write_cmd(0x86); }else if(co==8){ //DEL lcd_write_cmd(0x87); lcd_write_data(0x20); lcd_write_cmd(0x87); }else if(co==9){ //DEL lcd_write_cmd(0x88); lcd_write_data(0x20); lcd_write_cmd(0x88); }else if(co==10){ //DEL lcd_write_cmd(0x89); lcd_write_data(0x20); lcd_write_cmd(0x89); }else if(co==11){ //DEL lcd_write_cmd(0x8A); lcd_write_data(0x20); lcd_write_cmd(0x8A); }else if(co==12){ //DEL lcd_write_cmd(0x8B); lcd_write_data(0x20); lcd_write_cmd(0x8B); }else if(co==13){ //DEL lcd_write_cmd(0x8C); lcd_write_data(0x20); lcd_write_cmd(0x8C); }else if(co==14){ //DEL lcd_write_cmd(0x8D); lcd_write_data(0x20); lcd_write_cmd(0x8D); }else if(co==15){ //DEL lcd_write_cmd(0x8E); lcd_write_data(0x20); lcd_write_cmd(0x8E); }else if(co==16){ //DEL lcd_write_cmd(0x8F); lcd_write_data(0x20); lcd_write_cmd(0x8F); }else if(co==17){ //DEL lcd_write_cmd(0x90); lcd_write_data(0x20); lcd_write_cmd(0x90); }else if(co==18){ //DEL lcd_write_cmd(0x91); lcd_write_data(0x20); lcd_write_cmd(0x91); }else if(co==19){ //DEL lcd_write_cmd(0x92); lcd_write_data(0x20); lcd_write_cmd(0x92); }else if(co==20){ //DEL lcd_write_cmd(0x93); lcd_write_data(0x20); lcd_write_cmd(0x93); }else if(co==21){ //DEL lcd_write_cmd(0xC0); lcd_write_data(0x20); lcd_write_cmd(0xC0); }else if(co==22){ //DEL lcd_write_cmd(0xC1); lcd_write_data(0x20); lcd_write_cmd(0xC1); }else if(co==23){ //DEL lcd_write_cmd(0xC2); lcd_write_data(0x20); lcd_write_cmd(0xC2); }else if(co==24){ //DEL lcd_write_cmd(0xC3); lcd_write_data(0x20); lcd_write_cmd(0xC3); }else if(co==25){ //DEL lcd_write_cmd(0xC4); lcd_write_data(0x20); lcd_write_cmd(0xC4); }else if(co==26){ //DEL lcd_write_cmd(0xC5); lcd_write_data(0x20); lcd_write_cmd(0xC5); }else if(co==27){ //DEL lcd_write_cmd(0xC6); lcd_write_data(0x20); lcd_write_cmd(0xC6); }else if(co==28){ //DEL lcd_write_cmd(0xC7); lcd_write_data(0x20); lcd_write_cmd(0xC7); }else if(co==29){ //DEL lcd_write_cmd(0xC8); lcd_write_data(0x20); lcd_write_cmd(0xC8); }else if(co==30){ //DEL lcd_write_cmd(0xC9); lcd_write_data(0x20); lcd_write_cmd(0xC9); }else if(co==31){ //DEL lcd_write_cmd(0xCA); lcd_write_data(0x20); lcd_write_cmd(0xCA); }else if(co==32){ //DEL lcd_write_cmd(0xCB); lcd_write_data(0x20); lcd_write_cmd(0xCB); }else if(co==33){ //DEL lcd_write_cmd(0xCC); lcd_write_data(0x20); lcd_write_cmd(0xCC); }else if(co==34){ //DEL lcd_write_cmd(0xCD); lcd_write_data(0x20); lcd_write_cmd(0xCD); }else if(co==35){ //DEL lcd_write_cmd(0xCE); lcd_write_data(0x20); lcd_write_cmd(0xCE); }else if(co==36){ //DEL lcd_write_cmd(0xCF); lcd_write_data(0x20); lcd_write_cmd(0xCF); }else if(co==37){ //DEL lcd_write_cmd(0xD0); lcd_write_data(0x20); lcd_write_cmd(0xD0); }else if(co==38){ //DEL lcd_write_cmd(0xD1); lcd_write_data(0x20); lcd_write_cmd(0xD1); }else if(co==39){ //DEL lcd_write_cmd(0xD2); lcd_write_data(0x20); lcd_write_cmd(0xD2); }else if(co==40){ //DEL lcd_write_cmd(0xD3); lcd_write_data(0x20); lcd_write_cmd(0xD3); } if(co>0) co--; }else if(Digit==4444){ lcd_write_data(0x20); //SPACE co++; }else if(Digit==3333){ lcd_write_cmd(0xC0); co=20; }else{ lcd_write_data(0x3F); co++; } if(count==4 || Digit==5){ Delay10KTCYx(250); PORTC=0b00000000; } count = 0; Digit = 0; //PORTCbits.RC2 = 1; for(i = 0xEF; i>0; i--);{ PORTCbits.RC1 = !PORTCbits.RC1; } } /*else { PORTCbits.RC6 = 1; for(i = 0x1F; i>0; i--);{ PORTCbits.RC1 = !PORTCbits.RC1; } }*/ while (PORTA =! 0b00000000); //PORTCbits.RC7 = 1; /*PORTD = 0b00000101; Delay10KTCYx(250); PORTD = 0b00000000;*/ } }