本文共 967 字,大约阅读时间需要 3 分钟。
步骤1 写入0x90,然后写入控制字0x44。控制字0x04表示开启自动增。控制字0x40表示使能DAC输出,当我们开启自动增后,必须打开DAC输出,这样内部时钟才稳定。
/* PCF8591初始化 */void init_pcf8591(void){ i2c_start(); i2c_sendbyte(0x90); i2c_sendbyte(0x44); /* 自动增加 */ i2c_stop();}
步骤2 写入0x91,然后读取一个字节。调用四次这个函数,每一次都是代表了某个通道的ADC结果。
/* 通过I2C总线读取ADC结果 */unsigned char adc_pcf8591(void){ unsigned char temp; i2c_start(); i2c_sendbyte(0x91); temp = i2c_receivebyte(); i2c_stop(); return (temp);}
步骤3 我们得到的是四个数据。每个数据一个字节。
每个数据的大小是0到255,表示0到5V。
所以:
电压伏特=读取到的结果 / 255 * 5
或者按照下面的时序读取。一个通道一个通道来。
unsigned char ReadADC(unsigned char Chl) //0 1 2 3 { unsigned char Val; Start_I2c(); //启动总线 SendByte(AddWr); //发送器件地址 0X90 if(ack==0)return(0); SendByte(Chl);//0 //发送通道 if(ack==0)return(0); Start_I2c(); SendByte(AddRd); //0X91 if(ack==0)return(0); Val=RcvByte(); NoAck_I2c(); //发送非应位 Stop_I2c(); //结束总线 return(Val); }
转载地址:http://xbce.baihongyu.com/