/**********************RC522实验开发板例程************************

*  CPU:STC89C52RC

*  晶振:11.0592MHZ

------------------------------------------------*/

#include

#include

#include

#include "main.h"

#include "mfrc522.h"

unsigned char code data1[16] = {0x12,0x34,0x56,0x78,0xED,0xCB,0xA9,0x87,0x12,0x34,0x56,0x78,0x01,0xFE,0x01,0xFE};

//M1卡的某一块写为如下格式,则该块为钱包,可接收扣款和充值命令

//4字节金额(低字节在前)+4字节金额取反+4字节金额+1字节块地址+1字节块地址取反+1字节块地址+1字节块地址取反

unsigned char code data2[4]  = {0,0,0,0x01};

unsigned char code DefaultKey[6] = {0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF};

unsigned char g_ucTempbuf[20];

void delay1(unsigned int z)

{

unsigned int x,y;

for(x=z;x>0;x--)

for(y=110;y>0;y--);

}

void main( )

{

unsigned char status,i,j;

unsigned int temp;

InitializeSystem( );

PcdReset();

PcdAntennaOff();

PcdAntennaOn();

while ( 1 )

{

status = PcdRequest(PICC_REQALL, g_ucTempbuf);//寻卡

if (status != MI_OK)

{

InitializeSystem( );

PcdReset();

PcdAntennaOff();

PcdAntennaOn();

continue;

}

printf("卡的类型:");

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

{

temp=g_ucTempbuf[i];

printf("%X",temp);

}

status = PcdAnticoll(g_ucTempbuf);//防冲撞

if (status != MI_OK)

{    continue;    }

以下为超级终端打印出的内容

printf("卡序列号:");        //超级终端显示,

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

{

temp=g_ucTempbuf[i];

printf("%X",temp);

}

///

status = PcdSelect(g_ucTempbuf);//选定卡片

if (status != MI_OK)

{    continue;    }

status = PcdAuthState(PICC_AUTHENT1A, 1, DefaultKey, g_ucTempbuf);//验证卡片密码

if (status != MI_OK)

{    continue;    }

status = PcdWrite(1, data1);//写块

if (status != MI_OK)

{    continue;    }

while(1)

{

status = PcdRequest(PICC_REQALL, g_ucTempbuf);//寻卡

if (status != MI_OK)

{

InitializeSystem( );

PcdReset();

PcdAntennaOff();

PcdAntennaOn();

continue;

}

status = PcdAnticoll(g_ucTempbuf);//防冲撞

if (status != MI_OK)

{    continue;    }

status = PcdSelect(g_ucTempbuf);//选定卡片

if (status != MI_OK)

{    continue;    }

status = PcdAuthState(PICC_AUTHENT1A, 1, DefaultKey, g_ucTempbuf);//验证卡片密码

if (status != MI_OK)

{    continue;    }

status = PcdValue(PICC_DECREMENT,1,data2);//扣款

if (status != MI_OK)

{    continue;    }

status = PcdBakValue(1, 2);//块备份

if (status != MI_OK)

{    continue;    }

status = PcdRead(2, g_ucTempbuf);//读块

if (status != MI_OK)

{    continue;    }

printf("卡读块:");        //超级终端显示,

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

{

temp=g_ucTempbuf[i];

printf("%X",temp);

}

printf("\n");

LED_GREEN = 0;

for(i=0;i<250;i++)//先输出一种频率的声音

{

for(j=0;j<80;j++);

Speaker=~Speaker;

}

delay1(100);

LED_GREEN = 1;

delay1(100);

LED_GREEN = 0;

delay1(200);

LED_GREEN = 1;

PcdHalt();

}

}

}

/

//系统初始化

/

void InitializeSystem()

