Untitled

 avatar
unknown
plain_text
24 days ago
2.6 kB
1
Indexable
#define RS RD2
#define EN RD3
#define D4 RD4
#define D5 RD5
#define D6 RD6
#define D7 RD7

#define _XTAL_FREQ 20000000

#include <xc.h>
#include <stdio.h>
#include <stdlib.h>
#include <stdbool.h>
#include "lcd_disp.h"
#include "keypad.h"

void main()
{
    // Inicijalizacija portova
    TRISC0 = 0;   
    TRISC1 = 0;   
    TRISC2 = 1;   
    TRISD = 0;    
    PORTD = 0;    
    TRISB = 0xF0; 
    PORTB = 0xF0; 

    // Inicijalizacija LCD-a i tastature
    Lcd_Init();
    keyinit();

    char a1 = '\0', a2 = '\0', a3 = '\0', a4 = '\0';

    while (1)
    {
        RC0 = 0; 
        RC1 = 0; 

        if (RC2 == 1) 
        {
            Lcd_Set_Cursor(1, 2);
            Lcd_Write_String("Vrata su");
            Lcd_Set_Cursor(2, 2);
            Lcd_Write_String("zatvorena");
            __delay_ms(1000);
        }
        else
        {
            Lcd_Clear();
            Lcd_Set_Cursor(1, 2);
            Lcd_Write_String("Unesite tacnu");
            Lcd_Set_Cursor(2, 2);
            Lcd_Write_String("lozinku");
            __delay_ms(1000);
            Lcd_Clear();

            // Unos lozinke sa tastature
            a1 = key();
            Lcd_Set_Cursor(1, 1);
            Lcd_Write_Char(a1); 

            a2 = key();
            Lcd_Set_Cursor(1, 2);
            Lcd_Write_Char(a2); 

            a3 = key();
            Lcd_Set_Cursor(1, 3);
            Lcd_Write_Char(a3); 

            a4 = key();
            Lcd_Set_Cursor(1, 4);
            Lcd_Write_Char(a4); 

            // Provjera tacnosti lozinke
            if (a1 == '1' && a2 == '1' && a3 == '1' && a4 == '1')
            {
                Lcd_Clear();
                Lcd_Set_Cursor(1, 2);
                Lcd_Write_String("Dobrodosli!");
                Lcd_Set_Cursor(2, 2);
                Lcd_Write_String("Lozinka je ispravna!");
                RC1 = 1; // Upali zelenu LED
                __delay_ms(2000);
                RC1 = 0; // Ugasi zelenu LED
            }
            else 
            {
                Lcd_Clear();
                Lcd_Set_Cursor(1, 2);
                Lcd_Write_String("Lozinka nije");
                Lcd_Set_Cursor(2, 2);
                Lcd_Write_String("tacna");
                for (int i = 0; i < 3; i++) // Treperenje crvene LED
                {
                    RC0 = 1;
                    __delay_ms(500);
                    RC0 = 0;
                    __delay_ms(500);
                }
            }
            __delay_ms(1000); 
            Lcd_Clear(); 
        }
    }
}
Leave a Comment