基于单片机的学生签到系统的设计与实现
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
基于单片机的学生签到系统的设计与实现
题目:基于单片机的学生签到系统的设计与实现
1学生签到系统分析与设计
1.1 方案设计具体思路
本设计是基于AT89C52单片机设计的学生签到打卡系统,本系统是由RC522射频芯片采集射频卡片数据ID号,然后51单片机通过获得的ID号查询录入的数据库来判断是哪个人签到,同时保存一下打卡时间记录。日历时间设置是通过上位机软件获取电脑精确时间,并通过串口将日历更新到板子系统,操作比按键设置简单易懂。同样通过电脑端软件发送串口指令录入学生信息、修改学生信息、设置日历、设置签到上下限时间,同时使用市场上通用的12864液晶显示屏显示时间和打卡详情功能。
1.2 方案设计总体框图
1.3 数据库设计
1.3.1 主控制芯片AT89C52的结构
在这一块AT89C52单片机芯片上,集成了一台微型计算机的主要组成部分,其中包括CPU、存储器、可编程I/O口、定时器/计数器,各部分通过内部总线相连。下面介绍几个主要部分。图1.2为AT89C52单片机的基本组成功能方块图。
1.3.2 AT89C52管脚说明
VCC:供电电压。
GND:接地。
P0口:P0口为一个8位漏级开路双向I/O口,有8TTL门电流被脚吸收。当P1管脚写入1时,就叫做高阻输入。P0能够用于外部ROM 数据,又叫做数据/地址的第八位。在FLASH编程时,原码输入口为PO,当正在校验时,PO输出原码,此时PO外部必须升高。
P1口:准双向通用I/0口。P1口管脚写入1后,上拉电阻升高,做为输入,当P1变为低电平时,有电流输出。P1口作为第八位地址接收,也可以用来进行FLASH的变成和校验。
P2口:准双向I/0口。P2口输出其特殊功能寄存器的内容。
P3口:P3口为8个上拉电阻双向I/O接口组成的。当P3口写入1后,P3口被内部升为高电平,用来输入。作为输入,外部下降为低电平,所以P3口会有电流的输出。
P3口管脚还有其他功能,如下:
P3.0 RXD(串行输入口)
P3.1 TXD(串行输出口)
P3.2 INT0(外部中断0)
P3.3 INT1(外部中断1)
P3.4 T0(记时器0外部输入)
P3.5 T1(记时器1外部输入)
P3.6 (外部数据存储器写选通)
P3.7 (外部数据存储器读选通)
RST:复位。振荡器需要复位时,要保持RST脚两个机器周期的高电平时间。
ALE/:地址锁存信号输出端/EPROM编程脉冲输入端。
PSEN:外部程序ROM的选通信号端。外部程序取指的时候,仅仅只有两次的PSEN有效。所以在外部ROM不工作的时候,信号是不会出现的。
/VP:内/外部ROM选择端.
XTAL1:反向振荡放大器的输入,内部时钟电路的输入。
XTAL2:反向振荡器的输出。
1.4串口电路
1.4.1 CH374概述
CH374是一个USB总线的通用接口芯片,USB-DEVICE/SLAVE设备方式都是支付USB的主机方式。HUB根集线器有3个端口,低速和全速的控制传输、批量传输、中断传输以及同步/等时传输。CH374采用8位数据总线支持读、写、片选控制线以及中断输出。
该电路应用于51单片机和PC端的串口通讯,改串口模块电路用于设置时间和录入学生信息和修改学生信
2系统实现
2.1 程序模块设计
本次设计采用的是模块化程序结构,可以分成以下程序模块:
1、系统初始化程序:实现完成变量的设定、中断入口的设定、堆栈、输入输出口及外部件的初始化工作(如12864、RC52
2、串口和定时器的初始化)。
2、键盘扫描程序:定时100ms轮训按键,来判断是否有按键发生。
3、主程序:完成键盘扫描、射频模块的读写、日历时间的显示、当有卡片刷卡时显示刷卡信息,如果超过预设的打卡时间段启动蜂鸣器报警。
4、射频模块程序:51单片机通过并口与射频模块通讯,定时检测天线周围是否有卡片介入,并通过ISO1443卡标准完成读卡写卡功
能。
5、显示子程序:12864的内部读写设定,显示校名和日历和显示刷卡信息状态。
6、蜂鸣器程序:判断是否满足刷卡条件,来控制是否报警。
7、日历程序:年月日时分秒和星期的计算。
2.2软件部分
图2.1系统设计流程图
本次设计采用的是模块化程序结构,可以分成以下程序模块:
1、系统IO初始化,主要就是MCU IO口的电平设置。InitializeSystem()
2、学生卡软件参数的初始化,主要就是学生卡结构体变量参数赋值和BUF清0操作,以及设置打卡签到时间。
StudentCardInit();
3、蜂鸣器的初始化,关闭蜂鸣器操作,防止一上电就长响
beep_init();
4、日历结构体参数初始化,主要是设置默认上电日历时间星期。Calendar_Init();
5、定时器初始化,定时器在程序中起了至关重要的做用,主要实现了系统轮训机制。
bsp_InitTimer();
6、射频模块复位初始化,切记RC500上电后应延时500ms才能可靠初始化,否则有可能射频模块初始化失败,造成不能正常刷卡。
Rc500Ready();
7、串口任务初始化,设置串口通讯参数波特率为:9600,校验位:NONE,数据位:8,停止位:1。
Creak_UsartTask();
8、按键任务初始化,主要对按键变量参数的初始化,以及硬件软件设置操作。
Creak_KeyTask();
9、显示屏12864初始化,接口为并口通讯方式,在写数据之前要记得清屏,设置功能、显示、光标设置等参数设置,设置参数完成之后,显示学校校名以及欢迎使用签到机系统页面。
Creak_LCDTask();
10、射频模块天线设置为关闭状态,并启动射频模块轮训任务,任务间隔时间为500ms
Creak_CardTask();