max1241测试程序

上传人:第*** 文档编号:34420404 上传时间:2018-02-24 格式:DOC 页数:6 大小:80KB
返回 下载 相关 举报
max1241测试程序_第1页
第1页 / 共6页
max1241测试程序_第2页
第2页 / 共6页
max1241测试程序_第3页
第3页 / 共6页
max1241测试程序_第4页
第4页 / 共6页
max1241测试程序_第5页
第5页 / 共6页
点击查看更多>>
资源描述

《max1241测试程序》由会员分享,可在线阅读,更多相关《max1241测试程序(6页珍藏版)》请在金锄头文库上搜索。

1、MAX1241 简介:MAX1241 是一种低功耗、低电压的 12 位串行 ADC。它使用逐次逼近技术完成 A/D转换过程。最大非线性误差小于 1LSB,转换时间 9s。采用三线式串行接口,内置快速采样/保持电路。内部结构图: MAX1241 管脚介绍:采用单电源供电,动态功耗在以每秒 73K 转换速率工作时,仅需 0.9mA 电流。在停止转换时,可通过 SHDN 控制端使其处于休眠状态,以降低静态功耗。休眠方式下,电源电流仅 1A。管 脚 名 称 功 能 参 数1 VDD 电源输入 +2.7+5.2V2 VIN 模拟电压输入 0VREF3 SHDN 节电方式控制端“0”节电方式(休眠状态)“

2、1”或浮空工作4 REF 参考电压 VREF 输入端 10VVDD5 GND 模拟、数字地 6 DOUT 串行数据输出 三态7 CS 芯片选通 “0” 选通“1” 禁止8 SCLK 串行输出驱动时钟输入 频率范围:02.1MHzMAX1241 工作时序图:MAX1241 与单片机接口电路:MAX1241 与微机接口的实现有二种选择,一是使用普通端口,利用程序实现串行输入。另一种则是直接使用串行口。前者输入速度低,后者需占用串行通讯口。我测试时选用第一种方式,电路如下:参考电压 REF 的值为 2.5V,根据逐次逼近型 AD 转换原理,满量程的测量值为 2.5V,测量的数字量为 1111 111

3、1 1111(4095) ,所代表的的模拟电压量为 2.5V,精度为2500/4095=0.6105。程序代码如下:采集程序:/*文件名称: MAX1241.c功能说明: MAX1241 驱动文件硬件描述: 使用 12MHz 的晶体(fcpu=1MHz)创建日期: 2013.03软件版本: v 1.0 */#include #define uchar unsigned char#define uint unsigned intsbit ADC_CS = P35;sbit ADC_CLK = P34;sbit ADC_DOUT = P36;/*函 数 名: Read_Max1241()功能描述:

4、 MAX1241 读函数输入参数: 无输出参数: ADCData*/uint Read_Max1241()uint ADC_Data;uchar i;ADC_CLK=0;ADC_CS=0;ADC_Data=0;while(!ADC_DOUT); /当 CS=0 后,开始转换,DOUT 输出 0,转换结束输出 1,再要有一个时钟后才开始传输数据/start output the dataADC_CLK=1;ADC_CLK=0;/传输数据for(i=0;i#define uchar unsigned char#define uint unsigned int/=/宏定义/=#define LedN

5、um 4 /数码管个数#define DataPort P1 /段口#define ComPort P0 /位口(4 bit)#define DispSyst 10 /显示的进制之间的切换#define Ledchk_Time 50#define AD_Time 100000/=/定义变量/=bit bdata ScanTime_Flag = 1; /扫描时间,根据实际情况调整bit bdata ClkFlsFlag;uchar data ScanBitCnt;uchar data LedDispBuffLedNum; /4 个数码管uchar data LedDisp_menu = 0;uc

6、har data DotPortFlag = 0;uchar data Ledchk_TimeBuff = 10;int data AD_TimeBuff = 1000;/=uint data ADC_Data = 0;uchar data menu = 1;sbit DotPort=P17;float data a = 0.6105;/=共阳数码管表=uchar data CODE= 0xc0,0xf9,0xa4,0xb0, / 0-0 1-1 2-2 3-30x99,0x92,0x82,0xf8, / 4-4 5-5 6-6 7-70x80,0x90,0x88,0x83, / 8-8 9-

7、9 10-A 11-b0xc6,0xa1,0x86,0x8e, / 12-C 13-D 14-E15-F0x8c,0xc1,0x89,0xc7, / 16-P17-U 18-H 19-L0xbf,0x91,0x92,0xf7, / 20- 21-y 22-S23-_0x8b,0xc2,0xa3,0xff / 24-h 25-G 26-o 27-空;/=位选表=uchar data ComPort_CODE= 0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f,0xff; /数码管位显示选择/=/子函数声明/=void Led_DispBuff();void Led_

8、Display();void Led_Chat();extern uint Read_Max1241();/=/接口函数/=void Mn_LED_Driver() Led_Chat();if(AD_TimeBuff = 0)AD_TimeBuff = AD_Time;ADC_Data = (Read_Max1241()*a; /传入数据if(Ledchk_TimeBuff = 0)Ledchk_TimeBuff = Ledchk_Time;/ADC_Data = (Read_Max1241()*a; /传入数据Led_DispBuff();Led_Display();/=/显示缓冲区/=vo

9、id Disp_1(uint data a)LedDispBuff0= a/1000%10; /显示第一个数码管LedDispBuff1= a/100%10; /显示第二个LedDispBuff2= a/10%10; /显示第三个LedDispBuff3= a%10; /显示第四个void Disp_2(uchar data a,uchar data b) /时间相关显示驱动LedDispBuff0= a/10; /将分的高位存入显示缓冲区LedDispBuff1= a%10; /将分的低位存入显示缓冲区LedDispBuff2= b/10; /将秒的高位存入显示缓冲区LedDispBuff3

10、= b%10;void Disp_4(uchar a,uchar b,uchar c,uchar d) /菜单相关显示驱动LedDispBuff0= a; /显示第一个数码管LedDispBuff1= b; /显示第二个LedDispBuff2= c; /显示第三个LedDispBuff3= d; /显示第四个void Led_DispBuff()/显示接口switch(LedDisp_menu)case 0:Disp_1(ADC_Data);break;/时钟显示case 1:break;/跑表显示case 2:break; /菜单选择显示case 3:break;/=/显示函数/=void

11、 Led_Display()ScanBitCnt+;if(ScanBitCnt = 4)ScanBitCnt = 0;DataPort = CODELedDispBuffScanBitCnt; /段选if(ScanBitCnt=0)DotPort=0; /用来显示温度的小数点位ComPort = ComPort_CODEScanBitCnt;ScanBitCnt = ScanBitCnt;/=/函数功能:按键时间控制/名 称:Key_Chat()/全局变量:Keychk_Time 键检测时间/出口参数:无/=void Led_Chat()if(Ledchk_TimeBuff) Ledchk_TimeBuff-;if(AD_TimeBuff) AD_TimeBuff-;主函数:#include #define uchar unsigned char#define uint unsigned intvoid Mn_LED_Driver();void main()while(1)Mn_LED_Driver();

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 办公文档 > 解决方案

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号