CD74HC4067高速CMOS16通道模拟多路复用器实践

这篇具有很好参考价值的文章主要介绍了CD74HC4067高速CMOS16通道模拟多路复用器实践。希望对大家有所帮助。如果存在错误或未考虑完全的地方,请大家不吝赐教,您也可以点击"举报违法"按钮提交疑问。

咱们在玩arduino或stm32、esp8266时,有时会遇到板子模拟口不够用的情况,这个时候CD74HC4067就派上用场了,它可以将16路数字/模拟信号通过4数字+1模拟=5口来读取。

这货长这样,还有一种是纯芯片的,就是上面黑色的那块。

CD74HC4067高速CMOS16通道模拟多路复用器实践

引脚c0--c15为输入口,接任意外部设备;s0-s3接板子数字口,用于发送读取信号编码;sig接板子模拟口,用于读取信号;EN口接数字口,用于发送禁用/启用命令,如果一直都是启用,此口可以不接。

16个口,板子不是通过0、1、2、3……这样的口令读取的,他有类似的命令表格,通过s0-s3发送命令,就能在sig读取了。命令表如下:

CD74HC4067高速CMOS16通道模拟多路复用器实践

 我是买来片子自己焊的,之前我有一个路边五金店买的40w电烙铁、几块钱的焊锡丝,焊得跟狗啃似的:

CD74HC4067高速CMOS16通道模拟多路复用器实践 

CD74HC4067高速CMOS16通道模拟多路复用器实践

 朋友说,烙铁和焊锡丝都不对,不适合。于是重买了南京华夏银星牌的20w尖头烙铁,6337焊锡丝(带助焊剂),流动性好,色泽光亮。

我试了一下,果然“技艺大增”,哈哈,下面这个焊点,我还是满意的。 

CD74HC4067高速CMOS16通道模拟多路复用器实践

 我在多路复用板子上接了2个4键电容键盘、滑动电位器、旋钮电位器、按钮开关,如下:

CD74HC4067高速CMOS16通道模拟多路复用器实践

 文章来源地址https://www.toymoban.com/news/detail-746864.html

CD74HC4067高速CMOS16通道模拟多路复用器实践

 

 

CD74HC4067高速CMOS16通道模拟多路复用器实践

 通过如下代码即可读取:

 1 // 定义选择引脚的编号 by longware
 2 int s0 = 2;
 3 int s1 = 3;
 4 int s2 = 4;
 5 int s3 = 5;
 6 
 7 // 定义SIG引脚的编号
 8 int SIG_pin = A0;
 9 
10 void setup() {
11   // 设置选择引脚为输出模式
12   pinMode(s0, OUTPUT);
13   pinMode(s1, OUTPUT);
14   pinMode(s2, OUTPUT);
15   pinMode(s3, OUTPUT);
16 
17   // 设置SIG引脚为输入模式
18   pinMode(SIG_pin, INPUT);
19 
20   // 初始化串口通信
21   Serial.begin(9600);
22 }
23 
24 void loop() {
25   // 循环读取16个输入信号的值
26   for (int i = 0; i < 16; i++) {
27 
28     // 调用readMux函数,传入通道编号,返回输入信号的值
29     int value = readMux(i);
30 
31     // 在串口监视器中打印通道编号和输入信号的值
32     Serial.print(",C");
33     Serial.print(i);
34     Serial.print("=");
35     Serial.print(value);
36 
37     // 延时
38     delay(20);
39   }
40   Serial.println(" ");
41 
42   // 延时
43   delay(500);
44 }
45 
46 // 定义一个函数,用来读取74HC4067的某个通道的输入信号的值
47 int readMux(int channel) {
48   
49   // 定义一个二维数组,用来存储16个通道对应的选择引脚的状态
50   int muxChannel[16][4] = {
51     {0, 0, 0, 0}, // 通道0
52     {1, 0, 0, 0}, // 通道1
53     {0, 1, 0, 0}, // 通道2
54     {1, 1, 0, 0}, // 通道3
55     {0, 0, 1, 0}, // 通道4
56     {1, 0, 1, 0}, // 通道5
57     {0, 1, 1, 0}, // 通道6
58     {1, 1, 1, 0}, // 通道7
59     {0, 0, 0, 1}, // 通道8
60     {1, 0, 0, 1}, // 通道9
61     {0, 1, 0, 1}, // 通道10
62     {1, 1, 0, 1}, // 通道11
63     {0, 0, 1, 1}, // 通道12
64     {1, 0, 1, 1}, // 通道13
65     {0, 1, 1, 1}, // 通道14
66     {1, 1, 1, 1}  // 通道15
67   };
68 
69   // 循环设置选择引脚的状态,根据通道编号和二维数组的值
70   for (int i = 0; i < 4; i++) {
71     digitalWrite(s0 + i, muxChannel[channel][i]);
72   }
73 
74   // 读取SIG引脚的模拟值
75   int value = analogRead(SIG_pin);
76 
77   // 返回读取的值 by longware
78   return value;
79 }

