嵌入式课程设计 ARM 刷卡考勤 IC

更新时间:2024-05-06 02:08:01 阅读量: 综合文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

课程设计报告

学期: 班号: 学号: 姓名: 教师:

成绩: 

课程: 嵌入式系统课程设计

电子与信息工程学院

2016年6月

题目: 基于STM-32刷卡考勤系统设计 基本功能: 1.读卡功能: 本系统的读卡模块可以识别基于国际标准ISO/IEC 14443的IC卡,可以读取IC的卡号。 2.考勤功能: 本系统通过对IC卡的识别来统计出勤信息,统计出应到人数。实到人数,实现考勤功能。 3.显示功能: 对于考勤的相关信息,可以通过液晶显示屏来进行显示。 扩展功能:对于数据库中存在的持卡人信息进行显示,并响铃提示通过;对于数据库中不存在的持卡人信息进行报警警告 教师评语: 评审教师: 日期:

第一章 引言

1.1研究目的及意义

随着经济的飞速发展,愈来愈多的管理者认识到管理与效益是息息相关的,实现数据规范化、自动化的管理,是一个管理规范、运作高效的企事业单位的必然要求。现在的市场竞争是知识的竞争,管理手段的竞争。谁有先进的技术设备和管理手段,谁就有成功的先机。企业或单位对于方便、快捷的考勤系统有迫切的需求。而一些当前的刷卡考勤系统主要是基于计算机控制的联网型系统,不仅价格昂贵,体积庞大、笨重,而且需要网络的连接,不利于广泛的用于小范围的考勤管理。为了可以满足日常的方便快捷的考勤,本文设计了基于单片机的刷卡考勤系统。

刷卡考勤系统将射频识别技术和现代管理结合起来。在企业中,刷卡考勤系统可以以节省大量的人力物力,简化日常管理的繁琐程序,提高企业的管理效率。在高校中,刷卡考勤系统对加强学生的教学管理,促进教学改革也有着非常重要的意义。

本系统的可能创新点是通过进一步完善软件环境使本系统与“一卡通”系统的兼容,实现了“校园一卡通”作为考勤卡的作用,拓展了本校“一卡通”的适用范围。通过读取IC卡号,根据各个部门的数据库内存储内容调出相应信息。例如学校的图书馆学生借阅管理、学校微机机房的记时考勤记录、学校操场或学生宿舍的门禁管理、学校食堂的收费等。

1.2 发展趋势

目前,非接触式IC卡中的主流为PHILIPS公司的Mifare技术,并且已经被制定为国际标准:ISO/IEC 14443 TYPE A标准。欧洲一些较大的IC射频卡制造商和IC射频卡读写设备制造商以及IC射频卡软件设计公司等大都把Mifare技术作为技术标准,而发展和推进IC卡行业快速的向标准化发展。而对于非接触式IC智能射频卡方面的研究则代表了整个大行业的发展方向。非接触式IC卡和接触式IC卡相比,它继承了接触式IC卡的容量大、安全性高的特点,同时也克服了以接触方式工作的IC卡所无法避免的缺点,如触点磨损、污染、静电以及插卡不便的读写过程,使非接触式IC卡的使用更加自由,应用更加广泛。

当前,国内IC卡及相关产品的生产和研究的企业主要有上海复旦微电子股份有限公司,深圳市明华澳汉科技有限公司等。中国IC卡产业虽然起步虽晚,但发展迅猛,通过引进先进的技术和自主研发,在几年间,整体生产能力突破了2亿张。全国IC卡应用装置的开发和系统集成厂商也达到上千家。由于智能卡的潜在应用范围非常广,国内外学术界和科技工作者对非接触式智能卡的开发,给予了广泛关注和研究。近几年来,射频识别系统的发展极其迅猛。尤其自1993年金卡工程启动实施以来,IC卡的应用领域得到不断的扩展,一条完整的IC卡产业链已经初步建立起来了,并逐步成为国民经济新的持续增长点。

1.3 可行性分析

