C52单片机 基于89C51单片机IC卡读写器的设计
摘要 IC卡目前在各行各业得到了广泛的应用,本文介绍了接触式IC卡的工作原理,并以存储卡AT24C01为基础,详细分析了软件控制IC卡与计算机交换数据的软、硬件实现。
关键词 89C51单片机;IC卡读写器;UART接口
中图分类号TP368.1 文献标识码A 文章编号 1674-6708(2010)33-0262-02
0 引言
IC卡是集成电路卡(Integrted Circuit Card)的简称,目前在各行各业得到了广泛的应用。
本文采用单片机作为控制核心,对接触式IC卡芯片进行读写操作,并可以通过RS232接口和上位计算机进行通信,把卡内数据传到计算机内或是把计算机的数据存储到IC卡中。
1 接触式IC卡的基本原理
接触式IC卡是通过触点与外界的接触实现电气连接进行数据的读写,适用于用卡次数不多且环境较好的场合。接口电路简单,成本低廉而且其读写器的制造成本较低。
IC卡接口电路作为IC卡与IFD内的CPU进行通信的唯一通道,为保证通信和数据交换的安全与可靠,本文基于存储IC卡AT24C01为例进行介绍。
1)AT24C01的写操作
写操作分为字节写和页面写两种操作,对于页面写根据芯片的一次装载的字节不同有所不同。
2)AT24C01的读操作
读操作有3种基本操作:当前地址读、随机读和顺序读。最常见的是顺序读的时序图。应当注意的是:最后一个读操作的第9个时钟周期不是“不关心“。为了结束读操作,主机必须在第9个周期间发出停止条件或者在第9个时钟周期内保持SDA为高电平、然后发出停止条件。AT24C01片内地址在接收到每一个数据字节地址后自动加1,故装载一页以内规定数据字节时,只须输入首地址,若装载字节多于规定的最多字节数,数据地址将“上卷”,前面的数据被覆盖;连续读操作时为了指定首地址,需要两个伪字节写来给定器件地址和片内地址,重复一次启动信号和器件地址(读),就可读出该地址的数据。由于伪字节写中并未执行写操作,地址没有加1。以后每读取一个字节,地址自动加1。在读操作中接收器接收到最后一个数据字节后不返回肯定应答(保持SDA高电平)随后发停止信号。
2 UART接口简介
UART(Universal Asynchronous Receiver/Transmitter)通用异步收发器是用于控制计算机与串行设备的芯片。通过RS-232C数据终端设备接口,计算机将由计算机内部传送过来的并行数据转换为输出的串行数据流;将计算机外部来的串行数据转换为字节,供计算机内部使用并行数据的器件使用。并且在输出的串行数据流中加入奇偶校验位,并对从外部接收的数据流进行奇偶校验。在输出数据流中加入启停标记,并从接收数据流中删除启停标记。
UART工作原理就是将传输数据的每个字符一位接一位地传输。
起始位:先发出一个逻辑”0”的信号,表示传输字符的开始。
数据位:紧接着起始位之后。数据位的个数可以是4、5、6、7、8等,构成一个字符。通常采用ASCII码。从最低位开始传送,靠时钟定位。
奇偶校验位:资料位加上这一位后,使得“1”的位数应为偶数(偶校验)或奇数(奇校验),以此来校验资料传送的正确性。
停止位:它是一个字符数据的结束标志。可以是1位、1.5位、2位的高电平。
空闲位:处于逻辑“1”状态,表示当前线路上没有资料传送。
波特率:是衡量资料传送速率的指针。表示每秒钟传送的二进制位数。例如资料传送速率为120字符/s,而每一个字符为10位,则其传送的波特率为10×120=1200字符/s=1200波特。
3 IC卡读写器的硬件设计
本文所设计的IC卡读写器采用单片机AT89C51及其外部接口实现,主要包括控制部分、读卡部分、上位机通讯部分、复位部分和电源部分,采用AT89C51的P1.0~3作为读卡信号线,其中P1.0与AT24C01的SCL相连,作为时钟信号线,P1.1与AT24C01上行数据线相连,P1.2与AT24C01下行数据线相连,P1.3与C1相连,用于实时监测是否有卡插入,P1.4~7与看门狗电路的X5045相连,负责AT89C51与看门狗电路的通信。
控制部分主要负责读取IC卡中的数据,进行分析处理,存储在自身的RAM中或是通过RS232传送到上位机进行存储。控制部分的主要芯片为AT89C51,它提供了8K字节Flash闪存存储器,256字节内部RAM,32个I/O端口线,3个16位定时/计数器,一个6向量两级中断结构,一个全双工串行通讯口,片内振荡器及时钟电路。
读卡部分根据控制部分的控制信号,对IC卡进行读或写操作,并可实时监测IC卡的插入或是拔出。并将读出的数据通过驱动电路7407传送到控制电路或将控制电路所传送的数据写入IC卡。
上位机通讯部分的主要功能是与上位机通讯,将IC卡中的数据传送到上位机中或是将上位机中的数据存储到IC卡中。由于AT89C51的电平为0V~5V,无法和上位计算机直接相连,必须同转换芯片MAX232将电平转换为-5~+5,可以和计算机进行通讯。
复位部分的主要功能是防止单片机程序死机。在IC卡读写器工作时,由于出现的一些意外的原因,程序不能正常运行而进入死循环,这时需要对单片机进行复位,让其从新开始工作。
电源部分主要为整个IC电路提供电能,7805负责将输入的+12V直流转化为稳定的+5V电流,电源部分的主要芯片为7805为12V直流输入,5V直流输出的稳压器件,S为两相12V直流电源输入端接外部电源,SW为电源开关,LED1为电源指示灯,C1~C3为7805的稳压电容。
4 程序设计
软件程序采用模块化设计方式,主要包括上位机和下位机,上位机为计算机,采用VB完成串行通讯,下位机为读卡器的AT89C51,采用C语言完成串行通讯,如图1所示。
5 结论
经过调试,本设计能够在上电后独立的运行程序,并能在PC机软件的控制下,实现对IC卡中任意位置的读写,其中读写的起始地址、读写数据的个数以及数据内容可以在PC机端输入或选择。
图1 程序流程图
参考文献
[1]于微波,林晓梅,刘俊萍.微型机算计控制系统[M].吉林人民出版社,2002,5.
[2]何立民.单片机应用系统设计[M].北京航空航天大学出版社,1990.
[3]赵负图.国内外最新常用传感器和敏感元件性能数据手册[M].辽宁科学技术出版社,1994,11.
本文为全文原貌 未安装PDF浏览器用户请先下载安装 原版全文
