CD74HC4067模拟开关指食用指南——Arduino为例

CD74HC4067 16 通道多路复用器功能
当电路中有许多模拟输入时,可以使用 CD74HC4067 16 通道模拟数字多路复用器模块。
在这种情况下,每次都需要选择并处理其中一个输入。
此多路复用器可用于从 16 个模拟输入中进行选择。
有四个 S0-3 引脚,通过提供适当的值,将其中一个模拟输入设置为 SIG 引脚中的输出。
(总感觉就是个3-8译码器)
CD74HC4067 16 通道多路复用器引脚排列
该模块有24个引脚:
- VCC:模块电源-5V
- GND:接地
- EN:启用引脚(低电平有效)
- S0-3:选择16个模拟输入引脚之一作为最终输出信号
- C0-15:模拟输入
- SIG:输出信号

连接方式

按照上图连接分压电路。将以下代码上传到Arduino。上传代码后,打开串行监视器。
/* Modified on Nov 28, 2020 Modified by MehranMaleki from Arduino Examples Home */ //选择器输入引脚 int s0 = 8; int s1 = 9; int s2 = 10; int s3 = 11; //SIG PIN的选择 int SIG_pin = 0; void setup(){ pinMode(s0, OUTPUT); pinMode(s1, OUTPUT); pinMode(s2, OUTPUT); pinMode(s3, OUTPUT); digitalWrite(s0, LOW); digitalWrite(s1, LOW); digitalWrite(s2, LOW); digitalWrite(s3, LOW); Serial.begin(9600); } void loop(){ //Loop through and read all 16 values for(int i = 0; i < 16; i ++){ Serial.print("Value at channel "); Serial.print(i); Serial.print("is : "); Serial.println(readMux(i)); delay(1000); } } float readMux(int channel){ int controlPin[] = {s0, s1, s2, s3}; int muxChannel[16][4]={ {0,0,0,0}, //channel 0 {1,0,0,0}, //channel 1 {0,1,0,0}, //channel 2 {1,1,0,0}, //channel 3 {0,0,1,0}, //channel 4 {1,0,1,0}, //channel 5 {0,1,1,0}, //channel 6 {1,1,1,0}, //channel 7 {0,0,0,1}, //channel 8 {1,0,0,1}, //channel 9 {0,1,0,1}, //channel 10 {1,1,0,1}, //channel 11 {0,0,1,1}, //channel 12 {1,0,1,1}, //channel 13 {0,1,1,1}, //channel 14 {1,1,1,1} //channel 15 }; //设置PIN for(int i = 0; i < 4; i ++){ digitalWrite(controlPin[i], muxChannel[channel][i]); } //读取SIGPIN int val = analogRead(SIG_pin); //返回阻值 float voltage = (val * 5.0) / 1024.0; return voltage; }
不要看网上的教程悬空EN引脚!!!
由于单片机时序不精准,每一次循环后时序可能有混乱
尽量通过使能引脚在循环开始时使能,结束时候失能CD4067
浙公网安备 33010602011771号