专栏中心

EEPW首页 > 专栏 > MAX1167 16位AD

MAX1167 16位AD

发布人:0750long 时间:2009-06-16 来源:工程师 发布文章
MAX1167 16位AD

 

rarMAX1167  16位AD

压缩包里面有MAX1167的器件手册,还有我自己的笔记等。

包含两个程序,测试通过(∩_∩)

一个是用LED显示二进制数据

一个是用液晶1602显示模拟电压和16位二进制数据

希望对大家有用:-)

呵呵,该芯片是同学给我的,从美信公司申请的,免费的16位ADC

概述:
MAX1167为低功耗、多通道、16位逐次逼近型模数转换器(ADC)
具有集成的+4.096V基准、一个基准缓冲器、一个内部振荡器、自动关断等特点
并带有一个高速SPI/QSPI/MICROWIRE兼容的接口
MAX1167采用单+5V模拟电源工作,且具有独立的数字电源
允许直接与+2.7V至+5.5V的数字逻辑接口。

器件引脚图

单电源供电测试电路图

点击开大图


以下为MAX1167头文件
/*--------------------------------------------------------------*/
//File:   MAX1167.H
//Data:   16:51 2009-6-15
//Version:  Ver0.1


/*--------------------------------------------------------------*/
//防止被重复定义
#ifndef  __MAX1167_H__
#define __MAX1167_H__


/*--------------------------------------------------------------*/
//接口定义
sbit AD_DOUT = P2^7;  //数据输出
sbit AD_SCLK = P2^6;  //时钟
sbit AD_DIN   = P2^5;  //数据输入
sbit AD_EOC   = P2^4;  //转换结束
sbit AD_CS  = P2^3;  //片选


/*--------------------------------------------------------------*/
//指令、配置、控制、寄存器设置
//000   00    00   1   //0x01
//通道AIN_0、单通道无扫描、内置参考电压、内部转换时钟

//通道选择
#define AIN_0 0x00 //通道AIN_0
#define AIN_1 0x20 //通道AIN_1
#define AIN_2 0x40 //通道AIN_2
#define AIN_3 0x60 //通道AIN_3

//扫描方式
#define SM_0 0x00 //单通道无扫描
#define SM_1 0x08 //扫描0~AIN_n AIN_n <= 3
#define SM_2 0x10 //扫描2~AIN_n 2 <= AIN_n <= 3
#define SM_3 0x18 //单通道AIN_n扫描四次

//参考电压、省电模式
#define REF_PD_0 0x00 //参考电压内部、内置参考电压开启、参考缓冲开启(转换之间)
#define REF_PD_1 0x02 //参考电压内部、内置参考电压关闭、参考缓冲关闭(转换之间)
#define REF_PD_2 0x04 //参考电压内部、内置参考电压开启、参考缓冲关闭(转换之间)
#define REF_PD_3 0x06 //参考电压外部、内置参考电压关闭、参考缓冲关闭(一直)

//选择转换时钟
#define EXT_CLK  0x00 //外部转换时钟
#define INT_CLK  0x01 //内部转换时钟


/*--------------------------------------------------------------*/
//函数声明
void ad_write_byte(unsigned char dat);  //写入一个字节
unsigned int ad_read_word(void);   //读出一个字
unsigned int ad_read_dat(unsigned char dat);//写入指令并读出一个字
void ad_read_scan_dat(unsigned char dat, unsigned int *scan_dat, unsigned char n);//写入指令并读出n个字


/*--------------------------------------------------------------*/
//写入一个字节
void ad_write_byte(unsigned char dat)
{
 unsigned char i;

 for(i = 8; i != 0; i--)
 {
  AD_SCLK = 0;
  AD_DIN  = (bit)(dat & 0x80); //先发送最高位
  AD_SCLK = 1;     //上升沿写入数据 
  dat <<= 1;
 }
 AD_SCLK = 0;      //拉低时钟线避免干扰
}


/*--------------------------------------------------------------*/
//读出一个字
unsigned int ad_read_word(void)
{
 unsigned char i;
 unsigned int  dat;

 dat = 0;       //初始化变量
 for(i = 16; i != 0; i--)
 {
  dat <<= 1;
  dat |= (unsigned int)(AD_DOUT); //先收到最高位
  AD_SCLK = 1;
  AD_SCLK = 0;
 }
 return (dat);
}


/*--------------------------------------------------------------*/
//写入指令并读出一个字
unsigned int ad_read_dat(unsigned char dat)
{
 unsigned int read_dat;

 AD_CS = 0;    //启动AD
 ad_write_byte(dat);   //写入指令配置
 while(AD_EOC);    //等待转换结束
 read_dat = ad_read_word(); //读出数据
 AD_CS = 1;    //关闭AD
 return (read_dat);
}


/*--------------------------------------------------------------*/
//写入指令并读出n个字
void ad_read_scan_dat(unsigned char dat, unsigned int *scan_dat, unsigned char n)
{
 unsigned char i;

 AD_CS = 0;    //启动AD
 ad_write_byte(dat);   //写入指令配置
 while(AD_EOC);    //等待转换结束
 for(i = 0; i < n; i++)
 {
  *scan_dat = ad_read_word(); //读出数据
  scan_dat++;
 }
 AD_CS = 1;    //关闭AD
}


/*--------------------------------------------------------------*/
#endif

专栏文章内容及配图由作者撰写发布,仅供工程师学习之用,如有侵权或者其他违规问题,请联系本站处理。 联系我们

关键词:

相关推荐

意法半导体推出面向电机控制的全新氮化镓(GaN)IC平台,助力家电能效升级

欧盟提出“EuroStack”概念:以摆脱对美国数字技术的深度依赖

2026-01-29

针对LED照明应用的安森美半导体电源驱动解决方案

视频 2011-05-23

涨价潮席卷被动元件行业

2026-01-29

ASML计划裁员4%,简化技术部门内的决策流程

2026-01-29

数字方式的线性调节器

创新的液晶电视LED背光驱动解决方案

AI推动成熟制程价格上涨

EDA/PCB 2026-01-29

英飞凌与达美携手实现数据中心垂直供电

劳特巴赫Trace32系列培训(2) --PowerTrace助您实时跟踪软件运行

通过jtag对SoC C8051Fxxx芯片编程

用于零电压开关结构的新一代高电压CoolMOS

视频 2011-05-23

绿色能源趋势和对电源转换的影响

视频 2011-05-23

四相(L298)步进电机驱动电路

Microsoft通过“Braga” Maia 200 AI 计算引擎挑战其他云端

对于人工智能处理器初创企业来说,是否是成败的关键时刻?

智能计算 2026-01-29

240亿美元!美光扩建新加坡NAND晶圆厂

2026-01-29

数字信号处理与噪音抑制(pdf)

更多 培训课堂
更多 焦点
更多 视频

技术专区