经济方面:现在市面上销售的中档考勤机售价一般在500元左右,若批量采购的话售价能够相对的降低,学校可以根据每个教研室的授课老师的数量来配备2-5台考勤机,由于学生考勤系统选用一般计算机操作,对硬件设施没有较高要求,所以每个科室的可以配置一台计算机作为客户端,预计每台客户端的售价为3000左右,鉴于本系统对计算机的硬件要求不高,可以考虑采用一般低档的服务器,预计售价为10000左右。

技术可行性分析主要包括四个方面:目前有关的技术能否支持所开发的新系统;新系统开发人员的数量和水平,即人力资源;硬件和软件资源。

⒈ 技术支持

首先根据新系统的目标,考虑目前有关的技术能否支持所开发的新系统。这里讨论的技术必须是已经普遍使用的,而不是待研究的或正在研究的。

⒉ 硬件资源

开发管理信息系统所需的硬件资源包含以下两个方面。 系统开发人员在管理信息系统的开发过程中所需要的计算机设备及其有关的外部设备;管理信息系统开发成功投入使用后,使用单位所应具备的计算机设备及其有关的外围设备。对硬件资源进行可行性分析时主要考虑计算机的主机内存、类型、功能、联网能力、安全保护措施以及输入/输出设备,外存储器和联网数据通信设备的配置、功能、效率等指标是否符合系统方案设计要求,同时还要考虑计算机的性能/价格比。

⒊ 软件资源

软件资源的可行性分析主要考虑以下几点是否满足使用者,即学校的要求。

⑴ 操作系统的选择。 ⑵ 编译系统的选择。

⑶ 数据库管理系统的选择。 ⑷ 高级编程语言的选择。 ⑸ 汉字处理系统的选择。 ⑹ 应用软件包的选择。

1.4 基本内容

本文主要是通过对射频设别技术的研究来设计一款基于单片机的刷卡考勤系统的硬件设备及其软件。在设计IC卡读卡器的基础上,完成考勤系统的设计。

本课题主要完成的任务包括:

(1)文献部分:无线识别技术的研究。

(2)硬件部分:包括单片机控制的射频读卡器的设、12864液晶显示电路的设计、报警电路的设计等。

(3)软件部分:ARM控制程序。 (4)系统的综合调试与分析:在软硬件完成以后,要对系统进行综合的测试与实验,分析系统的可靠性与实用性,调整系统的不足。

第二章 开发环境的安装和配置

2.1开发环境及其工具的介绍

Linux是一套免费使用和自由传播的类Unix操作系统,是一个基于POSIX和UNIX的多用户、多任务、支持多线程和多CPU的操作系统。它能运行主要的UNIX工具软件、应用程序和网络协议。它支持32位和64位硬件。Linux继承了Unix以网络为核心的设计思想,是一个性能稳定的多用户网络操作系统。

Linux操作系统诞生于1991 年10 月5 日(这是第一次正式向外公布时间)。Linux存在着许多不同的Linux版本,但它们都使用了Linux内核。Linux可安装在各种计算机硬件设备中,比如手机、平板电脑、路由器、视频游戏控制台、台式计算机、大型机和超级计算机。

这使得可以在Linux下通过相应的模拟器运行常见的DOS、Windows的程序。这为用户从Windows转到Linux奠定了基础。许多用户在考虑使用Linux时,就想到以前在Windows下常见的程序是否能正常运行,这一点就消除了他们的疑虑

严格来讲,Linux这个词本身只表示Linux内核,但实际上人们已经习惯了用Linux来形容整个基于Linux内核,并且使用GNU 工程各种工具和数据库的操作系统。

Linux的基本思想有两点:第一,一切都是文件;第二,每个软件都有确定的用途。其中第一条详细来讲就是系统中的所有都归结为一个文件,包括命令、硬件和软件设备、操作系统、进程等等对于操作系统内核而言,都被视为拥有各自特性或类型的文件。至于说Linux是基于Unix的,很大程度上也是因为这两者的基本思想十分相近

