您现在的位置: 主页 > MCU > 单片机应用 > AD0832的51驱动程序 -
本文所属标签:
为本文创立个标签吧:

AD0832的51驱动程序 -

来源: 网络用户发布,如有版权联系网管删除 2018-09-08 

[导读]/******************************************************************************************************************************************/#ifndef _ADC0832_H_#define _ADC0832_H_#include #define uchar

/*
********************************************************************
********************************************************************
*/

本文引用地址: http://www.21ic.com/app/mcu/201807/785080.htm

#ifndef _ADC0832_H_
#define _ADC0832_H_

#include

#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 //




              查看评论 回复



嵌入式交流网主页 > MCU > 单片机应用 > AD0832的51驱动程序 -
 

"AD0832的51驱动程序 -"的相关文章

网站地图

围观()