历史上的今天
今天是:2025年03月18日(星期二)
2018年03月18日 | 基于Proteus的自动取款机设计方案
2018-03-18 来源:eefocus
内容摘要:自动取款机系统采用高可靠性的AT89C52单片机作为核心控制芯片,采用具备I2C总线接口的FM24C02芯片完成密码与金额的存储,通过液晶显示器128x64显示运行状态和操作步骤。软件设计采用具有较好移植性和可读性的C51语言编写程序,以便修改和增减功能。通过Proteus软件成功实现了自动取款机的仿真过程。经仿真表明,利用Proteus软件进行仿真设计可极大地简化单片机程序在目标硬件上的调试工作。
引言
自动取款机,简称ATM(AutomatIC Teller Machine),它使用现代技术实现自动取款、修改密码、查询余额等操作,是业务电子化的一种机器设备,由于其便利性和实用性受到了人们的青睐。本文设计了一种自动取款机系统,模拟自动取款机的基本功能(取款、查询余额、修改密码、取卡),使人们了解利用Proteus软件来实现自动取款机的仿真过程。
1 系统总体设计
本系统主要由微控制器模块、液晶显示模块、键盘输入模块、存储模块、蜂鸣电路所组成。系统结构如图1所示。

微控制器模块主要完成对整个系统操作过程的控制;液晶显示模块模拟自动取款机的人机交互界面;键盘输入模块完成对密码的输入及修改功能;存储模块完成对模拟银行卡密码及金额的存储功能。
2 系统硬件电路设计
系统硬件电路仿真图如图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接蜂呜电路,当对模拟银行卡操作时,就会发出声响提示操作已经完成。
3 系统软件设计
本系统软件包括主程序模块、键盘输入扫描模块、液晶显示模块等。采用C51语言对系统的各个模块编写程序。系统程序流程如图3所示。

3.1 主程序模块
主程序主要用于定义全局变量,给全局变量赋初值,初始化E2PROM,从FM24C02中读取或写入密码,驱动显示等,为整个程序提供数据。FM24C02读/写数据部分子程序如下:


3.2 键盘输入扫描模块
该模块具备扫描键盘确定被按键的具体位置、判断键盘上有无键按下、消除去抖动、判断闭合的按键是否释放等功能。
3.3 液晶显示模块
此模块包括液晶初始化、命令的输入、显示数据的输入。
向LCD 128x64里写数据部分子程序如下:


4 系统仿真结果
本文采用具有强大的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),对重新插入的银行卡进行操作。
5 结语
本文利用Proteus与Keil μVision3软件对自动取款机系统进行了仿真设计与实现。从仿真结果可知,利用Proteus软件进行仿真设计可极大地简化单片机程序在目标硬件上的调试工作,同时也可直观展示系统的运行界面,实现了自动取款机的基本功能,证明了此设计方案的可行性与正确性。
下一篇:P1口的键盘改进电路
史海拾趣
|
大家好,我手头上有两台PND,一个是CE 4.2 另一个是 CE 5.0. 当我用IE打开html文件时,所以的PNG格式图片都无法显示。 我查了相关的资料,都提到,IE6支持PNG的显示。 问题: 如何让现有的机器上的IE支持PNG的显示呢? 比如更新对应的dll, 或 ...… 查看全部问答> |
|
是这样的,俺的2440的应用程序调用这个sleep函数,非常不准确。sleep(500)的效果相与sleep(100)的效果,也就是说这个时间变快了。但是另外一5.0 BSP却正常,我看了一下帮助,没有讲这个函数是如何实现的,请问这个函数如此不准确,是什么原因 ...… 查看全部问答> |
|
看看下面的代码,为什么我把程序烧到单片机中之后,L1先亮,过半秒之后就L2,L3同时亮,然后一直都没有灭,为什么? #include sbit L1=P0^0; //L1,L3灯是10秒闪一次,L2是1秒闪一次, sbit L2=P0^1;//L1是有主函数的一个标记n控制的,L3直接由 ...… 查看全部问答> |
|
在用Lwip接收SOCKET调试工具发送的超过200字节数组给LM3s8962处理时,200字节以后的数据出现乱码问题: 过程: 用SOCKET工具发送0123456789的序列,如图SocketData1.jpg: 现象: 在 Keil中调试信息,如图SocketData2.jpg: & ...… 查看全部问答> |
|
初学计算机组成原理,戴梅萼的《微型计算机技术及应用》非常好,可惜是以8086、80386、奔腾处理器为例的,不知道有 ...… 查看全部问答> |
|
本帖最后由 paulhyde 于 2014-9-15 03:40 编辑 (1) 7 月份,召开全国专家组工作会议,初步确定竞赛题目基本方向,审议竞赛题目基本框架。(2) 8 月17 日至8 月18 日,召开全国大学生电子设计竞赛组织工作会议;部署竞赛事宜,包括宣传竞赛规则及竞 ...… 查看全部问答> |




