新聞中心

EEPW首頁 > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > stc12c5a60s2使用片內(nèi)AD轉(zhuǎn)換

stc12c5a60s2使用片內(nèi)AD轉(zhuǎn)換

作者: 時(shí)間:2016-11-30 來源:網(wǎng)絡(luò) 收藏
#include

#include
#define uint unsigned int
#define uchar unsigned char
sfr adc_contr=0xbc;//adc控制寄存器,不可位尋址,用或運(yùn)算來設(shè)置
sfr adc_res=0xbd;//轉(zhuǎn)換結(jié)果寄存器,高八位
sfr adc_low2=0xbe;//轉(zhuǎn)換結(jié)果寄存器,低兩位
sfr p1asf=0x9d;//設(shè)置p1的那一口為輸入口,不可位尋址.
//以下都是控制寄存器的各位地址
#define adc_power 0x80;//adc電源,第7位
#define adc_flag 0x10;//轉(zhuǎn)換結(jié)束標(biāo)志位,第4位
#define adc_start 0x08;//轉(zhuǎn)換開始,第3位
#define adc_speedll 0x00;//速度位,第5,6位
#define adc_speedl 0x20;
#define adc_speedh 0x40;
#define adc_speedhh 0x60;
#define adc_chs 0x00;//輸入通道為第p1.0,1,2,3三位可設(shè)置p10-p17
//位定義完成

本文引用地址:http://m.butianyuan.cn/article/201611/323793.htm

sbit duan=P2^6;
sbit wei=P2^7;
long unsigned int a,shu;
uint b,wan,qian,bai,shi,ge,adc_finished;//轉(zhuǎn)換結(jié)束標(biāo)志
uchar code Temp[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};
void yanshi()
{
uchar i,j;
for(i=5;i>0;i--)
for(j=110;j>0;j--);
}
void adcinit()//adc初始化函數(shù)
{
p1asf=0x01;//設(shè)置p10 為ad轉(zhuǎn)換輸入口
adc_contr=0xe0;//打開電源,設(shè)最高速度
//adc_contr=adc_power|adc_speedh|adc_chs;//電源X0000000,速度0XX00000
//通道:00000XXX
yanshi();
adc_contr|=adc_chs;//設(shè)置頻道
}

void fenshu()
{

shu=a;
wan=shu/10000;
shu=shu%10000;
qian=shu/1000;
shu=shu%1000;
bai=shu/100;
shu=shu%100;
shi=shu/10;
ge=shu%10;
}
void xianshi()
{
P0=Temp[ge];
duan=1;
duan=0;
P0=0xff;
P0=0x7f;
wei=1;
wei=0;
P0=0x00;

yanshi();
P0=Temp[shi];
duan=1;
duan=0;
P0=0xff;
P0=0xbf;
wei=1;
wei=0;

yanshi();
P0=Temp[bai];
duan=1;
duan=0;
P0=0xff;
P0=0xdf;
wei=1;
wei=0;
yanshi();
P0=Temp[qian];
duan=1;
duan=0;
P0=0xff;
P0=0xef;
wei=1;
wei=0;
}

void main()
{
adcinit();
adc_res=0;
adc_low2=0;
while(1)
{
adc_contr|=adc_start;//啟動(dòng)ad轉(zhuǎn)換,置1為起動(dòng),轉(zhuǎn)換結(jié)束后自動(dòng)置0
yanshi();
adc_finished=0;
while(adc_finished==0)
{
adc_finished=adc_contr&adc_flag;//檢測(cè)是否轉(zhuǎn)換結(jié)束,沒結(jié)束一直等
}

adc_contr=adc_contr&0xef;//轉(zhuǎn)換結(jié)束標(biāo)志清零
//也可寫成


a=adc_res*4+adc_low2;

adc_contr|=adc_start;
yanshi();
fenshu();
xianshi();
}
}



評(píng)論


技術(shù)專區(qū)

關(guān)閉