标题:
基于stm32f407的门禁系统的源码下载
[打印本页]
作者:
ViciQ_Q
时间:
2018-1-23 17:04
标题:
基于stm32f407的门禁系统的源码下载
采用RFID卡模块RC522和正点原子探索者开发板
附件包含工程源码
可以实现
1.通过触摸屏添加、删除人员,允许记录10个人
2.记录100条开门记录
3.能通过串口读到人员记录和开门记录
单片机源程序如下:
/************************************************************/
/* 基于stm32的门禁系统 */
/* 作者:刘昊鑫 */
/************************************************************/
// PB3: SCK
// PB4: MISO
// PB5: MOSI
// PA1: RST
// PA4: NSS
#include "key.h"
#include "sys.h"
#include "usart.h"
#include "delay.h"
#include "led.h"
#include "lcd.h"
#include "key.h"
#include "RC522.h"
#include "task.h"
#include "string.h"
#include "malloc.h"
#include "touch.h"
#include "atk_ncr.h"
#include "rtc.h"
u8 CardType[2]; // 存储卡片类型(0x0400表示卡类型为S50)
u8 UID[4]; // 存储卡片序列号
u8 ReadBuf[16]; // 读一个block数据缓冲
u8 WriteBuf[16]="I Love You! "; // 写一个block数据缓冲
u8 DefaultKey[6]={0xFF, 0xFF, 0xFF, 0xFF, 0xFF, 0xFF}; // 存储卡扇区密码
u8 BlockNum=0;
/**********************************************************/
/* 寻卡 */
/**********************************************************/
u8 SearchCard()
{
// 寻卡,返回卡类型(2字节)
if( PcdRequest(PICC_REQALL, CardType) != MI_OK ) // 寻天线区内所有卡
{
if( PcdRequest(PICC_REQALL, CardType) != MI_OK ) // 寻卡失败,再次寻卡
{
PcdHalt(); // 命令IC卡进入休眠
return SEARCH_ERR; // 再次寻卡失败,返回寻卡错误
}
}
// 防冲撞,读卡的序列号(4字节)
if( PcdAnticoll(UID) != MI_OK )
{
PcdHalt(); // 命令IC卡进入休眠
return CRASH_ERR; // 防冲撞失败,返回防冲撞错误
}
// 命令IC卡进入休眠
PcdHalt();
return MI_OK;
}
/**********************************************************/
/* 读卡/写卡 */
/**********************************************************/
u8 ReadWriteCard(u8 RW, u8 BlockNum, u8* buf)
{
// 寻卡,返回卡类型(2字节)
if( PcdRequest(PICC_REQALL, CardType) != MI_OK ) // 寻天线区内所有卡
{
if( PcdRequest(PICC_REQALL, CardType) != MI_OK ) // 寻卡失败,再次寻卡
{
PcdHalt(); // 命令IC卡进入休眠
return SEARCH_ERR; // 再次寻卡失败,返回寻卡错误
}
}
// 防冲撞,读卡的序列号(4字节)
if( PcdAnticoll(UID) != MI_OK )
{
PcdHalt(); // 命令IC卡进入休眠
return CRASH_ERR; // 防冲撞失败,返回防冲撞错误
}
// 选卡
if( PcdSelect(UID) != MI_OK )
{
PcdHalt(); // 命令IC卡进入休眠
return SELECT_ERR; // 选卡失败,返回选卡错误
}
// 校验卡密码
if(PcdAuthState(PICC_AUTHENT1A, BlockNum, DefaultKey, UID) != MI_OK)
{
PcdHalt(); // 命令IC卡进入休眠
return AUTHEN_ERR; // 校验卡密码失败,返回密码错误
}
if(RW==WRITE_CARD)
{
// 写卡
if(PcdWrite(BlockNum, buf) != MI_OK)
{
PcdHalt(); // 命令IC卡进入休眠
return WRITE_ERR; // 写失败,返回写错误
}
}
else if(RW==READ_CARD)
{
// 读卡
if(PcdRead(BlockNum, buf) != MI_OK)
{
PcdHalt(); // 命令IC卡进入休眠
return READ_ERR; // 读失败,返回写错误
}
}
// 命令IC卡进入休眠
PcdHalt();
return MI_OK;
}
/**********************************************************/
/* 字符转16进制 */
/**********************************************************/
void CharToHex(char* dest, u8* src, u8 n)
{
u8 i;
u8 temp;
for(i=0; i<n; i++)
{
temp=(*src)>>4; // 换算高4位
if(temp<10)
*dest = 0x30 + temp; // 0~9
else if(temp<16)
*dest = 0x41 + temp - 10; // A~F
else
*dest = '&'; // 无效
dest++;
temp=(*src)&0x0F; // 换算低4位
if(temp<10)
*dest = 0x30 + temp; // 0~9
else if(temp<16)
*dest = 0x41 + temp - 10; // A~F
else
*dest = '&'; // 无效
dest++;
src++;
}
*dest='\0';
}
/**********************************************************/
/* USMART组件测试函数 */
/**********************************************************/
// 设置待读写扇区号
void SetBlockNum(u8 NewVal)
{
BlockNum=NewVal;
}
// 设置待写入内容
void SetString(u8* str)
{
u8 i;
for(i=0; i<16; i++)
*(WriteBuf+i)=*(str+i);
}
int main(void)
{
u8 KeyMapValue;
int i;
char ptr[9];
NVIC_PriorityGroupConfig(NVIC_PriorityGroup_2);//设置系统中断优先级分组2
delay_init(168); // 初始化延时函数
uart_init(115200); // 串口初始化
LED_Init(); // 初始化与LED连接的硬件接口
LCD_Init(); // 初始化LCD
KEY_Init(); // 按键初始化
Init_RC522(); // RC522初始化
tp_dev.init(); // 初始化触摸屏
my_mem_init(SRAMIN); //初始化内部内存池
my_mem_init(SRAMCCM); //初始化CCM内存池
alientek_ncr_init(); //初始化NCR识别函数
Init_ID(); //初始化用户表
My_RTC_Init(); //初始化RTC时钟
POINT_COLOR=RED; //设置字体为红色
LCD_ShowString(20,40,200,16,16, "welcome to use the system");
LCD_ShowString(20,70,200,16,16, "please put your card");
POINT_COLOR=MAGENTA;
LCD_ShowString(40,230,200,16,16, "Card S/N: 0x00000000");
……………………
…………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码
所有资料51hei提供下载:
门禁系统.rar
(750.55 KB, 下载次数: 132)
2018-1-24 02:02 上传
点击文件名下载附件
源码
下载积分: 黑币 -5
作者:
时光遗失
时间:
2018-4-25 19:02
楼主,你有原理图可以提供吗?
作者:
zxc108846549
时间:
2018-6-19 12:24
难受啊,关键代码没了
作者:
12345545
时间:
2019-1-16 15:52
测试成功,谢谢楼主
作者:
Arvin0011
时间:
2019-2-11 12:17
资料很详细,感谢分享
作者:
形象代言人o
时间:
2019-4-17 22:38
可以把原理图和接线图发一下吗?
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1