您当前的位置:五五电子网电子知识单片机-工控设备PIC单片机用PIC 单片机实现的IC 卡读写器 正文
用PIC 单片机实现的IC 卡读写器

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

点击数:7601 次   录入时间:03-04 11:47:46   整理:http://www.55dianzi.com   PIC单片机
引言

本设计的主要目的是介绍IC 卡的数据存储技术和IC 卡的数据通信,因而使用存储器卡。由于本设计
中既可与IC 卡进行串行同步通信,又要与上位机进行中行异步通信,因而需要选择一种同时具有这两种通
信方式的 单片机 。因为PIC16F877 不仅具有本设计所需要的两种通信方式,而且还具有运行速度快、低功
耗、价格低等优点,所以选择PIC16F877 单片机 作为本设计的单片机。

本设计的二极管电路是 单片机 与IC 卡通信数据线的保护电路。当数据线上的电压为负电压时,与地
相连的二极管导通;当数据线上的电压大于+5V 时,与+5V 相连的二极管导通,从而保证数据线上的电压在
0V~+5V 之间,保护 单片机 和IC 卡不受损坏。单片机的15 脚和23 脚分别与IC 卡的输出引脚3 和4 相连。
由于IC 卡的输出电压为CMOS 电平,而 单片机 能够正确的识别IC 卡的输出信号,需要加上拉电阻。

1 SPI 工作方式
串行外围设备接口SPI(Serial Peripheral Interface)总线技术是Motrola 公司推出的一种同步
串行接口。SPI 总线是一种三线同步总线,因其硬件能力很强,与SPI 有关的软件就相当简单,使CPU 有
更多的时间处理其它事务,因此得到广泛应用。

SPI 模式允许8 位数据同步发送和接收,支持SPI 的所有四种方式。SPI 模式传输数据需要四根信号
线:串行数据输出(SDO)线、串行数据输入(SDI)线、串行时钟(SCK)和从选择(SS)。其中,从选择
线只用于从属模式。

1.1 SPI 主模式
由于控制时钟SCK 的输出,主模式可以在任何时候开始传输数据。主模式通过软件协议控制从模式的
数据输出。

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

在本设计中,使用的就是SPI 主模式,由 单片机 控制时钟SCK 的输出。当向IC 卡中写数据时,随时
可以发送数据;当读IC 卡内的数据时,先要发送任意一个数据(此时IC 卡不处于写入状态,不会接收该
数据), 给IC 卡提供输出数据的时钟,然后再接收IC 卡发出的数据。其时序如图2 所示。(发送和接惦
的数据均为6FH)

如果要连续发送数据,那么每次将数据送到SSPBUF 寄存器后,都要判断是否已经发送完该数据,即
判断PIR1 寄存器的SSPIF 位是否为1。如果SSPIF 位为1,则表明数据已经发送完毕,可以继续发送下一
个数据。但此时还不能立即发送下一个数据,因为SSPIF 位必须在程序中由软件清零,只有将SSPIF 位软
件清零后,才能继续发送下一个数据。

620)this.style.width=620;" border=0>

1.2 SPI 从模式
在SPI 从模式,数据的发送和接收领先SCK 引脚上输入的外时钟脉冲,当最后一位被锁存后,中断标
志位SSPIF(PIR1 的D3)位。在休眠模式,从模式仍可发送和接收数据,一旦接收到数据,芯片就从休眠
中唤醒。如果采用SS 控制的从模式,当SS 引脚接到VDD 时,SPI 模式复位;如果 彩CKE=1 控制的从模式,
必须开放SS 引脚控制。

在本设计中,由于IC 卡是存储器卡,不能提供时钟信号,因此不能采用从模式,只能采用主模式,
由 单片机 控制时钟信号。

单片机 的SPI 方式初始化程序如下:
MOVLW20H ;将20H 送到累加器
MOVWF SSPCON ;将累加器中的数送到SSPCON 寄存器
BSF STATUS,RP0 ;将定RAM 区的第1 页
BCF SSPSTAT,SMP ;将SSPSTAT 寄存器的SMP 位置0
BSF SSPSTAT,CKE ;将SSPSTAT 寄存器的CLK 位置1
BCF TRISC,3 ;将端口C 的第3 位设置为输出
BCF TRISC,5 ;将端口C 的第5 位设置为输出

其中,上述第1、2 行程序是配置控制寄存器,将SPI 方式配置为主控模式,时钟频率为 单片机 时钟频
率的1/4,并将时钟的高电平设置为空闲状态。第3 行程序为换页指令,将指针转到第1 页。因为PIC16F
877 单片机 的数据存储器是分页的,而所要操作的寄存器在第1 页,因此要用换页指令将指针到第1 页。
第4、5 行程序是配置状态寄存器,将SPI 方式设置为数据输出时钟的中间采样,时钟SCK 的上升沿触发。
第6、7 行程序则是将RC 口的RC3 和RC5 设置为输出。

