標(biāo)題:
ADC0809電壓采集程序(C語言)
[打印本頁]
作者:
hongniu
時(shí)間:
2015-6-24 21:15
標(biāo)題:
ADC0809電壓采集程序(C語言)
//*****************************************************************
//ADC0809的clk經(jīng)分頻74LS74接單片機(jī)的ALE端,ADC0809的ALE端接ST端,單片機(jī)晶振:12M
//STC89C52RC單片機(jī),此時(shí)介接入ADC0809的時(shí)鐘頻率為1M,然后不經(jīng)過分頻,直接把單片機(jī)的2M
//頻率的出自ALE端的時(shí)鐘信號(hào)接入ADC0809也可以正常工作,不過這是將while(!AD0809_EOC);去掉以后
//發(fā)現(xiàn)仍然能夠正常工作。同時(shí)不加任何延時(shí),基準(zhǔn)電壓大約為4.41v,,測(cè)出來的電壓和萬用表測(cè)得電壓吻合
//*****************************************************************
#include<reg52.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
#define ad0809_data P2
sbit ad0809_stale=P3^2;
sbit ad0809_eoc=P3^3;
sbit ad0809_oe=P3^4;
sbit ad0809_a=P3^5;
sbit ad0809_b=P3^6;
sbit ad0809_c=P3^7;
uchar ad0809_read()
{
uchar tempdata;
ad0809_a=1;
ad0809_b=1;
ad0809_c=1; //選通第八個(gè)通道
ad0809_stale=1; //對(duì)應(yīng)ST以及ALE上跳沿,通道地址鎖存,AD復(fù)位
ad0809_stale=0; //ST下降沿,啟動(dòng)AD轉(zhuǎn)換
//while(!ad0809_eoc); //等帶AD轉(zhuǎn)換成功
ad0809_data=0xff;
ad0809_oe=1; //輸出容許
tempdata=ad0809_data;
ad0809_oe=0; //輸出禁止
return tempdata;
}
uint ad0809_cvt(uchar digdata)
{
uint voltdata;
voltdata=(4.41/255)*digdata*100;
return voltdata;
}
//*****************************************************************
//數(shù)碼管顯示子程序,將一個(gè)數(shù)num顯示到某一位weixuan數(shù)碼管
//*****************************************************************
void numdis(uchar num,uchar weixuan,uchar brightness )
{
while(brightness--)P0=num*0x10+weixuan*0x01;
P0=0xff;
}
void display(uint addata)
{
numdis(addata%1000/100, 2,20);
numdis(addata%100/10, 1,20);
numdis(addata%10, 0,20);
}
void main()
{
while(1)
{
display(ad0809_cvt(ad0809_read()));
}
}
作者:
朱翠汝
時(shí)間:
2017-6-10 17:34
你好 請(qǐng)問如果我單片機(jī)的晶振是12M也可以實(shí)現(xiàn)AD采集嗎 請(qǐng)盡快回復(fù)謝謝
歡迎光臨 (http://www.torrancerestoration.com/bbs/)
Powered by Discuz! X3.1