STM32/51单片机实训day4——RFID数据读取|RC522|串口数据收发、可模拟RFID (三) 仿真

news2024/11/22 19:01:57

目录

1 任务指导

2 实验步骤

3 串口调试

4 USART配置

5 fputs函数重写

内  容:能够读取RFID卡S50的ID——编程实现串口数据收发

学  时:3学时

知识点:电路图设计、USART配置  

重点: USART配置

难点:USART配置

时间:2022年12月22日 13:30~16:20 

1 任务指导

使用MFRC522读卡器读取S50卡的ID号,并显示在12864液晶上。

2 实验步骤

MFRC522读卡器和开发板的硬件接线,如图1-2所示,上图为电路图,下图为实物图。

图1-1 MFRC522硬件电路

图1-2  MFRC522读卡器电路图和实物图 

读卡器和开发板进行连接,连接方式如图1-3所示。

图1- 3  读卡器与开发板连接方式

MFRC522是高度集成非接触式(13.56MHz)读卡芯片。此发送模块利用调制和解调的原理,并将它们完全集成到各种非接触式通信方法和协议中。

MFRC522的发送模块支持ISO 14443A/MIFARE协议

MFRC522的内部发送器部分可以驱动读卡器天线与ISO 14443A/MIFARE卡和应答机的通信,无需其他的电路。接收器部分提供一个功能强大和高效的解调和译码电路,用来处理兼用ISO 1443A/MIFARE的卡和应答机的信号。数字电路部分处理完整的ISO1443A/MIFARE帧和错误检测。MFRC522支持MFARE更高速的非接触式通信,双向数据传输速率高达424Kbit/s。可以实现各种不同主机接口的功能:

(1)SPI接口

(2)串行UART接口

(3)I2C接口

不同类型的接口连接方法如图1-4所示。

 图1-4 不同类型接口的连接方法

开发板有专门的SPI接口,用于外接MFRC522。所以,本实验采用的是SPI接口,如图1-1所示。关于MFRC522的详细资料可以参考MFRC522中文手册。

软件实现步骤。下图1-5是读写流程。

图1-5 读写流程 

3 串口调试

为了模拟RFID数据通讯添加串口输出数据电路,通过查询数据手册,确定PA9引脚对应有USART1_TX(发送)功能。在proteus中添加虚拟终端,将虚拟终端的RXD(接收)引脚接与单片机引脚PA9连接。电路设计如图4。

图4 串口输出数据电路设计 

4 USART配置

在main.c中编写USART的配置函数,调用库函数配置USART相关参数,在配置参数之前,需要调用时钟使能函数对GPIOA、AFIO、USART的端口时钟进行使能。GPIO_InitTypeDef及USART_InitTypeDef结构体包含了GPIO和USART所需配置的参数,因此参数配置主要是调用GPIO_InitTypeDef及USART_InitTypeDef对其内部的元素进行配置。代码如下:

void usart_init(void)
{
GPIO_InitTypeDef  GPIO_InitStruct;
USART_InitTypeDef USART_InitStruct;
 
RCC_APB2PeriphClockCmd(RCC_APB2Periph_GPIOA | RCC_APB2Periph_AFIO | RCC_APB2Periph_USART1, ENABLE);
 
// PA9 -> Tx
GPIO_InitStruct.GPIO_Pin = GPIO_Pin_9;
GPIO_InitStruct.GPIO_Mode = GPIO_Mode_AF_PP;
GPIO_InitStruct.GPIO_Speed = GPIO_Speed_50MHz;
GPIO_Init(GPIOA, &GPIO_InitStruct);
 
// USART
USART_InitStruct.USART_BaudRate = 9600;
USART_InitStruct.USART_WordLength = USART_WordLength_8b;
USART_InitStruct.USART_Parity = USART_Parity_No;
USART_InitStruct.USART_StopBits = USART_StopBits_1;
USART_InitStruct.USART_HardwareFlowControl = USART_HardwareFlowControl_None;
USART_InitStruct.USART_Mode = USART_Mode_Tx;
USART_Init(USART1, &USART_InitStruct);
 
USART_Cmd(USART1, ENABLE);
 
}

5 fputs函数重写

重写串口发送函数,代码如下:

int fputc(int ch, FILE *f)
{
USART_SendData(USART1, (uint8_t)ch);
while(USART_GetFlagStatus(USART1, USART_FLAG_TXE) != 1);
 
return ch;
}

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处:http://www.coloradmin.cn/o/126948.html

如若内容造成侵权/违法违规/事实不符,请联系多彩编程网进行投诉反馈,一经查实,立即删除!

相关文章

赶快升级吧!PHP8比PHP5快41倍,比PHP7快3倍

本文得出的结论,归结于仅运行纯CPU任务的脚本的基准测试结果,不需要I/O操作的任务,例如访问文件、网络或数据库连接。 这些是纯 CPU 基准测试。它们并未涵盖 PHP 性能的所有方面,并且它们可能无法代表实际情况。然而,结…

用Python标准库统计CSDN阅读量

urllib基础 一般做爬虫其实很少有推荐urllib的,但urllib乃是Python标准库成员,在要求比较简单的情况下,采用urllib还是比较方便的。 作为爬虫入门必学包,urllib最常用的函数一定是urllib.request中的urlopen。其返回对象是HTTPR…

ES学习路程(二)

关于ES第一篇是在Linux安装,为了方便我在windows搭建一套ES和kibana版本(7.15.0) 第一步:下载安装ES在windows 官网下载相应版本的es和kibana: https://www.elastic.co/cn/downloads/past-releases/elasticsearch-7…

《图解TCP/IP》阅读笔记(第八章 8.6、8.7)—— 网络管理与其他应用层协议

