From Friday, April 19th (11:00 PM CDT) through Saturday, April 20th (2:00 PM CDT), 2024, ni.com will undergo system upgrades that may result in temporary service interruption.

We appreciate your patience as we improve our online experience.

Multisim and Ultiboard

cancel
Showing results for 
Search instead for 
Did you mean: 

Compiler results: 21 - Errors, 11 - Warnings

#include<htc.h>
#define port P1
#define dataport P2
#define key P0
#define sec 100
sbit rs = port^0;
sbit rw = port^1;
sbit en = port^2;

sbit col1=key^4;
sbit col2=key^5;
sbit col3=key^6;
sbit row1=key^0;
sbit row2=key^1;
sbit row3=key^2;
sbit row4=key^3;
sbit lock_output=P0^7;

int check=0;
int digit[4]={0,0,0,0};
int dig_input[4]={0,0,0,0};
int dig_input_recheck[4]={0,0,0,0};

int i,k;


void delay(unsigned int msec) // Time delay function
{
int i,j ;
for(i=0;i<msec;i++)
for(j=0;j<1275;j++);
}

void lcd_cmd(unsigned char item) // Function to send command to LCD
{
dataport = item;
rs= 0;
rw=0;
en=1;
delay(1);
en=0;
return;
}

void lcd_data(unsigned char item) // Function to send data to LCD
{
dataport = item;
rs= 1;
rw=0;
en=1;
delay(1);
en=0;
return;
}

void lcd_data_string(unsigned char *str) // Function to send data to string
{
int i=0;
while(str[i]!='\0')
{
lcd_data(str[i]);
i++;
//delay(10);
}
return;
}

void lcd(unsigned char str[10])
{
lcd_cmd(0x38);
lcd_cmd(0x0e);
lcd_data_string(str);
}


void ans()
{
if(check>3)
{
lcd_cmd(0x01);
lcd_cmd(0x82);
lcd_data_string(" LOCK OPEN");
lock_output=1;
delay(300);
while(1);
}
else
{
lcd_cmd(0x01);
lcd_cmd(0x82);
lcd_data_string(" WRONG PASSWORD");
lock_output=0;
delay(300);
}
}

void code_check() // Function to check password
{
if(i<=3 )
{
switch((i+1))
{
case 1: {
if(dig_input[0]==digit[0])
{
check=check+1;
}
break;
}
case 2: {
if(dig_input[1]==digit[1])
{
check=check+1;
}
break;
}
case 3: {
if(dig_input[2]==digit[2])
{
check=check+1;
}
break;
}
case 4: {
if(dig_input[3]==digit[3])
{
check=check+1;
}
break;
}
}
}
delay(10);
if(i==3)
{
ans();
}
}

void display(int a) //Display function
{
switch(a)
{
case 1:{
lcd_data('*');
delay(100);
digit[i]=1;
code_check();
break;
}
case 2:{
lcd_data('*');
delay(100);
digit[i]=2;
code_check();
break;
}
case 3:{
lcd_data('*');
delay(100);
digit[i]=3;
code_check();
break;
}
case 4:{
lcd_data('*');
delay(100);
digit[i]=4;
code_check();
break;
}
case 5:{
lcd_data('*');
delay(100);
digit[i]=5;
code_check();
break;
}
case 6:{
lcd_data('*');
delay(100);
digit[i]=6;
code_check();
break;
}
case 7:{
lcd_data('*');
delay(100);
digit[i]=7;
code_check();
break;
}
case 8:{
lcd_data('*');
delay(100);
digit[i]=8;
code_check();
break;
}
case 9:{
lcd_data('*');
delay(100);
digit[i]=9;
code_check();
break;
}
case 0:{
lcd_data('*');
delay(100);
digit[i]=0;
code_check();
break;
}
}
}

void check_col1()
{
row1=row2=row3=row4=1;
row1=0;
if(col1==0)
display(1);
row1=1;
row2=0;
if(col1==0)
display(4);
row2=1;
row3=0;
if(col1==0)
display(7);
row3=1;
row4=0;
if(col1==0)
{
row4=1;
}
}

