自动取款机系统采用高可靠性的AT89C52单片机作为核心控制芯片,采用具备I2C总线接口的FM24C02芯片完成密码与金额的存储,通过液晶显示器128x64显示运行状态和操作步骤。软件设计采用具有较好移植性和可读性的C51语言编写程序,以便修改和增减功能。通过Proteus软件成功实现了自动取款机的仿真过程。经仿真表明,利用Proteus软件进行仿真设计可极大地简化单片机程序在目标硬件上的调试工作。
自动取款机,简称ATM(AutomaTIC Teller Machine),它使用现代技术实现自动取款、修改密码、查询余额等操作,是业务电子化的一种机器设备,由于其便利性和实用性受到了人们的青睐。本文设计了一种自动取款机系统,模拟自动取款机的基本功能(取款、查询余额、修改密码、取卡),使人们了解利用Proteus软件来实现自动取款机的仿真过程。
本系统主要由微控制器模块、液晶显示模块、键盘输入模块、存储模块、蜂鸣电路所组成。系统结构如图1所示。
微控制器模块主要完成对整个系统操作过程的控制;液晶显示模块模拟自动取款机的人机交互界面;键盘输入模块完成对密码的输入及修改功能;存储模块完成对模拟银行卡密码及金额的存储功能。
系统硬件电路仿真图如图2所示。微控制器采用Atmel公司的AT89C52,存储器采用具备I2C总线接口的FM24C02芯片,液晶显示采用LCD 128x64模块。
液晶显示模块是128x64点阵的汉字图形型液晶显示模块,可显示汉字及图形,内置8 192个中文汉字(16×16点阵)、128个字符(8×16点阵)及64x256点阵显示RAM(GDRAM)。可与微处理器直接相连,提供两种界面来连接微处理器:8位并行及串行两种连接方式。利用该模块灵活的接口方式,可构成全中文人机交互图形界面。
FM24C02是2 048位的串行电可擦除只读存储器,内部组织为256 B,其作用是存储模拟银行卡的密码及金额。
由图2可知,AT89C52的P0口通过上拉电阻RPt与LCD 128x64的数据端口DB0~DB7相连,使读取或写入的数据显示在液晶模块上。P1.0~P1.5实现对模拟银行卡的操作,如密码的输入与修改,查询余额,取款,取卡等;P2.0,P2.1,P2.2分别接LCD 128x64的使能端,读/写数据控制端口及片选端口;P2.5,P2.6端口作为模拟银行卡“CARD1”,“CARD2”按键输入端,当LCD 128x64液晶显示界面出现“请插卡”时,按下相应的按键即表示了插入银行卡;P3.0~P3.6端口实现对键盘的扫描,实现密码的输入、修改等功能;P3.7接蜂呜电路,当对模拟银行卡操作时,就会发出声响提示操作已经完成。
本系统软件包括主程序模块、键盘输入扫描模块、液晶显示模块等。采用C51语言对系统的各个模块编写程序。系统程序流程如图3所示。
主程序主要用于定义全局变量,给全局变量赋初值,初始化E2PROM,从FM24C02中读取或写入密码,驱动显示等,为整个程序提供数据。FM24C02读/写数据部分子程序如下:
3.2 键盘输入扫描模块
该模块具备扫描键盘确定被按键的具体位置、判断键盘上有无键按下、消除去抖动、判断闭合的按键是否释放等功能。
3.3 液晶显示模块
此模块包括液晶初始化、命令的输入、显示数据的输入。
向LCD 128x64里写数据部分子程序如下:
本文采用具有强大的EDA仿真功能的Proteus软件进行仿真,仿真测试结果如图4所示。
当按下运行的Proteus软件中的“play”按钮时,即启动系统,此时LCD液晶屏显示如图4(a)所示的界面。按下仿真电路中“CARD1”按键或“CARD2”按键,出现图4(b)所示画面,在键盘输入界面中输入银行卡“CARD1”或“CARD2”密码。若在密码输入的过程中,出现错误,则可按“key0”键进行修改。密码输入完成之后,按下仿真电路图中“key1”按键确定,若密码输入错误,则出现图4(c)所示界面,3 s钟之后转向图4(d)所示界面,重新输入密码。密码输入错误3次及以上,出现图4(e)所示界面,提示“此卡已被冻结”,再按“key1”按键取卡;若密码正确,则会出现图4(f)所示界面。在图4(f)所示界面下,按下“key0”按键选择“修改密码”功能,出现图4(g)界面,输入新的密码,修改成功之后跳转图4(h)界面;按下“key2”按键选择“查询余额”功能,出现图4(i)界面;按下“key3”按键选择“取款”功能,出现图4(i)界面,选择相应的金额按键按下(key0按键表示1 000,key2按键表示2 000,key3按键表示3 000),之后出现图4(k)界面,按下“key4”按键取钞,界面跳转到图4(1),完成取款操作。若要继续选择业务功能,则按下“key5”按键,界面重新跳转到图4(f)界面;若要取卡,则按下“key1”按键,则界面跳转到图4(a),对重新插入的银行卡进行操作。
本文利用Proteus与Keil μVision3软件对自动取款机系统进行了仿真设计与实现。从仿真结果可知,利用Proteus软件进行仿真设计可极大地简化单片机程序在目标硬件上的调试工作,同时也可直观展示系统的运行界面,实现了自动取款机的基本功能,证明了此设计方案的可行性与正确性。