📄 tzqno.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 + -