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

📄 ad0832.c

📁 ADC0832 转换程序的结果显示
💻 C
字号:
  #include<reg52.h>
#include<intrins.h>
float dat1,result;
sbit ADDI=P3^5;
sbit ADCLK=P3^6;
sbit ADCS=P3^7;
unsigned char code table[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90};
int ge,yi,er,san;
/*
unsigned char yi;
unsigned char er;
unsigned char san;	 */
unsigned long int temp;

    unsigned char k;
    unsigned char m;
    unsigned char n;
    unsigned char ndat;
    unsigned char dat;
	
void delay()
{
 unsigned char i;
 unsigned char j;
 
 for(i=0;i<=200;i++)
 for(j=0;j<=20;j++);
 
}
void display()
{	
         temp=result*1000.0;
		 temp=temp*4.99;
         temp=temp/255.0;

    
    ge=temp/1000;
    yi=temp/100%10;
    er=temp%100/10;
    san=temp%10;
   P2=0x08;
   P0=table[ge];
   delay();
   P2=0x04;
   P0=table[yi];
   delay();
   P2=0x02;
   P0=table[er];
   delay();
   P2=0x01;
   P0=table[san];
   delay();
  

}

 ADC0832(unsigned char channel)  //AD转换,返回结果
{	
	 dat=ndat=0;

    if(channel==0)channel=0;//通道号10,只对CH0进行单通道转换
    if(channel==1)channel=1;//通道号11,只对CH2进行单通道转换
    ADDI=1;//在第1 个时钟脉冲的下沉之前DI端必须是高电平,表示启始信号
    ADCLK=0;//拉低CLK端
    _nop_();
    _nop_();
    ADCS=0;//拉低CS端,使能ADC0832,
    _nop_();
    _nop_();
    ADCLK=1;//拉高CLK端
    _nop_();
    _nop_();
    ADCLK=0;//拉低CLK端,形成下降沿1
    _nop_();
    _nop_();
    ADCLK=1;//拉高CLK端
    ADDI=channel&0x01;//在第2个脉冲下沉之前DI端应输入第1位通道选择数据
    _nop_();
    _nop_();
    ADCLK=0;//拉低CLK端,形成下降沿2
    _nop_();
    _nop_();
    ADCLK=1;//拉高CLK端
    ADDI=channel&0x02;//在第3个脉冲下沉之前DI端应输入第2位通道选择数据
    _nop_();
    _nop_();
    ADCLK=0;//拉低CLK端,形成下降沿3
    _nop_();
    _nop_();
	ADDI=1;
    for(m=0;m<8;m++)
      {   dat<<=1;
        ADCLK=1;//收数据
        _nop_();
        _nop_();
        ADCLK=0;//形成一次时钟脉冲
        dat|=ADDI;
		_nop_();
        _nop_();
        
        
      } 
 
    for(m=0;m<8;m++)
     {
        k=0;
        k|=ADDI;//收数据
        k<<=7;
        ndat|=k;
        if(m<7) 
        ndat>>=1; 
		ADCLK=1;
        _nop_();
        _nop_();
        ADCLK=0;//形成第12-19次下降沿
        
		_nop_();
        _nop_();
     }
     
    ADCS=1;//拉低CS端
    ADCLK=0;//拉低CLK端
    ADDI=1;//拉高数据端,回到初始状态
   result=(dat+ndat)/2.0;
  //  return(result);            //return ad k
}
void main()
{
while(1)
   {
    ADC0832(0);
    display();
   }
}

⌨️ 快捷键说明

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