『壹』 51單片機的adc介面在哪
埠引腳P3.4至P3.7處。
51單片機的P1是輸入埠,P0是輸出埠。ADC的控制信號(INTR、WR、RD和CS)分別在埠引腳P3.4至P3.7處可用。
51單片機是對兼容英特爾8051指令系統的單片機的統稱。
『貳』 請教stc自帶ad的51單片機的使用方法
#include<reg52.h>#include<intrins.h>
#define uchar unsigned char#define uint unsigned int
sfr ADC_CONTR = 0xbc; //ADC控制寄存器
sfr ADC_RES = 0xbd; //ADC轉換結果高八位寄存器
sfr ADC_LOW2 = 0xbe; //ADC轉換結果低兩位寄存器
sfr P1ASF = 0x9d; //P1口模擬功能控制寄存器
#define ADC_POWER 0x80 //ADC電源控制位
#define ADC_FLAG 0x10 //ADC結束標志位
#define ADC_START 0x08 //ADC啟動標志位
#define ADC_SPEEDLL 0x00 //540個時鍾周期
#define ADC_SPEEDL 0x20 //360個時鍾周期
#define ADC_SPEEDH 0x40 //180個時鍾周期
#define ADC_SPEEDHH 0x60 //90 個時鍾周期
void InitUart();
void SendData(uchar);
void Delay(uint n);
void InitADC();
uchar ch=0; //ADC通道選擇
void main()
{
InitUart(); //初始化串口
InitADC(); //初始化ADC
IE = 0xa0; //打開總中斷
while(1);}
/*ADC中斷函數*/
void ads_isr() interrupt 5 using 1
{
ADC_CONTR&=!ADC_FLAG; //將ADC結束標志位清零
SendData(ch); //將對應ADC通道號發送給電腦 SendData(ADC_RES); //將轉換結果發送給電腦
if(++ch > 7)ch = 0; //下一個ADC通道 ADC_CONTR = ADC_POWER|ADC_SPEEDLL|ADC_START|ch; //打開ADC電源、轉換時間540個時鍾周期、開始轉換、選擇通道號
}
/*初始化ADC寄存器*/
void InitADC()
{
P1ASF = 0xff; //定義p1口為ADC轉換口
ADC_RES = 0;
ADC_CONTR = ADC_POWER|ADC_SPEEDLL|ADC_START|ch; //打開ADC電源、轉換時間540個時鍾周期、開始轉換、選擇通道號
Delay(2); //等待ADC上電穩定然後開始ADC轉換?應該是先開電源,等待後再START,可能STC官方程序有問題
}
/*初始化串口*/
void InitUart()
{
SCON = 0x5a;
TMOD = 0x20;
TH1 = 0xfd; //在11.0592MHZ晶振下,波特率為9600
TL1 = 0xfd;
TR1 = 1;
}
/*串口發送數據*/
void SendData(uchar dat)
{
while(!TI);
TI = 0;
SBUF = dat;
}
/*延時函數*/
void Delay(uint n)
{
uint x;
while(n--)
{
x=5000;
while(x--);
}
}
注釋原創
『叄』 51單片機adc模塊的功能是
ADC模塊當然是實現模數轉換。
『肆』 51單片機連電位器一定要adc嗎
一定。51單片機連電位器需要adc的,因為作AD用必須一個接電源一個接地,兩個電阻中間即VREF接單片機引腳或接一個1K的電阻再接單片機引腳。