⭐ 欢迎来到虫虫下载站! | 📦 资源下载 📁 资源专辑 ℹ️ 关于我们
⭐ 虫虫下载站

📄 adc0832.h

📁 主要有基于51的I2c读写24c64的测试程序
💻 H
字号:
/*
********************************************************************
** 文件名   : AD0832.H
** 创建人   :qixi.qin
** 创建日期 :2008.11.4
** 说明     :
** 联系     : 广西民族大学 06自动化 dongxixiaonanbi@163.com
********************************************************************
*/

#ifndef _ADC0832_H_
#define _ADC0832_H_

#include <AT89x52.h>

#define    uchar   unsigned char
#define    uint    unsigned int 


extern void          _nop_     (void);

/*
********************************************************************
** 函数名 :ADC0832读数据程序
** 入口   :需转换通道channel  [0:1]
** 返回   : 无符号字符型 uchar
** 例子   : Data_adc = ReadAdc0832( 0 );   //读取adc0832芯片的0通道模拟电压
** 说明   : 使用时请在芯片加上精准电压源, 建议彩专用芯片
********************************************************************
*/
uchar ReadAdc0832( uchar channel );
//ADC0832端口定义
#define     ADC0832_SCK_H      P3_2 = 1
#define     ADC0832_SCK_L      P3_2 = 0

#define     ADC0832_DIDO_H     P3_3 = 1
#define     ADC0832_DIDO_L     P3_3 = 0
#define     ADC0832_DIDO       P3_3

#define     ADC0832_CS_H       P3_4 = 1
#define     ADC0832_CS_L       P3_4 = 0



//工作时序
//当cs由高变低时,选中ADC0832。在时钟的上升沿,DI端的数据移入ADC0832内部的多路地址移位寄存器。
//在第一个时钟期间,Dl为高,表示启动位,紧接着输入两位配置位。当输入启动位和配置位后,选通输入模拟通道,转换开始。
//转换开始后,经过一个时钟周期延迟,以使选定的通道稳定。ADC0832接着在第4个时钟下降沿输出转换数据。
//数据输出时先输出最高位(D7~DO);输出完转换结果后,又以最低位开始重新输出一遍数据(D7~DO),两次发送的最低位共用。当片选cS
//为高时,内部所有寄存器清0,输出变为高阻态。如果要再进行一次模傲转换,片选cs必须再次从高向低跳变,后面再输入启动位和配置位

//adc0832读数据
uchar ReadAdc0832( uchar channel )
{
    uchar i = 0;
    uchar outdata = 0;
    //初始化: 选通 数据口保持高电平
	//当cs由高变低时,选中ADC0832。在时钟的上升沿,DI端的数据移入ADC0832内部的多路地址移位寄存器
    ADC0832_CS_L;   // 使能
    ADC0832_DIDO_H; //
    ADC0832_SCK_L;  //第一次触发
    _nop_();
	_nop_();
    ADC0832_SCK_H;  //
    _nop_();
	_nop_();
	
	//模拟通道的选择及单端输入和差分输入的选择
	ADC0832_DIDO_H;
    ADC0832_SCK_L;  //第二次触发
	_nop_();
	_nop_();
    ADC0832_SCK_H;
    _nop_();
	_nop_();
	
	if( channel == 1 )	
    	{
        	ADC0832_DIDO_H;
    	}
	
    else
    	{
        	ADC0832_DIDO_L;
    	}
	ADC0832_SCK_L;  //第三次触发
    _nop_();
	_nop_();
	ADC0832_SCK_H;
	_nop_();
	_nop_();
	
	
    ADC0832_SCK_L;
	_nop_();
	_nop_();
    ADC0832_DIDO_H;   //置为输入准备读数据
    ADC0832_SCK_H;
	_nop_();
	_nop_();

	outdata = 0;     //初始化
	
    //读数据D7~D0
    for( i = 1; i <= 8; i++ )
    	{
        	if( ADC0832_DIDO == 1 )
            	{
					outdata |= 0x01;
				}

			ADC0832_SCK_H;
        	ADC0832_SCK_L;

        	outdata = outdata << 1; //左移一位
    	}

    //此函数不再读数据D0~D7  (注意D0位重叠)
    ADC0832_CS_H;        //禁止
    	
	return outdata;
}
#endif  //<ADC0832.H>

⌨️ 快捷键说明

复制代码 Ctrl + C
搜索代码 Ctrl + F
全屏模式 F11
切换主题 Ctrl + Shift + D
显示快捷键 ?
增大字号 Ctrl + =
减小字号 Ctrl + -