二〇二六年国内专业空调工厂哪家强?十大品牌深度对比评测
2026/7/23 22:34:54
温度、光线、声音、电压——这些是连续的"模拟量"。ADC 把它们变成单片机懂的"数字量"。STC89C52 没有内置 ADC,我们用 PCF8591 模块(I2C 接口,¥5)。
#definePCF8591_ADDR0x90unsignedcharpcf8591_read(unsignedcharchannel){unsignedcharval;i2c_start();i2c_write_byte(PCF8591_ADDR);// 写命令i2c_write_byte(0x40|channel);// 单端输入 + 通道选择i2c_start();i2c_write_byte(PCF8591_ADDR|1);// 读命令i2c_read_byte(1);// 第一个是上次的值,丢弃val=i2c_read_byte(1);// 这才是本次值i2c_stop();returnval;// 0~255 对应 0~5V}VCC ── 电位器两端 ── GND 中间脚 → PCF8591 AIN0 旋转电位器 → 电压从 0V 变到 5V → ADC 值从 0 变到 255unsignedcharadc_val=pcf8591_read(0);// 通道 0floatvoltage=adc_val*5.0f/255.0f;// 转成电压printf("ADC: %u, Voltage: %.2fV\r\n",adc_val,voltage);光敏电阻和热敏电阻是阻值随光照/温度变化的电阻,通过分压电路变成电压:
VCC ── 光敏电阻 ──┬── PCF8591 AIN1 │ 10kΩ (固定电阻) │ GND 光照越强 → 光敏电阻越小 → AIN1 电压越高 → ADC 值越大下一篇:PWM 输出——控制电机和灯光