void check_col2()
{
row1=row2=row3=row4=1;
row1=0;
if(col2==0)
display(2);
row1=1;
row2=0;
if(col2==0)
display(5);
row2=1;
row3=0;
if(col2==0)
display(8);
row3=1;
row4=0;
if(col2==0)
display(0);
row4=1;
}

void check_col3()
{
row1=row2=row3=row4=1;
row1=0;
if(col3==0)
display(3);
row1=1;
row2=0;
if(col3==0)
display(6);
row2=1;
row3=0;
if(col3==0)
display(9);
row3=1;
row4=0;
if(col3==0)
{
row4=1;
}
}


void check_password_col1()
{
row1=row2=row3=row4=1;
row1=0;
if(col1==0)
dig_input[k]=1;
row1=1;
row2=0;
if(col1==0)
dig_input[k]=4;
row2=1;
row3=0;
if(col1==0)
dig_input[k]=7;
row3=1;
row4=0;
if(col1==0)
{
row4=1;
}
}

void check_password_col2()
{
row1=row2=row3=row4=1;
row1=0;
if(col2==0)
dig_input[k]=2;
row1=1;
row2=0;
if(col2==0)
dig_input[k]=5;
row2=1;
row3=0;
if(col2==0)
dig_input[k]=8;
row3=1;
row4=0;
if(col2==0)
{
dig_input[k]=0;
row4=1;
}
}


void check_password_col3()
{
row1=row2=row3=row4=1;
row1=0;
if(col3==0)
dig_input[k]=3;
row1=1;
row2=0;
if(col3==0)
dig_input[k]=6;
row2=1;
row3=0;
if(col3==0)
dig_input[k]=9;
row3=1;
row4=0;
if(col3==0)
{
row4=1;
}
}

void pass_set()
{
row1=row2=row3=row4=0;
while(col1==1 && col2==1 && col3==1);
for(i=0;i<4;i++)
{
k=i;
delay(50);
lcd_cmd(0xc4+i);
delay(100);
row1=row2=row3=row4=0;
while(col1==1 && col2==1 && col3==1);
row1=row2=row3=row4=0;
if(col1==0)
check_password_col1();
else
if(col2==0)
check_password_col2();
else
if(col3==0)
check_password_col3();
lcd_data('*');
delay(50);
}
}

void main()
{
int e,j=0,count=1;
col1=col2=col3=1;
//FOR PASSWoRD INPUT
do
{
lcd_cmd(0x01); //Clear LCD screen
lcd_cmd(0x81);
lcd("ENTER PASSWORD:");
pass_set();
for(e=0;e<4;e++)
dig_input_recheck[e]=dig_input[e];
lcd_cmd(0x01);
lcd("CONFIRM PASSWORD:");
pass_set();
for(e=0;e<4;e++)
{
if(dig_input_recheck[e]==dig_input[e])
j++;
}
if(j<4)
{
lcd_cmd(0x01);
lcd_cmd(0x85);
lcd("PASSWORD");
lcd_cmd(0xC2);
lcd("NOT MATCH");
delay(300);
}
}
while(j<4);

while(count<4) //Code input and check
{
lcd_cmd(0x01);
lock_output=0;
lcd_cmd(0x82);
lcd("ENTER PASSWORD");
check=0;
row1=row2=row3=row4=0;
while(col1==1 && col2==1 && col3==1);
for(i=0;i<4;i++)
{
delay(100);
lcd_cmd(0xc4+i);
row1=row2=row3=row4=0;
while(col1==1 && col2==1 && col3==1);
row1=row2=row3=row4=0;
if(col1==0)
check_col1();
else
if(col2==0)
check_col2();
else
if(col3==0)
check_col3();
}
count++;
delay(1);
}

if(count==4)
{
lcd_cmd(0x01);
lcd_cmd(0x86);
lcd("SORRY");
lcd_cmd(0xc1);
lcd("NO MORE TRIALS");
while(1);
}
}

0 Kudos
Message 1 of 1
(1,666 Views)