一、设计背景与核心需求
在便利店、地铁站、校园等场景中,自动售货机因24小时服务、无需人工值守的优势广泛应用,传统售货机常存在操作复杂、支付反馈慢的问题。基于单片机的自动售货机仿真系统,借助单片机的按键交互与逻辑控制能力,可实现商品选择、投币识别、找零计算、出货控制等功能,契合微机原理毕设课设中“数据处理+人机交互+外设联动”的教学目标。
本系统以51系列单片机(如STC89C52RC)为核心,核心需求明确:支持3种商品售卖(如可乐、雪碧、矿泉水),每种商品标注价格(2元、3元、1元)与库存(初始10件);通过矩阵键盘实现商品选择与投币金额输入(支持1元、5元、10元);具备金额判断功能,投币足额后自动出货并计算找零,不足则提示;LCD1602显示商品信息、投币金额、找零金额与操作提示;库存不足时提示补货,适配Proteus仿真环境,硬件简洁、程序稳定,满足毕设课设对功能性与可靠性的考核。
二、系统总体架构设计
系统采用“交互-控制-存储-执行-显示”五层模块化架构,以STC89C52RC单片机为核心,各模块通过I/O口协同形成功能闭环。
交互层为4×4矩阵键盘(行线接P1.0-P1.3,列线接P1.4-P1.7),实现商品选择(1-3号键)、投币输入(1元/5元/10元键)、取消操作与确认键;控制层是核心,负责解析键盘指令、判断投币金额是否足额、计算找零、控制出货,通过状态标志位管理售卖流程;存储层采用单片机内部RAM,存储3种商品的价格(price[3])与库存(stock[3])数据;执行层包含3个出货指示灯(接P2.0-P2.2,灯亮模拟出货)与蜂鸣器(接P2.3,出货或找零时提示);显示层为LCD1602(数据口P0,控制口P2.4-P2.6),实时展示商品信息、投币金额与操作结果。
三、核心模块设计与实现
(一)交互逻辑与售卖控制模块
交互逻辑通过矩阵键盘扫描实现:单片机逐行置低并读取列线电平,确定按键功能——商品键(1-3)按下时,记录选中商品编号与对应价格,LCD显示“Selected: Goods X Price: X Yuan”;投币键按下时,累加投币金额(如按“5元”键,金额+5),显示“Inserted: X Yuan”;确认键按下时,进入售卖判断。
售卖控制逻辑:若投币金额≥商品价格且库存>0,计算找零(change=inserted-price),LCD显示“Change: X Yuan”,控制对应商品的出货灯亮2秒(模拟出货),蜂鸣器短鸣提示,同时库存减1;若投币不足,显示“Insufficient Money”;若库存为0,显示“Out of Stock”;取消键按下时,清空投币金额与选中商品,恢复初始状态。
(二)数据存储与显示提示模块
数据存储模块通过数组初始化商品信息:price[0]=2(可乐)、price[1]=3(雪碧)、price[2]=1(矿泉水),stock[0]=stock[1]=stock[2]=10,每次出货后stock[i]自减1,确保库存实时更新。显示模块分阶段更新内容:初始时LCD第一行显示“Vending Machine Ready”,第二行显示“Select Goods & Insert Money”;选中商品后显示商品与价格;投币时实时更新投币金额;售卖完成后显示找零与出货提示。
所有按键采用10ms软件防抖处理,检测到电平变化后延时采样,避免误触发;出货灯亮灭与蜂鸣器提示通过定时器T0控制时长,确保操作反馈清晰,提升用户体验。
四、系统调试与验证
系统仿真基于Proteus 8.15搭建,构建单片机最小系统,接入矩阵键盘、出货指示灯、蜂鸣器与LCD1602,检查接线无误后调试。
功能测试中,选择1号商品(可乐,2元),投入5元,按下确认键,系统计算找零3元,1号出货灯亮,蜂鸣器提示;投入1元选择1号商品,提示“Insufficient Money”;将1号商品库存耗至0后选择,提示“Out of Stock”;取消键可正常清空操作。稳定性测试连续模拟20次售卖流程,包含足额投币、不足投币、库存不足场景,系统无数据错乱、逻辑异常问题,按键响应及时,显示清晰。仿真结果表明,系统功能完整、逻辑严谨,符合毕设课设考核标准。
文章底部可以获取博主的联系方式,获取源码、查看详细的视频演示,或者了解其他版本的信息。
所有项目都经过了严格的测试和完善。对于本系统,我们提供全方位的支持,包括修改时间和标题,以及完整的安装、部署、运行和调试服务,确保系统能在你的电脑上顺利运行。