单片机控制ADC0809程序

单片机控制ADC0809程序,第1张

#define voldata P2

sbit adra=P0^0

sbit adrb=P0^1

sbit adrc=P0^2

sbit ale=P0^3

sbit st=P0^4

sbit eoc=P0^5

sbit oe=P0^6

unsigned char getvol(unsigned char adr)

{

unsigned char volnumber=0

unsigned int n=1000

oe=0

ale=0

adra=!(!(adr&0x01))

adrb=!(!(adr&0x02))

adrc=!(!(adr&0x04))

ale=1

st=0

st=1

st=0

while(n--)

while(!eoc)

oe=1

volnumber=voldata

oe=0

return(volnumber)

}

一楼不厚道,这么一点小程序也收费服务!

以上是ADC0809的驱动程序;只要向函数传递一个0-7的地址(adra、adrb、adrc是地址线);便会返回相对应地址上的0-255的值;再根据相应的基准电压便可以计算出被测电压的值了!

启动ADC0809,ADC0809将开始将外部电压转换成数字,当转换完成时,转换完成信号引脚会输出一个电平(请查看datasheet).这时单片机就可以直接读取数据了.

如果要不停采集,就继续启动采集,再查询ADC0809完成引脚.

ADC0809芯片的采集速度是几百K吧.记不得了,你自己看下.

也可以将ADC0809的完成引脚接到单片机的外部中断引脚上,这样就可以在中断中读取.

代码自己找下吧,网上很多的.

这个给你参考:

#define voldata P2

sbit adra=P0^0

sbit adrb=P0^1

sbit adrc=P0^2

sbit ale=P0^3

sbit st=P0^4

sbit eoc=P0^5

sbit oe=P0^6

unsigned char getvol(unsigned char adr)

{

unsigned char volnumber=0

unsigned int n=1000

oe=0

ale=0

adra=!(!(adr&0x01))

adrb=!(!(adr&0x02))

adrc=!(!(adr&0x04))

ale=1

st=0

st=1

st=0

while(n--)

while(!eoc)

oe=1

volnumber=voldata

oe=0

return(volnumber)

}

只要向函数传递一个0-7的地址(adra、adrb、adrc是地址线);便会返回相对应地址上的0-255的值;再根据相应的基准电压便可以计算出被测电压的值了!


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

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

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

发表评论

登录后才能评论

评论列表(0条)

保存