前言 本篇是第八章的最后一篇 8.6 网络管理 从前,网络管理凭借管理员的记忆和直觉进行,但是网络规模越大,人的力量就越不足,所以需要一个严密的管理工具或方法。 在TCP/IP的网络管理中,可以使用SNMP(Si…

uni-app——小程序实现本地图片的上传以及身份证的智能识别

文章目录 前言一、示例图二、实现过程 1.完成提交图片的api地址2.获取本地图片3.将本地图片上传至开发者服务器三、具体实现代码四、身份证的智能识别总结前言 上传本地图片的功能很常见,那么具体该如何实现呢? 一、示例图 二、实现过程 1.完成提交图…

操作系统接口系统调用的实现

接口 连接两个东西,信号转换,屏蔽细节… 操作系统接口 连接上层用户和操作系统软件,方便了使用,屏蔽了细节。 操作系统接口的形式 为应用层提供一些重要的函数,如printf,write,read等。接口…

Windows Active Directory —— 常见的远程控制对比

在windows环境中,需要远程访问的时候很多,使用的工具和命令也各式各样,我把自己常用的命令和工具总结一下 远程访问方式: 1)对服务器而言,RDP这个绝对是最常见的方式,mstsc /v:remoteserver 即可打开 2)winrs和winrm,这个可以允许我们通过命令行来远程访问,远程服务…

TypeScript基础类型

目录 数字 number 字符串 string 布尔 boolean 数组 Array 元组 枚举 enum 任意值 any void Null 和 Undefined null undefined Never 数字 number let age: number 24; 虽然爆红,但是依然能改 字符串 string let name:string"张三" 布尔 bo…

ef参数设置说明(faiss)

1、模型参数:1000代表聚类中心个数 随着聚类个数的增加,模型索引的构建时间近似指数增加但搜索精度也线性增加,不影响内存占用,几乎不影响搜索耗时 结论:在 Faiss 引擎的聚类情况下,对于百万级别的数据大概…

B/S结构和C/S结构详细介绍

什么是c/s结构、b/s结构 1、C/S结构,即Client/Server(客户机/服务器)结构,是大家熟知的软件系统体系结构,通过将任务合理分配到Client端和Server端,降低了系统的通讯开销,充分利用两端硬件环境的优势。早期的软件系统…

Haploview做单倍型教程1--软件安装

大家好,我是邓飞,这里介绍一下如何使用Haploview进行单倍型的分析。 计划分为三篇文章: 第一篇:Haploview做单倍型教程1–软件安装第二篇:Haploview做单倍型教程2-分析教程第三篇:Haploview做单倍型教程3…

HCIA(1)

一. 计算机网络的诞生及发展 1946年2.14日,美国宾夕法尼亚大学为了美国军方用于导弹计算,发明了世界上第一台计算机,而计算机改变并且引领了世界的发展。 计算机是现代一种用于高速计算的电子计算机器,可以进行数值计算&#x…

『C语言』字符串的输入gets()和输出puts()

🚩write in front🚩 🔎大家好,我是謓泽,希望你看完之后,能对你有所帮助,不足请指正!共同学习交流🔎 🏅2021年度博客之星物联网与嵌入式开发TOP5&#xff5…

MATLAB-fplot绘图函数

前面介绍的plot函数是将外部输人或者通过函数数值计算得到的数据矩阵转化为二维图形。在实际的应用中,用户可能并不知道所要绘制的二维图形中函数随着变量变化的趋势,假如此时用plot函数来绘制图形,则可能会由于变量的取值间隔不合理而导致所绘制的二维图…

2022年广西最新建筑施工焊工(建筑特种作业)模拟试题及答案

百分百题库提供特种工(焊工)考试试题、特种工(焊工)考试预测题、特种工(焊工)考试真题、特种工(焊工)证考试题库等,提供在线做题刷题,在线模拟考试,助你考试轻…

C++【跳表】

文章目录一、什么是跳表二、跳表的实现三、跳表性能分析一、什么是跳表 skiplist本质上也是一种查找结构,用于解决算法中的查找问题,跟平衡搜索树和哈希表的价值是一样的,可以作为key或者key/value的查找模型。 skiplist是由William Pugh发…

rabbitmq镜像模式

rabbitmq集群模式分为两种:普通模式和镜像模式 如果不设置集群模式则为普通模式,下面是将集群修改为镜像模式 镜像集群 RabbitMQ镜像功能,需要基于RabbitMQ策略来实现,策略policy是用来控制和修改群集范围的某个vhost的队列行为…

STM32/51单片机实训day8——基于Keil5+Proteus8使用DHT11温度传感器实现温湿度采集并在LM016L液晶屏上显示

目录 任务指导 1 DHT11产品概述 2 应用领域 3 传感器性能说明 4 接口说明 5 电源引脚 6 串行接口(单线双向) 通讯过程如图3所示: 任务实现​​​​​​​ 内 容:本任务使用DHT11温度传感器实现基本的端口配置、初始化时序。 学 时:3…

深度学习——样式迁移(笔记)

样式迁移:计算机视觉应用之一 1.将样式图片中的样式(比如油画风格)迁移到内容图片上,得到合成的图片 2.基于CNN的样式迁移 ①初始化合成图像,将其初始化内容图像。合成图像是风格迁移过程中唯一需要更新的变量X&#…

ChatGPT一战封神,和它聊完后,我更想躺平了

11 月 30 日,OpenAI 发布了名为 ChatGPT 的 AI 对话模型,它是 InstructGPT 的衍生模型,是根据 GPT-3.5 系列中的一个模型微调而来的,于 2022 年初完成训练。 用户规模达到 100 万需要多久?Netflix 用了三年半时间&…