当前位置: 首页 > article >正文

基于AT89C51单片机的自动贩卖机设计

点击链接获取Keil源码与Project Backups仿真图:
https://download.csdn.net/download/qq_64505944/90498300?spm=1001.2014.3001.5503
在这里插入图片描述
在这里插入图片描述
C+23
部分参考设计如下:
摘 要

自动售货机作为自动化技术的一个典型应用,已经成为现代生活中不可或缺的设备之一。随着人们生活水平的提高,自动售货机在便捷性、可靠性、交互性和智能化等方面的需求日益增多。自动售货机不仅仅是一个简单的货物发放工具,它更是人机交互、支付、商品管理等多种技术的结合体。本设计基于INTEL公司出品的AT89C51单片机,结合先进的硬件和软件技术,实现了一个高效、智能、易操作的自动售货机系统。
本系统设计中,AT89C51单片机作为核心处理单元,负责整个系统的协调工作。单片机通过输入输出端口与各个功能模块进行数据交互,以确保各项操作的顺利进行。首先,输入控制模块采用4x4矩阵键盘,该键盘用于选择商品种类及数量,以及模拟货币的投入。用户可以通过按键来输入所需购买商品的种类和数量,同时投入相应金额。键盘的输入信号通过单片机采集后进行处理,便于后续的操作控制。
显示模块部分,选用了LCD1602液晶显示器,它能够实时显示系统的当前状态,包括用户投入的货币数量、选择的商品、所需支付的金额以及找零等信息。通过液晶屏,用户可以清楚地了解整个购买过程,提高了交互性和使用体验。
另外,系统还设计了LED显示模块,用于表示当前选定商品和出货状态。通过LED灯的变化,可以直观地指示出货过程的进展,以及是否需要等待或是出货完成,从而为用户提供更加清晰的反馈。
系统硬件部分,所有模块通过Proteus 8.13进行电路原理图的设计和仿真。在仿真过程中,首先设计了各个模块的电路连接,并确保它们之间能够正常工作。通过该仿真软件,可以实现各个模块之间的协调与调试,确保硬件部分的稳定性和可靠性。
软件设计方面,采用Keil uVision3编译软件来进行源代码编写、编译和调试。编写的程序中,单片机通过读取键盘输入信号来确定用户的选择,再通过计算处理来确认商品的金额是否匹配,并根据支付结果控制商品的出货与找零。通过此程序,整个售货过程得以顺利完成,同时,系统能够在LCD屏幕上实时更新用户信息,确保操作的透明度。
实验仿真中,通过模拟实际购买的过程,测试了系统在不同情况下的表现,例如用户按错键、货币不足、商品售罄等情况。通过这种方式,可以在真实硬件搭建之前提前发现潜在问题,并优化设计,提高系统的鲁棒性和用户体验。

总之,本次自动售货机设计通过合理的硬件选择和精确的软件编写,实现了自动售货的全流程操作。该系统不仅提高了自动售货机的智能化水平,还增强了用户体验,使得自动售货机不仅具备传统功能,还能适应现代社会对便捷、高效、自主的消费需求。
关键词 自动售货机,AT89C51单片机,编译仿真

目 录

摘 要 I
ABSTRACT II
1 绪论 1
1.1 课题的研究背景及意义 1
1.2 国内外现状及发展趋势 1
1.3 本课题研究的主要内容 2
2 自动售货机的系统结构 4
2.1 自动售货机的系统概述 4
2.1.1 自动售货机的系统结构 4
2.1.2 自动售货机的控制子系统概述 4
2.2 自动售货机的功能简介 5
2.2.1 自动售货机的功能概述 5
2.2.2 自动售货机的设计思路 6
3 自动售货机的硬件设计 8
3.1 AT89C51的简介 8
3.1.1 AT89C51的基本概述 8
3.1.2 AT89C51的引脚功能介绍 8
3.2 LCD1602字符型液晶简介 10
3.2.1 LCD1602的概述 10
3.2.2 LCD1602的硬件结构 10
3.2.3 LCD1602的指令说明 11
3.2.4 LCD1602的基本时序操作 13
3.3 44矩阵键盘简介 15
3.3.1 4
4矩阵键盘的概述 15
3.3.2 4×4矩阵键盘的硬件结构 15
3.4 货币识别系统 16
3.4.1 对硬币的识别 16
3.4.2 对纸币的识别 17
3.5 货物选择系统 18
3.6 出货及找零系统 19
4 系统的软件流程图设计 21
4.1 自动售货机货物选择流程图 21
4.2 自动售货机投币系统流程图 22
4.3 自动售货机出货找零系统流程图 23
5 系统软件仿真 24
5.1 PROTEUS的简介 24
5.2 仿真结果 25
6 结论 28
参考文献 29
附录A:C源程序 30
附录B:系统总图 42
致谢 43

1 绪论

