数模转换器ADC0832使用原理及控制程序

您所在的位置:网站首页 比亚迪混动轿车哪款最好 数模转换器ADC0832使用原理及控制程序

数模转换器ADC0832使用原理及控制程序

2023-06-02 08:22| 来源: 网络整理| 查看: 265

一.简介

数模转换器一般分为两种,一种为数字信号转模拟信号,,其控制器简称为DAC;另一种为模拟信号转数字信号,其控制器简称为ADC。现在主要介绍一款很常用、入门级的ADC转换芯片——ADC0832。 ADC0832 是美国国家半导体公司生产的一种8 位分辨率、双通道A/D转换芯片。由于它体积小,兼容性强,性价比高而深受单片机爱好者及企业欢迎,其目前已经有很高的普及率。 在这里插入图片描述 ADC083X是市面上常见的串行模—数转换器件系列。ADC0831、ADC0832、ADC0834、ADC0838是具有多路转换开关的8位串行I/O模—数转换器,转换速度较高(转换时间32uS),单电源供电,功耗低(15mW),适用于各种便携式智能仪表。其中ADC0832为双通道ADC转换芯片,常用封装为DIP8和SOP8。

二.芯片电气参数 1.电气参数 8 位分辨率;双通道 A/D 转换;输入输出电平与 TTL/CMOS 相兼容;5V 电源供电时输入电压在 0~5V 之间;工作频率为 250KHZ,转换时间为 32μS;一般功耗仅为 15mW; 8P、14P—DIP(双列直插)、SOP 多种封装;商用级芯片温宽为0°C to +70°C,工业级芯片温宽为−40°C to +85°C; 2.引脚说明

在这里插入图片描述 在这里插入图片描述

3.芯片内部连接框图

在这里插入图片描述

三.硬件原理图

正常情况下 ADC0832 与单片机的接口应为 4 条数据线,分别是 CS、CLK、 DO、DI。但由于 DO 端与 DI 端在通信时并未同时有效并与单片机的接口是双向的,所以电路设计时可以将 DO 和 DI 并联在一根数据线上使用,可识别并转换的电压为0-VCC;当电压超过VCC时,AD的数值处于饱和状态,为255。硬件电路图,如图: 在这里插入图片描述

四.控制程序 1.控制时序

当 ADC0832 未工作时其 CS 输入端应为高电平,此时芯片禁用,CLK 和DO/DI 的电平可任意。当要进行 A/D 转换时,须先将 CS 使能端置于低电平并且保持低电平直到转换完全结束。此时芯片开始转换工作,同时由处理器向芯片时钟输入端 CLK 输入时钟脉冲,DO/DI 端则使用 DI 端输入通道功能选择的数据信号。在第 1 个时钟脉冲的下沉之前 DI 端必须是高电平,表示启始信号。在第 2、3 个脉冲下沉之前 DI 端应输入 2 位数据用于选择通道功能,其功能项下表。 在这里插入图片描述 转换时序如图,选择通道0或1的区别在于,在第3个脉冲DO/DI引脚电平的不同,低电平为选择通道0,高电平为选择通道1。 在这里插入图片描述

2.转换函数

ADC0832转换程序也比较简单,只要按照以上转换时序进行编程即可实现控制。其中入口参数CH值为0或1,分别表示通道0和通道1。

/**************************************************************************** 函数功能:AD转换子程序 入口参数:CH 出口参数:dat ****************************************************************************/ unsigned char adc0832(unsigned char CH) { unsigned char i,test,adval; adval = 0x00; test = 0x00; Clk = 0; //初始化 DATI = 1; _nop_(); CS = 0; _nop_(); Clk = 1; _nop_(); if ( CH == 0x00 ) //通道选择 { Clk = 0; DATI = 1; //通道0的第一位 _nop_(); Clk = 1; _nop_(); Clk = 0; DATI = 0; //通道0的第二位 _nop_(); Clk = 1; _nop_(); } else { Clk = 0; DATI = 1; //通道1的第一位 _nop_(); Clk = 1; _nop_(); Clk = 0; DATI = 1; //通道1的第二位 _nop_(); Clk = 1; _nop_(); } Clk = 0; DATI = 1; for( i = 0;i < 8;i++ ) //读取前8位的值 { _nop_(); adval = 1; if (DATO) test |= 0x80; else test |= 0x00; _nop_(); Clk = 1; _nop_(); Clk = 0; } if (adval == test) //比较前8位与后8位的值,如果不相同舍去。若一直出现显示为零,请将该行去掉 dat = test; nop_(); CS = 1; //释放ADC0832 DATO = 1; Clk = 1; return dat; }

如需ADC0832相关资料, 请关注公众号,首页回复“ADC0832”获取资料 在这里插入图片描述



【本文地址】


今日新闻


推荐新闻


CopyRight 2018-2019 办公设备维修网 版权所有 豫ICP备15022753号-3