adc0809的多通道c程序设计?

adc0809的多通道c程序设计?,第1张

可以参考这个题目:

对0809进行数据采集编程。要求对8路模拟量连续采集24h,每隔10min采集一次,数据存储在外部数据存储区中。

程序如下:

#include<absacc.h>

#include<reg51.h>

#define

uchar

unsigned

char

#define

uint

unsigned

int

#define

IN0

XBYTE[0x7ff8]

/*设置ADC0809的通道0地址*/

sbit

ad_busy=P3^3

/*即EOC状态*/

uint

overflow_count

=

0

/*T1中断次数初值*/

void

ad0809(uchar

xdata

*

x)

/*采样函数,结果x[]放外部数据存储器*/

{

uchar

i

uchar

idata

*

ad_adr

ad_adr=&IN0

for(i=0i<8i++)

/*处理8通道*/

{

*ad_adr=0

/*启动转换*/

i=i

/*延时等待EOC变低*/

i=i

while(ad_busy==0)

/*查询等待转换结束*/

x[i]=*ad_adr

/*存转换结果*/

*(*(p+j)+i)=x[i]

ad_adr++

/*下一通道*/

}

}

/*

定时器1中断服务程序每100ms执行一次,fosc=6MHz*/

void

timer1_ISR(void)

interrupt

3

{

TH1

=

(65536

50000)/256

//定时器1赋初值

TL1

=

(65536

50000)%256

//

100ms/1us=50000次计数

overflow_count++

}

void

main(void)

{

static

char

xdata

ad[10]

char

(*p)[8]

TMOD

=

0X10

//设置定时器1工作方式1,

TH1

=

(65536

50000)/256

//定时器1赋初值

TL1

=

(65536

50000)%256

EA

=

1

//开定时器1中断

ET1

=

1

TR1

=

1

//启动定时器1

uchar

j

for(j=0j<144j++){

/

*采样24h*/

if

(

overflow_count

==

6000){

/*10分钟到,采样ADC0809通道的值*/

uchar

i,(*p)[8]

uchar

idata

*

ad_adr

ad_adr=&IN0

for(i=0i<8i++)

/*处理8通道*/

{

*ad_adr=0

/*启动转换*/

i=i

/*延时等待EOC变低*/

i=i

while(ad_busy==0)

/*查询等待转换结束*/

x[i]=*ad_adr

/*存转换结果*/

ad_adr++}

for(i=0i<8i++)

{

*(*(p+j)+i)=x[i]}

}

}

}

首先输入3位地址,并使ALE=1,将地址存入地址锁存器中。此地址经译码选通8路模拟输入之一到比较器。START上升沿将逐次逼近寄存器复位。下降沿启动 A/D转换,之后EOC输出信号变低,指示转换正在进行。直到A/D转换完成,EOC变为高电平,指示A/D转换结束,结果数据已存入锁存器,这个信号可用作中断申请。当OE输入高电平 时,输出三态门打开,转换结果的数字量输出到数据总线上。

转换数据的传送 A/D转换后得到的数据应及时传送给单片机进行处理。数据传送的关键问题是如何确认A/D转换的完成,因为只有确认完成后,才能进行传送。为此可采用下述三种方式。

(1)定时传送方式

对于一种A/D转换器来说,转换时间作为一项技术指标是已知的和固定的。例如ADC0809转换时间为128μs,相当于6MHz的MCS-51单片机共64个机器周期。可据此设计一个延时子程序,A/D转换启动后即调用此子程序,延迟时间一到,转换肯定已经完成了,接着就可进行数据传送。

(2)查询方式

A/D转换芯片有表明转换完成的状态信号,例如ADC0809的EOC端。因此可以用查询方式,测试EOC的状态,即可确认转换是否完成,并接着进行数据传送。

(3)中断方式

把表明转换完成的状态信号(EOC)作为中断请求信号,以中断方式进行数据传送。

不管使用上述哪种方式,只要一旦确定转换完成,即可通过指令进行数据传送。首先送出口地址并以信号有效时,OE信号即有效,把转换数据送上数据总线,供单片机接受。

常见用途

ADC0809与MCS-51单片机的连接主要涉及两个问题。一是8路模拟信号通道的选择,二是A/D转换完成后转换数据的传送。转换数据的传送有定时传送方式、查询方式、中断方式这三种方式。A、B、C的值与被选择的通道之间的关系


欢迎分享,转载请注明来源:内存溢出

原文地址: http://outofmemory.cn/yw/11221129.html

(0)
打赏 微信扫一扫 微信扫一扫 支付宝扫一扫 支付宝扫一扫
上一篇 2023-05-14
下一篇 2023-05-14

发表评论

登录后才能评论

评论列表(0条)

保存