1.1 研究背景及意义
随着科技的不断进步和人们对高效便捷生活方式的追求,自动售货机的应用逐渐走向了多样化和智能化的方向。在全球范围内,自动售货机已不再是单一的商品销售工具,许多创新设计逐步应用于该领域,以满足不断变化的市场需求。例如,许多自动售货机已经实现了联机功能,通过电话或网络线路将库存信息及时传送到各个营业点的电脑中,确保商品补充更加精确。这样的设计不仅提高了售货效率,还能有效减少库存管理中的失误和不必要的浪费,提升了整体运营效率。
此外,节能型自动售货机的推出也大大改善了其能源消耗问题,尤其是在夏季电力需求高峰期,节能型自动售货机能够通过智能调控系统,在保持低温的同时减少能源消耗,与传统的自动售货机相比,显著降低了电力成本。这些节能设计的优化,使得自动售货机不仅在功能上更加高效,同时也更加环保和经济。
21世纪后,自动售货机的发展方向越来越倾向于节省资源和能源、提高功能化与智能化。尤其是在快速消费社会中,顾客对快捷购物方式的需求不断增加,自动售货机已经成为满足这一需求的重要途径。智能化的支付系统、商品识别、用户个性化推荐等技术的融入,使得自动售货机在商业和服务领域的作用日益突出。同时,自动售货机也逐渐融入城市公共空间,成为城市文明建设的象征之一,广泛应用于繁华街道、车站、商场等人流密集的地方,提升了城市的现代化水平,并通过自助购物的方式为人们提供了更多的便利。
自动售货机不仅在满足消费者需求方面提供了创新解决方案,还为商家降低了运营成本,节省了人力资源。它能24小时不间断地提供服务,适应了现代消费者生活节奏的变化,尤其适合快节奏的都市生活。通过智能化的管理系统,自动售货机能够灵活应对市场变化,优化运营流程,确保高效的商品供给和销售。这些特性使得自动售货机不仅提升了商业效率,也促进了城市环境的现代化,成为提升社会文明水平和经济效率的重要组成部分。
1.2 国内外现状
自动售货机的迅猛发展不仅是零售行业的一次变革,更是社会发展和技术进步的体现。在我国,自动售货机已经突破了传统商业模式的局限,成为了超市和百货商店之上的新兴行业。其优势主要体现在受地域限制小,能够根据不同地区的需求供应不同的商品种类,包括饮料、零食、日用产品、电子产品、计生用品等。这种灵活性使得自动售货机能够在各个场景中广泛应用,从商业区到交通枢纽,再到景区和办公楼等地,都能见到自动售货机的身影。
自动售货机的智能化功能也大大提高了其管理效率。通过现代技术手段,管理者可以实时读取货物库存、商品销量以及物流信息,使得商品供应更加精准、快捷。这不仅简化了传统商业模式中库存管理的难度,也提升了运营效率。与传统的人工销售相比,自动售货机还支持多种支付方式,尤其是电子支付如信用卡、移动支付等,不仅便捷了支付过程,还提升了消费者的购物体验。
与国外相比,虽然我国的自动售货机行业起步较晚,但发展势头迅猛。日本的自动售货机已经成为了日常生活的一部分,不仅提供各种商品,甚至还可以购买到鲜花、书籍、甚至是热饭菜。而美国的自动售货机市场已经非常成熟,数以万计的运营商为广大消费者提供服务。在英国,自动售货机卡的普及更是推动了这一行业的便捷化,顾客可以通过刷卡代替投币,提高了支付效率。
在未来,自动售货机将继续走向智能化和信息化,具备更多个性化的功能。例如,利用人工智能技术优化推荐系统,根据顾客的购买历史和偏好提供定制化服务,进一步提升购物体验。同时,自动售货机也将逐步实现节能化,通过更高效的能源管理系统,降低其对电力的消耗,以实现更加绿色环保的目标。这些发展趋势无疑使自动售货机成为更加智能、便捷和环保的现代商业工具,满足人们日益增长的消费需求,也将成为未来零售行业的一个重要组成部分。

2 系统结构

2.1 系统概述
2.1.1 系统结构
自动售货机是集光、机、电一体化的自动化装置,能够独立完成售货、支付、找零等一系列功能。其工作原理是:在初始化界面,顾客选择商品的种类和数量,投入货币后按下确定键,系统计算出商品的总价,并提示顾客投入相应金额。货币通过外部硬件检测传感器来验证其真假,并进行累加计数。如果投入的货币足够支付所购商品的总价,系统将跳转至下一步骤进行商品出货;如果顾客选择取消购买,系统则返回主界面,退还货币。自动售货机通过货币总额与商品总价的差值来计算找零金额,并完成交易。这种智能化的自动化流程简化了购物过程,提高了消费者的购物体验,同时也提升了售货机的管理效率。

