"); //-->
压缩包里面有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”概念:以摆脱对美国数字技术的深度依赖
D型IPM的结构及IGBT的等效电路
GA系列IGBT半桥、高端开关和低端开关型模块的内部接线图
针对LED照明应用的安森美半导体电源驱动解决方案
鼠标协议
涨价潮席卷被动元件行业
ASML计划裁员4%,简化技术部门内的决策流程
数字方式的线性调节器
变频器的控制驱动主电路的原理图
[求助]各位步进电动机的单片机控制的高手救命啊!!
速度高达54Mbps的IEEE802.11a无线LAN协议
创新的液晶电视LED背光驱动解决方案
请问哪位兄台有minigui完整版的源码包?
AI推动成熟制程价格上涨
英飞凌与达美携手实现数据中心垂直供电
劳特巴赫Trace32系列培训(2) --PowerTrace助您实时跟踪软件运行
请教一个usb开发的问题
通过jtag对SoC C8051Fxxx芯片编程
用于零电压开关结构的新一代高电压CoolMOS
绿色能源趋势和对电源转换的影响
[求助]关于USB协议的问题~~~
四相(L298)步进电机驱动电路
Microsoft通过“Braga” Maia 200 AI 计算引擎挑战其他云端
对于人工智能处理器初创企业来说,是否是成败的关键时刻?
移植vxworks问题
240亿美元!美光扩建新加坡NAND晶圆厂
GA系列IGBT单开关型模块的内部接线图
标准MiniSkiiP电路
数字信号处理与噪音抑制(pdf)