用PIC单片机实现的IC卡读写器
数据的安全性。
在本设计中,IC卡采用的是AT45DB041B-SC芯片,该芯片的特点如一下:
*单一的2.7V~3.6V电源;
*串行接口结构;
*页面编程操作,单一的循环重复编程(擦除和编程,2048页(每页264字节)主存;
*两个264字节的SRAM数据缓存,允许在重编程非易失性存储器时接收数据;
*内置的编程和控制定时器;
*低功耗,4mA有源读取电流,2μACMOS备用电流;
*15MHz的最大时钟频率;
*串行外围接口方式(SPI)——模式0和3;
*CMOS的TTL兼容的输入和输出;
*5.0V可承受的输入,SI、SCK、CS(低电平有效)、RESET(低电平有效)。
在本设计的调试过程中,曾测试过IC卡的输入输出电平,结果证明这种IC卡的输入电平与TTL兼容,而输出电平与TTL不兼容。
4IC卡的电源提供电路
在本设计中,由于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卡下电子程序
POWERONPOWEROOF
BSFSTATUS,RP0BSFSTATUS,RP0
BCFTRISE,0BCFTRISE,0
BCFRTISE,1BCFTRISE,1
BCFSTATUS,RP0BCFSTATUS,RP0
BCFPORTE,0BSFPORTE,0
BCFPORTE,1BSFPORTE,1
CALLDLYTIMCALLDLYTIM
RETURNRETURN
在本设计中,单片机与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存储器,因而可以方便地实现程序的下载和升级 《用PIC单片机实现的IC卡读写器(第3页)》
本文链接地址:http://www.oyaya.net/fanwen/view/167092.html
在本设计中,IC卡采用的是AT45DB041B-SC芯片,该芯片的特点如一下:
*单一的2.7V~3.6V电源;
*串行接口结构;
*页面编程操作,单一的循环重复编程(擦除和编程,2048页(每页264字节)主存;
*两个264字节的SRAM数据缓存,允许在重编程非易失性存储器时接收数据;
*内置的编程和控制定时器;
*低功耗,4mA有源读取电流,2μACMOS备用电流;
*15MHz的最大时钟频率;
*串行外围接口方式(SPI)——模式0和3;
*CMOS的TTL兼容的输入和输出;
*5.0V可承受的输入,SI、SCK、CS(低电平有效)、RESET(低电平有效)。
在本设计的调试过程中,曾测试过IC卡的输入输出电平,结果证明这种IC卡的输入电平与TTL兼容,而输出电平与TTL不兼容。
4IC卡的电源提供电路
在本设计中,由于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卡下电子程序
POWERONPOWEROOF
BSFSTATUS,RP0BSFSTATUS,RP0
BCFTRISE,0BCFTRISE,0
BCFRTISE,1BCFTRISE,1
BCFSTATUS,RP0BCFSTATUS,RP0
BCFPORTE,0BSFPORTE,0
BCFPORTE,1BSFPORTE,1
CALLDLYTIMCALLDLYTIM
RETURNRETURN
在本设计中,单片机与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存储器,因而可以方便地实现程序的下载和升级 《用PIC单片机实现的IC卡读写器(第3页)》