图2.1 自动售货机的总体工作原理图
2.1.2 控制子系统概述
自动售货机的控制子系统由多个功能模块组成,每个模块在自动售货过程中都起着关键作用,以确保系统高效、准确地完成售货任务。
预设自动售货机系统:自动售货机需要预先设定各类商品的价格并储存这些信息。商品价格的设置可以通过按键与存储器结合来实现,通过按键选择商品种类及其价格,并将数据存入存储器。在硬件设置较简单的情况下,如商品种类少、价格变化不大时,可以采用拨码开关的方式来设定价格。存储器具有断电保护功能,确保价格数据不会丢失,保证系统的稳定性和可靠性。
金额累加和找零系统:该系统的核心是CPU,负责对识别货币、退币、缺货及购货信号进行循环检查。顾客投入货币后,识别模块会检测并将金额信息传送给CPU,CPU将金额累加,确保金额满足购买要求。当金额足够时,系统会驱动电磁阀或微电机将商品释放出来,并清零累计数值,进入找零模式。如果投入的货币不足,系统会提示顾客继续投币或取消交易。
货物检测系统:该系统通过行程开关和接触开关监控货物的存储状态。如果存储道中有货物,行程开关会保持闭合,售货机正常工作;若货物供应不足,行程开关断开并向CPU发出缺货信号。此时,系统会自动启动外部电机或电磁阀,补充货物以保持供应充足,确保售货机能够持续运营。
售出累计及反馈功能系统:每完成一次售货,CPU会将销售数据存入存储器,便于后续查询。操作员可以通过按键查看销售数据,及时掌握商品的销量情况。此外,系统还具备自测功能,用户可以按下自测键来检查各个模块的功能状态,包括货物存储道的驱动功能,以确保售货机各项功能的正常运行。此功能不仅有助于设备的维护,还能提升自动售货机的使用效率和稳定性。

2.2 功能简介
2.2.1 功能概述
自动售货机的基本工作原理是通过矩阵键盘让顾客选择商品种类与数量,系统根据顾客的选择提示其进行货币投放。货币识别器对投币进行自动识别,检测不同面额的货币,然后通过LCD液晶显示屏向顾客展示可以选择的商品信息。当顾客确认商品选择后,CPU控制单元会发出指令,通过电机或电磁阀将所选商品从存储仓库送到取物口,完成商品交付。
自动售货机的功能设计较为完善,商品种类设置为8种,这些商品通过对应的按键进行选择,顾客可以根据需求选择商品类型以及购买数量,商品价格在1到8元之间浮动。货币识别器具备较强的兼容性,可以识别包括1元硬币、1元纸币、5元纸币、10元纸币、20元纸币、50元纸币以及100元纸币等多种面额的货币。在规定的时间内,投币口可以识别多次投币,并进行金额的自动累加。系统会将所有投入的货币金额数据传送至中央控制单元,进行计算和处理。
当顾客的投币金额不足以支付所选商品的费用时,系统会自动退还顾客所投的货币。而当顾客投币金额达到要求时,系统将执行购买和找零功能,根据商品价格和顾客选择的数量进行加减计算,确保交易的准确性和公正性。若顾客选择取消购买,系统会在取消键的操作下退还投币金额并返回到初始界面,等待下一次操作。
设计中包括16个按键,其中两个按键用于选择商品种类,两个用于选择购买数量,另外还有6个用于不同金额的货币投放,1个确认键和1个取消键。这种布局确保了顾客在使用过程中能够快速准确地完成选择和支付,提升了用户体验,同时简化了操作流程。
2.2.2 设计思路
本设计的工作流程如下:
启动系统,进入待机状态:系统启动后,进入待机模式,准备接收用户操作。
顾客选择商品的种类和数量:顾客通过4×4矩阵键盘选择商品种类与数量,并确认所选内容。矩阵键盘连接至单片机的P1口,每个按键的输入信号将被处理并转换为相应的商品和数量信息。
检查货物是否充足并提示顾客投币:系统通过检测库存情况,确认所选商品是否足够。如果货物充足,系统通过LCD1602液晶显示屏提示顾客开始投币;否则,显示缺货信息并取消当前选择。
顾客投币:顾客根据商品的价格和数量,按下相应的投币按钮(连接至P3.5口)。投币系统自动检测投入的货币类型和金额,并进行累加。
金额检测与商品交付:当顾客投币金额满足购买需求时,系统会确认并启动商品交付功能。若投币金额不足,则通过LCD显示屏提示顾客继续投币或取消购买,系统会退还顾客投入的货币。
找零操作:如果顾客的投币金额超过所购商品的总价,系统会通过P0口控制出货和找零功能,确保找零金额的正确性,并将找零金额退还给顾客。
系统复位并结束交易:在商品交付和找零完成后,系统自动复位,清空当前交易数据,准备迎接下一位顾客。
系统的硬件设计主要采用单片机AT89C51作为核心处理单元,所有控制和检测操作都由单片机完成。P3.5口连接投币检测电路,用于输入货币信号;LCD1602液晶显示屏作为显示模块,用于实时显示商品信息、金额、找零及操作提示;4×4矩阵键盘连接至P1口,用于顾客选择商品和输入购买数量;P0口则控制商品的输出和找零功能,通过电机或电磁阀执行商品交付。
这种硬件设计结构简洁高效,能够实现自动售货的各种功能,包括商品选择、货币检测、出货与找零等,充分保证了系统的稳定性和用户的使用便捷性。

