×
单片机 > 单片机程序设计 > 详情

51单片机水卡充值扣费系统 RC522+S50卡源程序

发布时间:2024-05-18 发布时间:
|

本设计包括两个终端,包括负责水卡充值(可选择金额)的充值终端和每次刷卡扣费两元的付费终端。制作成品时建议两个终端做在一块板子上,用跳帽切换两个51单片机的电源。

主控芯片51单片机
射频模块RC522
射频卡M1卡S50
以下是付费终端的程序

#include "reg52.h"

#include "main.h"

#include "mfrc522.h"

#include //函数处理头文件

#include //字符串处理头文件

#include // 输入输出函数头文件


unsigned char code data1[16] = {0x00,0x00,0x00,0x00,0xff,0xFF,0xFF,0xFF,0x00,0x00,0x00,0x00,0x01,0xFE,0x01,0xFE};

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

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

unsigned char data2[4] = {0x00,0x00,0x00,0x00};//存值减值金额

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

unsigned char TYPE_DATA[2]; //类型

unsigned char ID_DATA[4]; //ID地址

unsigned char value_DATA[4]; //卡里面的值

unsigned char g_ucTempbuf[20]; //卡号

unsigned char code dis0[] = {"S50"};

unsigned char code dis1[] = {"S70"};

unsigned char code dis2[] = {"X"};

unsigned char code dis3[] = {"44"};

unsigned char code dis4[] = {"ID:"};

unsigned char code dis5[] = {"RMB:"};

unsigned char code dis6[] = {"0123456789ABCDEF"};

unsigned int tt=0,a=2,b,falg_pro; //falg_pro声音提示标志

void main( )

{

unsigned char status;

InitializeSystem( ); //初始化

PcdReset(); //复位RC522

PcdAntennaOff(); //关闭天线

PcdAntennaOn(); //开启天线

data2[1]=a/256;

data2[0]=a%256;

while ( 1 )

{

status = PcdRequest(PICC_REQALL, g_ucTempbuf); //返回卡片类型#define PICC_REQIDL 0x26 寻天线区内未进入休眠状态

if(status!= MI_OK) //读不到卡,显示清0;

{

TYPE_DATA[0]=0;

TYPE_DATA[1]=0;

ID_DATA[0]=0;

ID_DATA[1]=0;

ID_DATA[2]=0;

ID_DATA[3]=0;

value_DATA[0]=0;

value_DATA[1]=0;

value_DATA[2]=0;

value_DATA[3]=0;

falg_pro=0;

b=0;

}

if (status == MI_OK)

{

TYPE_DATA[0]=g_ucTempbuf[0];

TYPE_DATA[1]=g_ucTempbuf[1];

status = PcdAnticoll(g_ucTempbuf); //防冲撞 ,返回卡片ID号 4字节

if (status == MI_OK)

{

status = PcdSelect(g_ucTempbuf); //选定卡片 ,输入卡片ID号

if (status == MI_OK)

{

if(falg_pro==0)//声音提示标志

{

falg_pro=1;

pro();

}

[1] [2] [3] [4]
51单片机水卡充值扣费系统RC522S50卡

『本文转载自网络,版权归原作者所有,如有侵权请联系删除』

热门文章 更多
51单片机CO2检测显示程序解析