另外Linux是一款免费的操作系统,用户可以通过网络或其他途径免费获得,并可以任意修改其源代码。这是其他的操作系统所做不到的。正是由于这一点,来自全世界的无数程序员参与了Linux的修改、编写工作,程序员可以根据自己的兴趣和灵感对其进行改变,这让Linux吸收了无数程序员的精华,不断壮大。

Linux同时具有字符界面和图形界面。在字符界面用户可以通过键盘输入相应的指令来进行操作。它同时也提供了类似Windows图形界面的X-Window系统,用户可以使用鼠标对其进行操作。在X-Window环境中就和在Windows中相似,可以说是一个Linux版的Windows。Linux可以运行在多种硬件平台上,如具有

x86、680x0、SPARC、Alpha等处理器的平台。此外Linux还是一种嵌入式操作系统,可以运行在掌上电脑、机顶盒或游戏机上。2001年1月份发布的Linux 2.4版内核已经能够完全支持Intel 64位芯片架构。同时Linux也支持多处理器技术。多个处理器同时工作,使系统性能大大提高。

2.2硬件环境

本项目仅需要一台装有Linux系统的虚拟机的计算机,它可以使用windows xp及其以上版本以及友善之臂开发板和一些基础焊接工具即可。

2.3软件环境

1.Windows 7操作系统 2.Keil 4

3.VMvare Workstation

第三章 系统的设计

本课题设计的刷卡考勤系统主要由IC卡、读卡模块、控制模块、显示模块和报警模块组成。下面分别对系统功能要求、系统技术要求及系统实现方案总体阐述。

3.1系统功能需求

本系统的研制主要包括以下几项功能:

1.读卡功能:本系统的读卡模块可以识别基于国际标准ISO/IEC 14443的IC卡,可以读取IC的卡号。

2.考勤功能:本系统通过对IC卡的识别来统计出勤信息,统计出应到人数。实到人数,实现考勤功能。

3.显示功能:对于考勤的相关信息,可以通过液晶显示屏来进行显示。对于数据库中存在的持卡人信息进行显示,并响铃提示通过;对于数据库中不存在的持卡人信息进行报警警告。

3.2系统的技术要求

在了解本系统的工作原理和功能之后,我们就可以确定系统的技术要求。本系统采用了标准的ISO/IEC 14443 “Type A”国际标准实现IC卡信息的读写,并通过天线的屏蔽干扰信号设计,大大提高了系统读卡的可靠性和通用性。系统采用的单片机处理器成本均比较低,适合批量生产和各类工程的需要。对于完整的系统而言,为了提高市场竞争力,要求该系统应符合便于携带、防干扰、易于使用和成本低廉等技术要求。具体参数和指标如下:

(1)便于携带:电路的设计和布局较为紧凑,减少占用的空间,减小硬件的体积,便于携带;

(2)防干扰:系统的天线的合理设计,实现电子屏蔽; (3)易用性:系统采用模块化的设计,在使用过程中安装简单,同时考勤信息直观的显示在液晶屏上,人机交换界面良好,易于使用。

3.3系统的组成及总体方案设计

基于单片机的刷卡考勤系统主要由天线、读卡芯片、单片机、控制电路、报警电路、显示电路组成。设计的关键在于读卡模块和显示模块电路的设计以及单片机与读卡芯片和液晶显示通信的程序设计。系统的组成结构如图3-1所示:

LCD 蜂鸣器,指示灯 控制器 读卡模块

图3-1 系统功能模块图

天线 3.4系统硬件设计

3.4.1读卡芯片电路的设计

图(8)读卡芯片MFRC522的电路连接

工作原理:如图(8)所示,21、22脚作为晶振的接口,D5、D6、D7、SDA作为MFRC522与单片机以SPI方式通信的串口,单片机对MFRC522读卡芯片进行操作的时候,通过其进行通信并传输数据。TX1、TX2、VMID和RX作为与天线连接端口。

MFRC522简介:

MFRC522 是由 Philips 公司推出的一款非接触式读卡芯片, 它被应用于 13.56MHz 非接触式IC卡的读卡通信。MFRC522 兼容 ISO14443 A 所有的层, 最高的传输速度达 424kbps,在不需要增加有源电路的情况下,内部的发送器部分就能够直接驱动近距离天线, 在接收部分提供了一个高效的解调和解码电路, 用于接ISO14443 A 兼容的应答信号。支持的主机接口SPI 接口、I2C 接口、串行 UART接口。如图(9)所示:模拟接口用来处理模拟信号的调制与解调。非接触式UART用来处理与主机通信时的协议要求。FIFO缓冲区快速而方便地实现了主机与非接触式UART之间的数据传输。不同的主机接口功能可以满足不同的用户要求。

图(9)MFRC522的内部框图

MFRC522的管脚的介绍表(2): 符号 OSCIN IRQ SIGIN TX1 TVDD TX2 TVSS DVSS D1~D7 SDA EA I2C DVDD AUX1 AUX2 AVSS RX VMID 管脚 类型 21 23 7 11 12 13 4 24 32 1 3 19 20 18 17 16 I O I O O PWR O PWR I I I PWR O O PWR I PWR I O PWR PWR 描述 晶振输入 中断请求,用来输出一个中断事件 信号输入 信号输出 发送器1,传递调制的13.56MHZ的载波信号 发送器电源,给输出级TX1和TX2供电 发送器2,传递调制的13.56MHZ的载波信号 发送器地,TX1,TX2输出级地 数字地 不同接口数据管脚,可以做SPI、I2C、UART 串行数据线 外部地址,用来编码I2C I2C使能 数字电源 辅助输出,用于测试 模拟地 接收器输入,接收RF信号 内部参考电压 不复位和掉电,低电平有效 晶振输出:振荡器的反相放大输出 不连接,三态管脚 管脚电源 管脚电源地 SIGOUT 8 10,14 PWR 25~31 I/O NRSTPD 6 OSCOUT 22 TRSTPIN 9 PVDD PVSS 2 5 表(2)MFRC522的管脚 MFRC522支持的三种接口定义如表(3)所示: 表(3)三种通信接口方式

MFRC522采用SPI通信时序图,如图(10)所示

图(10)MFRC522 SPI通信时序图

兼容SPI接口读数据操作:

MOSI和MISO的字节顺序见表(4)

表(4)字节顺序表

顺序表兼容SPI接口写数据操作: MOSI和MISO的字节顺序见表(5)

表(5)字节顺序表

第四章 程序设计与实现

本系统的程序设计采用模块化的设计方案,主要由初始化模块、读卡模块、考勤统计模块和显示模块组成。主程序的流程图如图4-1所示:

图4-1主程序流程图

图4-2系统框图

程序代码:

#include \#include \#include \e.h\#include \#include \#include #include \

GPIO_InitTypeDef GPIO_InitStructure; ErrorStatus HSEStartUpStatus;

vu8 ErrCnt=0;

vu8 KeyVal_Now[4],KeyCnt=0,TimeSec=0,SysPage=0; vu16 KeyVal_Real[4]={1,2,3}; #define Max_User 10 #define error 2

vu8 searchnum=0;

unsigned int SearchNumber=0; unsigned int clk0=0;

vu8 str[3]={0,'\\0','\\0'}; vu16 SysDate[256]; #define FALSE 0 #define TURE 1 //状态定义表 #define on 1 #define off 0

#define MAX_NUMBER 63

vu8 modeflag=0,clearallflag=0,changeflag=0 //Verify Password :验证设备握手口令 vu8 VPWD[16]={16,0X01 ,0Xff,0xff,0xff,0xff, 0x01,0,7,0x13,0x00,0x00,0x00,0x00,0x00,0x1b}; //回送12个

//设置设备握手口令 vu8 STWD[16]={16,0X01 ,0Xff,0xff,0xff,0xff, 0x01,0,7,0x12,0x00,0x00,0x00,0x00,0x00,0x1a}; //回送12个

//GetImage :探测手指并从传感器上读入图像 vu8 GIMG[14]={12, 0X01 ,0Xff,0xff,0xff,0xff, 0x01, 0,3,1,0x00,0x05}; //回送12个