图2.3 自动售货机系统原理图
硬件端口的选择思路:
1)输入:由于本设计模拟输入功能是由4*4矩阵键盘来完成的,而键盘连接在AT89C51的P1口上,则货币投入设定为:
P1口的按键值为0X04的时候代表1元货币的投入;
P1口的按键值为0X05的时候代表5元货币的投入;
P1口的按键值为0X06的时候代表10元货币的投入;
P1口的按键值为0X07的时候代表20元货币的投入;
P1口的按键值为0X08的时候代表50元货币的投入;
P1口的按键值为0X09的时候代表100元货币的投入;
P1口的按键值为0X0f的时候代表购物确定“OK”按钮;
P1口的按键值为0X0e的时候代表购物取消“NO”按钮;
本设计假定自动售货机的商品种类为8种,价格为1、2、3、4、5、6、7、8元。每一个价格代表一种商品且一经售出就由外部电机自动完成补货。规定每次最多只能购买10个。货物选择:
P1口的按键值为OX00的时候代表选择货物价格“price+”;
P1口的按键值为OX01的时候代表选择货物价格“price-”;
P1口的按键值为OX02的时候代表选择货物数量“num+”;
P1口的按键值为OX03的时候代表选择货物价格“num-”;
2)输出:选择商品由P0口控制的相应LED指示灯:
选择商品1用P0.0控制D1LED灯亮;
选择商品2用P0.1控制D2LED灯亮;
选择商品3用P0.2控制D3LED灯亮;
选择商品4用P0.3控制D4LED灯亮;
选择商品5用P0.4控制D5LED灯亮;
选择商品6用P0.5控制D6LED灯亮;
选择商品7用P0.6控制D7LED灯亮;
选择商品8用P0.7控制D8LED灯亮;
3)显示:本设计的显示端口由P2端口和P3.2(RS)、P3.3(RW)、P3.4(E)控制LCD1602液晶来显示购货状态,用P0口控制LED灯表示货物种类。通过它可以显示购货的种类、数量、总价以及找零等。

3 硬件设计

3.1 AT89C51简介
3.1.1 基本概述
由INTEL公司出品的MCS-51系列的AT89C51其实用性非常高。由于它是采用CHMOS的工艺技术制造,所以它是一款稳定性很高的高性能8位单片机,是HCMOS中的最基本的产品之一。在制作工艺的程中不仅继承和扩展了先前单片机的指令系统和体系结构更是把HMOS的高速高密度的技术特点和CHMOS的低功耗特点相结合。为了满足需求,在AT89C51内部置入CPU、RAM(128字节)、I/O(32个双向输入输出)、定时器/计数器(16位)、串行通信口、两级中断结构以及片内时钟震荡电路。此外,它还可以通过选择空闲和掉电的方式用于低功耗模式来进行工作,空闲模式下保持串行口、中断系统、RAM和定时器正常工作而同时冻结CPU来保证其正常运行。掉电模式下,自动保存RAM数据,时钟震荡停止、芯片的其他功能停止工作。
图3.1 AT89C51单片机内部基本结构
3.1.2 引脚功能介绍

图3.2 AT89C51的引脚图
AT89C51单片机的40个引脚大致可分为4类:电源、时钟、控制和I/O引脚。
① 电源:
1)VCC - 芯片电源,接+5V;
2)VSS - 接地端。
② 时钟:XTAL1、XTAL2晶体振荡电路反相输入端和输出端。
③ 控制线:控制线共有4根:
1)ALE/PROG:地址锁存允许/片内EPROM编程脉冲
a.ALE功能用来锁存P0口送出的低8位地址;
b.PROG功能:片内有EPROM的芯片,在EPROM编程期间,此引脚输入编程脉冲。
2)PSEN:外ROM读选通信号。
3)RST/VPD(复位/备用电源):
a.RST(Reset)功能是复位信号输入端;
b.VPD功能是在Vcc掉电情况下,接备用电源。
4)EA/Vpp(内外ROM选择/片内EPROM编程电源):
a.EA功能:内外ROM选择端;
b.Vpp功能:片内有EPROM的芯片,在EPROM编程期间,施加编程电源Vpp。
④  I/O线:AT89C51共有4个8位并行I/O端口即P0、P1、P2、P3口,共32个引脚;P3口还具有第二功能——用于特殊信号输入输出和控制信号(属控制总线)P0口输入时需要接上拉电阻才能置1。
在每次使用单片机之前,我们都要使单片机复位,让CPU以及其他功能部件都处于一个确定的初始状态,以消除上一次用户的操作对本次用户操作的影响。51的RST引脚是复位信号的输入端。复位信号是高电平有效,持续时间要有24个时钟周期以上。例如:若MCS-51单片机的时钟频率为12MHz,则复位脉冲宽度至少应为2us。通常,AT89C51的复位有自动上电复位和人工按纽复位两种
自动上电复位电路的工作原理是:电容在通电的时候相当于短路情况,导致RST引脚上的电位为高电平,这样电容会因为电阻被充电,然后RST端逐渐降低电压直到变为低电平,从而使单片机开始正常工作。由于自动售货机的功能需求,本次设计采用自动上电复位电路。

