DZ196IC卡检票机MCY
DZ196IC卡检票机MCY,dz196ic,检票,mcy
公交非接触 IC 卡读写器的应用设计(1)单片机系统单片机采用 89C52。它片内有 8KB 的 ROM,256 字节的 RAM 以及有 32 个 I/O 口。P1口与串行器件 24C64 和显示、报警电路连接;P0 口与 MMM 微模块相连,用作数据线;P2口用作 44 键盘;P3 口用于读写控制和中断。(2)键盘电路键盘接口电路用 P2 口接成 44 结构,共 16 个键。其中数字键 10 个,功能键 2 个,退格键和回车键各 1 个,有 2 个键暂时未用。 功能键有查询和通信两键。 查询键:售卡员可以通过此键查询售卡金额和售卡记录数。 通信键:由于读写器的存储量有限,因此读写器每售卡一段时间,应将读写器中的数据通过 RS-232 串行接口与 PC 机通信,以便回放和清空读写器中的数据。数据回放到 PC 机中后,通过分析处理,形成各种报表,以便公交公司及时掌握售卡情况。(3)显示电路 显示部分采用数码显示,利用串行输入 BCD 码-十进制译码驱动显示器件 MC14499来完成与单片机系统的显示接口,以显示读写器工作状态、输入的数据或读出 IC 卡中所剩余以及出错信息等。此器件主要有 1 个 20 位移位寄存器、1 个锁存器、1 个多路输出器。多路输出器输出的 BCD 码经段译码器译码后,换成七段码(abcdefg)和小数点 DP送到段驱动器输出。(4)存储器读写器中设计了存储器。存储器选用 24CXX 系列的串行 E2PROM。在售卡机中主要存放卡号、售卡员号、售卡金额、售卡日期、售卡总金额和售卡总记录数;在车载机中主要存放乘客 IC 卡号、司机号和刷卡总数等信息。显示用 MC14499 驱动 4 位共阴数码管。正常工作后,每隔一段时间要把读写器拿到公交管理中心将读写器储存的信息回放到 PC机中保存处理。读写器中存储器可采用 24C64,其存储量为 8KB,如有需要也可用容量更大的存储器如 24C128 或 24C256 等。(5)监控电路 监控电路采用 DS1232L 芯片。它是个看门狗定时器,其功能是:上电和掉电时给 89C52 产生 RESET 信号;看门狗对系统进行监控,防止死机。(6)非接触式 IC 卡非接触式 IC 卡选用 Mifare 卡。其工作频率为 13.6MHz,存储量为 1KB 分 16 区,每区 2 套密码,每个区的存储区域相互独立,因此每区可用作一种用途(第 0 区一般不用)以实现一卡多用。由于 Mifare 卡密码验证机制严密,保存的信息比较可靠安全,可以擦写几万次。Mifare 卡的 16 个区,每区又分 4 块,每块 16 字节。在售卡机中用第 1 区作用户储值块,其中第 0 块存放身份号,第 12 块存放价值,第 3 块存放两套 6 字节密码和 4 字节读写访问条件。四、程序设计下面以售卡机为主介绍软件设计方法。考虑到售卡金额的安全管理,公交公司事先必须制作好两种 IC 票卡:一种是用户IC 票卡,另一种是售卡员的售票 IC 卡。这两种卡可使用相同区号,但密码和访问条件完全不同,不会混淆。售卡员要进行售卡时,必须先到公交公司办理一张售票 IC 卡,才有售卡的资格。售票 IC 卡内存放了售卡员身份号、允许售卡的最大金额、两套 6 字节密码和 4 字节读写访问条件。售卡员售卡时,每充值一张卡必须从自己的售票 IC 卡中减去售卡金额,加到用户 IC 卡中。当售票 IC 卡金额减到零后,要到公交公司结账,并再对售票 IC 卡充值记账。这样,可使公交公司的售卡网点分布得多而不乱,又可方便用户充值加卡,可有效地防止售票人员账目不清而造成的资金流失。程序主要包括 IC 卡读写操作程序、键盘扫描程序、显示程序、存储器读写程序和通信程序。1.主程序主程序主要完成系统变量的初始化,循环扫描键盘,检测操作 IC 卡,将操作结果存储和显示。在售卡机中使用了 8KB 的 24C64 作存储器,主要存储的内容有:售卡机机号(1 字节)、售卡总金额(3 字节)和总记录(2 字节)。售出的每张卡的记录包含:用户卡身份号(4 字节)、售卡日期(2 字节)、加卡金额(1 字节)和售卡人编号(1 字节)。因此最大能存储 1023 张售卡记录。2.键盘扫描程序键盘扫描采用反转法读键:先从 P2 口的高 4 位输出零电平,从 P2 口的低 4 位读取键盘状态;再从 P2 口的低 4 位输出零电平,从 P2 口的高 4 位读取键盘状态,将两次读取的结果组合起来就可以得到当前按键的特征码(见程序中 TABLE 表)。有了这张表就可以编程,将它们转换成顺序码。用当前读得的特征码来顺序查表,用一单元记录查找次数。当在表中查到有该特征码时,它的位置(即查找次数)就是对应的顺序码。对应的键盘查键程序如下:KEY: MOV P2,#0FH ; MOV A,P2ANL A,#0FHMOV B,AMOV P2,#0F0HMOV A,P2ANL A,#0F0HORL A,BCJNE A,#0FFH,KEY1RET ; KEY1: MOV B,A ; MOV DPTR,#TABLEMOV R3,#0FFH ; KEY2: INC R3MOV A,R3MOVC A,A+DPTRCJNE A,B,KEY3 ; MOV A,R3 ; RETKEY3: CJNE A,#0FFH,KEY2;RET ;TABLE: DB 77H,7BH,0BBH ; DB 0DBH,7DH,0BDHDB 0DDH,7EH,0BEHDB 0DEH,0B7H,0D7HDB 0EEH,0EDH,0EBHDB 0E7H,0C7H,0FFH3.显示程序在显示电路中,用 P1 口的 3 根 I/O 口线(P1.0、P1.1、P1.2)分别提供时钟信号(CLK)、串行数据(DA)和使能信号(EN)。MC14499 每一次可接收 20 位串行输入数据,前 4 位用于控制数码管的小数点显示,后 16 位是 4 个数码管的 BCD 码输入数据。在每帧数据传送之前,必须将 EN 置 0;然后传送 20 位数据,数据传送完后,再将 EN 置1。显示程序如下:DISP: CLR P1.0 ; CLR P1.2 ; MOV R2,#04 ; MOV A,#00LCALL W14499 ; MOV A,R1 ; MOV R2,#08 ; LCALL W14499INC R1MOV A,R1MOV R2,#08 ; LCALL W14499SETB P1.2 ; RETW14499: SETB P1.0 ; RLC A ; MOV P1.1,C ; CLR P1.0 ; DJNZ R2,W14499RET4.串行 E2PROM 读写程序24C64 为 I2C 总线的 E2PROM。SCL 为 400kHz 时钟线,SDA 为双向数据线,A2、A1、A0 三位为片选地址,即 I2C 总线上最多可并联 8 个串行 E2PROM 芯片。对E2PROM 的操作方式由读写控制命令字决定,其中1010为 4 位读写控制码,R/W 为读写控制位:0为写操作,1为读操作。所以可知 A2H 为写控制命令字,A3H 为读控制命令字。对存储器写操作,首先,单片机向 24C64 发一个 START 命令,产生开始条件。然后,发写命令控制字(如 A2H)。当 24C64 接到命令后,进入一个写周期,再由单片机发送存储地址,即确定数据写入到存储器的哪个地址,随后,单片机将要存储的数据送入到SDA 数据线上。写周期结束时,单片机再发一停止位(STOP)。对存储器读操作,首先,单片机向 24C64 发一个 START 命令,产生开始条件。然后发写命令控制字(如 A2H)。当 24C64 接到命令后,进入一个写周期,再由单片机发送存储地址。存储地址发送成功后,单片机又向 24C64 发一个 START 命令,产生开始条件,然后发读命令控制字(A3H)。当 24C64 接到命令后,进入一个读周期,单片机从 SDA 数据线上读出指定存储地址中的数据。读周期结束时,单片机再发一停止位(STOP)。值得注意的是,对存储器操作时,每读写一个字节,单片机必须送一个应答位(ACK),释放一下 SDA 数据线,以便存储器能继续接收数据。5.通信程序在读写器中,单片机与 PC 机之间的通信主要由 TC232 来实现 TTL 电平(05V)与RS232 电平(+1010V)的转换,以完成售卡机保存的售卡记录的传送。通信格式设置为:采用串行工作方式 1,波特率为 9600baud, 1 个起始位,8 位数据位,1 个停止位,采取和校验方式。读写器中,单片机程序可采用 C 语言进行编程。C 语言有功能丰富的库函数,运算速度快、编译效率高、可移植性好、软件的可读性强,便于改进和扩充(程序略)。为提高在公交系统的适应能力,包括用户的各类特殊要求,抗干扰,抗恶劣环境,除硬件上采用监控电路外,在软件上还采取了指令冗余和软件陷阱。
收藏