分享

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

 共同成长888 2020-07-12

择要:具体先容PIC单片机行使SPI方法与IC卡举办数据传输的道理和电路计划,以及行使USART方法与PC机举办串行异步通讯的事变道理;先容PIC单片机听SPI方法和USART方法的配置要领。

弁言

本计划的首要目标是先容IC卡的数据存储技能和IC卡的数据通讯,因而行使存储器卡。因为本计划中既可与IC卡举办串行同步通讯,又要与上位机举办中行异步通讯,因而必要选择一种同时具有这两种通讯方法的单片机。由于PIC16F877不只具有本计划所必要的两种通讯方法,并且还具有运行速率快、低功耗、价值低等利益,以是选择PIC16F877单片机作为本计划的单片机。

图1是本计划的电路图,图中电源调动电路和发光二极管等指示电路没有画出。图中的二极管电路是单片机与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)。个中,从选择线只用于从属模式。

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


    1.1 SPI主模式

因为节制时钟SCK的输出,主模式可以在任何时辰开始传输数据。主模式通过软件协议节制从模式的数据输出。

在主模式中,一旦SSPUF寄存器写入,数据就会发送或吸取。在吸取数据时,SSPSR寄存器凭证时钟速度移位,一旦吸取到一个字节,数据就传输到SSPBUF,同时刻断符号位和状态符号位置位。

时钟的极性可以通过编程改变。在主模式中,时钟SCK的频率可以配置为:fosc/4(即Tcy)、fosc/16(即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位软件清零后,才气继承发送下一个数据。

1.2 SPI从模式

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

在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页。由于PIC16F877单片机的数据存储器是分页的,而所要操纵的寄存器在第1页,因此要用换页指令将指针到第1页。第4、5行措施是设置状态寄存器,将SPI方法配置为数据输出时钟的中间采样,时钟SCK的上升沿触发。第6、7行措施则是将RC口的RC3和RC5配置为输出。

2 USART方法

通用同步异步吸取发送模块(USART)是两个串行通讯接口之一,USART又称为SCI(Serial Communication 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。

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

USART带有一个8位波特率产生器BRG(Baud Rato Generator),这个BRG支持USART的同步和异步事变方法。用SPBRG寄存器节制一个独立的8位按时器的周期。在异步方法下,发送状态/节制寄存器TXSTA的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为空时,将数据送入后,数据会保存在TXREG寄存器中,直到前一个数据从发送移位寄存器中移出,即前一个数据发送完。

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

3 IC卡

IC卡是集成电路卡(Integrated Circuit Card)的简称,有些国度和地点称其为智能卡(Smart Card)、芯片卡(Chip Card)。国际尺度化组织(ISO)在ISO7816尺度中划定,IC卡是指在由聚氯乙烯(PVC)或聚氯乙烯酸脂(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点输出电压约为3.15V;当该引脚为高电平常,三极管Q1事变,B点输出电压约为1.25V。在措施中查询IC卡插座中是否有IC卡,当有IC卡时,将A点所连的单片机引脚配置为低电平,从而为IC卡提供电源;当没有IC卡或对IC卡的操纵竣事时,将A点连的单片机引脚配置为高电平,从而不给IC卡提供电源。

IC卡的上电和下电措施如下。

IC卡上电子措施 IC卡下电子措施

POWERON POWEROOF

BSF STATUS,RP0 BSFSTATUS,RP0

BCF TRISE,0 BCF TRISE,0

BCF RTISE,1 BCF TRISE,1

BCF STATUS,RP0 BCF STATUS,RP0

BCF PORTE,0 BSF PORTE,0

BCF PORTE,1 BSF PORTE,1

CALL DLYTIM CALL DLYTIM

RETURN RETURN

在本计划中,单片机与IC卡通讯的主措施流程图如图4所示。

5 与PC机的通讯

在本计划中,有PIC单片机与PC机串行通讯的成果。因为本计划所用的单片机PIC16F877有USART方法,该方法可将C口的RC5和RC7配置成异步串行通讯模式,因而在本计划中,与PC机的通讯模块电路就较量简朴。将单片机C口的RC6和RC7配置为异步串行通讯模式,颠末MAX232A芯片举办电平转换后,将TTL电平转换为RS232电平,再与DB9接口相连,即可实现通讯。在PC机端,可以用VC等编程器材按照通讯协议编写软件来节制对IC卡的读写操纵。

6 结论

颠末调试,本计划可以或许在离开在线仿真器的环境下,上电后独立的运行措施,并能在PC机软件的节制下,实现对IC卡中恣意位置的读写,个中读写的起始地点、读写数据的个数以及数据内容可以在PC机端输入或选择。

本计划已在现实应用中测试过,具有适用代价。因为本计划中所行使的PIC单片机的措施存储器较大(8KB),因而可以编写较大的措施,实现多合一该卡器并由PC机节制读写哪种芯片的IC卡。其它,因为本计划所行使单片机的措施存储器是Flash存储器,因而可以利便地实现措施的下载和进级。

(责任编辑:admin)

    本站是提供个人知识管理的网络存储空间,所有内容均由用户发布,不代表本站观点。请注意甄别内容中的联系方式、诱导购买等信息,谨防诈骗。如发现有害或侵权内容,请点击一键举报。
    转藏 分享 献花(0

    0条评论

    发表

    请遵守用户 评论公约

    类似文章 更多