毕业设计(论文)-基于单片机的指纹考勤系统.doc_第1页
毕业设计(论文)-基于单片机的指纹考勤系统.doc_第2页
毕业设计(论文)-基于单片机的指纹考勤系统.doc_第3页
毕业设计(论文)-基于单片机的指纹考勤系统.doc_第4页
毕业设计(论文)-基于单片机的指纹考勤系统.doc_第5页
已阅读5页,还剩34页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

山东英才学院毕业设计(论文)题 目专 业学生姓名班级学号指导教师签字指导教师职称指导单位负责人签字学院领导签字日 期摘 要单片机控制无疑是人们追求的目标之一。单片机是一个单芯片形态,面向控制对象的嵌入式应用计算机系统。文章介绍的指纹考勤系统是基于单片机系统实现的。以单片机系统为核心的指纹考勤系统是一个相对独立的系统,可以完成指纹信息的采集处理。通过串口与上位机实现通信,可以将指纹信息传给VC电脑端,实现指纹信息的管理,以应对实际应用。本文基本实现了串口通信与上位机的指纹信息处理。在整个指纹考勤系统中利用VC+实现上位机编程,利用ODBC对信息作出合理的分类,该应用程序能够较好的实现上班时间的设定;能够提供员工出入单位的情况记录;能够提供请假、加班和出差情况的记录,并实现查询、添加、修改、删除、浏览等处理功能;能够拥有一定的安全性、协调性和完整性。关键字:指纹考勤;单片机系统;FPS200;串口通信;上位机编程AbstractSCM is undoubtedly one of the goals that people pursue. The microcontroller is a single-chip form, the computer system of the control object-oriented embedded applications.The article describes the fingerprint attendance system is implemented based on the SCM system. SCM system as the core fingerprint attendance system is a relatively independent system, fingerprint information acquisition and processing can be completed. Communication through the serial port with the host computer, the fingerprint information can be passed to the VC PC fingerprint information management to cope with the practical application.The basic serial communication between PC and the fingerprint information processing. Entire fingerprint attendance system using VC + + host computer programming, using ODBC to make a reasonable classification of the information, the application can better achieve the setting of working hours; to provide employees access units recorded; to provide leave, overtime and travel records of query, add, modify, delete, browse and other processing functions; to have a certain security, coordination and integrity.Keywords: fingerprint time and attendance; SCM system; FPS200; serial communication; host computer programming目 录第一章 系统总体设计方案1第二章 指纹识别系统的硬件设计22.1系统硬件的总体描述22.2单片机最小系统22.2.1 AT89S51单片机的基本组成22.2.2 AT89S51引脚功能42.2.3 AT89S51的CPU52.2.4 AT89S51的存储器结构52.2.5 74LS373芯片结构介绍62.3指纹传感器FPS20062.4.1串行通信接口82.4.2 串行口的特殊功能控制寄存器82.4.3串行口的工作方式92.4.4波特率的设置102.5常用串行通信接口标准112.5.1 RS-232C接口112.5.2 RS-232C的EIA电平和TTL电平转换122.6基于单片机的指纹采集系统的基本结构14第三章 指纹识别系统软件实现部分153.1 控件MSComm串口编程153.2控件MSComm串口编程实例15附录24结束语41致谢42参考文献43第一章 系统总体设计方案硬件平台大致可以分为5个部分:成像系统(传感器FPS200)、核心部分AT89S51单片机、RAM、EEPROM等器件。在工作过程中,指纹经传感器采集后,由传感器直接转成RGB格式,并且数据传输到MCU。MCU需要执行大量的模式识别和图像处理相关计算。固化的程序存储在EEPROM中,这些指令控制了整个指纹识别系统的工作流程。RAM为内存,存储临时数据。构成数据通道。文章对每部分硬件将分类作出介绍,如单片机的结构与连接方法,外设寄存器选取,串口通信的实现等。而对于整个硬件部分单独拿出来就是一个完整的考勤模块,实现指纹信息采集与处理。在不需上位机参与下也可实现指纹采集功能。在系统的软件实现方面介绍了单片机系统与PC端实现通讯的过程,可以完成指纹信息的传输,在上位机建立数据库,通过VC编程实现指纹信息的存储。最终达到实际的应用目的。当然,对于单片机所处理的指纹算法方面的程序,没有做出学习研究。MCU传 感 器RAMEEPROMPC图1-1 指纹识别系统结构框图第二章 指纹识别系统的硬件设计2.1系统硬件的总体描述基于单片机的指纹识别系统是由AT89S51单片机、62128片外RAM、EEPROM芯片、FPS200等构成,在无需上位机的管理下,具有指纹录入、图像处理、指纹对比、存储信息功能。是一个相对独立的指纹识别系统、一个独立的外部设备。过程中,指纹传感器FPS200采集指纹信息,经过串口传递给单片机接收命令,单片机同意接收信息后,指纹传感器将转换的数据传到单片机,单片机通过存储在EEPROM中的固化程序执行大量模式识别的相关计算,当用户指纹被确认,单片机将命令执行机构动作,开关开。指纹系统主要包括:单片机最小系统、指纹采集部分、串口通信部分、开关按钮、供电系统组成。本章分别做出介绍,最后给出总的电路设计图。 2.2单片机最小系统单片机最小系统以AT89S51单片机位核心,连同外设的62128RAM芯片和EEPROM芯片等组成。此系统能够实现指纹算法的处理,串行通信的设定,数据处理方面内容。2.2.1 AT89S51单片机的基本组成选取单片机AT89S51主要原因是功耗低、可通过软件设置省电模式。空闲模式下,CPU暂停工作,而RAM定时计数器,串行口,外中断系统可继续工作,128B内部RAM,能满足设计要求。AT89S51S是一个低功耗、高性能CMOS8位单片机,片内含4KB ISP(In-system programmable)的可反复擦写1000次的Flash片内程序存储器,器件采用Atmel公司的高密度、非易失性 存储技术制造,兼容标准MCS-51指令系统及80C51引脚结构。 AT89S51 单片机的基本组成如图1.1所示。从AT89S51单片机的结构框图可以看到,该芯片上集成了一个微型计算机,它包括如下几个部分:(1)8位微处理器(CPU)(2)数据存储器(128B RAM);(3)程序存储器(4KB Flash ROM);(4)4个8位可编程并行I/O口(P0口、P1口、P2口、P3口);(5)一个全双工的异步串行口;(6)2个可编程的16位定时器/计数器;(7)一个看门狗定时器;(8)中断系统具有五个中断源、5个中断向量;(9)特殊功能寄存器(SFR)26个;(10)低功耗模式有空闲模式和掉电模式,具有掉电模式下的中断恢复模式;(11)3个程序加密锁存位。其基本结构图如1.1 图2-1 AT89S51单片机的基本结构示意图2.2.2 AT89S51引脚功能P0口是8位的漏极开路的双向I/O口。当外扩存储器及I/O接口芯片时,P0口作为低8位地址总线及数据总线的分时复用端口。另外,P0口也可用作通用的I/O口,需加上拉电阻,这时为准双向口。作为通用I/O输入,应先向端口写入1。可驱动8个LS型TTL负载。P1口是8位的准双向I/O口,具有内部上拉电阻。准双向I/O口,作为通用I/O输入时,应先向端口锁存器写1。P1口可驱动4个LS型TTL负载。P2口是准双向的8位I/O口,具有内部上拉电阻,当AT89S51扩展外部存储器及I/O口时,P2口作为高8位地址总线用,输出高8位地址。P2口也可作为普通的I/O口使用。当作为通用I/O输入时, 应先向端口输出锁存器写1。P2口可驱动4个LS型TTL负载。图2-2 AT89S51管脚图P3口也是准双向的8位I/O口,具有内部上拉电阻。作为准向口,其功能和前两个相似。另外P3口还有重要的第二功能。引脚第二功能说明P3.0RXD串行数据输入口P3.1TXD串行数据输出口P3.2外部中断0输入P3.3外部中断1输入P3.4T0定时器0外部计数器P3.5T1定时器1外部计数输入P3.6外部数据存储器写选通输出P3.7外部数据存储器读选通输出2.2.3 AT89S51的CPUAT89S51的CPU由运算器和控制器组成。其中,运算器对操作数进行算术、逻辑和位操作运算。主要包括算术逻辑运算单元ALU、累加器A、位处理器、程序状态字寄存器PSW及两个暂存器等。而控制器的任务是识别指令,并根据指令的性质控制单片机各功能部件,从而保证单片机各部分能自动协调地工作。控制器包括:程序计数器、指令寄存器、指令译码器、定时及控制逻辑电路等。2.2.4 AT89S51的存储器结构存储器的结构特点之一是将程序存储器和数据存储器分开(哈佛结构),并有各自的访问指令。存储器的空间可以分为以下四类:1.程序存储器空间。分为片内和片外两部分。片内4KB Flash ,编程和擦除完全是电气实现。可用通用编程器对其编程,也可在线编程。当片内4KB Flash 存储器不够用时,可片外扩展,最多可扩展至64KB程序存储器。存放程序和表格之类的固定常数。片内为4KB的 Flash ,地址为0000H0FFFH。16位地址线,可外扩的程序存储器空间最大为64KB,地址为0000HFFFFH。在使用时访问片内的还是片外的程序存储器,由EA引脚电平决定。当EA=1时CPU从片内0000H开始取指令,当PC值没有超出0FFFH时,只访问片内Flash 存储器,当PC值超出0FFFH自动转向读片外程序存储器空间1000HFFFFH 内的程序。 =0时,只能执行片外程序存储器(0000HFFFFH)中的程序。不理会片内4KB Flash 存储器。在本系统中选用的片外EEPROM是SST29EE010。2.数据存储器空间。也分片内与片外两部分。片内有128 B RAM(52子系列为256B)。片内RAM 不够用时,在片外可扩展至64KB RAM 。片内RAM与片外RAM两个空间是相互独立的,片内RAM与片外RAM的低128B的地址是相同的,但由于使用的是不同的访问指令,所以不会发生冲突。3.特殊功能寄存器4.位地址空间2.2.5 74LS373芯片结构介绍本系统在扩展外部存储器时选用77LS373芯片实现外部存储器的扩展。因此,文章在这里介绍下74LS373芯片。74ls373是常用的地址锁存器芯片,它实质是一个是带三态缓冲输出的8D触发器。在MCS-51单片机系统中,常采用74LS373作为地址锁存器使用,其连接方法如上图所示。其中输入端1D8D接至单片机的P0口,输出端提供的是低8位地址,C端接至单片机的地址锁存允许信号ALE。输出允许端OE接地。其中,1D8D为8个输入端。1Q8Q为8个输出端。C是数据锁存控制端,接入单片机的地址锁存允许信号ALE。图2-3 74L373外接RAM和ROM的连接方法2.3指纹传感器FPS200FPS200是一种非光学的CMOS器件,其传感区为1.28cm1.50cm,256300传感阵列,分辨率为500dpi,工作电压为35.5V,内置8位FLASH模数转换器(ADC)。三种总线接口为8位微处理器总线接口、内置USB全速接口和内置串行接口。由MODE0和MODE1决定所处的接口模式。指纹可自动检测,并可直接与8位微处理器接口。FPS200基于电容器充放电原理。传感器阵列的没点都是一个金属电极,充当电容器的一极,按照手指头上对应的点作为令一极。传感面形成两极之间的介电层。由于指纹的脊和谷,导致各点的电容值不同,这个电容值阵列就形成一幅指纹图形。相关公式C=FPS200是面向行的器件,每次可获得一行图像。每列接有两个采样保持(S/H)电路。当选定一行后,对此行的所有电容充电至VDD。充电结束时,第一组采样保持电路将保存该电压值。接着,该行电容将被放电,经过一段放电时间,令一组采样保持电路将保存剩余电压值。那么,两组S/H电路电压值之差正比于电容值,将其数字化就可表示该行的指纹图像。采集时的行,放电时间,电流等写入FPS200里的相关寄存器,结合A/D转换的灰度值,以及自动换行等设置实现指纹图像的获取。FPS200EEPROMMCU设计过程中以单片机系统作为控制核心。指纹经传感器采集后,由传感器直接转成RGB格式,并且数据传输到MCU。MCU需要执行大量的模式识别和图像处理相关计算。固化的程序存储在EEPROM中,这些指令控制了整个指纹识别系统的工作流程。RAM为内存存储临时数据。构成数据通道。RAMPC图2-4 基于单片机的考勤硬件图FPS200具有自动指纹检测功能。当手指按到传感器上,FPS200便会发出中断信号给MCU,MCU查询到中断,开始采集指纹数据并将数据传给PC机。在后面软件部分文章介绍串口通信部分,主要是上位机编程。而对下位机,指纹提取的程序不做介绍。 图2-5 FPS200引脚与单片机管脚连接图实例2.4串行通信89S51单片机有一个全双工异步串行IO口,占用P3.0(串行数据接收端RXD)和P3.1(串行数据发送端TXD)两个引脚,是P3口的第二个功能。该接口电路不仅可以同时进行数据的接收和发送,也可以作为一个同步移位寄存器使用。 2.4.1串行通信接口串行口由发送控制器、接受控制器、波特率输入管理和发送/接收缓冲器SBUF组成。通常定时器T1作为串行口波特率发生器使用。串行口的通信操作视为累加器A与发送/接受缓冲器SBUF之间的数据传送操作。串行口的工作过程可概括如下。(1) 用户通过串行口的初始化操作规定串行口的工作方式。(2) 串行口自动完成发送和接受。发送:将待发送的数据由A送入SBUF(以指令“MOV SBUF,A”实现,在发送控制器的控制下组成帧结构,并自动以串行方式发送到TXD端。在发送完毕后自动将T1置1,向CPU申请中断。接受:先用指令(SETB REN)置位接受允许位才能开始串行接受操作。在接受控制器的控制下,通过移位寄存器将串行数据送入SBUF中。在接收完毕后自动将RI置1,向CPU申请中断。2.4.2 串行口的特殊功能控制寄存器与串行口有关的特殊功能寄存器有SBUF、SCON、PCON,与串行口中断有关的特殊功能寄存器有IE、IP。1. 串口的发送/接收缓冲器SBUFSBUF是两个在物理上独立的接收、发送缓冲器,它们占用同一字地址99H,可同时发送、接收数据。CPU能通过对SBUF的读/写指令来区别是对接收缓冲器操作还是对发送缓冲器操作,不会产生错误。2. 串行口控制寄存器SCON SCON是可以按位寻址的8位控制寄存器,用于串行口的方式设定和数据传送控制,地址为98H。SCON各位的定义和功能如下:SCON.7SCON.6SCON.5SCON.4SCON.3SCON.2SCON.1SCON.0SM0SM1SM2RENTB8RB8TIRI(1)SM0、SM1:串行口工作方式选择位。(2) SM2:多机通信控制位。(3) REN:串行接收允许位。由软件对其置一或清零。软件置一时,串行口允许接收,清零后则禁止接收。(4) TB8:在方式2和方式3中时发送的第九位数据。(5) RB8:在方式2和方式3中是接收的第9位数据。(6) TI:发送中断标志位,发送结束时由硬件置位。该位必须用软件清零。(7) RI:接收中断标志位,接收结束时由硬件置位。该位必须用软件清零。3.电源控制寄存器PCON 串行口借用了电源控制寄存器PCON的最高位。PCON是8位寄存器,字节地址为87H,不可进行位寻址。它的低四位全部用于单片机的电源控制,只有最高位SMOD位用于串行口波特率系数的控制。当SMOD=1时,方式1、2、3的波特率加倍,否则不加倍。PCON的格式如下:PCON.7PCON.6PCON.5PCON.4PCON.3PCON.2PCON.1PCON.0SMODGF1GF0PDIDL2.4.3串行口的工作方式 89S51单片机串行口有4种工作方式,用特殊功能寄存器SM0、SM1两位进行设定,如下表所示方式位工作方式 功能波特率SM0SM1 0 0方式08步同步移位寄存器方式(I/O口扩展) 0 1方式18位异步串行通信(每帧发送10位)需设置【T1溢出率2(SMOD/32)】 1 0方式29位异步串行通信(每帧发送11位)或fosc/64 1 1方式39位异步串行通信(每帧发送11位)需设置【T1溢出率2(SMOD/32)】其中,定时器T1溢出率=fosc/12(12(N)(K=13、16、8分别对应于方式0、1、2)。1.方式01)特点。用于串行I/ O(口扩展,有固定的波特率,为fosc/12。同步发送/接收功能,由TXD提供移位脉冲,RXD用作数据的输入/输出通道。发送/接收8位数据,低位在前高位在后。(2)发送操作。 由指令“MOV SBUF,A”启动发送操作,发送时由TXD输出移位脉冲,RXD发送SBUF中的数据。发送完8位数据后,TI自动置1,请求中断。要继续发送时,T1必须由指令清零(CLR TI)。(3)接受操作。在RI=0的前提下,用指令置REN=1,可以启动一阵数据接收。同样由TXD输出移位脉冲,由RXD接收串行数据。接收完一帧后RI自动置1,请求中断。要继续接收时,要用指令清除RI。2.方式1(1)特点。8位异步串行通信UART接口。帧结构为10位,包括起始位0、8位数据位和1位停止位。波特率由软件设置,由T1的溢出率决定。(2)发送操作。由指令“MOV SBUF,A”启动A中的数据从TXD端异步发送。发送完一帧数据后,TI自动置1,请求中断。要继续发送时,TI必须由指令清零(CLR TI)。(3)接收操作。在RI=0的前提下,用指令置REN=1,启动一帧数据的接收。串行口采样RXD,当采用到由1至0的跳变时,表明接收到穿行数据的起始位,开始接收一阵数据,直至停止位到来时,把停止位送到RB8中,此RI自动置1,请求中断并通知CPU从工作出发SBUF中取走已接收的数据。3.方式2和方式3方式2和方式3具有多机通信功能。两种方式除了波特率设置不同之处外,其余功能完全相同。2.4.4波特率的设置串行通信的波特率取决于串行口的工作方式。1.方式0的波特率方式0的波特率是固定的,为fosc/12.2.方式2的波特率方式2的波特率有两种,取决于SMOD(PCON.7),SMOD=1时为fosc/32;SMOD=0时为fosc/64。由于PCON无位寻址功能,通常用以下指令清零或置1:ANL PCON,#7FHORL PCON#80H3.方式1和方式3的波特率这两种方式下波特率取决于定时器/计数器1的溢出率及SMOD,并有以下关系式: 波特率=T1溢出率/32式中T1溢出率/T1溢出周期,而溢出周期即为T1定时时间。4.应用在应用时往往根据所需要波特率,先选取SMOD,计算出T1的溢出率,然后计算出T1的时间常数。T1可以工作在方式0、方式1和方式2。方式2为自动装入时间常数的8位定时器,使用时只需进行初始化,不需在中断服务程序中重装时间常数,是一种常用方式。2.5常用串行通信接口标准 常用的串行通信接口标准有RS-232C、RS-422A和RS-485等。文章将对RS-232接口作出介绍。2.5.1 RS-232C接口RS-232接口实际上是一种串行通信标准,是由美国EIA(电子工业协会)和Bell公司一起开发的通信协议,它对信号的功能、电器特性、连接器等都作了明确的规定,RS-232C是广泛应用的一个版本。RS-232C采用的是EIA电平,采用反逻辑,其规定如下:*逻辑1(MARK)时,电压为-3-15V;*逻辑0(SPACE)时,电压为+3+15V;RS-232C是通过提高传输电压来延长传输距离的,一般可以达到15m。 RS-232C有25针的D型连接器和9针的D型连接器,目前PC机都是采用9针的D型连接器。9针D型连接器的信号及引脚如下图所示。 图2-6 RS232管脚结构RS-232C除通过它传送数据(TXD和RXD)外,还对双方的互传起协调作用,这就是握手信号,9根信号分为两类:(1) 基本的数据传送引脚TXD(Transmitted Date):数据发送引脚。串行数据从该引脚出发。RXD(Received Date):数据接收引脚。串行数据由此输入。GND(Ground):信号地线。在串行通信中最简单的通信只需连接这三根线。在PC机PC机、PC机与单片机、单片机与单片机间,多采用这种连接方式。(2) 握手信号RTS(request to send):请求发送信号。输出信号。CTS(clear to send):清除传送。它是对RTS的响应信号,输入信号。DCD(date carrier detection):数据载波检测。输入信号。DSR(date set ready):数据通信准备就绪。输入信号。DTR(data terminal ready):数据终端就绪。输出信号,表面计算机已做好接受准备。2.5.2 RS-232C的EIA电平和TTL电平转换RS-232的EIA标准是以正负电压来表示逻辑状态,与TTL以高低电平表示逻辑状态的规定不同。所以,为了能够同计算机接口或终端的TTL器件连接,必须在EIA电平与TTL电平之间进行电平变换。目前较广泛地采用集成电路转换器件MAX232可实现两者的双向电平转换。单片机与传感器或单片机与计算机之间直接使用RS-232C通讯标准进行串行通讯时,信号在通讯过程之中可能会被全部或部分使用。最简单的通讯仅需TXD及RXD及SG最基本的信号线完成,其他的握手信号可以做适当处理或直接悬空。在设计单片机和PC机的硬件电路时,使用MAX232芯片实现TTL电平和PC机RS-232电平的转换,使用该芯片使电路外围电路简单,工作可靠9。MAX232是一种双组驱动器/接收器,片内含有一个电容性电压发生器以便在单5V电源供电时提供EIA/T工A-232-E电平。每个接收器将EIA/TIA-232-E电平输入转换为5V TTL/CMOS电平。这些接收器具有1. 3V的典型门限值及0. 5V的典型迟滞,而且可以接收士30V的输入。每个驱动器将TTL/CMOS输入电平转换为EIA/TIA-232-E电平。工作温度范围为0至70。MAX232芯片的性能特点如下:图2-7 MAX232管脚结构1单5V电源工作;2两个驱动器及两个接收器;3士30v输入电平;4低电源电流:典型值是8mA;5符合甚至优于ANSI标准EIA/TIA-232-E及工TU推荐标准V. 28MAX232引脚中16脚为电容端,714脚包含4路RS232/TTL电平转换器。图2-8 MAX232工作电路图2.6基于单片机的指纹采集系统的基本结构本系统采用AT89S51作为指纹识别系统的核心处理器,使用单片机内部的4K程序存储器,接+5V电源。复位电路则采用简单RC复位电路,同时又可与一些需要复位的外围电路相连,达到复位与单片机同步。/Vpp为访问内部或外部程序存储器的选择信号.由于AT89S51单片机有4K的内部程序存储器,又外接了128Kx8的EEPROM存储器,故该引脚必须接+5V高电平.为外部程序存储器读选通控制信号.此电路中无扩展程序存储器.故该脚悬空.串口通信接口设计采用MAX232实现TTL与RS-232的转换,实现与计算机通信。下图为总的基于单片机的指纹识别系统的硬件电路图。图2-9 基于单片机的考勤系统的电路原理图第三章 指纹识别系统软件实现部分软件部分总的设计思路是:先把用户的指纹信息存入数组,然后通过单片机串口发送数据,VC电脑端接收到数据后把相应的数据存入数据库中。因为在下位机部分需要处理大量关于指纹的模式识别算法,所以没有研究,文章着重从上位机的串口通信,简单数据库存储方面来介绍。文章运用MFC Windows程序设计实现,介绍了一个比较好用的串口控件MCSomm,并做了简单数据库。3.1 控件MSComm串口编程本系统采用MSComm控件来实现上位机的串口通信过程。MSComm控件通过串行端口传输和接收数据,为应用程序提供串行通信功能。选用这个控件的原因是在串口编程时比较方便,不必花时间去了解较为复杂的API函数。当然,也要知道一点:那就是这个控件通信功能的实现,还是间接调用Windows API编程的结果,只是先通过Comm.drv解释,然后再传递给设备驱动程序进行的。它提供了一系列标准通信命令的使用接口,利用它可以建立与串口的连接,发出命令,交换数据以及监视和响应串行连接中发生的事件和错误。MSComm控件可以用于创建电话拨号程序、串口通信程序和功能完备的终端程序。首先,简单总结一下用MSComm控件进行串口编程的步骤:(1)在建立的程序工程中插入Microsoft Communications Control控件;(2)添加MSComm控件ID的控制变量(或者对象);(3)对串口进行初始化,设置MSComm控件的属性;(4)添加串口事件的消息处理函数OnComm()函数,在函数中根据应用需要,编写数据处理代码;(5)编写串口发送等其他代码(6)关闭串口3.2 控件MSComm串口编程实例在系统中单片机传来的指纹信息通过串口传递给PC,对于PC上串口的编程大体分为:打开串口,设定串口,读取串口和关闭串口四个部分。下面通过一个简单的实例演示下串口的收发过程。在这个过程中还用到串口调试助手,虚拟串口VSPD等软件。下面介绍其简单过程。1.在当前Project中插入MSComm控件。选择 ,那么MSComm控件就插入到当前的工程中,结果就添加了类CMSComm,类CMSComm的相关的文件mscomm.h和mxcomm.cpp也一并加入Project中。 打开所需串口后,需要考虑通信时机。在接受和或发送数据的过程中,要监视并响应一些事件和错误,所以事件驱动是处理串口交互作用的一种非常有效的方法。使用OnComm事件和CommEvent属性捕捉并检查通信事件和错误的值。发生通信事件或错误时,将触发OnComm事件,CommEvent属性的值将该变,应用程序检查CommEvent属性值并作出相应反应。利用ClassWizard定义CMSComm类控制对象。打开ClassWizard中的Member Viariables选项卡,选择CSCommTestDlg类,为IDC_MSCOMM1添加控制变量:m_ctrlComm,这是对话框里自动加入:/AFX_INCLUDES()#include mscomm.h(这时运行程序,如果有错,那就再从头开始)。2. 在对话框中添加控件。向主对话框中添加两个编辑框,一个用于接收显示数据ID为IDC_EDIT_RXDATA,令一个用于输入发送数据,ID为IDC_EDIT_TXDATA,再添加一个按钮,功能是按一次就把发送编辑框中的内容发送一次,将其ID设为IDC_BUTTON_MANUALSEND。再打开ClassWizard的Member Viariables选项卡,选择CSCommTestDlg类,为IDC_EDIT_RXDATA添加CString变量m_strRXData,为IDC_EDIT_TXDATA添加CString变量m_strTXData,指明分别用来放入接收和发送的字符数据。图3-1 设计完的通信对话框下面,在CSCommTestDlg:OnInitDialog()函数中写入对串口的初始化语句,串口初始化语句由IDC_MSCOMM1的CMSComm控制变量m_ctrlComm来设置串口控件属性。要添加的代码如下:m_ctrlComm.SetCommPort(1);/选择COM1/波特率为9600,无校验,8个数据位,1个停止位m_ctrlComm.SetInputMode(1);/输入方式为二进制方式m_ctrlComm.SetInBufferSize(1024);/设置输入缓冲区大小m_ctrlComm.SetOutBufferSize(512);/设置输出缓冲区大小/波特率9600,无校验,8个数据位,1个停止位m_ctrlComm.SetSettings(9600,n,8,1);/参数1表示每当串口接收缓冲区有多于或等于1个字符时将引发一个数据的ONcomm事件if(!m_ctrlComm.GetPortOpen()m_ctrlComm.SetPortOpen(TRUE);/打开串口 m_ctrlComm.SetRThreshold(1); m_ctrlComm.SetInputLen(0);/设置当前接收去数据长度为0 m_ctrlComm.GetInput();/先预存缓冲区以清除残留数据3.添加串口事件消息处理函数OnComm()。打开ClassWizard中的Message Maps选项,选择类CSCommTestDlg,选择IDC-MSCOMM1,双击消息OnComm,将弹出对话框中将函数名改为OnComm。这个函数用来处理串口消息事件的,如每当串口接收到数据,就会产生一个串口接收数据缓冲区中有字符的消息事件,我们刚才添加的函数就会执行,在OnComm()函数加入相应代码就能实现自己想要的功能。需要添加的代码如下:VARIANT variant_inp;COLeSafeArray safearray_inp;LONG len,k;BYTE rxdata2048;/设置BYTE数组,8位无标识CString strtemp;if(m_ctrlComm.GetCommEvent()=2/事件值为2表示接收缓冲区内有字符variant_inp=m_ctrlComm.GetInput();/读缓冲区safearray_inp=variant_inp;/VARIANT型变量转换为COLESAFEARRAY型变量len=safearray_inp.GetOneDimSize();/得到有效数据的长度for(k=0;klen;k+)safearray_inp.GetElement(&k,rxdata+k);/转换为BYTE型数组for(k=0;klen;k+)/将数组转换为cString型变量BYTE bt=*(char*)(rxdata+k);/字符型strtemp.Format(%c,bt;)/将字符送入临时变量strtempm_strRXData+=strtemp;/加入接收编辑框相应字符串UpdateData(FALSE);/更新编辑框内容此处函数OnComm()中的代码,主要任务是从串口接收数据并显示在接收编辑框中。4.发送数据。先为发送按钮添加一个单击消息即BN_CLICKED处理函数,并在函数中添加如下代码:UpdateData(TRUE);/读取编辑框内容m_ctrlComm.SetOutput(COLeVariant(m_strTXData);/发送数据至此,这个简单的串口通信程序就完成了。编译后出现自己编辑的对话框。为了检验是否能够进行串口收发需要借助VSPD的虚拟串口软件,将COM1和COM2连接起来,然后打开串口小助手,这时在发送编辑框中输入字符,单击“发送”按钮,再单击串口调试助手的“手动发送”按钮,就可以运行程序了。在本系统中下位机传来的指纹信息所含的信息量很大,要实现指纹信息的采集上位机在接收时需要连续多次接收,所以在程序中应该设置一个自动接收的功能。所以应该设定自动发送周期函数SetTimer()函数,在控制中指令的传送定时发送。下面介绍其方法:在ClassWizard中选上MessageMap卡,然后在Objects IDs选中CSCommTestDlg类,再在Messages框中选上WM_TIMER消息,单击ADD_FUNCTION加入void CSCommTestDlg:Ontimer(UINT nIDEvent)函数,这个函数是放入“时间到”后要处理代码。m_bAutoSend=!m_bAutoSend;if(m_bAutoSend)SetTimer(1,1,NULL);/时间为1毫秒elseKillTimer(1);/取消定时运行成功后下位机的数据就可以每隔1ms被PC接收。如果在PC中做一个处理数据库的后台程序就可以将下位机传来的数据存入数据库,对指纹考勤信息做好统计处理,完成实际所需要的功能。下面将会用ACESS做一个简单的指纹考勤数据库,利用ODBC编程。1.下面用ACESS所做的mdb文件,作为数据源。下面几个表包括了所需的员工考勤信息。图3-2 基于单片机指纹考勤的ATTENDANCE表(记录员工出入情况)图3-3 基于单片机指纹考勤的ATTENDANCE_STAT表(记录员工月份考勤情况)图3-4 基于单片机指纹考勤的LEAVE表(记录员工请假情况)图3-5 基于单片机考勤的OVERTIME表(记录员工加班情况) 图3-6基于单片机考勤的ERRAND表(记录员工的出差记录)图3-7基于单片机考勤的PERSON表(记录员工的个人信息)图3-8基于单片机考勤的DEPARTMENT表(记录部门信息)2.数据库操作准备。打开控制面板管理工具,添加到数据源管理中。然后下面就是进入MFC的数据库连接与处理的阶段。为了使用ODBC类,需要在stdafx.h中加入#include”afxdb.h”一行。因本程序只需要连接一个数据库,所以定义了一个Cdatabase型的全局变量db,一次性打开和关闭数据库。数据库的打开在登录认证对话框中。在主程序结束前需关闭数据库,因此在App类的ExitInstance()函数中加入代码:if (db.IsOpen() db.Close();为了编程便捷,可以为数据库中的每一个表映射一个记录集类(从CrecordSet类继承),其映射关系如表1-1所示。这些类通过RFX(Record Field Exchange)机制将成员变量与表格中的字段值联系起来,通过方问成员变量可以访问当前记录中字段的值。Crecordset派生类表格CAttendanceRS ATTENDANCE出勤记录表CCounterRS COUNTER计数器表CdepartRSDEPARTMENT部门信息表CerrandRSERRAND出差记录表CLeaveRSLEAVE请假记录表COvertimeRSOVERTIME加班记录表CPersonRSPERSON员工个人信息表CStatRSATTENDANCE_STAT月度考勤统计表3.设计主对话框和考勤对话框。其中主对话框作为登录界面,实现添加记录,统计记录等功能。考勤对话框记录员工姓名,年月等考勤信息。在VC中建立一个连接数据库的程序,画出程序对话框,添加数据库代码,实现存储指纹考勤信息的功能。图3-9主对话框图3-10考勤统计对话框添加完程序后运行,出现结果,可以储存考勤数据。那么至此这部分做完后,PC与单片机通过串口程序实现串口通信,下位机处理指纹信息传给PC,在PC上设计一个数据库的处理程序以实现单片机传送的信息存入数据库,那么整个的信息处理过程就算完成了。最后,注意单片机与PC设定的串口的初始化信息要一致,如波特率。信息自动接收与发送时单片机串口通信部分采用中断程序,当上位机需要数据时,发出命令,单片机系统采用中断程序,发出数据。文章附录部分给出了主对话框所需代码,考勤统计对话框所需代码,以及一个单片机串口通信的代码。结束语在本次论文设计中,学会了利用单片机系统实现指纹考勤的基本原理,虽然在算法方面没有探讨实现的方法,但总体对基于单片机指纹考勤的基本路径有了了解,另外在下位机与上位机通信方面也做了一定的学习,能够实现基本的通信,另外在学习过程中初步了解了VC+面向过程编程的基本概念,体会了其功能的强大与方便性。但是在这些过程中仍存在诸多不足,对细节方面,以及系统完整性方面无法做到完善。致 谢论文在老师的指导下做完了。感谢王翠萍老师做出的指导,让我学会了很多基本知识,也学会了如何去自己学习一些东西。接着,我还要感谢我的任课老师他们交给我的知识。最后,感谢学校给我们创造了一个很好的学习环境,让我可以不断学习进步。虽然,自己仍有很多不足,但是我相信我一定会实现自己理想。谢谢!参考文献1、陈建春.Visual C+开发GIS系统,开发实例剖析,2000年.2、陈建春.Visual C+高级编程技术,开发实例剖析,1999年.3、李于剑.Visual C+实践与提高,图形图象编程篇, 2001年.4、同志工作室.Visual C+6.0开发技巧与实例教程, 2000年.5、赵仕健. Visual C+6.0编程与实例解析, 2000年.6、钱 能. C+程序设计教程, 1999年.7、陈明荧.5051单片机课程设计实训教材M.北京:清华大学出版社,20048、 Atmel AT89C51SND1C Users GuideZ.2002.9、何立民,单片机高级编程M. 北京:北京航空航天大学出版社,1999.10、John Markus.电子电路大全M.北京:计量出版社.1995.11、 张鑫.单片机原理及应用M 北京:电子工业出版社,200512、高鹏.Protel入门与提高M 北京:人民邮电出版社,200013、广弟.单片机基础M 北京:北京航空航天大学出版社,200114、何宏.单片机原理与接口技术M 北京:国防工业出版社,200615、

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论