上面的代码中muxChannel数组列举了通道命令,也可以通过移位来实现,如下面的selectChannel函数。

 1 // 定义74HC4067引脚连接到Arduino的引脚 by longware
 2 const int S0 = 2;
 3 const int S1 = 3;
 4 const int S2 = 4;
 5 const int S3 = 5;
 6 const int SIG_PIN = A0; // 74HC4067的信号引脚连接到Arduino的模拟输入A0
 7 
 8 void setup() {
 9   // 设置74HC4067选择引脚为输出
10   pinMode(S0, OUTPUT);
11   pinMode(S1, OUTPUT);
12   pinMode(S2, OUTPUT);
13   pinMode(S3, OUTPUT);
14   
15   // 设置信号引脚为输入
16   pinMode(SIG_PIN, INPUT);
17   
18   // 初始化选择引脚,选择通道0
19   digitalWrite(S0, LOW);
20   digitalWrite(S1, LOW);
21   digitalWrite(S2, LOW);
22   digitalWrite(S3, LOW);
23   
24   // 打开串口通信
25   Serial.begin(9600);
26 }
27 
28 void loop() {
29 
30   // 循环读取16个通道的值
31   for (int channel = 0; channel < 16; ++channel) {
32     
33     // 设置74HC4067选择通道
34     selectChannel(channel);
35     
36     // 读取信号引脚的值并打印到串口
37     int sensorValue = analogRead(SIG_PIN);
38     Serial.print(",C");
39     Serial.print(channel);
40     Serial.print("=");
41     Serial.print(sensorValue);
42     
43     // 等待一段时间,可根据需要调整
44     delay(20);
45   }
46   Serial.println(" ");
47 
48   
49   delay(500);
50 }
51 
52 // 设置74HC4067选择通道的函数  by longware
53 void selectChannel(int channel) {
54   
55   // 使用二进制表示选择通道
56   digitalWrite(S0, (channel & B0001) > 0);
57   digitalWrite(S1, (channel & B0010) > 0);
58   digitalWrite(S2, (channel & B0100) > 0);
59   digitalWrite(S3, (channel & B1000) > 0);
60 }

打开串口监视器,效果如下:

CD74HC4067高速CMOS16通道模拟多路复用器实践

 

CD74HC4067高速CMOS16通道模拟多路复用器实践

 

CD74HC4067高速CMOS16通道模拟多路复用器实践

 

CD74HC4067高速CMOS16通道模拟多路复用器实践

 读取到sig值了,你想干嘛就干嘛了。详细资料也可以去厂商看看文档  。

 

到了这里,关于CD74HC4067高速CMOS16通道模拟多路复用器实践的文章就介绍完了。如果您还想了解更多内容,请在右上角搜索TOY模板网以前的文章或继续浏览下面的相关文章,希望大家以后多多支持TOY模板网!

本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若转载,请注明出处: 如若内容造成侵权/违法违规/事实不符,请点击违法举报进行投诉反馈,一经查实,立即删除!

领支付宝红包 赞助服务器费用