//Gen Templet1 :根据原始图像生成指纹特征1 vu8

GENT1[14]={13,0X01 ,0Xff,0xff,0xff,0xff,0x01,0,4,2,1,0x00,0x08}; //回送12个

//Gen Templet2 :根据原始图像生成指纹特征2 vu8

GENT2[14]={13,0X01 ,0Xff,0xff,0xff,0xff,0x01,0,4,2,2,0x00,0x09}; //回送12个

//Search Finger :以CharBufferA或CharBufferB中的特征文件搜索整个或部分指纹库

vu8 SEAT[18]={17, 0X01 ,0Xff,0xff,0xff,0xff, 0x01, 0,8, 4,1,0,0, 0,0x65, 0x00,0x73}; //回送12个

//Merge Templet ;将CharBufferA与CharBufferB中的特征文件合并生成模板,结果存于ModelBuffer。

vu8 MERG[14]={12, 0X01 ,0Xff,0xff,0xff,0xff, 0x01, 0,3,5 , 0x00,0x09};//回送12个

//Store Templet :将ModelBuffer中的文件储存到flash指纹库中

vu8 STOR[16]={15, 0X01 ,0Xff,0xff,0xff,0xff, 0x01, 0,6,6,2, 0x00,0x00, 0x00,0x0f}; //回送12个

//DEL one templet

vu8 DELE_one[16]={16, 0X01 ,0Xff,0xff,0xff,0xff, 0x01, 0,7, 0x0c, 0x00,0x00, 0,1, 0x00,0x15};

//DEL templet ;清空指纹库

vu8 DELE_all[12]={12,0X01 ,0Xff,0xff,0xff,0xff, 0x01, 0,3, 0x0d,0x00,0x11};

//////////////////////////////////////宏定义------------结束////////////////////////////////////////////////////////

vu8 FifoNumber=0;

vu8 FIFO[MAX_NUMBER+1]={0};

/*********1毫秒延时程序**********/ void delay1ms(unsigned int t) { unsigned long int i,j; for(i=0;i

vu8 UartRx[100],UartTx[100]={0x58}; vu16 RecCnt;

vu16 RecTimeCount;

vu8 UartRecInit=0,Uart_RecOk=0,UartFlag_RecTime=0;

#define Mode_Get 0 #define Mode_See 1 vu8 Mode=Mode_See;

void TxdByte(vu8 dat)//串口发送信息,通过查询方式发送一个字符 { //等待发送完毕,必须放在前面 while(USART_GetFlagStatus(USART2,USART_FLAG_TC) == RESET); //发送数据 USART_SendData(USART2,dat); }

vu8 UartSendCnt=0;

void UartSend(void)//CRC及自动加结束符 { vu8 i; USART_Cmd(USART1, ENABLE);//打开串口 for(i=0;i

USART_SendData(USART1,(u8)UartTx[i]); } }

void PutOK(void) { UartTx[0]='O'; UartTx[1]='K'; UartSendCnt=2; UartSend(); }

void PutER(void) { UartTx[0]='E'; UartTx[1]='R'; UartSendCnt=2; UartSend(); }

void TIM1_UP_IRQHandler(void) {

if(TIM == TIM1) { if(TIM_GetITStatus(TIM, TIM_IT_Update) != RESET) //判断是否为 更新事件 标志位 { TIM_ClearITPendingBit(TIM, TIM_IT_Update); //清除 更新事件 标志

if(UartFlag_RecTime)//从接收第一个有效字节开始,进行一秒的倒计时,如果没收到完整的

//复位接收器,并发送一个字节的报错数据0x88. {

if(RecTimeCount>0) RecTimeCount--;

else {

UartRecInit=0;

UartFlag_RecTime=0;//禁止接收倒计时 Uart_RecOk=1; //ES=0;

USART_Cmd(USART1, DISABLE); } } } }

}

第五章 系统测试

