baiyeser 2024-06-13 13:28 采纳率: 0%
浏览 5

我的数码管怎么了🥹-60位计数器

实验报告要求在一片四位数码管上实现0-59的计数
如图是我链接的proteus模拟电路图
我的74ls157和数码管位选连接的是一个频率极高的clock (想要实现扫描,使得个位和十位可以同时显示)
也不知道我这样连是否正确
但是💔运行的结果是这样子的 甚至连个正常的数都没法显示

img

img


help help🥹

  • 写回答

3条回答 默认 最新

  • 专家-赤兔[在线] 优质创作者: 编程框架技术领域 2024-06-13 13:28
    关注

    引自免费微信小程序:皆我百晓生

    从描述来看,遇到的主要问题是无法在四位数码管上正确显示0至59的计数结果。根据提供的信息,包括使用的74LS157多路选择器和74LS48 BCD到7段译码器,以及74LS160双十进制计数器,下面将提供一种可能的解决方案。

    步骤一:理解电路设计

    • 74LS160: 用于产生0-9的BCD计数。
    • 74LS157: 用于切换不同的数码管。
    • 74LS48: 将BCD转换为7段显示信号。

    步骤二:检查并修正电路连接

    确保74LS157的输出正确连接到数码管的输入端,并且选择信号(A0, A1)正确控制哪个数码管被激活。同时,确认74LS160的输出与74LS48的输入正确连接,以便将BCD计数转换为7段显示信号。

    步骤三:时钟信号调整

    提到使用了一个频率极高的时钟来实现扫描效果。实际上,对于扫描显示,时钟频率应该足够高以确保视觉上的连续性,但也不应过高以免引起不稳定。通常,几kHz至几十kHz的频率足以满足需求。

    步骤四:编写控制逻辑

    为了实现0-59的计数,可以使用两个74LS160计数器,一个用于个位,另一个用于十位。当个位计数器达到9时,它应触发十位计数器加1。此外,当十位计数器达到6时,整个计数器应重置为0。

    步骤五:示例代码

    由于描述中未提及具体的编程环境或微控制器,这里提供一个基于上述逻辑的概念性描述:

    # 假设这是一个伪代码表示的控制逻辑
    class Counter:
        def __init__(self):
            self.tens = 0  # 十位计数器
            self.units = 0  # 个位计数器
    
        def increment(self):
            self.units += 1
            if self.units > 9:
                self.units = 0
                self.tens += 1
            if self.tens > 5:
                self.tens = 0
    
        def display(self):
            # 假设这里有将self.tens和self.units转换成7段显示信号的代码
            pass
    
    counter = Counter()
    while True:
        counter.increment()
        counter.display()
    

    步骤六:验证和调试

    使用Proteus或其他仿真软件进行电路的模拟测试,确保所有元件工作正常,没有短路或断路情况。观察计数器的输出,确保它们正确地从0到59循环。

    如果以上步骤仍然未能解决问题,建议检查电路图中的每个元件连接,特别是时钟信号和控制信号的连接,确保它们符合预期的设计。同时,检查电源和接地连接是否正确,这是常见错误之一。

    希望这些建议能帮助解决当前的问题。如果还有其他具体疑问,欢迎继续提问。

    评论 编辑记录

报告相同问题?

问题事件

  • 创建了问题 6月13日