3.2 LCD1602液晶简介
3.2.1 概述
LCD1602液晶也叫1602字符型液晶,它是一种专门用来显示字母、数字、符号等的点阵型液晶模块。它由若干个5X7或者5X11等点阵字符位组成,每个点阵字符位都可以显示一个字符,每位之间有一个点距的间隔,每行之间也有间隔,起到了字符间距和行间距的作用,正因为如此所以它不能很好地显示图形(用自定义CGRAM,显示效果也不好)。1602LCD是指显示的内容为16X2,即可以显示两行,每行16个字符液晶模块(显示字符和数字)。市面上字符液晶大多数是基于HD44780液晶芯片的,控制原理是完全相同的,因此基于HD44780写的控制程序可以很方便地应用于市面上大部分的字符型液晶。液晶显示器以其微功耗、体积小、显示内容丰富、超薄轻巧的诸多优点,在各类仪表和低功耗系统中得到广泛的应用。根据显示内容可以分为字符型液晶,图形液晶。根据显示容量又可以分为单行16字,2行16字,两行20字等等。
3.2.2 硬件结构

图3.3 LCD1602的基本结构图
引脚说明:LCD1602一般是16个引脚
第1脚:VSS为接地电源。
第2脚:VDD接5V正电源。
第3脚:VEE为液晶显示器对比度调整端,通过连接电源正负来调节对比度的强弱。当连接电源正端时对比度最弱,反之连接负极则最高。对比度太高时会产生所谓的“鬼影”,在连接时可以通过接一个电位器来调整对比度。
第4脚:RS为数据命令选择端,电平为H时选择数据寄存器、电平为L时选择指令寄存器。
第5脚:RW为读写选择端,电平为H时进行读操作,电平为L时进行写操作。
第6脚:E端为使能端,当E端由高电平跳变成低电平时,液晶模块执行命令。
第7~14脚:D0~D7为8位双向数据线。
第15~16脚:空脚或背灯电源,15脚背光正极,16脚背光负极。
3.2 矩阵键盘简介
3.3.1 矩阵键盘概述
44矩阵键盘又是44行列键盘,它是分别用4条I/O线作为行线和列线组成的键盘。每个键的位置设置在每条行线和列线在交叉处上,可以知道44矩阵键盘共有44=16个按键。这样的设置可以有效地提高单片机I/O口的利用率,与独立式按键相比大大降低了接口占用率。当设计过程中需要按键个数要求比较大时,为了释放出I/O端口来供其他连接需要时往往采用这种矩阵式按键来解决问题。在矩阵键盘中,行列线均通过一个按键加以连接取代了直接交叉相连。这样,在很大的程度上增加了按键数,而直接将端口线连接在键盘上则会减少一倍的按键数量。在需要很多按键的设计中采用矩阵键盘明显地比独立式按键更合理,而且行列线越多效果越明显。
3.3.2 矩阵键盘结构

图3.6 4*4矩阵键盘的基本结构图
在应用矩阵键盘的设计中要编译程序的时候必定会计算出每个按键的接口地址是多少以方便编译,在矩阵键盘的按键确定上我们可以采用两种方法:
① 行扫描法:
行扫描法是我们常用的一种识别按键的方法,这种方法需要我们逐行逐列进行扫描查询,分为两个步骤:
1)将连接的全部行线置为低电平,然后检测所有列线的电位状态。只要某一列列线电位为低电平,就表示矩阵键盘中这列有键被按下,并且在被按下的闭合的按键在低电平列线与全部根行线相交叉的4个按键之中。反之,若所有列线电位均为高电平,则表示矩阵键盘中没有按键被按下;
2)通过前一可知按键处在判断的4个按键之中,在确认了有按键被按下后,就可进入到确定具体被闭合键的操作。然后再依次将所有行线电位置为低电平,即只有一根行线为低电平,其余行线则为高电平。在确定了某根行线电位为低电平后,再逐行检测所有列线的电平状态。若某根列线的电位为低电平,则被按下的按键就处在这根列线和低电平行线的交叉处;
② 高低电平翻转法:
这种确定矩阵键盘按键的方法也是非常有效的方法,也分为两个步骤:
1)先让所连接的端口高四位为高(1),低四位为低(0),若矩阵键盘上有按键被按下,则高四位中会有一个电平从1被翻转到0,低四位则不会改变电平状态,然后即可确定矩阵键盘上被按下的按键的所在行的具体位置;
2)让让所连接的端口高四位为低(0),低四位为高(1)。若矩阵键盘上有按键被按下,则低四位中会会有一个电平1翻被转为0,高四位则不会改变电平状态,然后即可确定矩阵键盘上被按下的按键的所在列的具体位置。综合这两个步骤就可以判断出被按下的按键具体位置;

