非接触式智能IC卡读写模块 程序 51单片机.docx

上传人:b****1 文档编号:10156408 上传时间:2023-05-24 格式:DOCX 页数:46 大小:20.77KB
下载 相关 举报
非接触式智能IC卡读写模块 程序 51单片机.docx_第1页
第1页 / 共46页
非接触式智能IC卡读写模块 程序 51单片机.docx_第2页
第2页 / 共46页
非接触式智能IC卡读写模块 程序 51单片机.docx_第3页
第3页 / 共46页
非接触式智能IC卡读写模块 程序 51单片机.docx_第4页
第4页 / 共46页
非接触式智能IC卡读写模块 程序 51单片机.docx_第5页
第5页 / 共46页
非接触式智能IC卡读写模块 程序 51单片机.docx_第6页
第6页 / 共46页
非接触式智能IC卡读写模块 程序 51单片机.docx_第7页
第7页 / 共46页
非接触式智能IC卡读写模块 程序 51单片机.docx_第8页
第8页 / 共46页
非接触式智能IC卡读写模块 程序 51单片机.docx_第9页
第9页 / 共46页
非接触式智能IC卡读写模块 程序 51单片机.docx_第10页
第10页 / 共46页
非接触式智能IC卡读写模块 程序 51单片机.docx_第11页
第11页 / 共46页
非接触式智能IC卡读写模块 程序 51单片机.docx_第12页
第12页 / 共46页
非接触式智能IC卡读写模块 程序 51单片机.docx_第13页
第13页 / 共46页
非接触式智能IC卡读写模块 程序 51单片机.docx_第14页
第14页 / 共46页
非接触式智能IC卡读写模块 程序 51单片机.docx_第15页
第15页 / 共46页
非接触式智能IC卡读写模块 程序 51单片机.docx_第16页
第16页 / 共46页
非接触式智能IC卡读写模块 程序 51单片机.docx_第17页
第17页 / 共46页
非接触式智能IC卡读写模块 程序 51单片机.docx_第18页
第18页 / 共46页
非接触式智能IC卡读写模块 程序 51单片机.docx_第19页
第19页 / 共46页
非接触式智能IC卡读写模块 程序 51单片机.docx_第20页
第20页 / 共46页
亲,该文档总共46页,到这儿已超出免费预览范围,如果喜欢就下载吧!
下载资源
资源描述

非接触式智能IC卡读写模块 程序 51单片机.docx

《非接触式智能IC卡读写模块 程序 51单片机.docx》由会员分享,可在线阅读,更多相关《非接触式智能IC卡读写模块 程序 51单片机.docx(46页珍藏版)》请在冰点文库上搜索。

非接触式智能IC卡读写模块 程序 51单片机.docx

非接触式智能IC卡读写模块程序51单片机

附:

函数

Main.c

#define_SRC

#include"main.h"

#undef_SRC

#include"zlg500.h"

sbitzlg500_RST=P1^2;

sbitSS=P0^7;

sbitSCLK=P0^6;

sbitMOSI=P0^5;

sbitMISO=P0^4;

ucharcodeNkey_a[6]={0xA0,0xA1,0xA2,0xA3,0xA4,0xA5};

ucharcodeNkey_b[6]={0xFF,0xFF,0xFF,0xFF,0xFF,0xFF};

ucharcodeNkey_c[4]={0x9E,0x33,0x51,0xA2};

voiddelay_us(ucharu)

{uchari;for(i=u;i>0;i--);}

voiddelay_5ms(void)

{uintj;for(j=2000;j>0;j--);}

voiddelay_50ms()

{uintj;for(j=20000;j>0;j--);}

ucharrw_byte(ucharcom)

