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

📄 max147的c源码.c

📁 max147的c51源码
💻 C
字号:
//12位串行AD(MAX145)的C51源码(ADC+去极值均值滤波+串行通信)
//2007年08月15日 星期三 13:52/*采用11.0592MHz ,9600波特率*/

#include <REG52.h>
#include <intrins.h>
#define delayNOP(); {_nop_();_nop_();_nop_();_nop_();_nop_();_nop_();}; 

sbit SCLK =P1^0;                           // 将p1.0口模拟时钟输出
sbit DOUT =P1^1;                           // 将p1.1口模拟主机输出
sbit CS    =P1^2;                           // 将p1.2口模拟片选

void delayMS(unsigned int i)
{ unsigned int j,k;
for(k=0;k<i;k++)
    for(j=0;j<60;j++);
}

unsigned int ADC(void)
{ unsigned char    n;   
    unsigned int ADValue;

      SCLK = 0;
      CS = 1;
      delayNOP();                       
      CS = 0;  
      delayNOP();
      SCLK = 0;
while(DOUT==0);

n=16;
while(n--)
    {      delayNOP();
            SCLK = 1;                
      {ADValue = ADValue<<1;         // 左移一位,或_crol_(temp,1)
       if(DOUT == 1)
      ADValue = ADValue|0x0001;       // 若接收到的位为1,则数据的最后一位置1
       else 
      ADValue = ADValue&0xFFFE;       // 否则数据的最后一位置0
       }
      SCLK=0; 
    }

delayNOP();
CS=1;
return ADValue;
}


void initUART(void)
{
SCON=0x50;     //串口方式1,允许接收
TMOD|=0x20;     //定时器1定时方式2
TCON=0x40;     //设定时器1开始计数
TH1=0xFD;     //11.0592MHz 9600波特率
TL1=0xFD;
TI=1;
TR1=1;      //启动定时器
}

void main()
{unsigned int ADValue[15],temp,SumMiddle5,Average;
char n,i,j,min;

initUART();

while(1)
{
    delayMS(10);
     Average=0;

     for (n=0;n<15;n++)         //15次采样
      { delayMS(1);
       ADValue[n]=ADC()&0x0FFF;
      }

    n=15;            //排序
    for (i=0;i<n-1;i++)      
     { min=i;
     for (j=i+1;j<n;j++)if(ADValue[min]>ADValue[j])min=j;
        temp=ADValue[i];
        ADValue[i]=ADValue[min];
        ADValue[min]=temp;      
     }




    SumMiddle5=0;     //对中间5个值求和
    for (i=5;i<10;i++) SumMiddle5=SumMiddle5+ADValue[i];

    Average= SumMiddle5/5;     //对中间5个值求平均

    SBUF=Average/256;
    while(TI==0);
    TI=0;
    SBUF=Average%256;
    while(TI==0);
    TI=0;
}
}
 

⌨️ 快捷键说明

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