導航:首頁 > 操作系統 > 51單片機ad轉換教程

51單片機ad轉換教程

發布時間:2025-07-12 23:35:34

❶ 怎樣把51單片機讀回來的AD值轉換成電壓值

通常是0-5V,對應於0-11111......1111(24位二進制)
那麼1V就是:3355443(十進制)。
用讀回來的值AD_data除以3355443,得到的整數部分就是0~5,即為電壓的整數部分。
把AD_data除以3355443的余數,再除以0.1V所對應的數值(請自己算一下),取整數將得到0~9,即為電壓的第一位小數。
……
取多少位小數,就計算多少次。

❷ 請教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單片機ad採集電壓0-300v降壓轉變成0-5v范圍內,降壓部分原理圖和程序應該怎麼寫

把300V電壓,接到兩個的電阻分電路上,電阻串聯有分壓作用。一端接地的電阻上分壓為0~5V,假如電阻取10K,那麼大電阻就沒辯應該是590K。電壓分壓比為300/5=60倍,所以,用AD採集0~5V電壓,得到數字量,換算成電壓為Ⅴd,再計算出被測電壓正信Vx=60Vd。所以,寫程序很簡單,主要是A/D轉換程序並舉察輪轉換為電壓Vd。

❹ 51單片機有外部數據存儲器的時候怎麼開始AD轉換

movx @dptr,A,開啟AD轉換會與外部數據存儲器發生沖突做兄,那是因為DPTR中的地址沒有指向AD轉換器的埠地址,或擾行者AD埠地址與外部數據存儲器的地址重復了。沒有具體電路,真正原因不好確緩胡嘩定。
單片機可採用埠模式與AD轉換器連接比較好,見下圖。

閱讀全文

與51單片機ad轉換教程相關的資料

熱點內容
折紙解壓小玩具自製 瀏覽:864
如何把項目復制到阿里雲伺服器上 瀏覽:212
神筆特效作品怎樣保存到文件夾 瀏覽:941
如何將代理伺服器換回來 瀏覽:738
電視上一直顯示加密節目 瀏覽:120
如何終止命令執行 瀏覽:754
大瓜程序員 瀏覽:704
單片機流水燈左移兩位程序 瀏覽:660
單片機系統的組成 瀏覽:227
php執行定時任務 瀏覽:888
linux阻塞方式 瀏覽:841
aes符合安全要求的加密模式 瀏覽:14
devc警告未編譯 瀏覽:402
c語言中什麼叫源代碼未編譯 瀏覽:372
程序員拒絕做接盤俠 瀏覽:743
gcc編譯指定動態庫路徑 瀏覽:583
合肥plc編程教學 瀏覽:965
安卓55都有什麼埠 瀏覽:933
世界旅遊用什麼app導航 瀏覽:454
單位發布命令 瀏覽:137