{

/*        P0M1 = 0x0; P0M2 = 0x0;

P1M1 = 0x0;        P1M2 = 0x0;

P3M1 = 0x0; P3M2 = 0xFF;

*/        P0 = 0xFF; P1 = 0xFF; P3 = 0xFF;P2 = 0xFF;

TMOD=0x21;                   //设T0为方式1,GATE=1;

SCON=0x50;

TH1=0xF3;

……………………

…………限于本文篇幅 余下代码请从51黑下载附件…………

mfrc522 c语言程序,MF RC522 51单片机测试程序相关推荐

  1. 51单片机c语言程序执行顺序,51单片机程序执行流程详细分析

    这里是一个循环,根据DJNZ指令的功能:每执行一次DJNZ RO, IDATALOOP就将R0的值减1,若R0的值不为0则就跳到IDATALOOP地址去.很显然这是一个循环,那么RO的值是多少呢,在以 ...

  2. 51单片机串口通讯c语言程序,如何使用51单片机实现串口通信

    描述 STC51单片机一般带有1个串口,有的带有2个串口,串口一般用于下载程序和串口通信.串口通信特别适合控制设备,所以工控机的电脑上一般都带有串口. 51单片机的串口引脚为P3.0引脚与P3.1引脚 ...

  3. at89c52串口通信c语言程序,AT89C52DEMO 基于51单片机的(89C51/52)C语言源码例程 - 下载 - 搜珍网...

    例程与源码/12864带字库测试程序/12864 例程与源码/12864带字库测试程序/12864.hex 例程与源码/12864带字库测试程序/12864.lnp 例程与源码/12864带字库测试程 ...

  4. 单片机定时报警C语言程序,求一个51单片机定时闹钟程序。要C语言。能够调时间...

    我来发一个C语言211351单片机时钟程序,希望5261能帮到你/* 程序功能:4102带定时闹铃时钟                                      *//*------- ...

  5. 电子时钟单片机c语言程序,一款51单片机电子钟制作(C语言)

    //主程序/ void main()//主程序开始 { chushi();//初始化 while(1)//大循环 { if(g!=1)//如果g不等于1,就执行下一句,否则跳过下一句 disy(fen ...

  6. 直流电机调速c语言程序,分享一个51单片机直流电机调速源程序

    /*******************************************************************/ /* 程序名:PWM直流电机调速 */ /* 晶振:11.0 ...

  7. 红外线遥控c语言程序,红外线遥控码单片机测试程序

    转自:http://www.51hei.com/mcu/1488.html 以前在仕创时,总是奇怪 周工为什么可以编出一个能测试任何遥控的遥控码 和用户码的单片机程序!周工还将此程序视为宝贝,每次测试 ...

  8. 单片机c 语言0-99,单片机“0~99”加法计数器程序的设计51单片机原理及应用.doc...

    单片机"0~99"加法计数器程序的设计51单片机原理及应用 课 程 设 计 课程名称51单片机原理及应用题目名称单片机"0~99"加法计数器程序设计专业班级学生 ...

  9. C语言极速学习开发——51单片机入门编程之使用KeilC51进行代码编译(点亮你心中学习的精神之灯-下)

    系列文章目录 提示:本文章为系列文章,系列文章的所有文章的目录后期会时刻更新,喜欢的朋友请收藏好 <第一章 C语言极速学习开发--51单片机入门编程之使用KeilC51进行代码编译(点亮你心中学 ...

最新文章

  1. 关于Bulk加载模式
  2. Entity Framework的启动速度优化
  3. 初学者 | 一文读懂命名实体识别
  4. 系统架构师-基础到企业应用架构-系统设计规范与原则[上篇]
  5. 进入工程制图闪退_安阳职业技术学院机电工程系新能源汽车专业项目答辩
  6. 多项式加法 java 链表_多项式加法,用单链表实现。
  7. 1.1 基础-取近似值
  8. CSS3 border-image的使用方法
  9. 从原理到方法,一文讲清如何应对C语言内存泄露!
  10. oracle查看登录时间黑屏,oracle 11g默认用户名、密码解锁 以及安装后重启黑屏问题.doc...
  11. OpenShift 4 之通过直接访问内部的 Image Registry 操作容器镜像
  12. python搜索关键词自动提交_python+selenium实现自动化百度搜索关键词
  13. easydarwin 安装_linux环境安装部署easydarwin流媒体服务器详细教程
  14. JQuery UI Layout
  15. 从无到有 win10建window xp虚拟机之总结
  16. 使用腾讯云文字识别提取图片中的文字内容
  17. 如何制定切实可行的计划并好好执行——2020年,我不想再碌碌无为
  18. python 制作刷题程序
  19. 互联网三大巨头银行,网商银行、微众银行和新网银行有什么区别?
  20. 致我们终将逝去的青春

热门文章

  1. 苏宁易购商品详情 API
  2. TFmini 常见问题与解答
  3. 2019纪中寒假培训
  4. 基于观测器的T-S模糊系统故障分析simulink仿真
  5. ios 绘制线框_iOS 各种边框
  6. 无符号格式化输出的区别%d,%u?
  7. C++ 实现太阳系行星系统
  8. BUUCTF MISC刷题笔记(三)
  9. linux java定时关机,Linux定时关机
  10. nginx启动时指定prefix(覆盖编译时的 --prefix)