{uchari;ucharrevdat=0,senddat=0;

for(i=0;i<8;i++)

{SCLK=0;

delay_us(8);

senddat=com&0x01;

com>>=1;

if(senddat==0x01)

MOSI=1;}

else

{MOSI=0;}

if(MISO)

{revdat=revdat|(0x01<

SCLK=1;

delay_us(8);

}

MOSI=1;

return(revdat);

}

voidtwo_byte_com(ucharcom)

{uchartemp;

do{

SS=0;

rw_byte(com);

rw_byte(0x00);

SS=1;

SS=0;

temp=rw_byte(0x15);

rw_byte(0x00);

rw_byte(0x00);

SS=1;

}while(temp&0x01);

}

voidzy1730_pu(void)

{two_byte_com(0x01);}

voidzy1730_pd(void)

{two_byte_com(0x07);}

voidzy1730_clr_int(void)

{two_byte_com(0x04);}

voidwait_rdy(void)

{uchartemp;

do{SS=0;

rw_byte(0x15);

rw_byte(0x00);

temp=rw_byte(0x00);

SS=1;

}while(!

(temp&0x01));}

voidwait_finish(void)

{uchartemp;

do{

SS=0;

temp=rw_byte(0x15);

rw_byte(0x00);

rw_byte(0x00);

SS=1;

}while(!

(temp&0x10));

zy1730_clr_int();

wait_rdy();}

voidzy1730_set_play(uchars_addr,uchare_addr)

{uchartemp;

do{

SS=0;

rw_byte(0x90);

rw_byte(0x00);

rw_byte(s_addr);

rw_byte(0x00);

rw_byte(e_addr);

rw_byte(0x00);

rw_byte(0x00);

SS=1;

SS=0;

temp=rw_byte(0x15);

rw_byte(0x00);

rw_byte(0x00);

SS=1;

}while(temp&0x01);}

voidzy1730_set_rec(uchars_addr,uchare_addr)

{uchartemp;

do{

SS=0;

rw_byte(0x91);

rw_byte(0x00);

rw_byte(s_addr);

rw_byte(0x00);

rw_byte(e_addr);

rw_byte(0x00);

rw_byte(0x00);

SS=1;

SS=0;

temp=rw_byte(0x15);

rw_byte(0x00);

rw_byte(0x00);

SS=1;

}while(temp&0x01);}

voidzy1730_set_EASER(uchars_addr,uchare_addr)

{uchartemp;

do{

SS=0;

rw_byte(0x92);

rw_byte(0x00);

rw_byte(s_addr);

rw_byte(0x00);

rw_byte(e_addr);

rw_byte(0x00);

rw_byte(0x00);

SS=1;

SS=0;

temp=rw_byte(0x15);

rw_byte(0x00);

rw_byte(0x00);

SS=1;

}while(temp&0x01);}

voidzy1730_wr_apc(void)

{uchartemp;

do{

SS=0;

rw_byte(0x65);

rw_byte(0x40);

rw_byte(0x04);

SS=1;

SS=0;

temp=rw_byte(0x15);

rw_byte(0x00);

rw_byte(0x00);

SS=1;

}while(temp&0x01);}

voidfyqcz(void)

{zy1730_pu();

delay_50ms();

zy1730_clr_int();

wait_rdy();

zy1730_set_play(0x10,0x1f);

wait_finish();

zy1730_pd();}

voidfyqsk(void)

{zy1730_pu();

delay_50ms();

zy1730_clr_int();

wait_rdy();

zy1730_set_play(0x20,0x2f);

wait_finish();

zy1730_pd();}

main()

{

ucharidatatt[2];

ucharidatacard_snr[4];

ucharidatasize;

ucharidatabankdata[16];

longidatavalue=1;

uchari,j;

zlg500_RST=1;

for(i=255;i>0;i--)

for(j=255;j>0;j--);

zlg500_RST=0;

for(i=255;i>0;i--)

for(j=255;j>0;j--);

spi_init();

EA=1;

i=mifs_config();

i=mifs_get_info(bankdata);

i=mifs_clr_control_bit();

i=mifs_set_control_bit();

bankdata[0]=0x05;

bankdata[4]=~0x05;

bankdata[8]=0x05;

while

(1)

{while(mifs_request(IDLE,tt)!

=0);

if(mifs_anticoll(0,card_snr)!

=0)continue;

delay_50ms();

if(mifs_select(card_snr,&size)!

=0)

{fyqsk();continue;}

if(card_snr[0]==Nkey_c[0])

{if(card_snr[1]==Nkey_c[1])

{

if(card_snr[2]==Nkey_c[2])

{

if(card_snr[3]==Nkey_c[3])

{

if(mifs_authKey(KEYA,5,Nkey_b)!

=0)continue;

for(i=1;i<4;i++)

{

bankdata[i]=0x00;

bankdata[4+i]=0xff;

bankdata[8+i]=0x00;

}

bankdata[12]=0x14;

bankdata[13]=~0x14;

bankdata[14]=0x14;

bankdata[15]=~0x14;

if(mifs_write(20,bankdata)!

=0)continue;

if(mifs_check_write(card_snr,KEYA,20,bankdata)!

=0)continue;

if(mifs_read(20,bankdata)!

=0)continue;

if(mifs_restore(20)!

=0)continue;

if(mifs_transfer(21)!

=0)

{i=0;continue;}

if(bankdata[0]==0)

{fyqcz();}

if(bankdata[0]!

=0)

{if(mifs_value(0xc0,20,&value,21)!

=0)

{i=0;continue;}

if(mifs_read(21,bankdata)!

=0)continue;

mifs_halt();

if(mifs_write_E2(0x30,16,bankdata)!

=0)continue;

mifs_clr_control_bit();

mifs_set_control_bit();

for(i=255;i>0;i--);

for(j=255;j>0;j--);

mifs_buzzer(198,20);

}}}}}

else

{fyqsk();}}

}

main.h

#ifdef_SRC

#defineEXTERN

#else

#defineEXTERNextern

#endif

#include

#defineucharunsignedchar

#defineuintunsignedint

#defineulongunsignedlong

#undefEXTERN

mface_3.h

//definespi

#defineSPI_REN()IE0=0;EX0=1

#defineSPI_RDIS()EX0=0

//spiError

#defineSPI_OK0

#defineSPI_ERR255

externucharspi_send(ucharidata*dp,ucharlenght);

externucharspi_rcv(ucharidata*dp);

externucharspi_init(void);

zlg500.h

#ifdef__SRC

#defineEXTERN

#else

#defineEXTERNextern

#endif

#ifdef__SRC

#definemifs_request_en1

#definemifs_anticoll_en1

#definemifs_anticoll2_en0

#definemifs_cascanticoll_en1

#definemifs_select_en1

#definemifs_cascselect_en1

#definemifs_authentication_en1

#definemifs_authentication2_en1

#definemifs_authKey_en1

#definemifs_halt_en1

#definemifs_read_en1

#definemifs_write_en1

#definemifs_ULwrite_en1

#definemifs_increment_en0

#definemifs_decrement_en0

#definemifs_restore_en1

#definemifs_transfer_en1

#definemifs_value_en1

#definemifs_valuedebit_en1

#definemifs_load_key_en1

#definemifs_reset_en0

#definemifs_close_en0

#definemifs_config_en1

#definemifs_get_info_en1

#definemifs_check_write_en1

#definemifs_set_control_bit_en1

#definemifs_clr_control_bit_en1

#definemifs_buzzer_en1

#definemifs_read_E2_en1

#definemifs_write_E2_en1

#definemifs_write_reg_en1

#definemifs_read_reg_en1

#endif

#defineIDLE0x00

#defineALL0x01

#defineANTICOLL10x93

//anticollisionlevel1

#defineANTICOLL20x95

//anticollisionlevel2

#defineANTICOLL30x97

/anticollisionlevel3

#defineKEYA0x00

#defineKEYB0x04

#definePICC_DECREMENT0xC0

#definePICC_INCREMENT0xC1

#definePICC_RESTORE0xC2

EXTERNucharidataspi_buffer[26];

//definespi_buffer

#defineSEQNR0

#defineCOMMAND1

#defineSTATUS1

#defineLENGTH2

#defineMODE3

#defineBCNT3

#defineADR3

#defineSERNR3

#defineSIZE3

#defineTIME3

#defineTAGTYPE3

#defineINFO3

#defineDATA3

#defineSECNR4

#defineDATABYTES4

#defineVALUE4

#defineNKEY5

#defineAUTHMODE7

#defineADRCHKWR8

#defineDATACHKWR9

 

EXTERNucharspi_init(void);

EXTERNucharmifs_request(uchar_Mode,ucharidata*_TagType);

EXTERNucharmifs_anticoll(uchar_Bcnt,ucharidata*_SNR);

EXTERNucharmifs_anticoll2(uchar_Encoll,uchar_Bcnt,ucharidata*_SNR);

EXTERNucharmifs_cascanticoll(uchar_Select_code,uchar_Bcnt,uchar*_SNR);

EXTERNucharmifs_select(ucharidata*_SNR,ucharidata*_Size);

EXTERNucharmifs_cascselect(uchar_Select_code,uchar*_SNR,uchar*_Sak);

EXTERNucharmifs_authentication(uchar_Mode,uchar_SecNr);

EXTERNucharmifs_authentication2(uchar_Mode,uchar_SecNr,uchar_KeyNr);

EXTERNucharmifs_authKey(uchar_Mode,uchar_SecNr,uchar*_Key);

EXTERNucharmifs_halt(void);

EXTERNucharmifs_read(uchar_Adr,ucharidata*_Data);

EXTERNucharmifs_write(uchar_Adr,ucharidata*_Data);

EXTERNucharmifs_ULwrite(uchar_Adr,uchar*_Data);

EXTERNucharmifs_increment(uchar_Adr,longidata*_Value);

EXTERNucharmifs_decrement(uchar_Adr,longidata*_Value);

EXTERNucharmifs_restore(uchar_Adr);

EXTERNucharmifs_transfer(uchar_Adr);

EXTERNucharmifs_value(uchar_Mode,uchar_Adr,longidata*_Value,uchar_Trans_Adr);

EXTERNucharmifs_valuedebit(uchar_Mode,uchar_Adr,longidata*_Value);

EXTERNucharmifs_load_key(uchar_Mode,uchar_SecNr,uchar*_Nkey);

EXTERNucharmifs_reset(uchar_Msec);

EXTERNucharmifs_close(void);

EXTERNucharmifs_config(void);

EXTERNucharmifs_get_info(ucharidata*_Info);

EXTERNucharmifs_check_write(ucharidata*_SNR,uchar_Authmode,uchar_Adr,ucharidata*_Data);

EXTERNucharmifs_set_control_bit();

EXTERNucharmifs_clr_control_bit();

EXTERNucharmifs_buzzer(uchar_Frquence,uchar_10ms);

EXTERNucharmifs_read_E2(uchar_Adr,uchar_Length,ucharidata*_Data);

EXTERNucharmifs_write_E2(uchar_Adr,uchar_Length,ucharidata*_Data);

EXTERNucharmifs_write_reg(uchar_Reg,uchar_Value);

EXTERNucharmifs_read_reg(uchar_Reg,uchar*_Value);

//mifareerror

#defineMI_OK0

#defineMI_NOTAGERR1

#defineMI_CRCERR2

#defineMI_EMPTY3

#defineMI_AUTHERR4

#defineMI_PARITYERR5

#defineMI_CODEERR6

#defineMI_SERNRERR8

#defineMI_NOTAUTHERR10

#defineMI_BITCOUNTERR11

#defineMI_BYTECOUNTERR12

#defineMI_TRANSERR14

#defineMI_WRITEERR15

#defineMI_INCRERR16

#defineMI_DECRERR17

#defineMI_READERR18

#defineMI_QUIT30

//spiError

#defineSPI_OK0

#defineSPI_ERR255

//checkwriteError

#defineMIS_CHK_OK0

#defineMIS_CHK_FAILED1

#defineMIS_CHK_COMPERR2

#undefEXTERN

 

Zlg500.c

#include"main.h"

#include

#include"mface_3.h"

#define__SRC

#include"zlg500.h"

#undef__SRC

bitbdatanewdata=0;

voidspi_int(void)interrupt0using1

{spi_rcv(spi_buffer);

newdata=1;}

ucharzlg500cmd(ucharlength)

{ucharspi_wdg=10;

uchari,BCC_sum;

spi_buffer[length]=spi_buffer[0];

for(i=1;i

{spi_buffer[length]^=spi_buffer[i];}

spi_buffer[length]=~spi_buffer[length;

TH0=0x2c;//Fosc=11059200,50mstimerinterrupt

TL0=0xb0;

if(spi_send(spi_buffer,length+1)!

=SPI_OK)

returnSPI_ERR;

ET0=0;

TF0=0;

TR0=1;

SPI_REN();

while(newdata==0&&spi_wdg!

=0)

{

if(TF0==1)

{

TH0=0x2c;

TL0=0xb0;

TF0=0;

spi_wdg--;

}

}

TR0=0;

SPI_RDIS();

if(newdata==0)returnSPI_ERR;

newdata=0;

BCC_sum=spi_buffer[0];

for(i=1;i<(spi_buffer[LENGTH]+3);i+)

{BCC_sum^=spi_buffer[i];}

if(BCC_s

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > PPT模板 > 国外设计风格

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2