Advertisement
Not a member of Pastebin yet?
Sign Up,
it unlocks many cool features!
- sbit LCD_RS at RA4_bit; // porta za komunikacija za LCD e A
- sbit LCD_EN at RA5_bit;
- sbit LCD_D4 at RA0_bit;
- sbit LCD_D5 at RA1_bit;
- sbit LCD_D6 at RA2_bit;
- sbit LCD_D7 at RA3_bit;
- sbit LCD_RS_Direction at TRISA4_bit;
- sbit LCD_EN_Direction at TRISA5_bit;
- sbit LCD_D4_Direction at TRISA0_bit;
- sbit LCD_D5_Direction at TRISA1_bit;
- sbit LCD_D6_Direction at TRISA2_bit;
- sbit LCD_D7_Direction at TRISA3_bit;
- char KeypadPort at PORTD; // porta za komunikacija za Keypad e D
- int kp;
- int length = 0;
- char bukva;
- char celosen[3];
- int prva_cifra;
- int vtora_cifra;
- int brojacSaati = 0;
- int flagEnter=0;
- int suma=0;
- int cnt =0;
- int moneti=0;
- void interrupt()
- {
- if(TMR0IF_bit == 1)
- {
- TMR0IF_bit = 0;
- TMR0 = 251;
- cnt++;
- }
- }
- void main(){
- ANSEL = 0x00;
- ANSELH = 0x00;
- TRISB.B0 = 0xFF; // senzor za detekcija na moneta vo avtomatot (rb0)
- TRISB.B1 = 0xFF; // b1,b2,b3 se za detekcija na vidot na monetata (vlezni)
- TRISB.B2 = 0xFF;
- TRISB.B3 = 0xFF;
- INTCON = 0b10100000;
- OPTION_REG = 0b10000110;
- TMR0 = 251;
- // cnt < 274 za 70ms
- Lcd_Init();
- while(1){
- Lcd_Cmd(_LCD_CLEAR);
- Lcd_Cmd(_LCD_CURSOR_OFF);
- Lcd_Out(1,1,"Vnesi parking ID");
- do{
- kp = 0;
- do
- kp = Keypad_Key_Click();
- while(!kp);
- switch (kp)
- {
- case 1: kp = 49; break; // 1
- case 5: kp = 50; break; // 2
- case 9: kp = 51; break; // 3
- case 13: kp = 52; break; //4
- case 2: kp = 53; break;//5
- case 6: kp = 54; break;//6
- case 10: kp = 55; break;//7
- case 14: kp = 56; break;//8
- case 3: kp = 57; break;//9
- case 7: kp = 48; break; // 3
- case 11: kp = 33; break;// +
- case 15: kp = 34; break;// -
- case 4: kp = 65; break;//A
- case 8: kp = 66; break;//B
- case 12: kp = 67; break;//C
- case 16: kp = 1; break;//ENTER
- }
- if(kp != 1 && (kp == 65 || kp == 66 || kp == 67) && (kp !=33 && kp !=34) && length == 0){
- if(kp == 65){
- Lcd_Cmd(_LCD_CLEAR);
- Lcd_Cmd(_LCD_CURSOR_OFF);
- Lcd_Out(1,1,"A");
- length++;
- bukva = "A";
- celosen[0]=kp;
- }
- else if(kp == 66){
- Lcd_Cmd(_LCD_CLEAR);
- Lcd_Cmd(_LCD_CURSOR_OFF);
- Lcd_Out(1,1,"B");
- length++;
- bukva = "B";
- celosen[0]=kp;
- }
- else if(kp == 67){
- Lcd_Cmd(_LCD_CLEAR);
- Lcd_Cmd(_LCD_CURSOR_OFF);
- Lcd_Out(1,1,"C");
- length++;
- bukva = "C";
- celosen[0]=kp;
- }
- } //prviot vnes da ne e cifra, da ne e enter i da ne e plus ili minus
- else if(kp != 16 && (kp !=33 && kp !=34) && length == 1 && (kp != 65 && kp != 66 && kp != 67)){
- if(kp == 49){
- Lcd_Out(1,2,"1");
- length++;
- celosen[1]='1';
- }
- else if(kp == 50){
- prva_cifra = 2;
- Lcd_Out(1,2,"2");
- length++;
- celosen[1]='2';
- }
- else if(kp == 51){
- prva_cifra = 3;
- Lcd_Out(1,2,"3");
- length++;
- celosen[1]='2';
- }
- else if(kp == 52){
- prva_cifra = 4;
- Lcd_Out(1,2,"4");
- length++;
- celosen[1]='4';
- }
- else if(kp == 53){
- prva_cifra = 5;
- Lcd_Out(1,2,"5");
- length++;
- celosen[1]='5';
- }
- else if(kp == 54){
- prva_cifra = 6;
- Lcd_Out(1,2,"6");
- length++;
- celosen[1]='6';
- }
- else if(kp == 55){
- prva_cifra = 7;
- Lcd_Out(1,2,"7");
- length++;
- celosen[1]='7';
- }
- else if(kp == 56){
- prva_cifra = 8;
- Lcd_Out(1,2,"8");
- celosen[1]='8';
- length++;
- }
- else if(kp == 57){
- prva_cifra = 9;
- Lcd_Out(1,2,"9");
- length++;
- celosen[1]='9';
- }
- }
- else if(kp != 16 && (kp !=33 && kp !=34) && length == 2 && (kp != 65 && kp != 66 && kp != 67)){
- if(kp == 49){
- vtora_cifra = kp-'0';
- Lcd_Out(1,3,"1");
- length++;
- celosen[2]='1';
- }
- else if(kp == 50){
- vtora_cifra = 2;
- Lcd_Out(1,3,"2");
- length++;
- celosen[2]='2';
- }
- else if(kp == 51){
- vtora_cifra = 3;
- Lcd_Out(1,3,"3");
- length++;
- celosen[2]='3';
- }
- else if(kp == 52){
- vtora_cifra = 4;
- Lcd_Out(1,3,"4");
- length++;
- celosen[2]='4';
- }
- else if(kp == 53){
- vtora_cifra = 5;
- Lcd_Out(1,3,"5");
- length++;
- celosen[2]='5';
- }
- else if(kp == 54){
- vtora_cifra = 6;
- Lcd_Out(1,3,"6");
- length++;
- celosen[2]='6';
- }
- else if(kp == 55){
- vtora_cifra = 7;
- Lcd_Out(1,3,"7");
- length++;
- celosen[2]='7';
- }
- else if(kp == 56){
- vtora_cifra = 8;
- Lcd_Out(1,3,"8");
- length++;
- celosen[2]='8';
- }
- else if(kp == 57){
- vtora_cifra = 9;
- Lcd_Out(1,3,"9");
- length++;
- celosen[2]='9';
- }
- }
- else if(kp == 33 && flagEnter == 1)
- brojacSaati++;
- else if(kp == 34 && flagEnter == 1 && brojacSaati >= 1)
- brojacSaati--;
- else if(kp == 1 && flagEnter == 0 && length == 3){
- Lcd_Cmd(_LCD_CLEAR);
- Lcd_Cmd(_LCD_CURSOR_OFF);
- Lcd_Out(1,1,"PARK:");
- Lcd_Out(1,6,celosen);
- Lcd_Out(1,11,"CAS");
- Lcd_Out(1,15,"00");
- Lcd_Out(2,1,"Naplati");
- Lcd_Out(2,9,"0");
- Lcd_Out(2,11,"den");
- flagEnter = 1;
- continue;
- }
- else if(kp == 1 && flagEnter == 1){
- suma = brojacSaati*15;
- if(suma > 0){
- Lcd_Cmd(_LCD_CLEAR);
- Lcd_Cmd(_LCD_CURSOR_OFF);
- Lcd_Out(1,1,"PARK:");
- Lcd_Out(1,6,celosen);
- Lcd_Out(1,11,"CAS");
- if(brojacSaati == 1){
- Lcd_Out(1,15,"01");
- }
- else if(brojacSaati == 2){
- Lcd_Out(1,15,"02");
- }
- else if(brojacSaati == 3){
- Lcd_Out(1,15,"03");
- }
- Lcd_Out(2,1,"Naplati");
- Lcd_Out(2,9,suma);
- Lcd_Out(2,11,"den");
- }
- flagEnter == 2;
- }
- else if(kp == 2 && flagEnter == 2){
- if(cnt < 274){
- if(PORTB.B1 == 1 && PORTB.B2 == 0 && PORTB.B3 == 0)
- moneti = 1;
- else if(PORTB.B2 == 1 && PORTB.B1 == 0 && PORTB.B3 == 0)
- moneti = 2;
- else if(PORTB.B1 == 1 && PORTB.B2 == 1 && PORTB.B3 == 0)
- moneti = 5;
- else if(PORTB.B3 == 1 && PORTB.B1 == 0 && PORTB.B2 == 0)
- moneti = 10;
- else if(PORTB.B3 == 1 && PORTB.B1 == 1 && PORTB.B2 == 0)
- moneti = 20;
- else if(PORTB.B2 == 1 && PORTB.B3 == 1 && PORTB.B1 == 0)
- moneti = 50;
- }
- else{
- Lcd_Cmd(_LCD_CLEAR);
- Lcd_Cmd(_LCD_CURSOR_OFF);
- Lcd_Out(1,1,"Zemete tiket: ");
- }
- }
- else {
- Lcd_Cmd(_LCD_CLEAR);
- Lcd_Cmd(_LCD_CURSOR_OFF);
- Lcd_Out(1,1,"GRESHKA");
- Delay_ms(25);
- Lcd_Cmd(_LCD_CLEAR);
- Lcd_Cmd(_LCD_CURSOR_OFF);
- //Lcd_Out(1,1,"Vnesi parking ID");
- length = 0;
- flagEnter = 0;
- continue;
- }
- }while(1);
- }
- }
Advertisement
Add Comment
Please, Sign In to add comment
Advertisement