2 USART 方式
通用同步异步接收发送模块(USART)是两个串行通信接口之一,USART 又称为SCI(Serial Commun
ication Interface)。USART 可以设置为全双工异步串行通信系统,这种方式可以与个人计算机PC 或串
行接口CRT 等外围设备进行串行通信:也可以设置为半双工异步串行通信系统,与串行接口的A/D 或D/A
集成电路、串行EEPROM 等器件连接。USART 是二线制串行通信接口,它可以被定义如下三种工作方式:全
双工异步方式、半双工同步主控方式、半双工同步从动方式。

为了把RC6 和RC7 分别设置成串行通信接口的发送/时钟(TX/CK)线和接收/数据(TX/DT)线,必须
首先把SPEN 位(TCSTAT 的RD7)和方向寄存器TRISC 的D7:D6 置1。
USART 功能模块含有两个8 位可读/写的状态/控制寄存器,它们是发送状态/控制寄存器TXSTA 和接
收状态/控制寄存器TCSTA。

USART 带有一个8 位波特率发生器BRG(Baud Rato Generator),这个BRG 支持USART 的同步和异步
工作方式。用SPBRG 寄存器控制一个独立的8 位定时器的周期。在异步方式下,发送状态/控制寄存器TXS
TA 的BRGH 位(即D2)也被用来控制波特率(在同步方式下忽略BRGH 位)。

向波特率寄存器SPBRG 写入一个新的初值时,都会使BRG 定时器复位清零,由此可以保证BRG 不需要
等到定时器溢出后就可以输出新的波特率。

对USART 方式进行初始化的程序如下:
BSF STATUS,RP0 ;将指针指向数据存储器的第1 页
MOVLW 0x19
MOVWF SPBRG ;设置波特率为9600
BCF STATUS,RP0 ;将指针指向数据存储器的第0 页
CLRF RCSTA ;将接收控制和状态寄存器清零
BSF RCSTA,SPEN ;串口允许
CLRF PIR1 ;清除中断标志
BSF STATUS,RP0 ;将指针指向数据存储器的第1 页
CLRF TXSTA ;将发送控制和状态寄存器清零
BSF TXSTA,BRGH ;设置为异步、高速波特率
BSF TXSTA,TXEN ;允许发送
BCF STATUS,RP0 ;将指针指向数据存储器的第0 页
BSF RCSTA,CREN ;允许接收

初始化完成后,即可发送或接收数据。在发送或接收数据时,通过查询发送/接收中断标志位即可判
断是否发送完一个数据/接收到一个数据。发送/接收中断标地不需要也不有用软件复位。

在异步串行发送的过程中,只要TXREG 寄存器为空,中断标志TXIF 就置位。因此,TXIF 为1 并不是
发送完毕的标志,但仍可以用TXIF 标志来判断。因此当TXREG 为空时,将数据送入后,数据会保留在TXR
EG 寄存器中,直到前一个数据从发送移位寄存器中移出,即前一个数据发送完。

3 IC 卡
IC 卡是集成电路卡(Integrated Circuit Card)的简称,有些国家和地址称其为智能卡(Smart Ca
rd)、芯片卡(Chip Card)。国际标准化组织(ISO)在ISO7816 标准中规定,IC 卡是指在由聚氯乙烯(P
VC)或聚氯乙烯酸脂(PVCA)材料制成的塑料卡内嵌入式处理器和存储器等IC 芯片的数据卡。近年来,由
于导半体技术的进步,集成化程度和存储器容量有了很大提高,并使CPU 和存储器集成在一个芯片上,从
而提高了数据的安全性。

在本设计中,IC 卡采用的是AT45DB041B-SC 芯片,该芯片的特点如一下:
*单一的2.7V~3.6V 电源;
*串行接口结构;
*页面编程操作,单一的循环重复编程(擦除和编程,2048 页(每页264 字节)主存;
*两个264 字节的SRAM 数据缓存,允许在重编程非易失性存储器时接收数据;
*内置的编程和控制定时器;
*低功耗,4mA 有源读取电流,2μA CMOS 备用电流;
*15MHz 的最大时钟频率;
*串行外围接口方式(SPI)——模式0 和3;
*CMOS 的TTL 兼容的输入和输出;
*5.0V 可承受的输入,SI、SCK、CS(低电平有效)、RESET(低电平有效)。

在本设计的调试过程中,曾测试过IC 卡的输入输出电平,结果证明这种IC 卡的输入电平与TTL 兼容,
而输出电平与TTL 不兼容。

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

[1] [2]  下一页


本文关键字:单片机  读写器  PIC单片机单片机-工控设备 - PIC单片机