• 1
  • 2
  • 3
  • 4

首页 / 资料库 / 电路图

使用ADC0832与单片机的电量指示电路设计

2023-09-18 18:58:00

一、前言

在数字电路中,电平只有高和低两种状态,而在模拟电路中,电平理论上有无数个状态,在使用过程中就需要将两者联系起来。ADC0832是一款A/D转换芯片,是模拟电路与数字电路转换的一种渠道。本设计通过比较输入端电压的大小从而点亮不同颜色的LED灯。电压4.5~5V时为绿灯,3.5~4.5V为黄灯,低于3.5V为红灯。如果有想法,在此基础上还可以加入蜂鸣报警功能,电压低于多少时进行报警。此设计电路简单容易操作。

二、ADC0832介绍

1、基本信息

引脚功能:

引脚编号引脚功能描述
1CS-低电平芯片使能端
2CH0模拟信号输入通道0
3CH1模拟信号输入通道1
4GND低电平(地)
5D1数据信号输入,选择通道控制
6D0数据信号输入,转换数据输出
7CLK时钟输入
8VCC高电平

特点:

(1)8位分辨率;

(2)双通道A/D转换;

(3)供电电压在0~5之间;

(4)低功耗;

(5)工作频率为250KHZ,转换时间为32微妙;

2、使用

在正常使用情况下ADC0832与单片机的接口为4条数据线,分别为CS-、CLK、D0、D1。但D0D1在使用时并未同时有效并与单片机端口,所以在电路连接时可连于同一引脚。

当ADC0832为工作时端口CS为高电平,此时芯片处于禁用状态,CLK、D0和D1电平任意。

当ADC0832工作时需先将CS端口置于低电平,并且维持低电平直至转换结束。开始转换工作时,单片机向时钟输入端CLK输入脉冲信号,此时使用D1的输入通道选择功能。在第一个脉冲下降之前D1必须为高电平,用来表示启动信号。在第2、3个脉冲下降之前DI端应输入2位数据用于选择通道功能,到第3 个脉冲的下降之后DI端的输入电平就失去输入作用﹐此后DO/DI端则开始利用数据输出DO进行转换数据的读取。从第4个脉冲下沉开始由DО端输出转换数据最高位 DATA7,随后每一个脉冲下降DO端输出下一位数据。直到第11个脉冲时发出最低位数据DATA0,一个字节的数据输出完成。最后将CS置高电平禁用芯片,直接将转换后的数据进行处理就可以了。

三、硬件连接

poYBAGKlx8CAJjRGAAAUSR4Fq6o586.webp

CS连接P20;CLK连接P21;DI、DO连接P22;CH0、CH1为信号输入端。

四、软件代码

pYYBAGKlx9mAeQe7AACnaJ3XjoU227.webp

main主函数

启动定时器,根据比较后的值判断需要点亮的LED灯。

void main(void){uchar AD1;uint vt1;   uint while_times = 0;delayms(300);ET0  = 1;    TR0  = 1;    ET1  = 1;    TR1  = 1;    EA   = 1;     //打开总中断    CLK = 0;      //ADC0832初始化    CS   = 1;   while(1){   AD1 = Get_AD_Result1();   vt1=(500.0/256.0)*AD1;   if(vt1>=450)   {   led1=0;led2=1;led3=1;   }   elseif(vt1>=350&&vt1<450)   {   led1=1;led2=0;led3=1;   }   elseif(vt1<350)   {   led1=1;led2=1;led3=0;   }}}

获取AD转换结果(0通道)

uchar Get_AD_Result1()         //包含11个CLK下降沿      {    uchar i, dat;    CS = 1;              //ADC0832未工作时,CS端为高电平,此时芯片禁用    CLK =1;                      CS = 0;    DIDO = 1; CLK = 0;  CLK = 1; //SCLK第一个下降沿来到时,DI = 1启动ADC0832    DIDO = 1; CLK = 0;  CLK = 1;  //SCLK第二个下降沿     DIDO = 0; CLK = 0;  CLK = 1; //SCLK第三个下降沿,发送1,0选择通道cho    DIDO = 1;                                //释放总线    for(i = 0; i < 8; i++)                  //第4个下降沿到第11个下降沿    {        CLK = 0;           //clk处于下降沿,每一个下降沿DO端输入下一个        if(DIDO) dat |= 0x01;           // dat = dat | 0x01,dat和0x01做“或”的运算,意思是最低位置1,其它位保持不变。        CLK = 1;                       //clk处于上升沿        dat <<= 1;                          //数据左移    }    return (dat);    CS = 1;                                  //ADC0832停止工作}

五、效果展示

poYBAGKlx-WAXzIHAAClMdFrG9s965.webppYYBAGKlx-2AHDF7AACn95T2iHI753.webppoYBAGKlx_mAdKELAACneLUmn8s841.webp

六、代码链接

关注公众号“小小创客者”回复“ADC0832电量指示电路”获得代码,如有错误欢迎指正。

单片机指示电路设计电量电路

  • 1
  • 2
  • 3
  • 4

最新内容

手机

相关内容

  • 1
  • 2
  • 3

猜你喜欢