您的位置 首页 分销

模数转化ADC0832、ADC0808和ADC0809的使用

***************************************************************利用AT89c51单片机和ADC0808(ADC0809)ADC0832进

/***************************************************************

使用AT89c51单片机和ADC0808(ADC0809)ADC0832进行模数转化,进行电压测验
数码管选用共阳极,要显现小数点,则小数点位二进制数最高为应为0,在0-9的8421BCD
码中,最高位都为1,所以把输出数据的BCD码与0x7F“相与”才干完成带小数点的显现。
****************************************************************/
#include
#include
#define uint unsigned int
#define uchar unsigned char
//******************adc0832****************************//
sbit CS=P2^3; //使能。
sbit CLK=P2^2;//时钟
sbit DO=P2^1; // 数据输出
sbit DI=P2^0;//数据输入
char CC[]=”11001001″;
uchar tab[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0xa1,0x86,0x8e};
uchar temp;
uint vvv,i;
//通道的挑选:0x02便是单通道0;0x03便是单通道1;
//0x00便是双通道ch0=”+”; ch0=”-“
//0x01便是双通道ch0=”-“; ch0=”+”
//*****************************************************//
void delay(int tt)
{
while(tt–)
{for(i=0;i<120;i++);}
}
void startADC()
{
CS=1;
_nop_();
_nop_();
CLK=0;
_nop_();
_nop_();
CS=0;
_nop_();
_nop_();
DI=1;
_nop_();
_nop_();
CLK=1;
_nop_();
_nop_();
DI=0;
_nop_();
_nop_();
CLK=0;
_nop_();
_nop_();
}
void choiceADC(uint CH)//CH为0挑选通道ch0,为1,挑选ch1进行AD转化
{
startADC();
if(CH==0)
{
DI=1;
_nop_();
CLK=1;//上升沿DI=1
_nop_();
CLK=0;//1个下降沿DI=1
_nop_();
DI=0;
_nop_();
CLK=1;
_nop_();
CLK=0;//第3个上升沿DI=0
_nop_();
}
else
{
DI=1;
_nop_();
CLK=1;//上升沿DI=1
_nop_();
CLK=0;//1个下降沿DI=1
_nop_();
DI=1;
_nop_();
CLK=1;
_nop_();
CLK=0;//第3个上升沿DI=1
_nop_();
}
/********通道挑选完毕开端读取转化后的二进制数****/
CLK=1;
_nop_();
CLK=0;//下降沿读数,一下进行判别和处理,共8次
for(i=0;i<8;i++)
{
DI=1;
if(DO)
{
temp |=0x01;
}
else
{
temp &=0xfe;
}
CLK=0;
_nop_();
CLK=1;
temp=temp<<1;
}
vvv=temp*500.0/255;
}

声明:本文内容来自网络转载或用户投稿,文章版权归原作者和原出处所有。文中观点,不代表本站立场。若有侵权请联系本站删除(kf@86ic.com)https://www.86ic.net/bandaoti/fenxiao/318503.html

为您推荐

联系我们

联系我们

在线咨询: QQ交谈

邮箱: kf@86ic.com

关注微信
微信扫一扫关注我们

微信扫一扫关注我们

返回顶部