3.4 货币识别系统
3.4.1对硬币的识别
目前在国内,对于硬币的识别可采用多种方法,比如激光扫描、应变片测重量、光电管检测大小等,然而在自动售货机中采用结构简单、成本低、测量准确及其非接触测量等优点集一身的涡流传感器检测。
电涡流检测原理:以高频的电信号通过一个线圈,在这个过程中产生变化的磁场通过硬币的表面即变化磁通通过硬币的表面,相应地硬币表面上产生电涡流, 并产生反向的变化磁场,以削弱原来线圈产生出来的磁场。然后根据激励磁场线圈幅值的变化,通过变化的给定值即可测出真假硬币。

图3.7 电涡流检测电路原理图
图3.7中Q2所需要的频率由Q1、L、C4等元件组成的振荡电路所提供,从而在C点产生一正弦波振荡信号;然后再A、B 两点外接一个传感线圈,当有硬币投入通过线圈时会改变C点原有信号的幅值大小,而真假硬币通过线圈时改变的幅值大小是不一样的,通过对比设定给定真币的参照值来判断真假硬币。
但是在实际应用中,由于某些条件的原因会影响到电子线路元器件的判定值,比如温漂的影响,由于材质的差异比较小,从而导致信号值得差距变小,若受到的温漂影响稍微增强一点,那么则很难精确地确检测出假币,为此可以采用电桥的方法来进行改善弥补,从而减小由温漂造成的干扰。图中L3、L4都是激励线圈,L3上方放置一个标准的1元硬币或其它用低碳钢做成的圆片,L4为检测有无硬币通过和是否为真假币的激励线圈,A、B两信号通过通信模块同时送到后续的运算放大器之中进行相减,从而抵消因温漂所造成的影响。
3.4.2对纸币的识别
我们知道,在硬件数据采集设备中的电源为发光二极光,所发出光的波长峰值在红外线所在的波段,但又不是单光谱,其中红外光成分达到90%以上,因此,光源辐射光中起主要作用的实际上是红外辐射。实验中对各种纸币的特征的识别也主要是根据纸币的表面特征对红外辐射的敏感。这主要是因为不同的纸币表面特征不同,所以在相同的光辐射照耀下会呈现不同的反映,从而可以从以下几个方面来鉴别纸币:]
钞票的纸张材料是特定的,所以同一种面值的钞票在特性上具有一定程度的相同,可以设定这个面值的真币来作为参考;
钞票表面的图案异同,对于同种面值的真钞而言,其表面的图案应该完全相同,而不同面值的真钞表面刻印的图案有较大区别,所以可以根据上述的光辐射理论来判定,也可以根据它们对相同光辐射的不同反映来判断面值归属;
因为钞票在市场的使用过程中会出现不同程度的磨损或者沾染上污垢,这种情况下的钞票表面的特征会发生直接的改变,接受光辐射的特性就会相应地产生变化。因此,光辐射可以反映出钞票的新旧程度;
相对于伪币,因为伪币的纸张特性很难满足真钞要求,而且伪币中某些图案达不到真钞的实际标准,如水印是在造纸过程中通过特征工艺抄制上去的无色图案,而伪钞的水印则是通过一定方式轧印或描绘上去的等等,这都能在钞票对光辐射接受的信息中反映出来。本系统中采用发光二极管作为光源,所发出的光的波长峰值在红外波段,并且有90%以上是红外线,但不是单光谱,还有其它光谱范围的光线。接受管使用NPN型的光电三极管,工作在红外波长范围内,发射管和接受管分别有6个,采用光的透射方式,采集数据时,完全对应位于钞票的两侧,可以做到精确检测。但是光辐射在传输过程中,会受外界环境的影响而产生能量损失。比如经过大气传输时,就会受到大气成分的吸收,而在不同的环境条件下,大气的成分含量有某些程度的变化,因而导致能量损失的程度不同。所以光辐射到钞票介质的传输距离越短,所造成的能量损失的影响就越微小,如果硬件的性能较好,外界的这种影响可以不予考虑。
当货币投入后经过识别,识别出信号后,伪币和异物被排出真币按面值由几组分配电磁阀分配到不同存币腔体内备用。当收到退币找零电信号后,通过退币电磁阀或者退币电机拉杆,将存币腔内下部依电信号程序退出,完成自动售货机的退币找零功能。

3.5 货物选择系统
货物选择系统主要通过矩阵键盘按键操作来完成。4*4矩阵键盘是自动售货机中的输入装置,价格低廉,结构简单,使用方便,在单片机应用系统中得到广泛地应用。键盘按照接口原理可分为编码键盘与非编码键盘两类,它们的主要区别是识别键符及给出相应键码的方法。编码键盘主要是用硬件来实现对键的识别,非编码键盘主要是由软件来实现键盘的定义与识别。
CPU可以采用查询或中断方式了解有无将键输入,并检查是哪一个键按下,然后通过跳转指令转入执行该键的功能程序,执行完后再返回主程序。
一个完整的矩阵键盘控制程序应该具备以下功能:
能够准确检测键盘上有无按键按下,为了消除键盘的按键机械触点抖动可以采取硬件或软件措施;
有良好的逻辑处理方法,按键处理可以独立开展,在处理期间对任何一个按键的操作不对系统产生影响,只要按键按下系统都只执行一次按键功能程序;
输出的按键值或者键号可以达到很精确的状态来正确执行跳转指令;

