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

一.简介

数模转换器一般分为两种,一种为数字信号转模拟信号,,其控制器简称为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;
		Clk = 1;
		_nop_();
		Clk = 0;
		if (DATO)
		adval |= 0x01;
		else
		adval |= 0x00;
	}
	for (i = 0; i < 8; i++)      //读取后8位的值
	{
		test >>= 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”获取资料
在这里插入图片描述

  • 58
    点赞
  • 489
    收藏
    觉得还不错? 一键收藏
  • 9
    评论
ADC0832是一种8位的模数转换,通常与51单片机结合使用来实现模拟信号的转换为数字信号。通过将模拟信号输入到ADC0832的引脚上,ADC0832会将这个模拟信号转换为相应的8位数字量,并输出给51单片机进行处理和显示。这样可以将模拟信号用数字方式进行处理,例如进行数值计算、存储等操作。 这个转换过程需要通过程序来控制,使用C语言编写的程序可以实现ADC0832的控制和数据读取。通过配置相应的引脚连接和读取程序,可以实现将模拟信号转换为数字信号并在51单片机上进行处理和显示。有关如何使用51单片机和ADC0832进行AD模数转换的详细信息可以参考引用中提供的工程和仿真示例。<span class="em">1</span><span class="em">2</span> #### 引用[.reference_title] - *1* [51单片机控制ADC0808芯片进行AD数模转换.zip](https://download.csdn.net/download/qq_51500064/66913405)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] - *2* [C语言实现51单片机和ADC0832芯片的AD模数转换实验(含proteus仿真+keil项目)](https://download.csdn.net/download/qq_41488943/12478131)[target="_blank" data-report-click={"spm":"1018.2226.3001.9630","extra":{"utm_source":"vip_chatgpt_common_search_pc_result","utm_medium":"distribute.pc_search_result.none-task-cask-2~all~insert_cask~default-1-null.142^v93^chatsearchT3_2"}}] [.reference_item style="max-width: 50%"] [ .reference_list ]

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

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

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

抵扣说明:

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

余额充值