首页 / 资讯中心 / 文章详情

基于74LS85与74LS192的1-9层电梯数字逻辑控制方案

基于74LS85与74LS192的1-9层电梯数字逻辑控制方案 ★ FEATURED ARTICLE
简介高楼电梯自动控制系统课程设计文档面向数字逻辑、计算机与信息类专业的课程设计学生及初次接触 EDA 设计的自学者帮助其完成 1-9 层电梯控制系统的方案设计与实验验收。文档围绕乘客目标楼层与电梯当前楼层的数值比较展开给出 74LS85 四位比较器、74LS192 十进制可逆计数器、七段译码驱动器与共阴极数码管、十进制至二进制编码器等主要器件的选型与接线思路并按输入编码转换、数值比较、可逆计数三个模块说明电机正转上升、反转下降、停机开门以及门外的升降指示与呼叫开关如何实现同时附有真值表、引脚功能说明和简化逻辑图。压缩包内含 1 个 doc 文件约 719KB篇幅紧凑便于打印后对照实验台逐模块搭建与调试。目前已有 1307 人学习可作为撰写设计报告、复现电路与准备验收答辩时的参考底稿。1. 别急着画逻辑图1-9 层电梯最先要定的是谁说了算高楼电梯自动控制系统这套 1-9 层电梯的数字逻辑方案很多人第一次做都会栽在同一个地方把 74LS85 和 74LS192 直接连起来仿真波形看着挺像那么回事一上实验箱就出问题——在 5 楼按 3 楼电梯确实往下走可到了 3 楼不停一路冲到 1 楼撞限位。芯片没坏接线也没错问题出在目标楼层 A 和当前楼层 B 谁先被锁存、谁在运行途中被改写这件事从头到尾没人管。这套方案要解决的正是这个用纯组合逻辑加时序逻辑把 A、B 两个 4 位 BCD 数的比较结果稳定地翻译成三相电机的正转、反转、停机三种状态外加楼层显示和门外升降指示。它适合正在做数字逻辑课程设计、需要一份能接线、能仿真、能答辩的完整方案的人。2. 需求拆解与器件选型把五条验收要求翻译成可连接的电平课程设计给的要求就那么五条但每一条落到电路上都不一样有的是一条组合逻辑通路有的要求系统记住状态还有的其实是在考验你怎么处理边界。先把这五条逐条翻译成信号从哪来、经过什么、最后驱动什么后面的选型和接线才有依据。2.1 五条要求逐条落到信号与端口第 (1) 条往返于 1-9 层决定了计数范围是 1 到 9不是 0 到 9。这意味着 B 数的合法值域是 0001 到 1001上电初值要预置成 0001而且计数到 9 之后必须靠进位输出把再加的脉冲挡掉否则会跳到 0显示出一个不存在的0 层。第 (2) 条乘客要去的楼层数可手动输入并显示对应一条从拨码开关或按键到七段数码管的纯组合通路输入编码器 → 译码驱动器 → 数码管中间不经过任何触发器按下就显示。第 (3) 条电梯运行楼层数自动显示这条是时序通路的输出端B 数来自计数器同样接到一组译码显示上但它必须随计数脉冲实时变化。第 (4) 条是整套系统的核心也是唯一一条同时涉及组合与时序的要求AB 输出正转时序、AB 输出反转时序、AB 输出停机并开门。注意这里的措辞是输出使三相电机正转的时序信号不是输出一个高电平也就是说电机侧要的是有相位关系的多路信号而逻辑侧给出的是方向使能。通常的做法是逻辑侧只产生 up、down、stop 三个方向信号三相时序由后面的驱动级或 EDA 里的状态机生成。第 (5) 条最容易被忽略各层门外要有升降指示还要有能让电梯升降到乘客所在楼层的呼叫开关。这一条实际上把系统从一人电梯变成了多请求系统门外按钮和轿厢内按钮是两套输入必须合并成一个请求。把五条要求列成一张对照表选型和接线时对着看比在纸上画满箭头管用要求编号逻辑性质输入输出关键器件(1) 1-9 层往返时序 边界约束计数脉冲B 数 4 位74LS192(2) A 数手动输入并显示纯组合楼层选择开关A 数 4 位 数码管编码器、74LS48(3) B 数自动显示时序输出计数器输出数码管74LS48、BS201A(4) 三种运行状态组合判决 时序执行A、Bup/down/stop74LS85(5) 门外指示与呼叫组合 锁存各层按钮指示灯、请求信号门电路、锁存器2.2 为什么是 74LS85 加 74LS192 这套组合选 74LS85 的理由很直接1-9 层只需要 4 位二进制就能表示74LS85 本身就是 4 位数值比较器一片刚好够用不需要级联。它的比较原理是从最高位 A3、B3 开始逐位往下比高位一旦分出大小就直接出结果高位相等才继续比次高位全部相等才输出 AB。这种从高位到低位的串行判决正好对应楼层数的十进制直觉——十位先定大小个位再看细节。单片刻使用时级联输入端的处理是必须写进报告里的细节IAB 和 IAB 接低电平IAB 接高电平。原因是 74LS85 内部把这三个端当作更低位的比较结果参与运算如果不接成低位相等芯片会认为低位已经分出胜负输出的比较结果就永远偏向一边。这个坑在实验里非常典型接错之后表现是无论 A、B 怎么改三个输出灯只有一个亮。74LS192 的选择理由则是它同时具备加计数和减计数两个独立时钟端CPU 上升沿加一、CPD 上升沿减一正好对应电梯上升和下降两种运动。它还带异步清零 MR 和异步预置 PLPL 为低电平时可以把并行数据端 P0-P3 的值直接打进计数器这个功能在上电预置到 1 楼和故障复位两个场景里都要用。相比之下用 74LS190 之类的单时钟可逆计数器方向要靠 U/D 电平切换反而多一层逻辑。2.3 显示与输入编码别在这条支路上省器件显示部分原文用的是译码/驱动器 75LS48 加共阴极数码管 BS201A。这里要说明一下75LS48 这个型号在常见手册里查不到实际对应的就是 74LS48 这一类 BCD-七段译码驱动器共阴极输出、高电平有效内部带限流。做方案时按 74LS48 的引脚和真值表来画答辩时被问到型号直接说明这是原文标注、按 74LS48 兼容器件实现比含糊过去好。74LS48 有三个控制端容易被当成不用管LT 灯测试、RBI 灭零输入、BI/RBO 消隐。正常工作时 LT 接高、RBI 接高BI/RBO 悬空或接高。LT 拉低会让七段全亮这个特性在验收时很有用——上电先拉低 LT 看数码管有没有坏段比逐段量通断快得多。输入编码这一环原文写的是十进制至二进制普通编码器。1-9 层共 9 个按键要转成 8421 BCD常见两种做法一是用 74LS147 这类 10 线-4 线优先编码器它的输出是低电平有效后面要加一级反相器才能喂给 74LS85 和 74LS48二是用二极管矩阵手工编码每一层按键通过二极管把对应的位拉高。前者规整、便于写进报告后者省芯片但排线乱。我一般倾向 74LS147 加 74LS04 的方案原因很简单优先编码器天然处理同时按两个键的情况输出最高优先级的那个楼层不会出现多位同时为高导致的非法 BCD 码。3. 总体架构设计三层信号流与四个模块的职责划分分模块设计再合并是这类课设最稳妥的路子但分的时候要有边界意识——按功能分不按器件分。按器件分的结果是每个芯片一个小模块最后连线的时候发现模块之间全是交叉信号改一处牵动全局。3.1 三条信号流编码流、判决流、执行流整套系统可以看成三条并行的流。第一条是编码流从楼层选择开关出发经过编码器得到 4 位 BCD 的 A 数一路送去比较器一路送去译码显示。第二条是判决流A 数和 B 数进 74LS85出来三个输出经过简单门电路编成 lamp1、lamp2、lamp3 三个指示灯同时产生 up、down、stop 三个方向使能。第三条是执行流方向使能去控制 74LS192 的 CPU 或 CPD 哪个端接入时钟脉冲计数器输出 B 数回到比较器形成闭环。这个闭环是整套设计的骨架A 不变B 一步步逼近 A比较结果随之改变直到 AB 时方向使能撤掉时钟进不来计数器停住。理解了这个闭环为什么电梯会自己停就不需要额外解释它是比较器输出反馈回去的自然结果不是靠某个到位检测信号强停的。三条流画成框图时模块边界建议这样切输入编码模块楼层选择开关、74LS147、反相器输出 A 数 4 位比较判决模块74LS85、lamp 驱动门电路输入 A 数和 B 数输出三个状态灯和三个方向使能计数执行模块74LS192、时钟选择门、复位与预置电路输出 B 数显示模块两片 74LS48 加两只 BS201A分别显示 A 和 B门外指示灯的驱动也归到这里四个模块之间只有 4 位 A 数、4 位 B 数、3 个方向信号、1 个时钟这几组连线接口清爽改任何一个模块都不影响别的。3.2 时钟、复位与请求锁存补上一人电梯的缺口原文在结尾处自我检讨了一句很关键的话电梯没有设置数据寄存系统也就完全是一人电梯了。这句话点出了纯组合方案的真实短板——A 数直接来自开关运行途中手一碰开关目标楼层就变了电梯会立刻改向。产品里不可能这样课设里虽然能过验收但答辩时被追问两个人同时按不同楼层怎么办就会卡住。补这个缺口不需要推翻架构加一片 74LS273 之类的 8 位锁存器就够楼层选择开关的输出先进锁存器锁存器的时钟用确认键或启动键的上升沿按下确认才把 A 数锁进去。锁存之后开关怎么动都不影响运行直到下一次确认。这一改请求这个概念就从当前开关状态变成了已登记的目标多请求排队也就有了落脚点——用一片锁存器存轿厢请求另一片存门外呼叫比较器的 A 端做成当前最高优先级请求的选择输出。时钟源原文没写通常的做法是用 555 接成多谐振荡器频率取 1 到 5 Hz。频率太高数码管跳得看不清验收老师没法确认 B 数是一位一位变化的频率太低从 1 楼到 9 楼要等半分钟演示节奏拖沓。1 到 2 Hz 是比较好用的区间。555 的输出不能直接当 CPU 和 CPD 的时钟因为 74LS192 要求时钟边沿干净中间要过一级施密特整形比如 74LS14。复位设计要分两种。上电复位负责把 B 数预置成 0001、把锁存器清空用 RC 加施密特或者专用的复位芯片都行。手动复位负责演示时把人拉回初始状态接到 74LS192 的 MR 上。注意 MR 是高电平有效、异步的按下瞬间计数器立刻清零不依赖时钟这一点和 PL 的低电平有效正好相反两个端并排放在一起很容易接反。4. 关键模块实现比较、计数与显示的具体接法到了接线和仿真这一层细节密度陡然上升。下面按模块给出可照抄的接法和一段能在 EDA 里直接跑的核心逻辑模型前者用于实验箱实现后者用于仿真验证和写报告时的波形截图。4.1 楼层比较74LS85 的级联输入与三灯编码74LS85 的接线要点A3-A0 接目标楼层 A 数来自锁存器输出B3-B0 接当前楼层 B 数来自 74LS192 的 Q3-Q0IAB 接 GNDIAB 接 GNDIAB 接 VCC。三个输出 OAB、OAB、OAB 分别对应 lamp1、lamp3、lamp2。三灯的编码原文给得很明确上升时 lamp11、lamp20、lamp30下降时 lamp10、lamp20、lamp31停止时 lamp10、lamp21、lamp30。这三个输出直接就是比较器的三个输出端不需要额外译码这也是选 74LS85 而不是用门电路搭比较器的实惠之处。门外各层的升降指示则要把方向和当前楼层两个信息合起来某层的上升指示灯亮条件是方向为上升且电梯还没到达该层也就是 AB 且当前楼层小于该层。这个条件用与门实现每层一组9 层就是 9 组与门可以用 74LS08 拼。方向使能要加互锁up 和 down 不能同时有效。虽然比较器本身保证了三个输出互斥但后面接驱动级时如果布线引入毛刺两个方向同时导通会烧驱动管。稳妥的做法是 up 通路上串一个 down 的常闭触点用与非门实现反之亦然。这个细节在报告里写一句方向互锁防止直通答辩时是加分项。4.2 可逆计数74LS192 四个控制端的接法74LS192 的四个控制端是这套电路的执行核心接错任何一个都动不了。MR 异步清零、高有效正常运行时接低手动复位按钮按下时接高。注意它是异步的不受时钟约束按下即清所以不能拿它做到站清零——到站要停但不能清停了 B 数还得保持显示当前楼层。PL 异步预置、低有效。上电时接一个 RC 延时电路让它在通电瞬间保持低电平约几十毫秒把 P3-P0 上设好的 0001 打进计数器之后恢复高电平。这样电梯一上电就站在 1 楼不用手动初始化。CPU 加计数时钟、上升沿有效接上升时允许通过的时钟门CPD 减计数时钟、上升沿有效接下降时允许通过的时钟门。两个时钟门的实现方式把 555 的输出分别和 up、down 相与再送进对应端。关键在于未选中的那个时钟端必须保持稳定的低电平不能悬空也不能让它跟着另一个端一起跳——74LS192 内部对两个时钟端都有边沿检测悬空端拾到的干扰脉冲会被当成有效边沿表现出来就是电梯一边上升一边退一格看着像在抖。TCU 和 TCD 是进位、借位输出低有效。1-9 层这个场景里TCU 要用来做上限保护当计数到 9 时如果再来的加脉冲不挡住下一拍就变成 0。做法是把 TCU 和 up 相与后去封锁 CPU 的通路或者直接把 TCU 反相后串进 up 的使能链路。下限同理用 TCD 挡住减计数防止从 1 减到 0。核心逻辑写成 Verilog 模型放到 EDA 里跑仿真波形可以直接贴进报告// 电梯核心方向判决 1~9 层可逆计数对应 74LS85 74LS192 的组合行为 module elevator_core ( input wire clk, // 计数脉冲1~2Hz来自 555 整形后 input wire rst, // 高有效复位对应 74LS192 的 MR input wire load, // 低有效预置上电时把楼层置为 1 input wire [3:0] floor_req, // A 数目标楼层 1~98421 BCD output reg [3:0] floor_cur, // B 数当前楼层 output wire up, // 正转使能对应 lamp1 output wire down, // 反转使能对应 lamp3 output wire stop // 停机开门对应 lamp2 ); // 比较判决等价于 74LS85 在同一时钟域内的组合输出 assign up (floor_req floor_cur); assign down (floor_req floor_cur); assign stop (floor_req floor_cur); always (posedge clk or posedge rst) begin if (rst) begin floor_cur 4d1; // 复位回到 1 楼 end else if (!load) begin floor_cur 4d1; // 预置上电站在 1 楼 end else if (up floor_cur 4d9) begin floor_cur floor_cur 4d1; // 上升9 层封顶 end else if (down floor_cur 4d1) begin floor_cur floor_cur - 4d1; // 下降1 层封底 end // up 与 down 同时无效时保持等价于时钟被门电路挡住 end endmodule这段模型的作用不是替代硬件而是把比较—计数—再比较的闭环行为先验证一遍。floor_req 给 7、floor_cur 从 1 开始波形上应该看到 up 一直为高、floor_cur 每个时钟加一、到 7 时 up 落、stop 起之后保持不变。如果仿真里 floor_cur 越过 7 还在加说明比较用的是上一拍的旧值检查 assign 和 always 的时序关系。硬件实现里对应的现象是电梯冲过目标层原因同样是比较器的 A 端取样点选错了位置。4.3 显示通路74LS48 与共阴极数码管两片 74LS48 分别驱动 A 数和 B 数的数码管。A 数的输入来自锁存器输出B 数的输入来自 74LS192 的 Q3-Q0都是 4 位 8421 BCD直接对接不需要再转换。每片 74LS48 到数码管之间要串限流电阻共阴极数码管的公共端接地。限流电阻取值一般 330Ω 到 470Ω太小段电流超标、数码管发热太大亮度不够、验收时在教室灯光下看不清。BS201A 这类共阴管每段额定电流在 10mA 量级按 5V 供电、段压降 2V 算330Ω 对应约 9mA比较合适。LT、RBI、BI/RBO 三个端LT 接高或接一个测试按钮按下拉低做全段测试RBI 接高BI/RBO 悬空。如果要做高位零消隐把 A 数的高位那片的 RBI 接低、RBO 接到下一片的 RBI但这套系统只有一位数字用不上接高即可。这里有个小陷阱BI/RBO 是双向端既做输入也做输出如果误接低电平整片数码管全灭现象和数码管坏了一模一样排查时先量这个脚。4.4 从三灯到三相方向信号怎么驱动电机侧课设阶段电机通常是小功率三相异步电机或者用三个指示灯模拟三相。逻辑侧给出的是 up、down、stop 三个单端信号电机侧要的是有相位关系的三路时序中间这一层必须做隔离和放大。常见做法是三个方向信号先去驱动三极管或光耦再由光耦去推继电器或小功率 MOS最后由继电器触点按正转、反转两种相序接电机。正转时按 U-V-W 顺序接通反转时交换任意两相比如 U-W-V。相序切换必须在停机状态下进行也就是 stop 有效、电机断电之后再切继电器否则带载切换会产生电弧触点很快就烧黑。逻辑上保证这一点的方法是把 stop 信号串进继电器的使能回路同时用一个延时电路保证断电后延时 100ms 再切相序。如果只是在实验箱上用 LED 模拟三相那就简单得多用 up 和 down 去选通两组不同的 LED 组合正转时三个灯按 U-V-W 顺序依次点亮反转时按 U-W-V。这组时序可以用 74LS194 移位寄存器产生也可以用 EDA 里的状态机生成后者在仿真时更直观波形一拉就能看出相序对不对。5. 避坑与排查这套电路最容易翻车的五个点下面五条都是我在类似题目上真实踩过或者见别人踩过的按现象—原因—解决写照着顺序查能省掉大半天。5.1 上电类故障电梯不知道自己站在几楼现象通电后 B 数码管显示 0按 5 楼电梯不动三个灯全灭或者乱亮。原因74LS192 上电初态是随机的PL 预置电路没起作用或者 RC 延时太短计数器还没稳定预置完RC 就已经放到高电平了。另一个可能是 PL 的电平逻辑搞反了把低有效接成了常高。解决先量 PL 脚在上电瞬间有没有一个低脉冲宽度至少几十毫秒。RC 取 10kΩ 加 10μF时间常数 100ms配合施密特整形送进 PL。确认 B 数稳定显示 1 之后再往下查比较器。这一步做完很多电梯不动的问题会自动消失。5.2 计数类故障冲过头、来回抖、原地跳现象电梯从 1 楼去 5 楼到 5 楼不停一直冲到 9 楼撞上限或者每走一格就退回来一格数码管数字来回跳。原因一比较器的取样点接在了计数器输出经过长线之后的位置引线电容导致比较结果滞后一拍电梯总是晚一步发现到站。原因二未选中的时钟端悬空拾到干扰脉冲被当成有效边沿。原因三555 输出没整形边沿带振铃一个脉冲被数成两个。解决比较器的 B 端尽量靠近 74LS192 的输出脚取线越短越好未用的时钟端用 1kΩ 下拉到地不要悬空555 输出过一级 74LS14 整形示波器上看边沿是否干净。这三条做完来回抖基本能消掉剩下的冲过头再查 TCU 保护有没有接上。5.3 比较类故障三个灯永远只有一个亮现象不管 A、B 怎么改lamp1、lamp2、lamp3 里始终只有一个亮或者三个全亮。原因74LS85 的级联输入没处理。IAB、IAB、IAB 悬空时芯片内部把它们当成随机电平比较结果被低位比较结果覆盖输出就固定在某个状态。三个全亮则多半是输出端直接并到了一起或者 lamp 的驱动门用的是同或门接错。解决单片刻使用时IAB 和 IAB 接 GNDIAB 接 VCC这三个脚一个都不能省。接好后用万用表逐档验证A3、B5量 OAB 是否为高其余为低A5、B3 反过来A5、B5 时 OAB 为高。三档都对再往下接。5.4 显示类故障数码管缺段、全灭、显示乱码现象A 数显示正常B 数缺一段或者按下楼层后数码管全灭或者显示的不是数字而是几个乱笔画。原因缺段通常是那一段的限流电阻虚焊或者段线接错全灭先量 BI/RBO 有没有被误接低电平再量共阴管的公共端有没有接地乱码则是输入的 4 位不是合法 BCD比如编码器输出没加反相低有效当成了高有效。解决先拉低 LT 做全段测试八段全亮说明数码管和限流电阻没问题故障在前级译码或输入某段不亮就盯那一段的线和电阻。输入侧用万用表量 4 位 BCD 码按 3 楼时应该是 0011如果量出来是 1100就是反相器漏了。5.5 逻辑类故障两个人同时按电梯听谁的现象A 数开关还插在电路上运行途中手碰一下开关电梯立刻改向或者轿厢和门外同时有请求系统只认其中一个。原因A 数没有锁存直接来自开关属于当前状态而不是已登记请求。原文提到的没有数据寄存系统完全是一人电梯说的就是这个。解决加一片 74LS273开关输出先进锁存器确认键的上升沿作为锁存时钟比较器只读锁存器输出。多请求的处理稍复杂简单版本可以先做后按覆盖先按答辩时说明完整的多请求排队需要增加优先编码和请求队列比硬说支持多人要诚实也更像做过工程的人说的话。6. 验收与答辩一份能撑住追问的演示脚本验收现场最怕的不是电路有毛病而是自己说不清电路为什么这么接。我一般会提前写一份三分钟的演示脚本按顺序走一遍每一步都对应一条验收要求老师问什么都能落回脚本里。脚本大致是这样上电指着 B 数码管说系统预置在 1 楼这是第 (1) 条 1-9 层往返的初始状态拨到 5 楼指着 A 数码管说目标楼层手动输入并显示对应第 (2) 条按启动让电梯一格一格往上走指着 B 数码管说运行楼层自动显示第 (3) 条走到 5 楼停住指 lamp2停止并开门再拨到 2 楼走一遍下降指 lamp3 和 lamp1。全程不超过三分钟五条要求全覆盖。被追问时最常出现的三个问题和应答方向追问应答要点为什么用 74LS85 不用门电路搭4 位比较需要多级门器件数和布线量都大集成比较器还带级联端可扩展两个人同时按不同楼层怎么办承认当前是单请求版本说明加锁存器和优先编码的改造路径电梯怎么知道到站了不是靠到位检测是 AB 时比较器输出 stop时钟被门电路挡住计数器自然停最后说一个习惯。第一次做这类课设我图省事把比较器的级联端空着仿真波形看着没问题一上实验箱三个灯就固定亮一个查了整整一个下午才发现是 IAB 没接高。从那以后我每次画完原理图都会拿一张纸把每个芯片的必须处理的输入脚单独列一遍——悬空会出事的、要接固定电平的、要上拉下拉的一个一个打勾全部勾完才动手接线。这个笨办法后来在好几门课设里救过我。希望帮到你。这套方案的原理图、接线表、Verilog 仿真模型和演示脚本我都整理在一起了需要拿去改一改就能用的可以按文末的方式获取。本文还有配套的精品资源点击获取
阅读完成 · 觉得有帮助?
咨询建站