相关文章

  • BIO到NIO、多路复用器, 从理论到实践, 结合实际案例对比各自效率与特点(下)

    本篇文章是BIO到NIO、多路复用器, 从理论到实践, 结合实际案例对比各自效率与特点(上)的下一篇, 如果没有看的小伙伴, 可以先看下, 不然可能会不连贯. 多路复用器是对于传统NIO的优化, 解决了传统NIO无法直接获取所有所有连接的状态, 需要挨个遍历所有连接查看是否准备就绪

    2024年02月10日
    浏览(43)
  • 【TCP服务器的演变过程】使用IO多路复用器epoll实现TCP服务器

    手把手教你从0开始编写TCP服务器程序,体验开局一块砖,大厦全靠垒。 为了避免篇幅过长使读者感到乏味,对【TCP服务器的开发】进行分阶段实现,一步步进行优化升级。 本节,在上一章节的基础上,将IO多路复用机制select改为更高效的IO多路复用机制epoll,使用epoll管理每

    2024年01月17日
    浏览(66)
  • 74HC245芯片简析

    74HC245 是一种三态输出、八路信号收发器,主要应用于大屏显示。 如图: 该芯片中A0到A7 和 B0到B7既可以作为输入也可以作为输出。 当DIR为高电平时,A为输入,B为输出。 当DIR为低电平时,B为输入,A为输出。 OE为使能控制,当OE为低电平时才能正常工作。 该芯片其他信息如下

    2024年02月12日
    浏览(38)
  • 74HC138逻辑芯片

    描述 74HC138 器件设计用于需要极短传播延迟时间的高性能存储器解码或数据路由应用;在高性能存储系统中,可使用高速使能电路的高速存储器一起使用时,这些解码器的延迟时间和存储器的使能时间通常小于储存器的典型存取时间;这意味着解码器引起的有效系统延迟可以

    2024年02月05日
    浏览(36)
  • 【74HC595】51单片机(普中A2开发板)LED点阵屏点亮以及74HC595芯片的使用笔记

    纯小白写的文章,如有问题,欢迎评论区讨论,反驳,指正。 如果你只想了解74HC595如何使用,建议只看2.3。 通过查看普中A2开发板的原理图(图1)可以知道,通过P0(P0_0、P0_1…P0_7)口和DPa、DPb…DPh来控制哪一颗LED点亮。我这个开发板上的点阵模块没有按照他给的原理图上

    2024年02月05日
    浏览(74)
  • STM32实现74HC595控制

            本文主要是实出74HC595的简单控制功能实现(学习笔记整理)。 (一)74HC595简述           74HC595是一个8位串行输入、平行输出的位移缓存器:平台行输出为三态输出 。         在SCHCP的上升沿输入,在STCP的上升沿进入存储寄存器中去,如果两个时钟连在

    2024年02月14日
    浏览(39)
  • 单片机(二):3个IO扩展n*8个IO,基于74hc595与74hc165的8x8矩阵键盘

    3个IO通过一片74hc595扩展8个输出IO,3个IO通过一片74hc1655扩展8个输入IO,最终成为8X8的矩阵键盘。对于普通的矩阵键盘,再加入防止鬼键、消抖和按下与松开识别。 74HC595是一个8位串行输入、并行输出的移位缓存器。通俗的来讲就是在输入时钟的上升沿数据输入端的数据可以位

    2024年02月10日
    浏览(54)
  • stm32 74hc595级联编程

    原理图如下  代码如下\\\"xl74hc595.c\\\" \\\"xl74hc595.h\\\" 代码如下 GPIO初始化 具体IO口根据实际需求进行修改 支持任意长度的的595芯片级联  

    2024年02月06日
    浏览(50)
  • 74LS595 74HC595使用方法以及驱动数码管显示(附:使用代码)

    由于74HC595与74LS595功能是一样的没有区别。LS和HC代表不同工作速度,HC代表CMOS芯片电路中工作速度最高的产品,LS表示普及、通用型产品。其驱动方法也是一样的。 74LS595是串行输入并行输出的器件,可以串联使用,达到引脚拓展的目的。主要引用在数码管的驱动,点阵的驱动

    2024年02月06日
    浏览(169)
  • 基于Verilog的74HC138的三种描述方法

    一、实验目的: 分别用行为描述、数据流描述和结构描述三种方法描述74HC138,并分别进行仿真分析,同时对比综合出的RTL电路,总结每种综合电路的特点。 二、实验内容 1、行为描述: (1) 描述代码 (2)综合出的RTL电路 (3) 仿真分析 2、数据流描述: (1)描述代码 (

    2024年02月08日
    浏览(52)

觉得文章有用就打赏一下文章作者

支付宝扫一扫打赏

博客赞助

微信扫一扫打赏

请作者喝杯咖啡吧~博客赞助

支付宝扫一扫领取红包,优惠每天领

二维码1

领取红包

二维码2

领红包