用74LS90芯片搭一个电子钟:我的大学课设复盘,附Proteus仿真文件
2026/6/24 3:11:34 网站建设 项目流程

用74LS90芯片搭一个电子钟:我的大学课设复盘,附Proteus仿真文件

记得大三那年数字电路课设,导师扔给我们几个芯片型号说"选一个做电子钟"。在一堆陌生的型号里,74LS90这个其貌不扬的异步计数器引起了我的注意——它既不像单片机那样"全能",也不像FPGA那么"高级",但正是这种需要手动搭建计数逻辑的原始感,让我决定挑战用纯数字电路实现时钟功能。现在回想起来,那些和毛刺信号搏斗的深夜、在面包板上反复调整的连线,才是真正让我理解数字电路精髓的宝贵经历。

1. 芯片手册里的秘密:74LS90的两种计数模式

翻开泛黄的74LS90数据手册,第3页的功能表突然让一切变得清晰:

输入引脚输出状态工作模式
R0(1)=R0(2)=1QD~QA=0000异步清零
R9(1)=R9(2)=1QD~QA=1001异步置9
其他组合正常计数二进制/五进制

这个看似简单的TTL芯片藏着两个独立的计数单元:

  • 二进制计数器:由CLKA驱动QA(1位)
  • 五进制计数器:由CLKB驱动QB-QD(3位)

当我把QA输出连接到CLKB输入时,神奇的事情发生了——芯片变成了标准的BCD十进制计数器。这个发现成为整个设计的基石,因为电子钟需要的60进制和24进制都可以基于十进制组合实现。

提示:实际接线时发现,若R0/R9端悬空会产生随机清零,必须通过10kΩ电阻下拉到GND。

2. 从十进制到六十进制:秒计数器的诞生

2.1 个位计数器的魔法改造

第一块74LS90配置为标准十进制:

; Proteus连接示例 U1:74LS90 CLKA = 1Hz_clock ; 秒脉冲输入 QA = U1:CLKB ; 内部级联 R01 = GND ; 禁用清零 R02 = GND R91 = GND ; 禁用置9 R92 = GND

2.2 十位计数器的六进制妙招

第二块芯片需要改造成六进制。利用异步清零特性,当输出QDQCQBQA=0110(十进制6)时:

  1. 将QC(引脚8)和QB(引脚9)分别连接到R0(1)和R0(2)
  2. 0110状态会立即触发清零
  3. 形成0-5的循环计数
# 六进制计数序列模拟 def six_counter(): state = 0 while True: binary = format(state, '04b') if binary == '0110': # 检测到6 print("Clearing...") state = 0 else: print(f"Count: {state} → {binary}") state += 1

2.3 级联的艺术:进位信号生成

当秒个位从9跳变到0时,QD会产生一个下降沿。将这个信号作为十位的时钟输入,就完成了十进制到六进制的转换。但真正的挑战在于向分钟进位——需要在59秒时产生一个上升沿:

  1. 59秒时各引脚状态:
    • 十位:0101 (QC=1, QA=1)
    • 个位:1001 (QD=1, QA=1)
  2. 使用74LS08与门芯片:
    • 十位的QC和QA相与
    • 个位的QD和QA相与
    • 两个结果再相与输出进位脉冲

3. 二十四进制的陷阱与突围

3.1 非常规接法带来的惊喜

按照教材标准做法,时计数器应该用两片74LS90组成24进制。但实际调试时发现:

问题现象

  • 当计数到24时,十位显示"2"(0010),个位显示"4"(0100)
  • 传统清零方案要求检测QB=1和QC=1
  • 但实际电路存在ns级的清零延迟,导致显示器闪烁

解决方案

  1. 改用检测23→24过渡:
    • 23时状态:十位=0010,个位=0011
    • 利用74LS20四输入与非门检测特定位组合
  2. 增加0.1μF电容消除毛刺:
    U5:74LS20 A = U3:QB ; 十位QB B = U3:QC C = U4:QC ; 个位QC D = U4:QD Y = [清零点网络]

3.2 校准电路的实用设计

课设要求的校准功能通过三个策略实现:

  1. 分频加速

    • 正常模式:1Hz时钟
    • 校时模式:10Hz快速脉冲(由555定时器产生)
  2. 模式切换电路

    [时钟源] → [74LS157四路选择器] │ ├─[正常计数通道] └─[校准通道]
  3. 防抖处理

    • 所有按钮串联104电容
    • 采用74LS14施密特触发器整形

4. Proteus仿真中的那些坑

仿真文件虽然能验证逻辑正确性,但有些问题只有实物调试才会暴露:

4.1 典型问题对照表

现象仿真表现实物表现解决方案
进位信号不稳正常LED闪烁增加74LS74锁存
24→00跳变异常准确清零偶尔显示25调整清零网络RC常数
校时按钮失灵完美响应需要长按改用74LS123单稳态电路

4.2 必须检查的仿真参数

  1. TTL阈值设置

    [菜单] → Edit Properties → Advanced Properties TTL Logic 1 Minimum = 2.0V TTL Logic 0 Maximum = 0.8V
  2. 传输延迟

    • 74LS系列典型值:15ns
    • 在高速时钟下必须启用"Real Time Simulation"
  3. 电源去耦

    VCC = 5V ±10% 每片IC的VCC-GND间放置100nF电容

5. 课设升级:那些教科书没讲的事

5.1 整点报时功能魔改

在原电路基础上增加:

  1. 59分50秒开始鸣响
  2. 利用74LS90的置9功能(R9引脚)产生特殊音调:
    U6:74LS90 R91 = [59分检测信号] R92 = [50秒检测信号] QD = [蜂鸣器驱动电路]

5.2 12小时制改造技巧

将24进制改为12进制只需两处改动:

  1. 检测状态从24改为12:
    • 十位=0001(QB=0, QC=0)
    • 个位=0010(QC=1)
  2. 增加AM/PM指示:
    • 用74LS74组成T触发器
    • LED亮表示PM,灭表示AM

仿真文件使用指南

压缩包内包含:

  • Clock_DSN:主仿真文件
  • Library:自定义元件库
  • Test_Results:各模块测试波形

关键操作步骤:

  1. 先运行Frequency_Test验证1Hz基准
  2. 单独测试秒/分/时计数器模块
  3. 最后进行系统联调

那些在实验室熬过的夜,最终都变成了示波器上稳定的方波。当第一个完整的23:59:59→00:00:00跳变出现在我面前时,突然理解了数字电路的浪漫——用最原始的与或非门,构建出精确流逝的时间计量。这份Proteus仿真文件里,保存的不仅是可运行的电路,更是一段与逻辑门对话的青春记忆。

需要专业的网站建设服务?

联系我们获取免费的网站建设咨询和方案报价,让我们帮助您实现业务目标

立即咨询