1、 基于ADS1255转换的简易电阻测试仪基于ADS1255转换的简易电阻测试仪设计摘 要电阻是电子产品所必不可少的元件,电阻阻值的测量也是关键。本设计由24位ADC转换电路(ADS1255转换电路)、MSP430单片机小系统、电源电路、恒压源电路、继电器换挡电路、显示电路等几个部分组成。本设计采用MSP430F149单片机与ADC模块结合为核心,输出一个电压值,对被测电阻进行测试和计算;设置4个档位,用键盘进行换挡控制,采用四个不同的精密电阻分别串联一个继电器进行电阻测量的换挡;通过软件编程来实现档位的自动转换,同时进行数据储存;经过LCD显示屏显示出所测得的电阻阻值和档位。通过设计、仿真与调
2、试,实现了电阻的精确测量。本设计具有精度高、操作简便、硬件设计简单等优点。关键词:ADS1255;MSP430F149;电阻测量;继电器The resistance measuring instrument based on ADS1255AbstractResistance is the essential components of electronic products, the resistance value measurement is also key. This design by 24 bits ADC transform circuit (ADS1255 transform
3、 circuit), MSP430 microcontroller small system, power supply circuit, constant pressure source circuit, relay shift circuit, show circuit and several other parts. This design USES the MSP430F149 single-chip microcomputer and ADC module combination as the core, output a voltage value, to be measured
4、resistance test and computing; Set up four gear, use the keyboard to shift control, it USES four different precision resistor in series a relay are respectively the resistance measurement shift; Through the software programming to realize the automatic conversion of gear, and data storage; After LCD
5、 screen shows the resistance tolerance and gear. Through the design, the simulation and debugging, realized the precise measurement of the resistance. This design has high precision, easy operation, hardware design simple, etc.Keywords: ADS1255; MSP430F149; Resistance measurement; relayIV目 录1引 言12系统
6、方案22.1 A/D模块方案22.2 控制器模块方案22.3 主电源模块方案32.4 恒压源方案32.5 换挡模块方案32.6 显示模块方案43系统理论分析与计算53.1 电阻测量模块的分析53.1.1电阻测量量程选取53.1.2测量电阻值的计算53.2 自动量程转换的分析64电路设计74.1 系统总体框图74.2 A/D转换电路74.3 主控制电路94.4 恒压源电路104.5 换档电路104.6 键盘114.7 显示电路124.8 电源135软件的设计145.1 软件设计流程图145.2 信号采集155.3 量程转换155.3.1手动档检测电阻165.3.2自动档检测电阻176系统测试18
7、6.1 测试方案186.2 测试条件与仪器186.3 测试结果(数据)186.4 测量误差分析196.5 单片机输出显示误差分析19结束语20致 谢21参考文献22附 录附录1 电路原理图附录2 元件清单附录3 实物图附录4 程序 基于ADS1255转换的简易电阻测试仪基于ADS1255转换的简易电阻测试仪1引 言随着科技的发展,智能电子产品不断融入到人们的生活与工作中。电阻是电子行业中最基础的元件,每个电子产品都离不开电阻;在电路测试过程中常常会由于忽略某些小电阻引起实验数据与理论值之间存在较大误差;在工程实践中,常需要测定某些高导电材料的电阻率。电阻值的测量是电子行业必不可少的工作。但是现
8、有的电阻测量仪表的测量的精度不够,过于机械化,如模拟万用表等。利用MSP430F149、ADS1255与继电器设计一个能自动换档位的简易电阻测试仪,能精确的测试电阻值,并能直观显示出所测电阻值,可以有效解决以上的不足。整个设计的成败在于测量的精确度,而精确度主要是A/D转换的作用。A/D模数转换器在许多领域应用广泛,并且A/D模数转换是电子专业学习当中的重点和难点,为了此次电子产品的功能达到,本设计采用了24位AD转换器(ADS1255),ADS1255是TI公司推出的微功耗、高精度、24位-型模数转换器,其内部集成了输入模拟多路开关、输入缓冲器、可编程增益放大器、可编程数字滤波器。通过ADS
9、1255转换,能使电阻值更为精确,从而更好的完成设计。2系统方案为了满足设计的需要,该设计采用24位ADS1255模数转换器作为转换核心,MSP430作为主控制芯片。本系统主要由A/D转换电路、MSP430控制电路、电源电路、恒压源电路、换档电路、键盘、显示电路组成,下面分别论证这几个模块的选择。2.1 A/D模块方案方案一:采用MSP430F149单片机内部自带的12位ADC转换器,这种方案节省资源,减轻硬件的设计难度,但是其转换精度比较低,考虑到本设计精确度的要求,MSP430系列自身所带的12位AD很难达到我们所要的精确度。方案二:采用德州仪器的24位数模转换芯片ADS1255,ADS1
10、255有两个数字I/O口,低非线性度,23bit的无噪声精度,数据采样率最大可达30KSPS,带有串行外设接口,具有业界最高性能的模数转换器。由于本系统对转换精度和低功耗有相当高的要求,而单片机内部的ADC和TLC1543对转换精度比较低,权衡的考虑软硬件复杂度和实际的效果。基于上述分析,故选择方案二。2.2 控制器模块方案方案一:采用STC89C52单片机作为控制模块的核心,该芯片运用比较广泛,有良好基础知识,并且该单片机是一个低功耗、高性能的CMOS 8位单片机。但是本系统的程序量较大,需要运行的速度较快,需要的I/O口资源较多,需要的精度较高,51单片机难以胜任。方案二:采用TI公司所生
11、产的MSP430F149单片机为主控制芯片,高性能的模拟技术及丰富的片上资源, 6个8位并行口其中两个有中断功能,强大的定时器,大容量的RAM和ROM,内部自带一个12位的AD,有较快的运行速度,存储大容量的程序,系统稳定工作,方便高效的开发环境。经比较,方案二内部资源丰富,可应用于开发较复杂的系统,加之有TI公司提供的开发环境,开发起来较容易上手。故选择方案二。2.3 主电源模块方案方案一:开关电源。电源的效率高,功耗低、体积小、重量轻、适应的范围大,它的主要缺点是输出电压中所含纹波较大,对电子设备的干扰较大,而且电路比较复杂不便于测试更不便于维修,对元器件的要求较高。方案二:采用LM317
12、/LM337是三端可调负稳压器,输出从1.2V至37V范围可调,输出电流大于1.5A。这些稳压器仅需要两只外接电阻以设定输出电压和一只输出滤波电容。LM317系列具有内部限流、热过载保护和输出晶体管安全区保护等功能。LM317/LM337可用于分布供电的电路插板和其他电子设备中,以稳定输出电压,加入少量元件也可接成稳流器使用。电路本身还有过压、过流、过热保护。基于上述分析,故选择方案二。2.4 恒压源方案方案一:恒流源是在负载变化的情况下,能相应调整自己的输出电压,使得输出电流保持不变,精度比较高,但是运用在测量电阻,当被测电阻是10M档时,因为输出电流恒定不变,所以电阻上产生的压降很高,无法
13、直接送入单片机,要经过一系列地衰减,会导致误差增大,测量不精确。方案二:采用可编程的精密稳压二极管TL431和一片高性价比、低功耗的LM324运放芯片,放大区工作点范围输入阻抗极高,温度稳定性极好,可以放大音频信号。输入特性曲线在2.5V处,直角转弯,转弯范围约10mV。 输出特性曲线极其水平输出阻抗极大,它相当于4只NPN三极管“基射相联”组成的复合管,只是没有温漂。电路结构简单,测量更精确。基于上述分析,故选择方案二。2.5 换挡模块方案方案一:采用PLC可编程控制器,它具有性能好,可靠性高,抗干扰能力强等特点。但是价格贵,必须使用软件控制。考虑到本设计的情况,故不选择此方案。方案二:采用
14、继电器,主要适于自动控制系统,体积少,实现起来比较容易,自身的保护参数稳定,重复性好,具有多种保护功能与寿命长等多种优点。它实际上是用较小的电流去控制较大电流的一种“自动开关”。故在电路中起着自动调节、安全保护、转换电路等作用。 基于上述分析,故选择方案二。2.6 显示模块方案方案一:采用LED数码管显示。LED功耗低,控制简单,显示清晰。但只能显示数字和一些简单的符号,有的特殊符号无法显示,不能更透彻的显示数据。方案二:用LCD液晶显示。可以显示各种复杂的字符、数字。像素高,信号响应时间短,控制方便,显示方式多,可以实现菜单驱动方式的显示效果,实现编辑模块全屏幕编辑的功能。且本身具有控制器,
15、可以节约主单片机的一些资源更好的应用到其他功能,减轻了主单片机的负担。基于上述分析,故选择方案二。3系统理论分析与计算3.1 电阻测量模块的分析 3.1.1电阻测量量程选取电阻测量分为4个量程,分别为:0100;01K;010K;010M。3.1.2测量电阻值的计算根据电阻分压计算待测电阻的阻值,给定一个稳定的输出电压,给定一个已知电阻R0和待测电阻Rx串联,经过采样,得出待测电阻Rx上的电压Ux,由稳定输出电压5V减去待测电阻Rx上的电压Ux,可得已知电阻R0上的电压,由已知电阻R0上的电压,可得电流I,由待测电阻Rx上的电压Ux和电流I就可得出待测电阻Rx的阻值。如下: (式3.1)图3.
16、1 电阻测量基本计算原理3.2 自动量程转换的分析自动量程转换是通过软件来控制,通过分压公式来进行转换的。在测量时,由于不知道被测电阻的阻值的大小,所以一般将档位置于最低档(即100档)。A/D转换电路从采样端采集回信号后转换成数字信号送给单片机进行比较,实现自动换挡。在A/D进行被测电阻采样之前,它先采集了四个档位的信号电压作为比较的基准,当对待测电阻采样后,将采集来的信号转换成电压信号与基准电压相比,通过程序自动选择相应的档位。采样电阻的电压范围的计算方法: 首先,我们初始选定100档,因为已知固定电阻R为68,由利用电压比例计算的方法,可算出待测电阻Rx的电压Ux。 (式3.2)Ux=2
17、.967V通过采样去得的待测电阻的电压值U来自动选档,首先将采样U和一档的Ux比较,如果大于Ux,自动跳入二档,再采样U与二档的Ux相比较,如果还是大于Ux,继续跳入三档,再次采样比较,超出范围就跳入四档,就这样形成了一个自动换挡。22 4电路设计4.1 系统总体框图键盘控制电路MSP430F149单片机A/D转换电路固定待测 电阻换挡电路恒压源电路液晶显示电路 图4.1 系统总体框图4.2 A/D转换电路 ADS1255是一款高性能的A/D转换器,其内部集成多路选择开关(MUX)、可编程增益控制器(PGA)、四阶调制器、可编程数字滤波器等,具有极低的噪声,可满足高精度的测量要求。ADS125
18、5可配置成一个差分输入或两个单端输入,其实现方法比较简单,需采集的信号输入到ADS1255差分输入的正端AIN0,参考电压2.5V输入到差分输入负端AIN1,同时需设置ADS1255内部的PGA=24。这样可以提高ADS1255的输入动态范围。它的内部结构图如图4.2所示。图4.2 ADS1255内部结构图ADS1255模块接口说明:板上一共有三排插针,每个插针都已标注,其中一排插针(6针)用于向ADS1255的内部数模电路提供工作电压(3.3V,5V)和基准电压(2.5V);其中一排插针(5针)用于MSP430F149单片机通信;另外一排插针(2针)为测量电压的输入端,其中VINn为被测电压
19、的负端(可接地),VINp为被测电压的正端(特别注意:电压差VINp-VINn应小于Vref2.5V,超过该值则测量不准;如果超过5V,ADS1255模块将很可能损坏)。ADS1255与MSP430F149的对应接口如下:SCLKP3.3,DINP3.1,DOUTP3.2,DRDYP2.2,CSGND。其原理图如图4.3所示。图4.3 A/D转换电路4.3 主控制电路采用TI公司所生产的MSP430F149单片机为主控制芯片,系统电路设计如图4.4所示。MSP430F149有6个八位并行接口;完全可以实现该系统所有信号的输入、输出,无须硬件扩展,其中P1、P2 八位并行端口的每根口线都具有中断
20、功能,使键盘的软、硬件设计变的非常简单。MSP430F149所提供的丰富资源,外围硬件扩展只需做很少的工作,不仅设计变得非常简单,而且该芯片体积小、可靠性高。MSP430F149单片机丰富的I/O口资源有效的降低了硬件的设计的难度。MSP430更适合于低功耗、高速实时控制以及数据计算,拥有更多的片上资源供设计使用,是设计的不错选择。图4.4 MSP430F149原理图4.4 恒压源电路采用一个可编程的精密稳压二极管TL431和一片高性价比、低功耗的LM324运放芯片,完成了基准电压电路设计,如图4.5所示。由TL431、R11、LM324构成了基准电压,它是一个恒压源。12V电源电压经过R11
21、限流,由TL431基准电压芯片进行稳压,输出一个2.5V的恒定基准电压,该电压输入给运算放大器LM324进行放大。由图可知,该运放为同相比例运放,其外接电阻R114和U111被设置为相等时,其电压放大倍数为2倍,将输出一个恒定的5V电压,提供给换挡电路。图4.5 恒压源电路4.5 换档电路利用继电器的开闭来控制换挡。当阻值超过第一个档位,第一个继电器关闭,第二个继电器开启。当阻值超过第二个档位,第二个继电器关闭,第三个继电器开启。就这样依次换挡,具体的换挡电路如图4.6所示。图4.6 换挡电路4.6 键盘采用的44的矩阵式键盘,矩阵式键盘是用N条I/O线作为行线,M条I/O线作为列线组成的键盘
22、,在行线和列线的每个交叉点上,设置一个按键中按键的个数是MN个。这种形式的键盘结构,能够有效的提高单片机系统中I/O的利用率,行列适用于按键输入多的情况。键盘主要作为一种输入设备,它给出一个给定值和误差值然后送给单片机进行处理。电路连接如图4.7所示。图4.7 键盘电路4.7 显示电路显示电路采用12864液晶,可以显示各种复杂的字符、数字、波形。A/D采集回来的信号通过比较处理过后驱动液晶显示。主要显示键盘的给定值、误差值、判断结果和电位器旋转时阻值的变化曲线图。电路如图4.8所示图4.8 液晶显示4.8 电源电源由变压部分、滤波部分、稳压部分组成。继电器工作电压为5V,因此设计电源的时候采
23、用L7805CV芯片将输入电压稳压到5V输出。TI公司的MSP430F149单片机是一个特别强调低功耗的单片机,其工作电压在1.83.6V之间,采用AMS1117芯片将输入电压稳压到3.3V、2.5V输出。LM324和OPA227芯片需要的工作电压为12V。这部分电路比较简单,都采用三端稳压管实现。 基于ADS1255转换的简易电阻测试仪5软件的设计软件设计部分中重要的是3个部分,即信号采集、控制量程转换、控制LCD显示电阻值及相关频率信息。5.1 软件设计流程图其软件设计流程图如图5.1所示。YESNO结束A/D转换液晶显示手动检测模式自动检测模式按键是否按下?工作模式选择系统初始化开始功能
24、检测YESNO 图5.1 软件设计流程图5.2 信号采集信号的采集是本次设计中的重点,它决定着测量的精确度。信号被采样电阻采集信号之后送入模数转换芯片ADS1255中进行模数转换,最后送入MSP430单片机,由单片机进行分析计算,并控制液晶显示器显示所计算出的电阻阻值。信号采集的流程框图如图5.2所示。按键MSP430F149单片机液晶显示继电器导通ADS1255信号采集控制信号采样信号图5.2 信号采集流程图5.3 量程转换在进行电阻测量时,可以分为手动检测和自动检测。手动检测是用4个按键来对应4个档位,按下相应的档位进行测量;自动检测是用程序进行一个值的判断后,来进行测量。5.3.1手动档
25、检测电阻手动档的电阻测量是通过对应按键来开启对应的继电器,来选择相应的测量量程。其流程图如图5.3所示。Y 开始0-100档?0-1K档?0-10K档?测量0-100电阻测量0-1K电阻测量0-10K电阻测量0-10M电阻0-10M档?结束YYYNNNN图5.3 手动换挡流程图5.3.2自动档检测电阻使用自动档检测电阻值,是运用软件进行控制,通过分压公式进行一个计算,将A/D采样的值送入单片机进行判断后,选择对应档位进行的测量。软件流程图如图5.4所示。 开始 R100? R1K? R10K?进入0-100档进入0-1K档进入0-10K档进入0-10M档 R10M?电阻测量YYYYNNNN图5
26、.4 自动换挡流程图6系统测试6.1 测试方案硬件电路测试。用万用表检测整机电路是否存在短路或者断路,经检测后再接上电源,用万用表测量电源部分的各个输出电压值,经调试正常后方接到各部分电路。在确保硬件电路连接正确后,将MSP430单片机连接在电路中,通电进行软件调试。将程序下载到MSP430单片机中,结合LCD12864液晶显示器上显示的数据观察分析是否能换挡测试等情况。6.2 测试条件与仪器测试条件:检查多次,硬件电路必须与系统原理图完全相同,并且检查无误,硬件电路保证无虚焊。测试仪器:高精度的数字毫伏表,模拟示波器,数字示波器,数字万用表,指针式万用表。6.3 测试结果(数据)电阻箱设定阻
27、值为R0,液晶显示电阻值为R1。测试范围0-100,数据如表6.1所示。表6.1R0()010305080100R1()01030507998 测试范围0-1K,数据如表6.2所示。表6.2R0()0501003005001000R1()050100299498998测试范围0-10K,数据如表6.3所示。表6.3R0(K)0135810R1(K)0135.07.89.8测试范围0-10M,数据如表6.4所示。表6.4R0(M)0135810R1(M)01.02.94.87.79.76.4 测量误差分析电路在运行过程中往往会受到许多的干扰,如电网的波动,人体静电干扰等等,这些都会影响电路的稳定
28、性,甚至会损坏元器件。在测量数据时,因为条件所限,所作的防护措施不是很全,这也是误差产生的原因之一。6.5 单片机输出显示误差分析由于此系统是一个微弱信号系统,信号在传输过程中必然有损失,如导线电阻,电路板分布电容等等,这些都是信号变弱的原因,当信号衰减到一定程度时,数模转换电路以及单片机系统则会出现误判断,而导致频率不稳定,信号丢失的结果。结束语通过本次毕业设计,我认识到了MSP430F149优越的性能和ADS1255测量的精确度。我意识到了要想成为合格的电子专业学生,要认真学习专业知识,要学会充分利用自己所学的知识,遇到自己不懂的要积极地查询各种资料,耐心的翻阅,要学会和团队进行讨论。在设
29、计电子产品是千万不要半途而废。如果遇到相当困难的事情,要找懂的人并谦逊请教。在高速发展的今天,需要我们的团结合作,要积极地配合好队友。“三人行必有我师”,要学会在别人身上找到优点,遇到他人不对的地方要及时地更正。在本次设计之中,我认识到了电子产品的发展前景是不可限量的,因为没有一个产品是完美的,电子产品的升级空间还很广阔,要想在电子行业发展下去就要不断学习,不断地完善自己的设计,不断的创新。由于时间的紧迫,制作的产品并不完美,还有一些技术和知识上有待提高。所以想成为一名合格的电子专业学生,我们要走的路,要学习的知识,积累的经验还有很多。相信在我们的不懈努力下,我们会闯出电子行业的一片天空。致
30、谢诚挚的感谢我的毕业设计指导老师罗德雄老师。他在忙碌的教学工作中挤出时间来指导和修改我的毕业设计,从资料收集到写作、修改,到论文的最终定稿,罗老师给了我细心的指导和他无私的帮助。还有教过我的所有老师们,你们严谨细致、一丝不苟的作风一直是我工作、学习中的榜样;你们循循善诱的教导和不拘一格的思路给予我无尽的启迪。毕业设计在罗德雄老师的精心执导下,顺利完成。在毕业设计制作的这段时间里,由于自己在知识方面的不足,遇到了不少的困难。在老师们的帮助下,我才能继续地进行下去。我由衷的感谢各位老师。在此,也要感谢和我一起参加设计比赛的同学们,他们的努力学习的竞赛精神和无私的帮助一直鼓舞着我,他们一直是我学习追
31、赶的榜样,没有他们在研究课题上对我的指导和各方面的热情帮助,我也不会得到这么快的进步。在此,我要祝愿所有的老师和同学,身体健康,万事如意,事业有成。参考文献1 胡大可 主编,MSP430系列单片机C语言程序设计与开发M,北京航空航天大学出版社,2003年1月第1版.2 沈建华 杨艳琴 主编,MSP430系列16位超低功耗单片机理论与实践M,北京航空航天大学出版社,2008年7月第1版.3 童诗白 华成英 主编,模拟电子技术基础M,高等教育出版,2003年2月第1版.4 高吉祥 主编,模拟电子技术M,电子工业出版社,2004年7月第2版.5 王松武 于鑫 编著,电子创新设计与实践M,国防工业出版
32、社,2005年1月第1版.6 姚金生 郑小利 等编著,元器件M,电子工业出版社,2004年10月第1版.7 陈绍林 吴建华 主编,电工理论基础M,沈阳:东北大学出版社,2000年7月.8 王永军 从玉珍 主编,数字逻辑与数字系统M,北京:电子工业出版社,1999年8月.9 王毅 过程装备控制技术及应用M,化学工业出版社,2001年7月第1版.附 录附录1 电路原理图附录2 元件清单元件型号数量单片机MSP430F149(TI)1个简单运放LM324(TI)1个超低功耗运放NE55341个稳压二极管TL4311个三端可调稳压器LM137/LM337各2个ADS芯片ADS1255(TI)1个液晶L
33、CD128641个继电器C2237604个恒压源芯片OPA5481个键盘44矩阵键盘1个跟随器模块OPA2771个附录3 实物图附录4 程序/*ADS1255调试程序*/#include #include ads1255.h#include key.hUnionlong rlong;structunsigned char lbyte; /低字节unsigned char mbyte; /中间字节unsigned char hbyte; /高字节unsigned char zbyte; /符号Bytes; Adc_result;unsigned char Write_SPI_One_Byte(u
34、nsigned char Byte) /采用MSP430系列单片机的SPI通信 模式向ADS1255写入一个字节U0TXBUF = Byte; / 发送一个字节while(!(U0TCTL & TXEPT); /检测是否发送完毕return U0TXBUF;Void Write_SPI_Several_Byte(unsigned char length,unsigned char* pSend)/采用SPI通信模式向ADS1255写入多个字节while(length-) /检测是否发送完毕*pSend = Write_SPI_One_Byte(*pSend);pSend+; /指针自加void
35、 Write_Ads1255_Reg(unsigned char addr,unsigned char data)/往一个寄存器里写数据,addr 为要写寄存器的地址, data为要往寄存器里写入的值unsigned char send = 0x50,0x00,0x00;send0 |= addr;send2 |= data;Write_SPI_Several_Byte(sizeof(send),send);/*初始化ADS1255*/void Init_Ads1255(void)while(P2IN & BIT2);Write_Ads1255_Reg(0x00,0xf4); while(P2
36、IN & BIT2);/此处输入模式选择为单极输入模式AIN0为正输入端,Write_Ads1255_Reg(0x01,0x01);/Input Multiplexer Control Register:AIN0 is Positive,AIN1 is Negative,differential measurements/此处输入模式选择为差分输入模式AIN0为正输入端,AIN1为负输入端while(P2IN & BIT2);Write_Ads1255_Reg(0x02,0x00);/此处0x00为关闭16脚的时钟输出,并选择增益为Gain=1(此时分辨率最高为25.3位)/Gain的最大值可
37、设置为64,但此时分辨率就会降低为22.5位while(P2IN & BIT2);Write_Ads1255_Reg(0x03,0xf0);/指定A/D的数据采样速率while(P2IN & BIT2);Write_Ads1255_Reg(0x04,0x00);/GPIO控制寄存器/*读一个寄存器*/void Read_Ads1255_Reg(unsigned char addr)unsigned char send = 0x10,0x00;send0 |= addr;Write_SPI_Several_Byte(sizeof(send),send);void Read_Ads1255_Dat
38、a(unsigned char Continuously)/读一个寄存器if(Continuously) Write_SPI_One_Byte(0x03);/连续读取数据else Write_SPI_One_Byte(0x01);void Set_Ads1255_Selfcal(void)/自动校准Write_SPI_One_Byte(0xf0);/SELFCAL command byte(in order to get the best performance)void Set_Ads1255_Sync(void)Write_SPI_One_Byte(0xfc);/sync command
39、bytevoid Set_Ads1255_Standby(void)Write_SPI_One_Byte(0xfd);/standby command bytevoid Set_Ads1255_Wakeup(void)Write_SPI_One_Byte(0xff);/wakeup command byte(0xff can too)void Set_Ads1255_Reset(void)Write_SPI_One_Byte(0xfe);/Reset to Power-Up Valueslong int Ads1255(void)int ival;long int adresult;while
40、(!(P2IN & BIT2);while(P2IN & BIT2);/DRDY信号为低表示AD转换完成Read_Ads1255_Data(0);/read datafor(ival = 0; ival 20; ival+);Write_SPI_One_Byte(0x05);Adc_result.Bytes.hbyte = U0RXBUF;Write_SPI_One_Byte(0x05);Adc_result.Bytes.mbyte = U0RXBUF;Write_SPI_One_Byte(0x05);Adc_result.Bytes.lbyte = U0RXBUF;Adc_result.By
41、tes.zbyte = 0x00;if(Adc_result.Bytes.hbyte & 0x80) Adc_result.Bytes.zbyte = 0xff;adresult = Adc_result.rlong;return adresult;float Sample(unsigned char count) /电压采样及计算函数unsigned char c;long int adresult, sum = 0; /用于临时保存电压份数值和电压份数累加值float result = 0;for(c = 0; c count; c+)/cout用于指定电压采样的次数adresult =
42、Ads1255();/将从芯片中读取的电压份数保存到变量adresult中sum = sum + adresult;/将从芯片中读取的电压份数累加到变量sum中result = sum / count;/为得到准确的电压份数值需要用电压份数累加值除以采样的次数以得到平均电压值份数result = 59.3686 * result / 100000;/此处测试的实际参考电压为V。return result;void Rest_ad1255()/*以下初始化ADS1255的程序*/P2DIR &= BIT2;P3DIR = 0;P3SEL = 0;P3SEL |= BIT3 + BIT2 + BIT1; / Setup P3 for SPI modeU0CTL = CHAR + SYNC + MM + SWRST; / 8-bit, SPI, Master,Software reset enableU0TCTL = SSEL0 + SSEL1 + STC; / SMCLK, Normal polarity, 3-wireU0BR0 = 0x002; /