FEATURED · 精选文章

病床呼叫系统课程设计:74HC148优先编码与锁存显示实战

发布时间 / 2026/9/19 14:03:35
来源 / 创域科博编辑部
栏目 / 资讯中心
病床呼叫系统课程设计:74HC148优先编码与锁存显示实战 简介这份数电课程设计报告以病床呼叫系统为题目面向正在完成数字电子技术课程设计的高校学生能够为设计任务拆解、方案论证、电路搭建和报告撰写提供完整参照。报告围绕五个病房呼叫输入的优先级控制、数码管显示最高优先级、LED灯持续五秒闪烁模拟呼叫以及护士复位清零等核心需求展开将系统分为触发清零模块、编码与译码模块、优先级处理模块、计数报警模块和显示模块逐项给出单元电路设计思路并配有总体电路原理图、完整元器件清单、仿真结果分析、功能测试方案和实物照片帮助读者从需求落实到实际硬件。内容还具体讲解了优先编码器、译码驱动器、D触发器和定时器电路的选型、连接与调试要点以及高低优先级同时触发时的处理逻辑便于理解数字电路从理论到实物的转化过程。资源包为一个doc文档压缩包共一个文件整体容量约四百七十五KB目前已有112人学习下载适合作为数字电子技术课程设计报告结构安排、电路设计以及验收答辩准备的参考模板。1. 病床呼叫系统不是开关并联先弄清楚优先级由谁决定病床呼叫系统这个题目第一眼像一堆开关并联床头按键一按护士站灯亮。真正动手做数电课程设计就会发现核心不是灯亮不亮而是三个逻辑问题多个床同时按下时谁优先病人松开按键后信息怎么保留编码器输出怎么变成数码管上的床号。这一串动作要求组合逻辑和时序逻辑同时参与。下面按一条完整的信号链路来写8 路按键经过 74HC148 优先编码锁存器保持结果译码器驱动数码管三极管推动蜂鸣器再补上 Proteus 仿真波形验证、Verilog 重写和实物调试验证。适合正在写病床呼叫系统课程设计报告的人也适合想用一个小题目复习数电知识点的读者。2. 从 8 路按键到两位床号数电编码、锁存与译码的原理拆解2.1 8 路输入的优先级策略固定优先还是扫查轮询开始设计之前先把需求定义清楚。常见的病房呼叫系统有 8 个床位每个床头一个按键护士站需要显示床号、亮灯并响铃还要有一个“应答/清除”按键。多数人第一反应是“谁先按就显示谁”这个要求在纯数字电路里并不好做因为它需要记录时间先后属于时序状态机的范畴要加时钟、计数器或者移位寄存器。课程设计里最容易落地的是固定优先级策略编号大的床或者距离护士站最近的床优先。比如 74HC148 内部已经规定 I7 优先级最高、I0 优先级最低那么只要把床号映射到对应输入端多床同时呼叫时自然只编码最高那一路。不要小看这一步写报告时把“为什么选固定优先而不是扫查轮询”讲清楚比堆电路图更拿分。提示如果连手头的数电课本电子版都还没细看优先翻“优先编码器”“七段译码器”“D 触发器”三节这个项目基本就是这三章的组合应用。2.2 用真值表推出 74HC148 的输出逻辑74HC148 是 8 线-3 线优先编码器输入和输出都是低有效。输入 I0~I7 默认通过上拉电阻接高电平按键按下后接地变成 0输出 A2、A1、A0 是编码结果但要注意它输出的是反码。真值表如下有效输入低有效其余为 1A2 A1 A0GSEO含义无输入I0~I7 全 11 1 110无呼叫I0 01 1 1010 号床呼叫I1 01 1 0011 号床呼叫I2 01 0 1012 号床呼叫I3 01 0 0013 号床呼叫I4 00 1 1014 号床呼叫I5 00 1 0015 号床呼叫I6 00 0 1016 号床呼叫I7 00 0 0017 号床呼叫优先级最高这里有一个最容易被忽略的坑无输入时输出也是 111和 I0 按下时一样所以不能只靠 A2A1A0 判断有没有人呼叫必须把 GS 信号一起读出来。GS 为低表示“有有效编码输入”这个信号后面要接到锁存器使能端和报警电路上。如果用行为级 Verilog 描述同等逻辑可以写成下面这段输出为正码床号module bed_encoder_8( input [7:0] key_n, // 按键按下为 0 output reg [2:0] bed // 输出正码床号 0~7 ); always (*) begin if (~key_n[7]) bed 3d7; else if (~key_n[6]) bed 3d6; else if (~key_n[5]) bed 3d5; else if (~key_n[4]) bed 3d4; else if (~key_n[3]) bed 3d3; else if (~key_n[2]) bed 3d2; else if (~key_n[1]) bed 3d1; else if (~key_n[0]) bed 3d0; else bed 3d0; end endmodule这段代码用 if-else 树表达了优先级关系key_n[7] 最高、key_n[0] 最低。它和 74HC148 的优先规则一致但 bed 是正码真正用 74HC148 芯片时A2A1A0 是反码I7 按下输出 000I0 按下输出 111。如果直接把反码接到 74HC48 这类高有效 BCD 译码器上显示结果会整体反掉。2.3 锁存环节编码器后面的触发器解决“按键被抢占”问题如果编码器输出直接连数码管病人一松手输入恢复高电平编码输出跟着变回 111床号立刻消失。护士可能还没来得及看清是几床这就是必须加锁存器的原因。常见做法是在编码器和译码器之间插入 74HC573 八路透明锁存器或者 74HC374 八路 D 触发器。74HC573 是电平锁存LE 为高时输出跟随输入LE 变低后保持。74HC148 的 GS 在无呼叫时为高、有呼叫时为低所以要把 GS 反相后接到 LE有人按下时 LE 变高编码结果送入锁存器按键松开后 GS 回到高反相后 LE 变低输出保持住刚才的床号。如果需要护士“应答清除”更好的做法是把每一路按键信号先送进 D 触发器形成一个 8 位请求寄存器每位对应一张床。护士按下应答键时给一个清除脉冲把所有请求位清零同时锁存器也清空。这样系统就从“显示最后一次呼叫”升级成“保存所有未处理的呼叫”但从课程设计角度74HC573 加一个复位按钮已经足够说明时序逻辑的作用。提示74HC573 的 LE 是“高电平透明”不是上升沿触发。仿真时如果发现按键按住时显示正常、松开后还是变化先查 LE 信号极性十有八九是 GS 没有反相。2.4 译码显示与声光提醒74HC48 和蜂鸣器驱动的参数点显示部分有两套方案取决于编码器输出极性方案译码器数码管与 74HC148 反码的适配方案一74HC48 或 CD4511共阴数码管不适配中间需加 74LS04 反相器方案二74HC47 或 74LS47共阳数码管可直接连接 A2A1A0省掉反相器方案二更干净因为 74HC47 的 BCD 输入本身就是低有效74HC148 输出的反码正好对应。写报告时把这一条写进“芯片选型理由”比单纯列器件清单更有说服力。报警电路要单独说。逻辑门的输出驱动能力只有几毫安直接接蜂鸣器既不够响还可能因反电动势损坏芯片。常见做法是用 S8050 或 9013 三极管做开关基极串 1kΩ~4.7kΩ 电阻接 GS 信号集电极接有源蜂鸣器负极发射极接地蜂鸣器正极接 5V。注意有源蜂鸣器内部带振荡源通电就响不需要外部频率信号无源蜂鸣器才需要方波驱动别买反。3. 硬件搭建面包板上按模块接线74HC148 级联与限流参数3.1 模块清单和选型先按“输入-编码-锁存-显示”分块画原理图之前先把模块分清楚每一块对应一个功能后面接线和写报告都方便。参考清单如下模块推荐型号关键参数或替代方案输入按键轻触开关 × 8常开按下导通到地上拉电阻10kΩ × 8保证空闲时输入为高优先编码器74HC148也可用 74HC147但那是 10 线-4 线 BCD 编码锁存器74HC573电平透明锁存换 74HC374 则改为上升沿触发译码器74HC47 / 74LS47共阳数码管配套共阴则选 74HC48数码管共阳 7 段 × 1~2单管可显示 0~9两管可显示 00~19声光提醒S8050 有源蜂鸣器 LED基极电阻 1kΩLED 限流 330Ω如果床位数超过 8比如 16 床可以两片 74HC148 级联优先级的片子 EO 接到次级的 EI两片 GS 再经过一个或门汇总。这样最高位由优先片产生低三位由当前生效的那一片产生。3.2 74HC148 接线细节EI、GS、EO 的低有效逻辑74HC148 有 16 个引脚最容易接错的是三个控制端。EI 是使能端低有效平时直接接地GS 输出低表示有输入EO 在无有效输入时输出低常用于级联。按键部分用上拉电阻默认接高按键另一端接地按下才拉低。74HC148 引脚连接到说明I0 ~ I7按键与 10kΩ 上拉电阻节点按下为低空闲为高EIGND低有效使能始终允许编码A0 ~ A2锁存器 D0 ~ D2 或 74HC47 输入输出反码别接反GS反相器 → 锁存器 LE同时接蜂鸣器控制低表示有呼叫EO级联时接下一片 EI不级联悬空无输入时输出低锁存器一侧74HC573 的 OE 是输出使能低有效直接接地LE 接 GS 反相信号。74HC148 的 GS 为低时反相后 LE 为高锁存器跟随GS 回到高LE 变低床号被保持。这里务必用万用表确认 74HC148 输出在“无输入”时确实全部为高否则后面查错会绕圈子。3.3 面包板接线顺序先电源再输入最后接显示和报警面包板接线最忌讳乱飞线。我一般按下面顺序走每接完一个模块就通电测一次不要全部接完再上电。先把面包板上下两条电源轨分别接 5V 和 GND用万用表确认没有短路再给每个 IC 的 VCC 和 GND 就近接好。这一步出错后面所有信号都是虚的。接 74HC148EI 接地I0~I7 各接一个 10kΩ 上拉电阻到 VCC按键一端接输入节点、另一端接地。先不接输出直接按不同按键用万用表或逻辑笔量 A0~A2 和 GS 的变化。接锁存器 74HC573数据输入 D0~D2 接 A0~A2LE 串反相器后接 GSOE 接地。此时显示部分还没接先量 Q0~Q2 是否在按键松开后保持。接译码器和数码管如果是 74HC47 配共阳数码管公共端接 VCC段码输出经限流电阻后接数码管各段。最后接 LED 和蜂鸣器确认报警由 GS 低电平触发。3.4 数码管 LED 限流电阻怎么算用 5V 系统举一个数字例子限流电阻不是随便选计算依据是欧姆定律。红色 LED 和红色数码管单段的正向压降大约 1.8V~2.0V工作电流取 5mA~15mA。以 5V 供电为例用下面的脚本算一下VCC 5.0 VF_LED 2.0 # 红色 LED 正向压降单位 V IF_LED 0.010 # 目标电流 10mA R_LED (VCC - VF_LED) / IF_LED print(fLED 限流电阻: {R_LED:.0f} Ω取标准值 330 Ω) VF_SEG 1.8 # 数码管单段压降 IF_SEG 0.015 # 段电流 15mA R_SEG (VCC - VF_SEG) / IF_SEG print(f数码管段电阻: {R_SEG:.0f} Ω取标准值 220 Ω) # 蜂鸣器基极电阻估算 VBE 0.7 IB 0.005 # 基极电流 5mA保证饱和导通 RB (VCC - VBE) / IB print(f三极管基极电阻: {RB:.0f} Ω取 1kΩ)参数说明VCC 取 5VLED 电流取 10mA 是因为指示用 5mA 也很亮取太小会发暗数码管段电流 15mA 是为了在远距离或者光线强时仍能看清。计算结果是 320Ω 和 213Ω实际买不到就取最近的标称值 330Ω 和 220Ω。共阳数码管公共端接 VCC共阴数码管公共端接地不要搞混每段都要单独串电阻不能只在公共端串一个。4. Proteus 仿真先跑通逻辑波形的三个关键检查点4.1 最小仿真电路与探针配置从原理图到逻辑分析仪硬件搭板之前先在 Proteus 里跑一遍会省很多事。新建工程后从元件库依次放置 74HC148、74HC573、74LS47、7SEG-COM-ANODE、BUZZER、BUTTON 和 RESISTOR按第 3 章接线表连接。电源默认是 5V不用额外设置。为了验证编码逻辑在 A0、A1、A2 和 GS 上各放一个 Logic Probe运行仿真后逐路按下按键观察探针颜色变化。如果想看时序关系可以给这几个节点接 Logic Analyzer。仿真波形记录的是高低电平不会告诉你好坏所以要用真值表做断言。下面这段 Python 脚本可以帮你核对从仿真里读到的数值expected { 0b11111111: (0b111, 1, 0), # 无按键: A111, GS1, EO0 0b11111110: (0b111, 0, 1), # I0 按下 0b11111101: (0b110, 0, 1), # I1 按下 0b11111011: (0b101, 0, 1), # I2 按下 0b11110111: (0b100, 0, 1), # I3 按下 0b11101111: (0b011, 0, 1), # I4 按下 0b11011111: (0b010, 0, 1), # I5 按下 0b10111111: (0b001, 0, 1), # I6 按下 0b01111111: (0b000, 0, 1), # I7 按下 } observed [ (0b11111111, 0b111, 1, 0), (0b11110111, 0b100, 0, 1), (0b01111111, 0b000, 0, 1), ] for key_n, a, gs, eo in observed: exp_a, exp_gs, exp_eo expected[key_n] assert (a, gs, eo) (exp_a, exp_gs, exp_eo), \ fkey_n{key_n:08b} 不符期望 A{exp_a:03b}, 实测 A{a:03b} print(真值表校验通过)代码里的 expected 字典直接对应 74HC148 数据手册真值表observed 列表是你从仿真探针或者逻辑分析仪上读到的状态。把仿真结果填进去跑一遍能快速定位“输入线接错”和“编码器型号选错”两类问题。4.2 三个关键波形场景单床、双床同时、按键释放后锁存仿真不能只测一路至少要覆盖三个场景下面用表格列出操作、预期和检查点场景操作步骤预期现象检查节点单床呼叫按下 I3保持 1 秒后松开A2A1A0 变为 100GS 拉低松开后 GS 回高锁存输出不变A0~A2、GS、锁存器 Q0~Q2双床同时呼叫同时按下 I1 和 I5编码结果显示 5因为 I5 优先级高于 I1A0~A2、GS松开后显示保持按下 I6松开观察数码管松手后数码管仍显示 6锁存器输出、数码管段位双床同时呼叫是这道题最关键的验证点。74HC148 的优先级是 I7 I6 I5 I4 I3 I2 I1 I0所以 I1 和 I5 同时按下时A2A1A0 应输出 010 的反码对应的编码值即 5。如果显示成 1说明优先逻辑没生效检查是不是把输入端的线序接反了。4.3 仿真不亮的排查表从电平有效到共阴共阳仿真里出现“不亮”不一定是你电路错了先按下面的表排查现象可能原因处理方法数码管完全不亮共阴共阳选错或译码器型号不匹配共阳数码管配 74HC47共阴配 74HC48按下任何键都显示同一个数74HC148 反码没有处理检查 A0~A2 到译码器之间是否有反相器或正确型号松开按键后显示消失锁存器 LE 信号极性不对GS 需反相后再接 74HC573 的 LE蜂鸣器不响有源无源选错或三极管极性反有源蜂鸣器直接通电测试基极加 1kΩ 电阻双床同时按下显示低编号把优级序方向理解反了74HC148 是编号大优先需求若要求小号优先需在输入侧交换线序排查的顺序是从信号源往负载走先确认按键按下时编码器输入端确实是低再看编码器输出有没有随按键变化最后检查锁存器和译码器。仿真最大的优势是节点可以直接看逻辑电平比实物用万用表一处处点要快得多。5. 把课设做成能自证的设计文档组织、HDL 重写和调试顺序5.1 报告里的逻辑推导怎么写才能拿分课程设计报告不是把 Proteus 截图贴满就完事。老师最看重的是“设计过程能不能追回来”所以每一章都要对应一份可复现的依据先写需求表说明 8 个床位、按钮低有效、护士站显示床号并声光提醒再抄 74HC148 真值表标出你选择这一片的原因然后是系统框图按照“输入→编码→锁存→译码→显示/报警”五段画。卡诺图化简不一定需要但如果你用离散门电路搭必须写出逻辑表达式。仿真波形截图要有时间轴和按键状态注释实物照片要拍清芯片型号和接线最后附排查过程比如“第一次显示反码原因是 148 输出低有效”。这样的报告哪怕电路做得一般也比光有原理图的版本高一个档次。5.2 从 74HC148 到 Verilog8 路优先编码的第二套实现如果学校允许用 FPGA或者你想在报告中体现 HDL 能力可以用一段很短的代码替代 74HC148 加锁存器的组合module bed_call_8( input [7:0] key_n, // 按键按下为 0 output reg [2:0] bed, // 正码床号 output wire alarm // 高有效报警 ); always (*) begin if (~key_n[7]) bed 3d7; else if (~key_n[6]) bed 3d6; else if (~key_n[5]) bed 3d5; else if (~key_n[4]) bed 3d4; else if (~key_n[3]) bed 3d3; else if (~key_n[2]) bed 3d2; else if (~key_n[1]) bed 3d1; else if (~key_n[0]) bed 3d0; else bed 3d0; end assign alarm (key_n ! 8hFF); endmodule这段代码用 if-else 树描述优先级综合后得到的就是一个纯组合逻辑优先编码器。key_n 低有效alarm 在有任意一路按下时拉高。如果要加锁存把 bed 改成 always (posedge clk) 或配合清屏信号即可。这里不展开状态机因为纯数电课设的核心还是 74HC148 那片芯片。5.3 用“先测电源、再测输入、最后报警”的顺序做实物验证实物调试和仿真最大的区别是接触不良和电源噪声。接完板子不要急着按按键先用万用表测 VCC 和 GND 之间有没有短路确认每个 IC 的电源脚都有 5V。接着把某一根输入线直接接地模拟按键按下量编码器输出和 GS确认基本逻辑通再插按键。数码管乱码时先把译码器输入端用跳线手动设置成 0000~1001确认显示本身没问题再往回查编码器。蜂鸣器响铃时如果发现数码管变暗是电源被拉低在蜂鸣器两端并一个 104 电容或者把基极电阻从 1kΩ 加大到 4.7kΩ。如果只能记住一条调试技巧记住先测 I3 或者 I7 这种中间和最高优先级的床号它能同时暴露编码、译码和锁存三个方向的错位从这一路通了再扩展其他床比从 0 号床开始逐个试要省一半时间。本文还有配套的精品资源点击获取
RELATED — 相关阅读

相关资讯

LATEST — 最新资讯

最新发布

TODAY — 本日精选

新闻

WEEKLY — 本周精选

新闻

MONTHLY — 本月精选

新闻