基于51单片机的adc0832程序编写的学习

adc0832程序编写


前言

基于C51单片机项目的传感器数据采集,由于传感器是模拟输出,单片机接收传感器需要将模拟信号转换为数字信号才能读取数据,所以需要adc0832模数转换器的程序编写!


提示:以下是本篇文章正文内容,下面案例可供参考

一、ADC0832是什么?

ADC0832 为8位分辨率A/D转换芯片,其最高分辨可达256级,可以适应一般的模拟量转换要求

二、执行代码

代码如下:

unsigned char Adc0832(unsigned char channel)     //ADת»»£¬·µ»Ø½á¹û
{
    uchar i=0;
    uchar j;
    uint dat=0;
    uchar ndat=0;

    if(channel==0)channel=2;
    if(channel==1)channel=3;
    ADDI=1;
    _nop_();
    _nop_();
    ADCS=0;//À­µÍCS¶Ë
    _nop_();
    _nop_();
    ADCLK=1;//À­¸ßCLK¶Ë
    _nop_();
    _nop_();
    ADCLK=0;//À­µÍCLK¶Ë,ÐγÉϽµÑØ1
    _nop_();
    _nop_();
    ADCLK=1;//À­¸ßCLK¶Ë
    ADDI=channel&0x1;
    _nop_();
    _nop_();
    ADCLK=0;//À­µÍCLK¶Ë,ÐγÉϽµÑØ2
    _nop_();
    _nop_();
    ADCLK=1;//À­¸ßCLK¶Ë
    ADDI=(channel>>1)&0x1;
    _nop_();
    _nop_();
    ADCLK=0;//À­µÍCLK¶Ë,ÐγÉϽµÑØ3
    ADDI=1;//¿ØÖÆÃüÁî½áÊø 
    _nop_();
    _nop_();
    dat=0;
    for(i=0;i<8;i++)
    {
        dat|=ADDO;//ÊÕÊý¾Ý
        ADCLK=1;
        _nop_();
        _nop_();
        ADCLK=0;//ÐγÉÒ»´ÎʱÖÓÂö³å
        _nop_();
        _nop_();
        dat<<=1;
//        if(i==7)dat|=ADDO;
    }  
    for(i=0;i<8;i++)
    {
        j=0;
        j=j|ADDO;//ÊÕÊý¾Ý
        ADCLK=1;
        _nop_();
        _nop_();
        ADCLK=0;//ÐγÉÒ»´ÎʱÖÓÂö³å
        _nop_();
        _nop_();
        j=j<<7;
        ndat=ndat|j;
        if(i<7)ndat>>=1;
    }
    ADCS=1;//À­µÍCS¶Ë
    ADCLK=0;//À­µÍCLK¶Ë
    ADDO=1;//À­¸ßÊý¾Ý¶Ë,»Øµ½³õʼ״̬
    dat<<=8;
    dat|=ndat;
    return(dat);            //return ad k
}

总结

adc0832有两个转换通道,可以同时使用,在读取数据之前需要软件拉高拉低两三次时钟线,然后一位一位读取数据,并保存到变量dat中。

  • 2
    点赞
  • 27
    收藏
    觉得还不错? 一键收藏
  • 3
    评论

“相关推荐”对你有帮助么?

  • 非常没帮助
  • 没帮助
  • 一般
  • 有帮助
  • 非常有帮助
提交
评论 3
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值