AD驱动程序

来源:互联网 发布:php array key 排序 编辑:程序博客网 时间:2024/05/17 02:57
/***********************************************************                     **   AD/DA驱动程序  **  ***********************************************************/#include<reg52.h>#include <ic2.h>#include <main.h>#define  PCF8591 0x90    //PCF8591 地址unsigned char AD_CHANNEL;unsigned char  D[10];unsigned long xdata  LedOut[8];/*******************************************************************函数: ISendByte()功能:ADC发送字节[命令]数据函数               *******************************************************************/bit ISendByte(unsigned char sla,unsigned char c){   Start_I2c();              //启动总线   SendByte(sla);            //发送器件地址   if(ack==0)return(0);   SendByte(c);              //发送数据   if(ack==0)return(0);   Stop_I2c();               //结束总线   return(1);}/*******************************************************************函数:char IRcvByte()功能:ADC读字节数据函数               *******************************************************************/unsigned char IRcvByte(unsigned char sla){  unsigned char c;   Start_I2c();          //启动总线   SendByte(sla+1);      //发送器件地址   if(ack==0)return(0);   c=RcvByte();          //读取数据0   Ack_I2c(1);           //发送非就答位   Stop_I2c();           //结束总线   return(c);}/*******************************************************************函数:ad()功能:实现AD转换,将收到的数值保存在全局变量中               *******************************************************************/void ad(){    for(AD_CHANNEL=0;AD_CHANNEL<=3;AD_CHANNEL++)   {      ISendByte(PCF8591,0x41);             D[0]=IRcvByte(PCF8591)*2;   //ADC0 模数转换1  放大2倍显示  ISendByte(PCF8591,0x42);             D[1]=IRcvByte(PCF8591)*2;   //ADC1  模数转换  ISendByte(PCF8591,0x43);             D[2]=IRcvByte(PCF8591)*40;   //ADC2模数转换3, *40 标准化  ISendByte(PCF8591,0x40);             D[3]=IRcvByte(PCF8591)*4;    //ADC3   模数转换4  }                                           //%表示求余 /表示求商    // state[2]=D[2]/10; guang[0]=(char)(D[2]%10000/1000+0X30);//千位     guang[1]=(char)(D[2]%1000/100+0X30);  //百位 guang[2]=(char)(D[2]%100/10+0X30);    //十位     guang[3]=(char)(D[2]%10+0X30);        //个位    // state[3]=D[3]/10; co2[0]=(char)(D[3]%10000/1000+0X30); //千位     co2[1]=(char)(D[3]%1000/100+0X30);   //百位 co2[2]=(char)(D[3]%100/10+0X30);     //十位     co2[3]=(char)(D[3]%10+0X30);      //个位   }  

0 0
原创粉丝点击