⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 x20gdnzh1.c

📁 51的典型应用于传感器程序编程架构
💻 C
📖 第 1 页 / 共 5 页
字号:
                  }


              TF2=0;
}
//-----------------------------------------------

//-----------------------------------------------
//X25045送数单元
void outbyt(unsigned char i)
{
 unsigned char j;
 for(j=0;j<8;j++)
   {
    SCLK=0;
    if(i&0x80)SDI=1;
    else SDI=0;
    i<<=1;
    SCLK=1;
   }
   SDI=0;
}
//-----------------------------------------------
//X25045读数据
unsigned char inbyt(void)
{
 unsigned char i=0;
 unsigned int k=0;
  do
    {
     SCLK=1;
     SCLK=0;
     if(SDO)k++;
     i++;
     k<<=1;
    }
   while(i<8);
     k>>=1;
     i=k;
 return i;
}
//-----------------------------------------------
//写延时
void wip_del(void)
{
 unsigned char i,k;
  for(i=0;i<25;i++)
    {
     SCLK=0;
     EECS=0;
     outbyt(5);
     k=inbyt();
     SCLK=0;
     EECS=1;
    }
}
//-----------------------------------------------
//i是地址,j是内容16位
void writee(unsigned int i,unsigned int j)
{
 EECS=1;
 SDI=1;
 SDO=1;
 SCLK=0;
_nop_();
 EECS=0;
 outbyt(6);
 EECS=1;
 SCLK=0;
 EECS=0;
 outbyt(1);
 outbyt(0);
 EECS=1;
 SCLK=0;
 _nop_();
 EECS=1;
 wip_del();
 EECS=1;
 SCLK=0;
 _nop_();
 EECS=0;
 _nop_();
 outbyt(6);
 SCLK=0;
 EECS=1;
 SCLK=0;
 EECS=0;
 if((i+i)>=256)outbyt(10);
 else outbyt(2);
 outbyt(i+i);
 outbyt(j&0x00ff);//低8位数据
 SCLK=0;
_nop_();
 EECS=1;
 wip_del();
 SCLK=0;
 EECS=0;
 outbyt(6);
 SCLK=0;
 EECS=1;
 SCLK=0;
 EECS=0;
 if((i+i)>=256)outbyt(10);
 else outbyt(2);
 outbyt(i+i+1);
 outbyt(j>>8);
 SCLK=0;
 EECS=1;
 wip_del();
 SDI=1;
 SDO=1;
 EECS=0;
 SCLK=0;
}
//***********************************************
//读25045 16位 i地址 j读到内容
//***********************************************
unsigned int reade(unsigned char i)
{
 unsigned int j;
 SCLK=0;
 EECS=1;
 SCLK=0;
 EECS=0;
 if(i+i>=256)   outbyt(11);
 else           outbyt(3);
 outbyt(i+i+1);
 j=inbyt();
 j<<=8;
 SCLK=0;
 EECS=1;
 SCLK=0;
 EECS=0;
 if(i+i>=256)   outbyt(11);
 else           outbyt(3);
 outbyt(i+i);
 j|=inbyt();
 return j;
}
//-----------------------------------------------
//max111读/写程序 写入数据i,返回数据k
unsigned int wrmax111(unsigned int i)
{
 unsigned char j=0;
 unsigned int k=0;
 if(adchange)i|=0x0010;
 do {
     SCLK=0;
     if(i&0x8000) SDI=1;
     else         SDI=0;
     SCLK=1;
     i<<=1;
     if(SDO)      k++;
     k<<=1;
     j++;
   }while(j<16);
 k>>=1;
 SCLK=0;
 return k;
}
//-----------------------------------------------
//不显示
void dirb(void)
{
 led2c=1;led3c=1;led4c=1;//显示'   '
}
//-----------------------------------------------
//延时程序 入口i
void delay(unsigned int i)
{
 for(;i>1;i--){
               _nop_();
              }
}
//***********************************************
//MAX111采样三部校准 14位转换 时间200ms
//***********************************************
void indb0()
{
 SCLK=1;
 ADCS=0;
 wrmax111(0);
 ADCS=1; _nop_();
 delay(15400);//delay 200ms
 dog();
 ADCS=0;
 wrmax111(0x8c8c);_nop_();
 ADCS=1;
 delay(15400);//delay 200ms
 dog();
 ADCS=0;
 wrmax111(0x8c88);_nop_();
 ADCS=1;
 delay(15400);//delay 200ms
 dog();
 ADCS=0;
 wrmax111(0x8c84);_nop_();
 ADCS=1;_nop_();
 delay(15400);//delay 200ms
 dog();_nop_();
 ADCS=0;_nop_();
 wrmax111(0x8c80);
 ADCS=1;
 delay(15400);//delay 200ms
 dog();
}
//********************************************************
//函数功能:AD采样 返回采样的二进制数
//********************************************************
unsigned int indb(void)
{
 unsigned int i=0,sum=0;//,k=0xffff,j=0; //j=max,k=min
 unsigned char l;
 for(l=0;l<4;l++) {
                   SCLK=1;
                   ADCS=0;
                   i=wrmax111(0x8c80);
                   ADCS=1;
                   delay(13000);//delay 200ms
                   dog();
                   sum+=i;
                  }
 sum>>=2;
 return sum;
}
//***************************************************
//HEX_BCD max 9999
unsigned int HEX2BCD(unsigned int hex_data)
{
    unsigned int bcd_data;
    unsigned int temp;
    temp=hex_data%1000;
    bcd_data=hex_data/1000<<12;
    bcd_data=bcd_data|temp/100<<8;
    bcd_data=bcd_data|((temp%100)/10)<<4;
    bcd_data=bcd_data|temp%10;
    return bcd_data;
}
//*********显示版本号****************************
void dirver(void)
{
 tbuffer2=17;tbuffer3=6;tbuffer4=1;//'U6.0' 零点处理
 led3p=1;//第三位数码管小数点显示
 delay(58500);//延时500ms
 dog();
}

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -