
对于pic单片机大家都很熟悉pic单片机是诸多类型单片机中最为受用的一款。本文是《pic单片机实际应用基于pic单片机实现IC卡读写器(上)》的余下内容。如果你对pic单片机具有兴趣抑或对pic单片机的应用充满好奇不妨继续往下阅读哦。1. IC卡IC卡是集成电路卡(Integrated Circuit Card)的简称有些国家和地址称其为智能卡(Smart Card)、芯片卡(Chip Card)。国际标准化组织(ISO)在ISO7816标准中规定IC卡是指在由聚氯乙烯(PVC)或聚氯乙烯酸脂(PVCA)材料制成的塑料卡内嵌入式处理器和存储器等IC芯片的数据卡。近年来由于导半体技术的进步集成化程度和存储器容量有了很大提高并使CPU和存储器集成在一个芯片上从而提高了数据的安全性。在本设计中IC卡采用的是AT45DB041B-SC芯片该芯片的特点如一下*单一的2.7V3.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不兼容。2. IC卡的电源提供电路在本设计中由于IC卡的电源电压范围为2.73.6V而PIC单片机需要的电源为5V而且稳压源提供的电压也是5V因此要设计一个稳压模块给IC卡提供3V左右的电压。设计电路如图3所示。该电路的主要元件为LM317芯片它是三端可调集成稳压器输出电压为1.2537V范围内可调。当其Vin端的输入电压在240V范围内变化时电路均能正常工作输出端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 POWEROOFBSF STATUSRP0 BSFSTATUSRP0BCF TRISE0 BCF TRISE0BCF RTISE1 BCF TRISE1BCF STATUSRP0 BCF STATUSRP0BCF PORTE0 BSF PORTE0BCF PORTE1 BSF PORTE1CALL DLYTIM CALL DLYTIMRETURN RETURN在本设计中单片机与IC卡通信的主程序流程图如图4所示。3. 与PC机的通信在本设计中有PIC单片机与PC机串行通信的功能。由于本设计所用的单片机PIC16F877有USART方式该方式可将C口的RC5和RC7设置成异步串行通信模式因而在本设计中与PC机的通信模块电路就比较简单。将单片机C口的RC6和RC7设置为异步串行通信模式经过MAX232A芯片进行电平转换后将TTL电平转换为RS232电平再与DB9接口相连即可实现通信。在PC机端可以用VC等编程工具根据通信协议编写软件来控制对IC卡的读写操作。4. 结论经过调试本设计能够在脱离在线仿真器的情况下上电后独立的运行程序并能在PC机软件的控制下实现对IC卡中任意位置的读写其中读写的起始地址、读写数据的个数以及数据内容可以在PC机端输入或选择。本设计已在实际应用中测试过具有实用价值。由于本设计中所使用的PIC单片机的程序存储器较大(8KB)因而可以编写较大的程序实现多合一该卡器并由PC机控制读写哪种芯片的IC卡。另外由于本设计所使用单片机的程序存储器是Flash存储器因而可以方便地实现程序的下载和升级。