标题:
STM32f103 rc522 RFID识别与操作源码
[打印本页]
作者:
linuxke
时间:
2021-1-18 12:35
标题:
STM32f103 rc522 RFID识别与操作源码
STM32单片机写的ic卡程序可进行扣费操作,对金额进行修改,添加
1610944139343.jpg
(5.57 MB, 下载次数: 37)
下载附件
2021-1-18 12:34 上传
单片机源程序如下:
#include "delay.h"
#include "sys.h"
#include "usart.h"
#include "dht11.h"
#include "gpio.h"
#include "rc522_new.h"
#include "oled.h"
#include "stmflash.h"
#include "timer.h"
#include "esp8266.h"
#define P5 GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_1)
#define P6 GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_2)
#define P7 GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_3)
#define P8 GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_4)
#define P1(A) if(A){GPIO_SetBits(GPIOB,GPIO_Pin_8);}\
else{GPIO_ResetBits(GPIOB,GPIO_Pin_8);}
#define P2(A) if(A){GPIO_SetBits(GPIOB,GPIO_Pin_9);}\
else{GPIO_ResetBits(GPIOB,GPIO_Pin_9);}
#define P3(A) if(A){GPIO_SetBits(GPIOC,GPIO_Pin_13);}\
else{GPIO_ResetBits(GPIOC,GPIO_Pin_13);}
#define P4(A) if(A){GPIO_SetBits(GPIOA,GPIO_Pin_0);}\
else{GPIO_ResetBits(GPIOA,GPIO_Pin_0);}
#define renti GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_5)
#define yanwu GPIO_ReadInputDataBit(GPIOA,GPIO_Pin_6)
#define CharBuffer1 0x01
#define CharBuffer2 0x02
#define FLASH_SAVE_ADDR 0X08007000
uchar CardRevBuf[16] = { 0 };
volatile uchar key_num,bz,bz1,bz2,bz3;
u8 people_flag=1,people_flag_suo=0;
uint money;
uint money_buf;
uint money_tab[5];
uchar mode;
extern uchar tab[20]; //接受缓存
extern uchar num; //接收数据个数
uint time; //时间累加变量
uint shop_num;
u8 temperature;
u8 humidity;
void KEY_Scan(void)
{
P1(1);
P2(1);
P3(1);
P4(1);
if((P5==0)&&(P6==0)&&(P7==0)&&(P8==0))
{
bz=0;
bz3=0;
key_num=100;
}
if(((P5!=0)||(P6!=0)||(P7!=0)||(P8!=0))&&(bz==0))
{
bz=1;
P1(1);
P2(0);
P3(0);
P4(0);
if(P8==1)
{
key_num=14;return;
}
else if(P7==1)
{
key_num=1;return;
}
else if(P6==1)
{
key_num=4;return;
}
else if(P5==1)
{
key_num=7;return;
}
P1(0);
P2(1);
P3(0);
P4(0);
if(P8==1)
{
key_num=0;return;
}
else if(P7==1)
{
key_num=2;return;
}
else if(P6==1)
{
key_num=5;return;
}
else if(P5==1)
{
key_num=8;return;
}
P1(0);
P2(0);
P3(1);
P4(0);
if(P8==1)
{
key_num=15;return;
}
else if(P7==1)
{
key_num=3;return;
}
else if(P6==1)
{
key_num=6;return;
}
else if(P5==1)
{
key_num=9;return;
}
P1(0);
P2(0);
P3(0);
P4(1);
if(P8==1)
{
key_num=16;return;
}
else if(P7==1)
{
key_num=13;return;
}
else if(P6==1)
{
key_num=12;return;
}
else if(P5==1)
{
key_num=11;return;
}
key_num=key_num;
}
}
void ctrl( void )
{
if( PcdRequest( PICC_REQIDL, &CardRevBuf[0] ) != MI_OK )//??????????????,?????? 2??
{
if( PcdRequest( PICC_REQIDL, &CardRevBuf[0] ) != MI_OK )//??????????????,?????? 2??
{
CardRevBuf[2]=0;
CardRevBuf[3]=0;
bz1=0;
return;
}
}
if( PcdAnticoll( &CardRevBuf[2] ) != MI_OK ) //???,??????? 4??
{
CardRevBuf[2]=0;
CardRevBuf[3]=0;
bz1=0;
return;
}
if( PcdSelect( &CardRevBuf[2] ) != MI_OK )//?? ?????,4??
{
CardRevBuf[2]=0;
CardRevBuf[3]=0;
bz1=0;
return;
}
}
void xianshi()
{
if(mode==0)
{
OLED_ShowString(0,2,"Crad:");
OLED_ShowChar(40,2,CardRevBuf[2]/100%10+'0');
OLED_ShowChar(40+8,2,CardRevBuf[2]/10%10+'0');
OLED_ShowChar(40+8*2,2,CardRevBuf[2]/1%10+'0');
OLED_ShowString(0,0,"temp:");
OLED_ShowChar(40,0,temperature/10%10+'0');
OLED_ShowChar(40+8,0,temperature/1%10+'0');
OLED_ShowString(40+8*3,0,"humi:");
OLED_ShowChar(40+8*8,0,humidity/10%10+'0');
OLED_ShowChar(40+8*9,0,humidity/1%10+'0');
OLED_ShowString(0,4,"money:");
OLED_ShowChar(48,4,money/1000%10+'0');
OLED_ShowChar(48+8,4,money/100%10+'0');
OLED_ShowChar(48+8*2,4,money/10%10+'0');
OLED_ShowChar(48+8*3,4,'.');
OLED_ShowChar(48+8*4,4,money/1%10+'0');
OLED_ShowString(48+8*5,4," ");
OLED_ShowString(0,6,"shop:");
OLED_ShowChar(48,6,shop_num/1000%10+'0');
OLED_ShowChar(48+8,6,shop_num/100%10+'0');
OLED_ShowChar(48+8*2,6,shop_num/10%10+'0');
OLED_ShowChar(48+8*3,6,'.');
OLED_ShowChar(48+8*4,6,shop_num/1%10+'0');
#if 0
OLED_ShowString(48,6,"shop:");
OLED_ShowChar(48+40,6,shop_num/100%10+'0');
OLED_ShowChar(48+40+8,6,shop_num/10%10+'0');
OLED_ShowChar(48+40+8*2,6,'.');
OLED_ShowChar(48+40+8*3,6,shop_num/1%10+'0');
OLED_ShowString(0,6,"Peo:");
if(renti==0){OLED_ShowChar(32,6,'N');}
if((renti==1)&&(bz2==0)){bz2=1;OLED_ShowChar(32,6,'Y');mode=4;OLED_Clear();}
#endif
}
if(mode==1)
……………………
…………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码
所有资料51hei提供下载:
源码.7z
(230.07 KB, 下载次数: 64)
2021-1-18 15:42 上传
点击文件名下载附件
下载积分: 黑币 -5
作者:
yy3900636
时间:
2021-1-26 18:08
谢谢楼主分享代码,,感谢
作者:
cyrs
时间:
2021-1-27 13:29
能用在STM8s103F3上吗
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1