图3.9 货物选择系统图

3.6 出货及找零系统
在本系统中,总共设计了8种饮料,价格分别为1、2、3、4、5、6、7、8元不等,由顾客通过按键选择确定后,投入售货机可识别的货币(货币可以累加计数)。当投入的货币总值不够购买选择的商品总值时,售货机显示金取消交易并退出所投货币,如果所投货币大于等于购买选择的商品总值时,由售货机出货并计算剩余货币。但是在单片机的输出中只有高电平和低电平之分。在自动售货机中只需要安装一个驱动电机,待顾客投入货币后将信号送入系统通过相应电路来驱动电机推出相应商品即可。本设计只模拟实现此功能,负责软件仿真,暂不考虑硬件电机方面,只作介绍。在这里,我们选用光敏三极管来实现这一功能。当单片机输出端为高电平时,则驱动二极管发光,使驱动电机电路导通,这时驱动电机开始工作等待信号。当单片机输出端为低电平时,则二极管熄灭。驱动电机电路断开,即完成推货动作,LED灯闪烁。售货机通过投币时累计的计数和购买商品的总金额进行相减的运算,在LCD液晶上显示出余币的数量,顾客取走货物后自动退还余币。

图3.10 出货及找零

4 软件流程图设计

4.1 选择流程图
本设计提供1-8元不等的货物,分别用1-8的序号对应货物。当启动系统后进入初始化界面,等待顾客选择货物种类和数量,按键“OK”则跳入投币系统,按键“NO”则返回初始化等待界面。在这里只以1号商品作为例子来讲解具体流程如图4.1:

图4.1 自动售货机货物选择流程图

4.2 系统流程图
在4*4矩阵键盘上模拟投入货币,若投入一种面值的货币就累加一种面值的货币,如果没有投入货币或者投入货币值不足购买商品的话则提示继续投币。当所投货币足够时,进入出货找零系统如图4.2所示:

图4.2 自动售货机投币系统流程图

4.3 出货找零系统流程图
进入出货找零系统时,如果购买商品后没有剩余货币则直接推出商品,若还有剩余货币则找出余币,如图4.3所示:

4.3 自动售货机出货找零系统流程图

5 系统软件仿真

5.1 PROTEUS的简介
世界上著名的EDA仿真软件Protues拥有其自身的独立特点,例如从原理图布线图、代码调试到单片机与外围电路的协同仿真,一键切换到PCB设计,都能实现从概念设计到产品仿真的完整功能。同时也是目前世界上唯一能将电路仿真软件、PCB设计软件和虚拟模型仿真软件三合一的设计平台,其处理器模型支持的类型也非常广泛,例如8051、HC11、PIC10/12/16/18/24/30/DsPIC33、AVR、ARM、8086和MSP430等,该软件在2010年又同时增加了Cortex和DSP系列处理器,并持续增加其他类型系列的处理器模型。在编译方面,它也支持IAR、Keil和MPLAB等多种编译器。Proteus软件具有其它EDA工具软件(例:multisim)的功能。这些功能分别有:
① 原理布线图;
② PCB自动或人工布线;
③ SPICE电路仿真;
从软件的诞生到如今,Protues作出了很大的改革,这些改革使其成为如今最受欢迎的仿真软件之一:
1)互动的电路仿真;
用户甚至可以实时采用诸如RAM,ROM,键盘,马达,LED,LCD,AD/DA,部分SPI器件,部分IIC器件。
2)仿真处理器及其外围电路;
可以仿真51系列、AVR、PIC、ARM、等常用主流单片机。还可以直接在基于原理图的虚拟原型上编程,再配合显示及输出,能看到运行后输入输出的效果。配合系统配置的虚拟逻辑分析仪、示波器等,Proteus建立了完备的电子设计开发环境。​
3)丰富的器件库:超过27000种元器件,可方便地创建新元件;
4)智能的器件搜索:通过模糊搜索可以快速定位所需要的器件;
5)智能化的连线功能:自动连线功能使连接导线简单快捷,大大缩短绘图时间;
6)支持总线结构:使用总线器件和总线布线使电路设计简明清晰;
7)可输出高质量图纸:通过个性化设置,可以生成印刷质量的BMP图纸,可以方便地供WORD、POWERPOINT等多种文档使用;

5.2 仿真结果
设计好程序之后,还需要通过protues7.5和keil3.0来实现程序的调试和仿真,仿真结果图如下:
① 当启动自动售货机时机器进入初始化等待状态,等待按键输入,如图5.1所示:

图5.1 初始化等待界面
② 通过按键price+和price-来选择货物的种类,然后通过num+和num-来选择所购买货物的数量,同时代表被选择货物的LED指示灯亮,如图5.2所示:

图5.2 选择货物的种类及数量
③ 当选择好货物后,按下“OK”键进入到投币系统,此时机器会自动计算出所购货物总金额,如图5.3所示:

图5.3 货物选择并计价
④ 当机器计算出总价等待顾客投入货币并按下“OK”键后,当投入货币货币值大于或等于总价时就出货并找零,若投入货币货币值小于总价则不能出货只能按下“NO”退出所投货币或继续投币,如图5.4所示:

图5.4 出货找零
⑤ 当完成以上步骤后则完成一次自动购物过程,机器自动复位回到初始化界面如图5.5所示:

图5.5 自动复位返回初始化界面

6 结论

本次自动售货机设计使用了单片机AT89C51作为核心处理单元,通过在Proteus 8.13仿真环境中完成硬件模块的连接与系统调试。输入模块采用了4×4矩阵键盘,顾客可以通过此键盘选择商品种类、数量并进行确认操作。输出模块使用LCD1602液晶显示屏和LED显示灯,LCD用于显示操作状态、商品价格、货币累计等信息,LED灯则显示所选商品的类别和出货状态。这些模块的组合实现了自动售货机的完整操作流程。
程序编写与调试采用Keil 3.0软件,编译调试后,系统能够正确执行自动售货的各项功能,包括初始化待机、货物选择与确认、投币功能、商品出货与找零、以及恢复到待机状态等功能。4×4矩阵键盘模拟顾客选择商品和投入货币的过程,LCD1602液晶显示实时更新操作状态,如商品数量、货币总额以及是否满足支付条件等。每个环节都经过多次仿真调试,确保功能的完善与系统的稳定性。
最终,系统能够准确执行从顾客选择商品、投入货币到商品出货、找零返回等一系列操作,完全符合设计要求。通过仿真验证,系统在操作流畅性、稳定性和准确性上都表现出色,成功实现了基于单片机的自动售货机设计目标。这一设计不仅提高了自动售货机的自动化程度,还能为实际应用中售货机的研发提供理论依据与技术支持。

参考文献

[1] 白丽.自动售货机:第三次零售业革命[J].电子商务.2005.(3).
[2] 胡汉才.单片机原理及其接口技术[M].北京:清华大学出版,1996.
[3] 付家才.单片机控制工程实践技术[M].北京:化学工业出版社,2004.5.
[4] 潘新民.微型计算机控制技术[M].北京:人民邮电出版社,1999.9.
[5] 余锡存 曹国华. 单片机原理及接口技术[M].陕西:西安电子科技大学出版社,2000.7.
[6] 雷丽文.微机原理与接口技术[M].北京:电子工业出版社,1997.2.
[7] 叶银兰.自动售货机的设计与实现.微计算机信息[J],2008年23期,53-55
[8] 朱清慧,张凤蕊,翟天嵩.Proteus教程[M].清华大学出版社,2008.9.
[9] Guiyun Tian.Foundtion and Application of Microcontroller[M].高等教育出版社,2004.11
[10] 丁元杰.单片微机原理及应用[M].北京:机械工业出版社,2005.7.
[11] 张元良.单片机原理及应用教程[M].北京:清华大学出版,2011.2.
[12] 朱军.自动售货机的结构[J].信息与电脑.1995
[13] 裴进灵.一种新型自动售货机的研制[J].科技情报开发与经济.2002.
[14] 张文祥,李志军,张子红,张小清.单片机系统设计与开发教程[M].北京:电子工业出版社,2011.5.
[15] 宋萧,李佩佩,韩莹莹.自动售货机控制设计[J].科技信息,机械与电子,2009.
[16] 徐仁贵.单片微型计算机应用技术[M].北京:机械工业出版社,2001.
[17] 冯克.MCS-51单片机实用子程序及其应用实例.黑龙江科学技术出版社,1990
[18] 马刚.用Proteus和Keil整合构建单片机虚拟仿真平台.[J].现代电子技术,2006.24:129-131.
[19] 朱军.基于Proteus的单片机仿真实验.[J].计算机光盘软件与应用.


http://www.kler.cn/a/594815.html

相关文章:

  • CentOS 7.9 安装 Python 3.10 详细步骤及常见问题解决
  • 服务器部署Kong和Konga过程
  • 大数据在智能交通系统中的实时数据分析
  • Python环境依赖管理之终极指南:从隔离原理到深度维护
  • 30天搭建消防安全培训小程序
  • 从零开发数据可视化
  • 数据库故障排查流程
  • 前端-选中pdf中的文字并使用,显示一个悬浮的翻译按钮(本地pdfjs+iframe)不适用textlayer
  • 蓝桥杯练习day3:反转字符串II
  • 07. 面向对象高级(2)_设计模式
  • 【QA】观察者模式在QT有哪些应用?
  • 动力保护板测试仪:电池安全的坚实守护者
  • 01-Spring中的循环依赖以及它是如何解决的
  • 健康医疗:动态代理 IP 保障医疗数据安全,提升远程医疗服务质量!
  • LeetCode算法题(Go语言实现)_03
  • 详解string类+迭代器
  • 【记录】使用 Docker 搭建 MongoDB 分布
  • 嵌入式软件开发--面试总结
  • 工具层handle_response
  • Facebook和心理健康:社交媒体对我们情绪的影响