用PIC单片机实现的IC卡读写器

上传人:cn****1 文档编号:567701633 上传时间:2024-07-22 格式:PDF 页数:8 大小:425.61KB
返回 下载 相关 举报
用PIC单片机实现的IC卡读写器_第1页
第1页 / 共8页
用PIC单片机实现的IC卡读写器_第2页
第2页 / 共8页
用PIC单片机实现的IC卡读写器_第3页
第3页 / 共8页
用PIC单片机实现的IC卡读写器_第4页
第4页 / 共8页
用PIC单片机实现的IC卡读写器_第5页
第5页 / 共8页
点击查看更多>>
资源描述

《用PIC单片机实现的IC卡读写器》由会员分享,可在线阅读,更多相关《用PIC单片机实现的IC卡读写器(8页珍藏版)》请在金锄头文库上搜索。

1、.-.用用 PICPIC 单片机实现的单片机实现的 ICIC 卡读写器卡读写器摘要:详细介绍 PIC 单片机使用 SPI 方式与 IC 卡进展数据传输的原理和电路设计,以及使用 USART 方式与 PC 机进展串行异步通信的工作原理;介绍 PIC 单片机听 SPI 方式和 USART 方式的设置方法。关键词:关键词:PIC 单片机 IC 卡读写器 SPI 方式 USART 方式引言引言 本设计的主要目的是介绍 IC 卡的数据存储技术和 IC 卡的数据通信,因而使用存储器卡。由于本设计中既可与 IC 卡进展串行同步通信,又要与上位机进展中行异步通信,因而需要选择一种同时具有这两种通信方式的单片机

2、。因为 PIC16F877 不仅具有本设计所需要的两种通信方式,而且还具有运行速度快、低功耗、价格低等优点,所以选择 PIC16F877 单片机作为本设计的单片机。图 1 是本设计的电路图,图中电源变换电路和发光二极管等指示电路没有画出。图中的二极管电路是单片机与 IC 卡通信数据线的保护电路。当数据线上的电压为负电压时,与地相连的二极管导通;当数据线上的电压大于+5V 时,与+5V 相连的二极管导通,从而保证数据线上的电压在 0V+5V 之间,保护单片机和IC 卡不受损坏。图中单片机的 15 脚和 23 脚分别与 IC 卡的输出引脚 3 和 4 相连。由于 IC 卡的输出电压为CMOS 电平

3、,而单片机能够正确的识别 IC 卡的输出信号,需要加上拉电阻。1 SPI1 SPI 工作方式工作方式串行外围设备接口 SPISerial Peripheral Interface总线技术是Motrola 公司推出的一种同步串行接口。SPI总线是一种三线同步总线,因其硬件能力很强,与SPI 有关的软件就相当简单,使CPU 有更多的时间处理其它事务,因此得到广泛应用。SPI 模式允许 8 位数据同步发送和接收,支持 SPI 的所有四种方式。SPI 模式传输数据需要四根信号线:串行数据输出SDO线、串行数据输入SDI线、串行时钟SCK和从选择SS。其中,从选择线-.wordzl.-.只用于附属模式。

4、1.1 SPI1.1 SPI 主模式主模式由于控制时钟 SCK 的输出,主模式可以在任何时候开场传输数据。主模式通过软件协议控制从模式的数据输出。在主模式中,一旦 SSPUF 存放器写入,数据就会发送或接收。在接收数据时,SSPSR 存放器按照时钟速率移位,一旦接收到一个字节,数据就传输到 SSPBUF,同时中断标志位和状态标志位置位。时钟的极性可以通过编程改变。 在主模式中, 时钟 SCK 的频率可以设置为: fosc/4(即 Tcy)、 fosc/16(即 4Tcy)、fosc/64(即 16Tcy)和定时器 2Timer2输出的二分频等四种。在芯片时钟为20MHz 时,SCK 的最大频率

5、为5.0MHz。在本设计中,使用的就是SPI 主模式,由单片机控制时钟SCK 的输出。当向IC 卡中写数据时,随时可以发送数据; 当读 IC 卡内的数据时, 先要发送任意一个数据 此时 IC 卡不处于写入状态, 不会接收该数据 ,给 IC 卡提供输出数据的时钟,然后再接收 IC 卡发出的数据。其时序如图 2 所示。发送和接惦的数据均为 6FH如果要连续发送数据,那么每次将数据送到 SSPBUF 存放器后,都要判断是否已经发送完该数据,即判断 PIR1 存放器的 SSPIF 位是否为 1。如果 SSPIF 位为 1,那么说明数据已经发送完毕,可以继续发送下一个数据。但此时还不能立即发送下一个数据

