internetuser2k12
Banned
- Joined
- Jul 25, 2012
- Messages
- 1,192
- Helped
- 171
- Reputation
- 342
- Reaction score
- 162
- Trophy points
- 1,343
- Activity points
- 0
send_string_uart(mystring);
send_string_uart(mystring2);
ok,
did u try for second time,
means giving the same input twice.....
#include<reg51.h>
#include<string.h>
#include<stdio.h>
//Function declarations
void cct_init(void);
void delay(int);
void lcdinit(void);
void writecmd(int);
void writedata(char);
void ReturnHome(void);
void display();
void display2();
//void send_uart();
void send_string_uart(unsigned char string[]);
void prompt();
//void SendByteSerially(unsigned char serialdata);
//*******************
//Pin description
/*
P2.4 to P2.7 is data bus
P1.0 is RS
P1.1 is E
*/
//********************
// Defines Pins
sbit RS = P1^0;
sbit E = P1^1;
unsigned char card_id[12];
unsigned char tag[13] = { 49, 50, 51, 52, 53, 54, 55, 56, 57, 49, 50, 51 };
unsigned char read_id[12];
unsigned char current_byte = 0;
unsigned int display_flag = 0;
unsigned int key = 0;
unsigned int count = 0;
unsigned char myString[28] = "AT89C51 Based RFID Reader\r\n";
unsigned char myString2[16] = "Card ID matched";
void recieve() interrupt 4 //Function to recieve data serialy from RS232
{
card_id[current_byte]=SBUF;
RI=0; // Reset the serial interrupt after recieving the byte
current_byte++;
}
// ***********************************************************
// Main program
//
void main(void)
{
cct_init(); //Make all ports zero
TMOD=0x20; //Enable Timer 1
TH1=0XFD;
SCON=0x50;
TR1=1;
EA=1;
ES=1;
lcdinit(); //Initilize LCD
prompt();
ReturnHome(); //Return to 0 position
while(1)
{
prompt();
while(current_byte!=12);
display();
writedata(' '); //write
writedata(' '); //write
delay(100000000);
key=0;
for(count=0;count<12;count++)
{
if(card_id[count]==tag[count])
{
key++;
}
}
count = 0;
if((key == 12) && (display_flag == 0)) {
delay(100000000);
display2();
//display_flag = 0;
key = 0;
send_string_uart(myString);
send_string_uart(myString2);
}
/*
if((card_id == tag) && (display_flag == 0)) {
delay(500000);
display2();
display_flag = 1;
}
*/
//send_uart();
//SendByteSerially('A');
/*
if((tag == card_id) && (display_flag == 0)) {
display2();
display_flag = 1;
}
*/
}
}
/*
void SendByteSerially(unsigned char serialdata)
{
TI = 0;
SBUF = serialdata;
while(TI == 0);
TI = 0;
}
void send_uart() {
TI = 0;
SBUF = 'A';
while(TI == 0);
TI = 0;
}
*/
void send_string_uart(unsigned char string[]) {
unsigned int count;
for(count = 0; count < strlen(string); count++) {
TI = 0;
SBUF = string[count];
while(TI == 0);
TI = 0;
}
}
void prompt() {
writecmd(0x80);
writedata('U'); //write
writedata('n'); //write
writedata('i'); //write
writedata('q'); //write
writedata('u'); //write
writedata('e'); //write
writedata(' '); //write
writedata('C'); //write
writedata('a'); //write
writedata('r'); //write
writedata('d'); //write
writedata(' '); //write
writedata('I'); //write
writedata('d');
//writecmd(0xC0);
}
void display() // Function to display the unique id
{
unsigned char count;
writecmd(0x80); //Place cursor to second position of second line
for(count=0;count<12;count++)
{
writedata(card_id[count]);
//read_id[count] = card_id[count] + 48;
}
current_byte=0;
}
void display2() // Function to display the unique id
{
//unsigned char count;
writecmd(0xC0); //Place cursor to second position of second line
//for(count=0;count<12;count++)
//{
//writedata(tag[count]);
writedata('C'); //write
writedata('a'); //write
writedata('r'); //write
writedata('d'); //write
writedata(' '); //write
writedata('A'); //write
writedata('c'); //write
writedata('c'); //write
writedata('e'); //write
writedata('p'); //write
writedata('t'); //write
writedata('e'); //write
writedata('d'); //write
//}
}
void cct_init(void)
{
P0 = 0x00; //not used
P1 = 0x00; //not used
P2 = 0x00; //used as data port
P3 = 0x03; //used for generating E and RS
}
void delay(int a)
{
int i;
for(i=0;i<a;i++); //null statement
}
void writedata(char t)
{
RS = 1; // This is data
P2 &= 0x0F; // Make P2.4 to P2.7 zero
P2 |= (t&0xF0); // Write Upper nibble of data
E = 1; // => E = 1
delay(150);
E = 0; // => E = 0
delay(150);
P2 &= 0x0F; // Make P2.4 to P2.7 zero
P2 |= ((t<<4)&0xF0);// Write Lower nibble of data
E = 1; // => E = 1
delay(150);
E = 0; // => E = 0
delay(150);
}
void writecmd(int z)
{
RS = 0; // This is command
P2 &= 0x0F; // Make P2.4 to P2.7 zero
P2 |= (z&0xF0); // Write Upper nibble of data
E = 1; // => E = 1
delay(150);
E = 0; // => E = 0
delay(150);
P2 &= 0x0F; // Make P2.4 to P2.7 zero
P2 |= ((z<<4)&0xF0);// Write Lower nibble of data
E = 1; // => E = 1
delay(150);
E = 0; // => E = 0
delay(150);
}
void lcdinit(void)
{
///////////// Reset process from datasheet /////////
delay(15000);
P2 &= 0x0F; // Make P2.4 to P2.7 zero
P2 |= (0x30&0xF0); // Write 0x3
E = 1; // => E = 1
delay(150);
E = 0; // => E = 0
delay(150);
delay(4500);
P2 &= 0x0F; // Make P2.4 to P2.7 zero
P2 |= (0x30&0xF0); // Write 0x3
E = 1; // => E = 1
delay(150);
E = 0; // => E = 0
delay(150);
delay(300);
P2 &= 0x0F; // Make P2.4 to P2.7 zero
P2 |= (0x30&0xF0); // Write 0x3
E = 1; // => E = 1
delay(150);
E = 0; // => E = 0
delay(150);
delay(650);
P2 &= 0x0F; // Make P2.4 to P2.7 zero
P2 |= (0x20&0xF0); // Write 0x2
E = 1; // => E = 1
delay(150);
E = 0; // => E = 0
delay(150);
delay(650);
/////////////////////////////////////////////////////
writecmd(0x28); //function set
writecmd(0x0c); //display on,cursor off,blink off
writecmd(0x01); //clear display
writecmd(0x06); //entry mode, set increment
}
void ReturnHome(void) //Return to 0 location
{
writecmd(0x02);
delay(1500);
}
if (RI==1)
#include<reg51.h>
#include<string.h>
#include<stdio.h>
//Function declarations
void cct_init(void);
void delay(int);
void lcdinit(void);
void writecmd(int);
void writedata(char);
void ReturnHome(void);
void display();
void display2();
//void send_uart();
void send_string_uart(unsigned char string[]);
void prompt();
//void SendByteSerially(unsigned char serialdata);
//*******************
//Pin description
/*
P2.4 to P2.7 is data bus
P1.0 is RS
P1.1 is E
*/
//********************
// Defines Pins
sbit RS = P1^0;
sbit E = P1^1;
unsigned char card_id[12];
unsigned char tag[13] = { 49, 50, 51, 52, 53, 54, 55, 56, 57, 49, 50, 51 };
unsigned char read_id[12];
unsigned char current_byte = 0;
unsigned int display_flag = 0;
unsigned int key = 0;
unsigned int count = 0;
unsigned char myString[28] = "AT89C51 Based RFID Reader\r\n";
unsigned char myString2[16] = "Card ID matched";
void recieve() interrupt 4 //Function to recieve data serialy from RS232
{
if(RI == 1) {
card_id[current_byte]=SBUF;
RI=0; // Reset the serial interrupt after recieving the byte
current_byte++;
}
}
// ***********************************************************
// Main program
//
void main(void)
{
cct_init(); //Make all ports zero
TMOD=0x20; //Enable Timer 1
TH1=0XFD;
SCON=0x50;
TR1=1;
EA=1;
ES=1;
lcdinit(); //Initilize LCD
prompt();
ReturnHome(); //Return to 0 position
while(1)
{
prompt();
while(current_byte!=12);
display();
writedata(' '); //write
writedata(' '); //write
delay(100000000);
key=0;
for(count=0;count<12;count++)
{
if(card_id[count]==tag[count])
{
key++;
}
}
count = 0;
if((key == 12) && (display_flag == 0)) {
delay(100000000);
display2();
//display_flag = 0;
key = 0;
send_string_uart(myString);
send_string_uart(myString2);
}
/*
if((card_id == tag) && (display_flag == 0)) {
delay(500000);
display2();
display_flag = 1;
}
*/
//send_uart();
//SendByteSerially('A');
/*
if((tag == card_id) && (display_flag == 0)) {
display2();
display_flag = 1;
}
*/
}
}
/*
void SendByteSerially(unsigned char serialdata)
{
TI = 0;
SBUF = serialdata;
while(TI == 0);
TI = 0;
}
void send_uart() {
TI = 0;
SBUF = 'A';
while(TI == 0);
TI = 0;
}
*/
void send_string_uart(unsigned char string[]) {
unsigned int count;
for(count = 0; count < strlen(string); count++) {
TI = 0;
SBUF = string[count];
while(TI == 0);
TI = 0;
}
}
void prompt() {
writecmd(0x80);
writedata('U'); //write
writedata('n'); //write
writedata('i'); //write
writedata('q'); //write
writedata('u'); //write
writedata('e'); //write
writedata(' '); //write
writedata('C'); //write
writedata('a'); //write
writedata('r'); //write
writedata('d'); //write
writedata(' '); //write
writedata('I'); //write
writedata('d');
//writecmd(0xC0);
}
void display() // Function to display the unique id
{
unsigned char count;
writecmd(0x80); //Place cursor to second position of second line
for(count=0;count<12;count++)
{
writedata(card_id[count]);
//read_id[count] = card_id[count] + 48;
}
current_byte=0;
}
void display2() // Function to display the unique id
{
//unsigned char count;
writecmd(0xC0); //Place cursor to second position of second line
//for(count=0;count<12;count++)
//{
//writedata(tag[count]);
writedata('C'); //write
writedata('a'); //write
writedata('r'); //write
writedata('d'); //write
writedata(' '); //write
writedata('A'); //write
writedata('c'); //write
writedata('c'); //write
writedata('e'); //write
writedata('p'); //write
writedata('t'); //write
writedata('e'); //write
writedata('d'); //write
//}
}
void cct_init(void)
{
P0 = 0x00; //not used
P1 = 0x00; //not used
P2 = 0x00; //used as data port
P3 = 0x03; //used for generating E and RS
}
void delay(int a)
{
int i;
for(i=0;i<a;i++); //null statement
}
void writedata(char t)
{
RS = 1; // This is data
P2 &= 0x0F; // Make P2.4 to P2.7 zero
P2 |= (t&0xF0); // Write Upper nibble of data
E = 1; // => E = 1
delay(150);
E = 0; // => E = 0
delay(150);
P2 &= 0x0F; // Make P2.4 to P2.7 zero
P2 |= ((t<<4)&0xF0);// Write Lower nibble of data
E = 1; // => E = 1
delay(150);
E = 0; // => E = 0
delay(150);
}
void writecmd(int z)
{
RS = 0; // This is command
P2 &= 0x0F; // Make P2.4 to P2.7 zero
P2 |= (z&0xF0); // Write Upper nibble of data
E = 1; // => E = 1
delay(150);
E = 0; // => E = 0
delay(150);
P2 &= 0x0F; // Make P2.4 to P2.7 zero
P2 |= ((z<<4)&0xF0);// Write Lower nibble of data
E = 1; // => E = 1
delay(150);
E = 0; // => E = 0
delay(150);
}
void lcdinit(void)
{
///////////// Reset process from datasheet /////////
delay(15000);
P2 &= 0x0F; // Make P2.4 to P2.7 zero
P2 |= (0x30&0xF0); // Write 0x3
E = 1; // => E = 1
delay(150);
E = 0; // => E = 0
delay(150);
delay(4500);
P2 &= 0x0F; // Make P2.4 to P2.7 zero
P2 |= (0x30&0xF0); // Write 0x3
E = 1; // => E = 1
delay(150);
E = 0; // => E = 0
delay(150);
delay(300);
P2 &= 0x0F; // Make P2.4 to P2.7 zero
P2 |= (0x30&0xF0); // Write 0x3
E = 1; // => E = 1
delay(150);
E = 0; // => E = 0
delay(150);
delay(650);
P2 &= 0x0F; // Make P2.4 to P2.7 zero
P2 |= (0x20&0xF0); // Write 0x2
E = 1; // => E = 1
delay(150);
E = 0; // => E = 0
delay(150);
delay(650);
/////////////////////////////////////////////////////
writecmd(0x28); //function set
writecmd(0x0c); //display on,cursor off,blink off
writecmd(0x01); //clear display
writecmd(0x06); //entry mode, set increment
}
void ReturnHome(void) //Return to 0 location
{
writecmd(0x02);
delay(1500);
}
We use cookies and similar technologies for the following purposes:
Do you accept cookies and these technologies?
We use cookies and similar technologies for the following purposes:
Do you accept cookies and these technologies?