Howdy, Stranger!

It looks like you're new here. If you want to get involved, click one of these buttons!

Categories

Welcome to the new platform of Programmer's Heaven! We apologize for the inconvenience caused, if you visited us from a broken link of the previous version. The main reason to move to a new platform is to provide more effective and collaborative experience to you all. Please feel free to experience the new platform and use its exciting features. Contact us for any issue that you need to get clarified. We are more than happy to help you.

Need help with c program

Ebi_90Ebi_90 Posts: 2Member
I want to make a project digital code lock usin AT89c51.while compiling in Keil Compiler it shows error anybody please help me.I m new to programming.Here is the code





#include
#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_one=3;
int dig_two=9;
int dig_three=0;
int dig_four=7;
int i,count=0;

void delay(unsigned int msec) //Time delay function
{
int i,j ;
for(i=0;i3)
{
lcd_cmd(0x01);
lcd_cmd(0x82);
lcd_data_string(" LOCK OPEN");
lock_output=1;
delay(500);
}
else
{
lcd_cmd(0x01);
lcd_cmd(0x82);
lcd_data_string(" WRONG PASSWORD");
lock_output=0;
count++;
delay(500);
}
}

void code_check() // Function to check password
{
if(i<=3 )
{
switch((i+1))
{
case 1: {
if(dig_one==digit[0])
{
check=check+1;
}
break;
}

case 2: {
if(dig_two==digit[1])
{
check=check+1;
}
break;
}

case 3: {
if(dig_three==digit[2])
{
check=check+1;
}
break;
}

case 4: {
if(dig_four==digit[3])
{
check=check+1;
}
break;
}
}
}
if(i==3)
{
ans();
}
}


void display(int a) //Display function
{
switch(a)
{
case 1:{
lcd_data('1');
delay(30);
digit[i]=1;
code_check();
break;
}
case 2:{
lcd_data('2');
delay(30);
digit[i]=2;
code_check();
break;
}
case 3:{
lcd_data('3');
delay(30);
digit[i]=3;
code_check();
break;
}
case 4:{
lcd_data('4');
delay(30);
digit[i]=4;
code_check();
break;
}
case 5:{
lcd_data('5');
delay(30);
digit[i]=5;
code_check();
break;
}
case 6:{
lcd_data('6');
delay(30);
digit[i]=6;
code_check();
break;
}
case 7:{
lcd_data('7');
delay(30);
digit[i]=7;
code_check();
break;
}
case 8:{
lcd_data('8');
delay(30);
digit[i]=8;
code_check();
break;
}
case 9:{
lcd_data('9');
delay(30);
digit[i]=9;
code_check();
break;
}
case 0:{
lcd_data('0');
delay(30);
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 main()
{
col1=col2=col3=1;
while(1)
{
lcd_cmd(0x01); //Clear LCD screen
lock_output=0;
lcd_cmd(0x82); // Set cursor on position first of first line
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();
if(count==4)
{
lcd_cmd(0x01);
lcd_cmd(0x86);
lcd("SORRY");
lcd_cmd(0xc1);
lcd("NO MORE TRIALS");
while(1);
}
}
}
}
Sign In or Register to comment.