6、,因为 SSPIF 位必须在程序中由软件清零,只有将 SSPIF 位软件清零后,才能继续发送下一个数据。1.2 SPI 从模式在 SPI 从模式,数据的发送和接收领先 SCK 引脚上输入的外时钟脉冲,当最后一位被锁存后,中断标志-.wordzl.-.位 SSPIFPIR1 的 D3位。在休眠模式,从模式仍可发送和接收数据,一旦接收到数据,芯片就从休眠中唤醒。如果采用 SS 控制的从模式, 当 SS 引脚接到 VDD 时,SPI 模式复位;如果 彩 CKE=1 控制的从模式,必须开放 SS 引脚控制。在本设计中,由于 IC 卡是存储器卡,不能提供时钟信号,因此不能采用从模式,只能采用主模式,由单

7、片机控制时钟信号。单片机的 SPI 方式初始化程序如下:MOVLW20H ;将 20H 送到累加器MOVWF SSPCON ;将累加器中的数送到 SSPCON 存放器BSF STATUS,RP0 ;将定 RAM 区的第 1 页BCF SSPSTAT,SMP ;将 SSPSTAT 存放器的 SMP 位置 0BSF SSPSTAT,CKE ;将 SSPSTAT 存放器的 CLK 位置 1BCF TRISC,3 ;将端口 C 的第 3 位设置为输出BCF TRISC,5 ;将端口 C 的第 5 位设置为输出其中,上述第 1、2 行程序是配置控制存放器,将 SPI 方式配置为主控模式,时钟频率为单片机

8、时钟频率的 1/4,并将时钟的高电平设置为空闲状态。第3 行程序为换页指令,将指针转到第 1 页。因为 PIC16F877单片机的数据存储器是分页的,而所要操作的存放器在第 1 页,因此要用换页指令将指针到第 1 页。第 4、5 行程序是配置状态存放器,将 SPI 方式设置为数据输出时钟的中间采样,时钟 SCK 的上升沿触发。第 6、7 行程序那么是将 RC 口的 RC3 和 RC5 设置为输出。2 USART 方式通用同步异步接收发送模块USART是两个串行通信接口之一,USART 又称为 SCISerial munication-.wordzl.-.Interface。USART 可以设置

9、为全双工异步串行通信系统,这种方式可以与个人计算机 PC 或串行接口 CRT等外围设备进展串行通信:也可以设置为半双工异步串行通信系统,与串行接口的 A/D 或 D/A 集成电路、串行 EEPROM 等器件连接。USART 是二线制串行通信接口,它可以被定义如下三种工作方式:全双工异步方式、半双工同步主控方式、半双工同步从动方式。为了把 RC6 和 RC7 分别设置成串行通信接口的发送/时钟TX/CK线和接收/数据TX/DT线,必须首先把 SPEN 位TCSTAT 的 RD7和方向存放器 TRISC 的 D7:D6 置 1。USART 功能模块含有两个 8 位可读/写的状态/控制存放器,它们是

10、发送状态/控制存放器 TXSTA 和接收状态/控制存放器 TCSTA。USART 带有一个 8 位波特率发生器 BRGBaud Rato Generator,这个 BRG 支持 USART 的同步和异步工作方式。用 SPBRG 存放器控制一个独立的 8 位定时器的周期。在异步方式下,发送状态/控制存放器TXSTA 的 BRGH 位即 D2也被用来控制波特率在同步方式下忽略 BRGH 位。向波特率存放器 SPBRG 写入一个新的初值时,都会使BRG 定时器复位清零,由此可以保证BRG 不需要等到定时器溢出后就可以输出新的波特率。对 USART 方式进展初始化的程序如下:BSF STATUS,RP

11、0 ;将指针指向数据存储器的第 1 页MOVLW 0x19MOVWF SPBRG ;设置波特率为 9600BCF STATUS,RP0 ;将指针指向数据存储器的第 0 页CLRF RCSTA ;将接收控制和状态存放器清零BSF RCSTA,SPEN ;串口允许-.wordzl.-.CLRF PIR1 ;去除中断标志BSF STATUS,RP0 ;将指针指向数据存储器的第 1 页CLRF TXSTA ;将发送控制和状态存放器清零BSF TXSTA,BRGH ;设置为异步、高速波特率BSF TXSTA,TXEN ;允许发送BCF STATUS,RP0 ;将指针指向数据存储器的第 0 页BSF RC

12、STA,CREN ;允许接收初始化完成后,即可发送或接收数据。在发送或接收数据时,通过查询发送/接收中断标志位即可判断是否发送完一个数据/接收到一个数据。发送/接收中断标地不需要也不有用软件复位。在异步串行发送的过程中,只要 TXREG 存放器为空,中断标志 TXIF 就置位。因此,TXIF 为 1 并不是发送完毕的标志,但仍可以用 TXIF 标志来判断。因此当 TXREG 为空时,将数据送入后,数据会保存在TXREG 存放器中,直到前一个数据从发送移位存放器中移出,即前一个数据发送完。3 IC 卡IC 卡是集成电路卡Integrated Circuit Card的简称,有些国家和地址称其为智

