?? 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 + -