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从模式

在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。

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寄存器中,直到前一个数据从发送移位寄存器中移出,即前一个数据发送完。

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存储器,因而可以利便地实现措施的下载和进级。

php实现读写ic卡,diy用PIC单片机实现的IC卡读写器相关推荐

  1. pic单片机c语言nop,PIC单片机的读写93XCXX程序

    PIC单片机的读写93XCXX程序 TITLE        "R/W EEPROM" LIST  P = 16C54 ;Serial Eprom interface to PIC ...

  2. ic卡复制软件_使用MCT复制IC卡0扇区的方法(适用于NFC手机复制或模拟门禁卡)...

    部分IC卡无法被手机门禁卡模拟功能直接添加,但可使用CUID空白卡提取门禁卡0扇区数据直接使用,或提取并转储进CUID空白卡后再行模拟到手机内,实现"曲线救国". 1.自行下载手机 ...

  3. pic单片机c语言读eeprom,PIC单片机的EEPROM读写实例及说明

    PIC单片机的EEPROM读写实例及说明 来源:luchaohai 作者:华仔 浏览:1397 时间:2016-08-10 14:18 标签: 摘要: ; PIC单片机的EEPROM读写实例及说明;* ...

  4. C# 服务端(API)连接 安卓设备 读取 IC卡(仅读取ID),RFID卡(包含ID卡),获取卡号(10进制)

    处理安卓设备NFC读卡 C#WebAPI做服务端 APP使用 uni-app开发, 走了不少弯路,这里记录一下 获取 卡10进制ID的方法 商米POS.安卓移动设备(手机)通过NFC功能 读取 IC卡 ...

  5. pic单片机c语言读eeprom,PIC单片机的EEPROM读写实例

    PIC单片机的EEPROM读写实例及说明 ;**************************************************************************** ; ...

  6. 读卡购票c语言程序,求ID/IC卡的原理与C语言读取程序?

    第一次读取ID卡,费了不少周折 !本程序采用U2270B来读取卡号,所用单片机为新华龙的C8051F340,并采用串口1(P0.6和P0.7)的方式发送到PC机,通过串口调试助手观察所读到的数据,本程 ...

  7. sdio接口_单片机基础 —— 使用SDMMC接口读写SD卡数据

    本篇详细的记录了如何使用STM32CubeMX配置STM32L431RCT6的硬件SDMMC外设读取SD卡数据. 1. 准备工作 硬件准备 开发板 首先需要准备一个开发板,这里我准备的是STM32L4 ...

  8. 教你用手机模拟模拟 门禁卡、考勤卡、会员卡、停车卡、电梯卡等等,模拟后可用手机代替刷卡,无需root

    教你用手机模拟模拟 门禁卡.考勤卡.会员卡.停车卡.电梯卡等等,模拟后可用手机代替刷卡,无需root 背景介绍: 1.前言   目前,IC卡已被广泛应用于身份识别.金融消费.安全认证等领域.大多数人每 ...

  9. 基于51单片机的门禁卡设计

    1.设计思路 RFID门禁系统主要采用了STC89C52RC单片机作为控制模块及读卡器RFID-RC522作为识别模块.本设计实现了自动.准确的识别卡序列号.当有卡进入到读卡器读卡的范围内时就会读取到 ...

  10. c语言怎么编程输出相框,手把手教你学PIC单片机C语言教程第1课.PDF

    手把手教你学PIC单片机C语言教程第1课 - PIC HL-K18 - PIC HL-K18 慧净电子--做人人都买得起的PPIICC单片机开发板真诚为你服务,基于HHLL--KK1188 开发板 手 ...

最新文章

  1. matlab 全员极大型Topsis评价代码
  2. 3.6.6 码点与代码单元
  3. php 验证 e mail,PHP 表单验证 - 验证 E-mail 和 URL
  4. Storyboard的简单使用
  5. MapServer WinForm开发成功
  6. 拳皇全明星伺服务器维护,拳皇全明星5月31日更新公告_拳皇全明星5月31日更新内容介绍_玩游戏网...
  7. Flutter:布局
  8. hbase mysql hdfs_Alex的Hadoop菜鸟教程:第8课Sqoop1导入Hbase以及Hive
  9. 游戏开发工具引擎/模拟器收集
  10. docker下编译mangoszero WOW60级服务端(一)
  11. 狂神说 Redis笔记
  12. 买木头 (二分)题解
  13. React中关于props的那些事
  14. 微信企业付款转账到微信
  15. TCP连接三次握手协议,释放连接四次挥手,以及使用 awl伪造mac地址进行多线程syn洪泛攻击。...
  16. wordcloud:利用fontawesome字体绘制图标词云图
  17. 2.5A强驱动能力,舞台灯光驱动TMI8263锻造“中国芯”
  18. JavaScript 中 mouseenter 与mouseover 区别
  19. HTB打靶日记:Bashed
  20. python中for in zip()

热门文章

  1. linux运维实战案例,Linux运维实战练习案例20151220~20151231
  2. SQL:数据库更新语句操作实例
  3. python怎样终止程序_python终止程序
  4. JAVA手机接码平台源码
  5. pkm与png的相互转化
  6. 设计不难学,这10款软件总有一款适合你
  7. [论文写作笔记] C11论文查重原理及降重
  8. 计算机系统管理程序,计算机系统管理操作程序
  9. “SCSA-S学习导图+”系列:Windows下的WEB系统环境搭建
  10. 中国移动计算机类行测题目,中国移动笔试题:行测巧用十字交叉法解题