扩展库使用说明——RC552
1-硬件概述RC522是应用于13.56MHz非接触式通信中高集成度的读写卡芯片,“三表”应用推出的一款低电压、低成本、体积小的非接触式读写卡芯片,是智能仪表和便携式手持设备研发的较好选择。MFRC522利用了先进的调制和解调概念,集成了在13.56MHz下所有类型的被动非接触式通信方式和协议。支持14443A兼容应答器信号。数字部分处理ISO014443A帧和错误检测。
2-引脚定义
3-电路原理图
4-硬件连接
5-图形化模块
1. RC522初始化,RST引脚,NSS引脚,SCK引脚,MISO引脚、MOSI引脚
2. RC522写数据
3. RC522读取数据。
6-范例代码
#define SOFTSPI_SCK_PINP2_5
#define SOFTSPI_MISO_PIN P2_4
#define SOFTSPI_MOSI_PIN P2_3
#define RC522_RST P1_0
#define RC522_RST_MODE {P1M1&=~0x01;P1M0&=~0x01;}//P1_0双向IO口
#define RC522_NSS P1_1
#define rc522_NSS_MODE {P1M1&=~0x02;P1M0&=~0x02;}//P1_1双向IO口
#include <STC8HX.h>
uint32 sys_clk = 24000000;//设置PWM、定时器、串口、EEPROM频率参数
#include "lib/oled.h"
#include "lib/twen_board.h"
#include "mylib/rc522.h"
#include "lib/delay.h"
uint8 key={0xff,0xff,0xff,0xff,0xff,0xff};
uint8 value={0xf0,0xf0,0xf0,0xf0,0xf0,0xf0,0xff,0x07,0x80,0x69,0xff,0xff,0xff,0xff,0xff,0xff};
uint8 RFID;
uint8 key1={0xf7,0xf6,0xf5,0xff,0xff,0xff};
void setup()
{
oled_init();//OLED初始化
twen_board_init();//天问51初始化
rc522_init();//RC522初始化
}
void loop()
{
rc522_read(key,8,RFID);//RC522读数据
oled_clear();//OLED清屏
oled_show_num(0,0,RFID[(int)(0)]);
oled_show_num(10,0,RFID[(int)(1)]);
oled_show_num(20,0,RFID[(int)(2)]);
oled_show_num(30,0,RFID[(int)(3)]);
oled_show_num(40,0,RFID[(int)(4)]);
oled_show_num(50,0,RFID[(int)(5)]);
oled_show_num(60,0,RFID[(int)(6)]);
oled_show_num(70,0,RFID[(int)(7)]);
oled_display();//OLED更新显示
delay(100);
}
void main(void)
{
setup();
while(1){
loop();
}
}
7-测试视频
http://www.haohaodada.com/video/new/bbs/RC522.mp4
本帖最后由 dayue 于 2021-7-2 11:55 编辑
//player.bilibili.com/player.html?bvid=BV1Ag411u7Rv
老师我按照你这个进行编辑的,但是没有找到rc522读数据那个块,然后直接用的c代码,也是没有成功 本帖最后由 Youngolo 于 2022-10-14 18:44 编辑
写入失败,返回MI_ERR Youngolo 发表于 2022-10-14 16:22
写入失败,返回MI_ERR
我在定时器中断里面读卡,会复位,然后串口输出乱码,请问这个怎么解决?
1秒读一次卡,找到卡片准备下一次找卡....
--------------------------
1秒读一次卡,找到卡片
选择卡片:16384
卡片验证成功!]]]]]]]]]]]]]]]]]]]]]]]]]]a冇n仮sl PC\m}P \ ancpl AP \CrancplP \⊙ Lc qNGA]]]]]]]]]]]]]]]]]]]]Y]]]]]a冇n仮sl PC\m}P \ ancpl AP \CrancplP \⊙ Lc qNCA
好像是重新初始化了,我屏幕会关闭然后重新显示
页:
[1]