13、能卡Smart Card、芯片卡Chip Card。国际标准化组织ISO在 ISO7816 标准中规定,IC 卡是指在由聚氯乙烯PVC或聚氯乙烯酸脂PVCA材料制成的塑料卡内嵌入式处理器和存储器等 IC 芯片的数据卡。近年来,由于导半体技术的进步,集成化程度和存储器容量有了很大提高,并使CPU 和存储器集成在一个芯片上,从而提高了数据的平安性。在本设计中,IC 卡采用的是 AT45DB041B-SC 芯片,该芯片的特点如一下:*单一的 2.7V3.6V 电源;-.wordzl.-.*串行接口构造;*页面编程操作,单一的循环重复编程擦除和编程,2048 页每页 264 字节主存;*两个 264

14、字节的 SRAM 数据缓存,允许在重编程非易失性存储器时接收数据;*内置的编程和控制定时器;*低功耗,4mA 有源读取电流,2A CMOS 备用电流;*15MHz 的最大时钟频率;*串行外围接口方式SPI模式 0 和 3;*CMOS 的 TTL 兼容的输入和输出;*5.0V 可承受的输入,SI、SCK、CS低电平有效、RESET低电平有效。在本设计的调试过程中,曾测试过 IC 卡的输入输出电平,结果证明这种 IC 卡的输入电平与 TTL 兼容,而输出电平与 TTL 不兼容。4 IC 卡的电源提供电路在本设计中,由于 IC 卡的电源电压 X 围为+2.7+3.6V,而 PIC 单片机需要的电源为

15、+5V,而且稳压源提供的电压也是+5V,因此,要设计一个稳压模块,给 IC 卡提供+3V 左右的电压。设计电路如图 3 所示。该电路的主要元件为 LM317 芯片,它是三端可调集成稳压器,输出电压为 1.2537VX 围内可调。当其Vin 端的输入电压在 240VX 围内变化时,电路均能正常工作,输出端 Vout 和调整端 ADJ 间的电压等于基准电压 1.25V。该芯片内的基电路的工作电流 IREF 很小,约为 50A,由一个恒流性很好的恒流源提供,所以它的大小不受供电电压的影响,非常稳定。在图 3 中,B 点为电压输出端,为 IC 卡提供电压。A 点为控制端, 与单片机的一个端口引脚相连,

16、 当该引脚为低电平时, 三极管 Q1 不工作, B 点输出电压约为 3.15V;当该引脚为高电平时,三极管 Q1 工作,B 点输出电压约为 1.25V。在程序中查询 IC 卡插座中是否有 IC 卡,当有 IC 卡时,将 A 点所连的单片机引脚设置为低电平,从而为 IC 卡提供电源;当没有 IC 卡或对 IC 卡的-.wordzl.-.操作完毕时,将 A 点连的单片机引脚设置为高电平,从而不给 IC 卡提供电源。IC 卡的上电和下电程序如下。IC 卡上电子程序 IC 卡下电子程序POWERON POWEROOFBSF STATUS,RP0 BSFSTATUS,RP0BCF TRISE,0 BCF

17、 TRISE,0BCF RTISE,1 BCF TRISE,1BCF STATUS,RP0 BCF STATUS,RP0BCF PORTE,0 BSF PORTE,0BCF PORTE,1 BSF PORTE,1CALL DLYTIM CALL DLYTIMRETURN RETURN在本设计中,单片机与 IC 卡通信的主程序流程图如图 4 所示。5 5 与与 PCPC 机的通信机的通信在本设计中,有 PIC 单片机与 PC 机串行通信的功能。由于本设计所用的单片机 PIC16F877 有 USART 方式,该方式可将C 口的 RC5 和 RC7 设置成异步串行通信模式,因而在本设计中,与PC

18、机的通信模块电路就比拟简单。 将单片机 C 口的 RC6 和 RC7 设置为异步串行通信模式, 经过 MAX232A 芯片进展电平转换后,将 TTL 电平转换为 RS232 电平,再与 DB9 接口相连,即可实现通信。在 PC 机端,可以用 VC 等编程工具根据通信协议编写软件来控制对 IC 卡的读写操作。6 6 结论结论 经过调试,本设计能够在脱离在线仿真器的情况下,上电后独立的运行程序,并能在PC 机软件的控制下,实现对 IC 卡中任意位置的读写,其中读写的起始地址、读写数据的个数以及数据内容可以在 PC-.wordzl.-.机端输入或选择。本设计已在实际应用中测试过,具有实用价值。由于本设计中所使用的 PIC 单片机的程序存储器较大8KB,因而可以编写较大的程序,实现多合一该卡器并由 PC 机控制读写哪种芯片的 IC 卡。另外,由于本设计所使用单片机的程序存储器是 Flash 存储器,因而可以方便地实现程序的下载和升级。-.wordzl.

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 建筑/环境 > 施工组织

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号