G896860828 2026-01-15 19:51:03
江湖救急 这个电路里商品金额是2元,投入金额是2.5元的时候出货找零正常工作,但投入3元是只出货不找零是为什么?
...全文
747 2 打赏 收藏 转发到动态 举报
写回复
用AI写文章
2 条回复
切换为时间正序
请发表友善的回复…
发表回复
惊喜不断 02-28 10:36
  • 打赏
  • 举报
回复

从电路结构和数字逻辑原理来看,投入 3 元只出货不找零的核心原因是找零金额超出了当前电路的处理范围,具体如下:

金额编码与运算限制
    电路中使用的 74LS161 计数器和 74283 加法器都是 4 位二进制器件,这意味着它们能处理的最大无符号数是 15(二进制1111)。
    当投入 2.5 元时,找零金额为 0.5 元,这个值在 4 位二进制的表示范围内,因此减法运算和找零驱动逻辑都能正常工作。
    当投入 3 元时,找零金额为 1 元。如果电路的编码方式(例如以 0.5 元为单位)将 1 元编码为2,这仍然在 4 位范围内。但如果电路的 BCD 编码或找零分解逻辑只设计了处理 0.5 元(即1)这一种面额,那么当需要找零 1 元时,就会因为无法分解为已知面额而导致找零模块失效。
找零驱动逻辑的触发条件
    图中的吐钱开关(Q1)由 74LS08D(U16A)与门控制,其输入信号来自减法器(U9)的输出。
    当找零金额为 0.5 元时,减法器输出的 BCD 码0001(代表 0.5 元)可以正确驱动与门,使 Q1 导通,完成吐零。
    当找零金额为 1 元时,减法器输出的 BCD 码0010(代表 1 元),如果电路中没有对应的 1 元找零驱动逻辑(即没有连接到 Q2 的控制信号),或者该逻辑被忽略,就会导致吐零动作不触发。
进位 / 借位标志的误判
    74283 加法器通过补码实现减法,其进位输出CO在被减数大于减数时为 1。
    当投入金额为 2.5 元(0101)减去商品金额 2 元(0010),结果为 0.5 元(0001),CO=1,表示无借位,找零有效。
    当投入金额为 3 元(0110)减去商品金额 2 元(0010),结果为 1 元(0100),CO=1,理论上也应有效。但如果后续的找零驱动电路只对0001这个特定输出有响应,而对0100没有定义,就会导致找零失败。

💡 解决方案
要解决这个问题,需要从以下几个方面修改电路:

扩展找零面额驱动:为 1 元找零增加对应的驱动电路,将减法器输出的0100信号连接到 Q2(吐货开关)的控制端,实现 1 元硬币的找零。
优化 BCD 编码与译码:确保减法器输出的 BCD 码能被 74LS48N 译码器正确识别,并驱动数码管显示正确的找零金额。
检查与门控制逻辑:确认 U16A(74LS08D)的输入信号是否正确,确保在找零金额大于 0 时,能可靠地触发吐零动作。
r00_a2lBUR 01-19 08:53
  • 打赏
  • 举报
回复

哇, 还有进行这么底层研究的

30,773

社区成员

发帖
与我相关
我的任务
社区描述
就等你来冒个泡~
社区管理员
  • 灌水乐园
  • 社区助手
加入社区
  • 近7日
  • 近30日
  • 至今
社区公告

版主:

社区助手

 

试试用AI创作助手写篇文章吧