测试时首先检测硬件电路的设计原理是否正确,能否达到预期效果以及实现方法是否简便;其次在焊接电路之后,认真检查电路焊接情况。这里采用分块调试的方法,分为显示模块电路,报警模块电路,读卡模块电路以及控制电路。在每个模块的调试过程中又采用了由局部到整体,由简单到复杂的调试方法。先测试单片机控制模块及其下载电路是否正常工作,然后测试显示模块能否正常工作,接着测试报警模块的电路、读卡模块的电路,最后再把各个模块连成整体。

开机后,作品状态如图5-1所示。

图5-1 作品实物

系统的电脑操作程序界面如图5-2,在界面中可以对“网页端口”、“考勤时间”等信息进行设置。

图5-2 程序界面

将IC卡靠近传感器,系统会提示并进行相关操作,如图5-3。

图5-3 刷卡操作演示

在刷卡的同时,软件系统中也会进行操作并提示,如显示“添加成功”,如图5-4所示。

图5-4 添加成功界面

添加IC卡信息后,再次刷卡的时候,就会显示IC卡编号,同时系统软件中显示刷卡信息,如图5-5、5-6所示。

图5-5 显示IC卡相关信息

图5-6 应用程序中显示刷卡信息

在后台中,可以登录网站查看考勤信息,如图5-7所示。

图5-7 在网页中查看考勤信息

第六章 总结

本文在参考国内外大量资料的基础上,针对传统考勤方式存在的问题,结合IC智能卡的流行趋势,合理地提出了基于单片机的刷卡考勤系统的设计方法。本设计采用简单的设计,解决了在一些小范围内刷卡考勤的实现的问题,并且经济性,便携性有了很大的改善,极大地提高了产品的实用性和市场竞争力。

本文设计的刷卡考勤系统由读卡模块和显示模块两大部分构成。我主要负责IC读取的硬件方面,利用IC卡的通用性来解决日常生活中的考勤问题,对于传统的考勤方式具有很大优势,可以提高企业或单位的运作效率,极大地方便我们的生活。随着社会的发展,人们工作、学习、生活节奏的加快,高效率的考勤方式必然成为最终的趋势,此外本设计也可以很容易的改造为门禁系统、IC卡计费系统,具有很大的适应性。

然而,由于本小组的知识不够全面,再加上时间紧迫和实验条件的限制,该刷卡考勤系统还有许多需要完善的地方。比如:可以通过基于GSM的无线通信和PC连接,使考勤信息可以及时发送到后台终端,实现大范围的考勤等;也可以和近期比较流行的近场通讯技术(简称,NFC)结合起来,使刷卡考勤更为便利。这些都需要在后续工作中得到进一步解决。通过此次课题的研究,让我更加深入的了解了ARM的一些功能,对于ARM在日常生活中的运用有了更深层次的了解。在研究时也发现了自身对于ARM的不理解之处,并查看相关书籍等资料解决了不懂的问题。结合实际工作中的实践,和这次的课设论文撰写,了解了很多也学到了很多。同时,对以前所学的专业知识,有了进一步的加深和巩固。

参考文献

1 梁飞.射频卡及其读写设备内核技术的研究与应用开发.学位论文:武汉理工大学

2 孟锟泰.基于ARM的915MHz射频识别读卡器研究.学位论文:天津大学

3 汪国海.非接触式IC卡读卡器设计.硕士论文:电子科技大学 4 陈宝平,王月波,马伯元.基于MFRC522的Mifare射频卡读写模块的开发.微计算机信息 2007年第23卷第11-2期

5 沈宇超,沈树群,射频识别技术及其发展现状。电子技术应用,1999(1):4-5.

6 《无线射频识别技术(RFID)理论与应用》电子工业出版社。 7 《射频识别(RFID)技术(第2版)》电子工业出版社。 8 单片机原理及应用,杨恢先等著,国防科技大学出版社。 9 单片机原理及接口技术实践教程,胡建等著,机械工业出版社。 10 智能卡技术(第三版)——IC卡与RFID标签,王爱英等著,清华大学出版社。

本文来源:https://www.bwwdw.com/article/k0vg.html

Top