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

📄 tzqno.c

📁 ADC0832进行AD转换,使用通道0.采集后存入RAM
💻 C
字号:
#include <stdio.h>
#include <reg52.h>
#include <math.h>
#include <absacc.h>
#include <string.h>   //头文件
#define uchar unsigned char


void DELAY(uchar);

//ad函数声明
void DELAY1(uchar x);
uchar readadc(void);
void adcck(void);
uchar adc(void);


/* ad 地址定义  */
  sbit adcd0=P3^2;
  sbit adccs=P2^6;
  sbit adcclk=P1^6;
  sbit ramcs=P2^5;



uchar xdata RAM[5120]_at_ 0xc400;  //外部存储器,注意必须为0XCxxx,跟P2口有关





void DELAY(unsigned char x)

{ 

 unsigned char i; 

 for(i=0;i<x;i++); //延时,脉冲一位持续的时间

}

unsigned char adc(void) //把模拟电压值转换成8位二进制数并返回

{  unsigned char i,ch;

 ch=0;

 adccs=0;

 adcd0=0;//片选,DO为高阻态

DELAY(10);

 adcclk=0; DELAY(2);

 adcclk=1;  DELAY(2); //第一个脉冲,起始位 

 adcclk=0;  DELAY(2); 

 adcclk=1; DELAY(2); //第二个脉冲,DI=1表示双通道单极性输入

 adcclk=0; DELAY(2);
 
 adcclk=1; DELAY(2); //第三个脉冲,DI=1表示选择通道1(CH2)

 adcd0=1;//DI转为高阻态,DO脱离高阻态为输出数据作准备

 adcclk=1; DELAY(2);

 adcclk=0;  DELAY(2);//经实验,这里加一个脉冲AD便能正确读出数据,

           //不加的话读出的数据少一位(最低位d0读不出)

for (i=0; i<8; i++)

    { adcclk=1;         DELAY(2); 

     adcclk=0;  DELAY(2);

     ch=(ch<<1)|adcd0;//在每个脉冲的下降沿DO输出一位数据,最终ch为8位二进制数

   }
   adccs=1;//取消片选,一个转换周期结束

 return(ch);//把转换结果返回

}
main()
 {     unsigned int n; 
        ramcs=0;
       for(n=0;n<5120;n++)
	  { RAM[n]=0; }
	  for(n=0;n<5120;n++)
	  { RAM[n]=adc(); }	
		}

⌨️ 快捷键说明

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