原创 MAX1167 16位AD

2009-6-15 20:48 5314 12 14 分类: MCU/ 嵌入式

rarMAX1167  16位AD


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


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


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


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


希望对大家有用:-)


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


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


器件引脚图


7b1d04a1-f3bf-4c04-ad6c-9c13f27a4378.jpg


单电源供电测试电路图


点击开大图



以下为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

PARTNER CONTENT

文章评论2条评论)

登录后参与讨论

用户79732 2009-7-21 15:52

怎么这么强啊

用户545094 2009-6-20 21:22

很好
相关推荐阅读
用户149863 2010-05-22 22:40
LCD简单菜单显示
LCD简单菜单显示显示器件为图形型LCD12864(主控芯片KS0108)什么都不带!包含以下文件:LCD菜单(测试)LCD菜单(简单)LCD菜单(界面)LCD菜单(遥控器)希望对大家有用^_^感兴趣...
用户149863 2010-05-22 14:33
LCD12864(KS0108)液晶演示程序
LCD12864(KS0108)液晶演示程序LCD12864(KS0108)液晶演示程序视频: LCD12864演示程序(什么都不带的液晶) 视频演示网址:http://v.youku.com/v_s...
用户149863 2009-10-22 18:27
AVR代码
AVR单片机程序代码集,给需要的朋友们参考呵呵,都是自己一边学一边写的,一个一个字符从键盘敲出来的^_^希望对大家有用:-)呵呵,编译软件为:  ICCAVR V6.31A版本一共七个压缩包,呵呵,分...
用户149863 2009-10-22 15:18
VGA相关资料
VGA相关资料呵呵^_^如果你想玩的就请下载,有很多东西,都是花了我好几个夜晚才搜到的都是网上的资料:-)有兴趣的可以做做哦 包含以下文件夹:├─VGA+2051│  │  共享-----国外优秀电子...
用户149863 2009-10-10 14:46
PS/2 键盘与单片机
程序打包PS/2 键盘与单片机接口用LCD1602显示调试成功所以拿出来给大家分享,希望对大家有用,呵呵^_^用PS/2键盘做系统输入部分蛮方便的哦!可以使用Backspace/Esc/Tab/Cap...
用户149863 2009-08-17 19:54
AVR端口操作宏定义,便于移植
AVR端口操作宏定义头文件(ICCAVRIO.H),便于移植(ICCAVR编译环境) 压缩包里面有网上的相关资料,把它看完,相信你会更加了解红宏定义的^_^还有头文件在ICCAVRIO.H在Inclu...
EE直播间
更多
我要评论
2
12
关闭 站长推荐上一条 /3 下一条