51单片机第六讲(AD/DA转换)

您所在的位置:网站首页 hl—1单片机原理图 51单片机第六讲(AD/DA转换)

51单片机第六讲(AD/DA转换)

2023-09-14 17:05| 来源: 网络整理| 查看: 265

1.计算机系统是一个数字系统、离散系统,而我们生活的外部世界是一个模拟系统。为使计算机系统能够了解外部世界,对外部事物进行处理,就必须有一个将模拟量转换为数字量,将数字量转换为模拟量的接口,这就是常说的 A/D和 D/A。

2.PCF8591t芯片 PCF8591 特性 • 单独供电 • PCF8591 的操作电压范围2.5V-6V • 低待机电流 • 通过I²C 总线串行输入/输出 • PCF8591 通过3 个硬件地址引脚寻址 • PCF8591 的采样率由I²C 总线速率决定 • 4 个模拟输入可编程为单端型或差分输入 • 自动增量频道选择 • PCF8591 的模拟电压范围从VSS 到VDD • PCF8591 内置跟踪保持电路 • 8-bit 逐次逼近A/D 转换器

步骤: 初始化 : 1.start 2.器件地址 3.寄存器值

这里写图片描述 AD采样步骤 1.start 2.地址 /rd 3.读取数据 nack(last byte) 4.stop

//AD转换 unsigned char ReadAdc(unsigned char ch1) { unsigned char value; //1.start i2c_Start(); //2.器件地址 -0x90 0x91 i2c_SendByte(PCFADDR | 0x00); //PCFADDR是IIC总线的接的设备的地址PCF8591即为0x90 if(i2c_WaitAck() != 0) //如果没有产生应该信号则终止 { i2c_Stop(); return 0; } //3.寄存器 -0x40(通道0,4个独立通道) i2c_SendByte(0x40 | ch1); if(i2c_WaitAck() != 0) { i2c_Stop(); return 0; } //读取AD采样值 //1.Start i2c_Start(); //2.地址 /rd i2c_SendByte(PCFADDR | 0x01); //1的时候是读,0的时候是写 if(i2c_WaitAck() != 0) { i2c_Stop(); return 0; } //3.读取数据nack(last byte) value = i2c_ReadByte(); i2c_NAck();//最后一位数据给它一个非应答信号 //4.stop i2c_Stop(); return value; }

DA转换: 这里写图片描述 步骤: 1.start 2.地址 wr 3.control byte 4.发送数据(DA转换值) 5.stop

//DA转换 unsigned char SetDac(unsigned char dacvalue) { //1.start i2c_Start(); //2.地址 wr i2c_SendByte(PCFADDR | 0x00);//0的时候代表写 if(i2c_WaitAck() != 0) { i2c_Stop(); return 0; } //3.control byte i2c_SendByte(0x40); if(i2c_WaitAck() != 0) { i2c_Stop(); return 0; } //4.发送数据(DA转换值) i2c_SendByte(dacvalue); if(i2c_WaitAck() != 0) { i2c_Stop(); return 0; } //5.stop i2c_Stop(); return 1; }


【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3