74ls160输出0-99
时间: 2024-06-15 08:08:36 浏览: 15
74LS160是一种4位二进制同步计数器,可以用来输出0到99的数字。它有四个并行加载输入(P0、P1、P2、P3),一个异步清零输入(CLR),一个时钟输入(CLK),以及四个输出(Q0、Q1、Q2、Q3)。
要实现输出0到99的功能,可以按照以下步骤进行设置:
1. 将CLR输入保持为高电平,以禁用异步清零功能。
2. 将P0、P1、P2、P3输入设置为二进制数0。
3. 使用一个时钟信号来驱动CLK输入。每个时钟脉冲的上升沿将使计数器加1。
4. 通过读取Q0、Q1、Q2、Q3输出,可以获取计数器的当前值。
需要注意的是,74LS160是一个4位计数器,所以它的最大计数值是15(二进制1111)。为了实现输出0到99,需要使用两个74LS160并联,其中一个计数器负责个位数,另一个计数器负责十位数。通过适当的逻辑电路将两个计数器的输出组合起来,就可以得到0到99的输出。
相关问题
74LS160为什么有D0-D7
74LS160是一个4位同步计数器,它有4个输出引脚Q0、Q1、Q2、Q3,表示计数器的4个二进制位。同时,74LS160还有4个输入引脚D0、D1、D2、D3,用于在计数器工作时输入数据。
在74LS160计数器工作时,输入数据可以被加载到计数器的寄存器中,然后根据时钟信号进行计数。当计数器计数到特定的值时,输出引脚会发生变化,以表示当前计数器的状态。因此,输入引脚D0-D3可以用于预设计数器的初始值,或者在计数器工作时进行数据输入,以改变计数器的计数值。
总的来说,74LS160的D0-D3输入引脚是为了提供输入数据的功能,以便在计数器工作时预设计数器初始值或者改变计数器的计数值。
74LS139 0-9按键计数器
74LS139是一款二选一多路复用器,一般用于选通二个输入信号之一并输入到输出端,也可用于实现简单的逻辑运算。
要实现0-9按键计数器,需要将9个按键分别连接到74LS139的输入端口(A0~A7),将74LS139的输出端口(Y0~Y3)连接到4个JK触发器(如74LS76),将JK触发器的输出端口连接到数码管显示模块。
当按下任意一个按键,相应的输入端口会被拉低,74LS139会选通对应的输出端口,从而使相应的JK触发器触发并计数。当计数器达到9时,重新计数。
代码实现:
由于74LS139的输入端口具有反向特性,需要将按钮按下时的输入信号反向处理(例如通过反向拍扫或使用反向器)。
int btn [] = {5, 6, 7, 8, 9, 10, 11, 12, 13}; // 9个按键引脚
int out [] = {2, 3, 4, A0}; // 74LS139的Y0~Y3引脚
int jk [] = {A1, A2, A3, A4}; // JK触发器的J、K引脚
int num [4] = {0, 0, 0 , 0}; // 计数器
void setup () {
for (int i = 0; i < 9; i ++) {
pinMode (btn [i], INPUT);
}
for (int i = 0; i < 4; i ++) {
pinMode (out [i], OUTPUT);
digitalWrite (out [i], HIGH);
pinMode (jk [i], OUTPUT);
}
}
void loop () {
for (int i = 0; i < 9; i ++) {
if (digitalRead (btn [i]) == LOW) { // 如果发现按键按下
digitalWrite (out [i / 2], ~i & 1); // 设置74LS139的A0和A1引脚
digitalWrite (out [i / 2 + 2], i & 1); // 设置74LS139的A2和A3引脚
digitalWrite (jk [i / 2], LOW); // 清零JK触发器的J、K
digitalWrite (jk [i / 2], HIGH); // 设置JK触发器的J、K
num [i / 2] ++; // 计数器加1
if (num [i / 2] > 9) { // 超过9回到0
num [i / 2] = 0;
}
}
}
for (int i = 0; i < 4; i ++) {
digitalWrite (out [i], HIGH); // 禁用74LS139的输入
digitalWrite (jk [i], HIGH); // 禁用JK触发器的J、K
}
display (); // 显示计数器的值
}
void display () {
byte seg [] = { // 数码管显示的段选信号
B11000000, B11111001, B10100100, B10110000,
B10011001, B10010010, B10000010, B11111000,
B10000000, B10010000
};
for (int i = 0; i < 4; i ++) {
digitalWrite (jk [i], LOW); // 清零JK触发器的J、K
digitalWrite (jk [i], HIGH); // 设置JK触发器的J、K
digitalWrite (out [i], HIGH); // 禁用74LS139的输入
digitalWrite (out [i], LOW); // 选择对应的数码管
digitalWrite (A5, LOW); // 共阳极数码管选择
digitalWrite (A6, HIGH);
digitalWrite (A7, HIGH); // 高电平清零计数器
for (int j = 0; j < 10; j ++) { // 通过循环切换段选信号
digitalWrite (A0, ~j & 1);
digitalWrite (A1, j & 1);
PORTD = seg [num [i]]; // 设置端口D的输出
delay (50); // 延迟以供数码管刷新
}
digitalWrite (A0, LOW); // 禁止74LS139输出
digitalWrite (A1, LOW);
digitalWrite (out [i], HIGH); // 禁用数码管
}
}
以上代码仅供参考,实际应用中可能需要根据具体的硬件配置进行修改。
相关推荐
![docx](https://img-home.csdnimg.cn/images/20210720083331.png)
![pdf](https://img-home.csdnimg.cn/images/20210720083512.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)
![](https://csdnimg.cn/download_wenku/file_type_ask_c1.png)