单片机实验
非接触式IC 卡读卡模块实验
一. 实验目的
通过本实验学习ZLG500A 读卡模块的应用方法,了解射频读卡器在门禁系统、
电子交费等领域的应用技术。
二. 实验设备及器件
IBM PC 机 一台
DP-51PROC 单片机综合仿真实验仪 一台
RC500A 读卡模块 一套
三. 实验内容
1. 编写程序,通过单片机的I/O 口控制ZLG500A 模块的用户接口,实现对射频卡
的读写控制。
2. 编写一个读卡程序,检测射频卡的等待读取。
四. 实验要求
掌握ZLG500A 模块三线SPI 总线接口的应用,初步了解射频读卡的工作原理和
应用范围。
五. 实验步骤
1. 参考以下的电路图连接电路接口,使用导线将A2 区的P10、P11、P12、INT0
接线柱与B2 区的SCLK、SDATA、MF_RST、SS 接口一一对应连接,然后连接
ZLG500A 报警输出连接到LED 指示灯和B5 区的无源蜂鸣器上。连接5V 电源输入。
2. 运行编写好的软件程序,等待读取射频卡。将卡放到天线附近即可听到响声,说明读卡成功。
图3.48 ZLG500A 模块接线图
六. 实验预习要求
整理本节的实验内容,掌握RC500A 的基本应用技术,提前做好实验准备工作。
七. 实验参考程序
/*****读卡参考测试程序******/
#include "zlg500.h"
sbit zlg500_RST =P1^2;
uchar code Nkey_a[6] = {0xA0, 0xA1, 0xA2, 0xA3, 0xA4, 0xA5};
uchar code Nkey_b[6] = {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF};
main()
{
uchar idata tt[2];
uchar idata card_snr[4];
uchar idata size;
uchar idata bankdata[16];
long idata value=1;
uchar i,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();
while(1)
{
while(mifs_request(IDLE,tt)!=0); //请求
if(mifs_anticoll(0,card_snr)!=0) continue;//防碰撞
if(mifs_select(card_snr,&size)!=0) continue;//选择
if(mifs_authKey(KEYA,5,Nkey_b)!=0) continue;//证实
bankdata[0]=0x10;
bankdata[4]=~0x10;
bankdata[8]=0x10;
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; //恢复20 块数据
if(mifs_transfer(21)!=0) //传送到21
{
i=0;
continue;
}
if(mifs_value(0xc0,20,&value,21)!=0)
{
i=0;
continue;
}
if(mifs_read(21,bankdata)!=0) continue; //读出
mifs_halt(); //使模块进入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); //输出蜂鸣器
}
}
八. 实验思考题
采用ZLG500A 模块,设计一个简单的多用户识别门禁系统
全部0条评论
快来发表一下你的评论吧 !