称重仪毕业设计

更新时间:2023-03-13 13:27:01 阅读量: 教育文库 文档下载

说明:文章内容仅供预览,部分内容可能不全。下载后的文档,内容与下面显示的完全一致。下载之前请确认下面内容是否您想要的,是否完整无缺。

西安邮电学院

毕 业 设 计(论 文)

题 目:基于MSP430称重系统设计

院 系: 自动化学院 专 业: 自动化 班 级: 自动0703班 学生姓名: 李佩鑫 导师姓名: 杨春杰 职称: 讲师 起止时间:2011年01月10日 至 2011年06月17日

目 录

摘要 ..............................................................................................................................................I ABSTRACT .............................................................................................................................. II 1 引言 ......................................................................................................................................... 1 1.1 课题研究背景及意义 ..................................................................................................... 1 1.2 研究现状 ......................................................................................................................... 1 1.3 论文主要内容和预期目标 ............................................................................................. 2 1.4 论文组织结构 ................................................................................................................. 2 2 称重系统总体方案设计 ......................................................................................................... 4 2.1 称重系统基本工作原理 ................................................................................................. 4 2.2 称重系统模块方案设计 ................................................................................................. 4 2.2.1 主控制器模块方案设计 .......................................................................................... 4 2.2.2 数据采集模块方案设计 .......................................................................................... 4 2.2.3 数据显示模块方案设计 .......................................................................................... 5 2.2.4 电源管理模块方案设计 .......................................................................................... 6 2.3 设计方案总结 ................................................................................................................. 6 3 称重系统硬件设计 ................................................................................................................. 7 3.1 MSP430单片机最小系统设计 ...................................................................................... 7 3.1.1 MSP430单片机介绍 ............................................................................................... 7 3.1.2 MSP430单片机接口电路设计 ............................................................................... 8 3.2 电源管理模块设计 ....................................................................................................... 11 3.2.1 5V转换电路 .......................................................................................................... 11 3.2.2 3.3V转换电路 ....................................................................................................... 12 3.3 信号采集模块电路设计 ............................................................................................... 12 3.3.1 工作原理 ................................................................................................................ 12 3.3.2 信号检测电路设计 ................................................................................................ 14 3.4 信号调理电路设计 ....................................................................................................... 15 3.4.1 AD620工作原理 ................................................................................................... 15 3.4.2 信号放大电路 ........................................................................................................ 16 3.5 AD转换电路设计......................................................................................................... 16 3.5.1 SD16概览 .............................................................................................................. 16 3.5.2 转换接口电路设计 ................................................................................................ 17 3.6 显示电路设计 ............................................................................................................... 17

3.7 硬件电路设计小结 ....................................................................................................... 19 4 称重系统软件设计 ............................................................................................................... 20 4.1 主程序设计 ................................................................................................................... 20 4.2 初始化程序模块 ........................................................................................................... 21 4.3 AD采集与数据处理程序模块..................................................................................... 22 4.4 LCD显示程序模块 ...................................................................................................... 23 4.5 软件设计小结 ............................................................................................................... 24 5 调试与总结 ........................................................................................................................... 25 5.1 调试中遇到问题及解决方案 ....................................................................................... 25 5.2 结论 ............................................................................................................................... 25 致谢 ........................................................................................................................................... 26 参考文献 ................................................................................................................................... 27 附录?......................................................................................................................................... 28 附录II ....................................................................................................................................... 29

摘要

电子秤是日常生活中常用的电子衡器,智能电子秤测量准确、快速,易于实时测量和监控,成为测量领域的主流产品。

本设计是基于MSP430单片机的称重系统,可实现0~500g重物的精确测量。系统硬件电路包括MSP430单片机最小系统、传感器电路、信号调理电路、AD采集电路、LCD显示电路、电源管理电路等几部分组成。系统使用桥式应变片传感器测量重物并输出电压信号,经过信号调理电路放大滤波后,经模数转换将信息传至单片机处理,同时将重量实时显示。系统软件包括AD采样,滤波和显示程序。文章还详细阐述了本次设计的调试过程以及在调试过程中遇到的问题及解决方法。本设计完成称重系统的各项功能,经调试,效果良好,具有一定的实用价值。

关键词:MSP430;称重传感器;LCD;

I

Abstract

Electronic scale is a electron weighing apparatus used in everyday life, intelligent electronic scales measurement accuracy, fast, easy to real-time measuring and monitoring, become the mainstream of the fields products.

This design is a weighing system based on MSP430 MCU, which can realize the 0 ~ 500g clog precision measurement. The system hardware circuit including MSP430 microcontroller smallest system, sensor circuit, signal regulate circuit, AD acquisition circuit, LCD display circuit, power management circuit to wait for a few parts. Systems use bridge type strain film sensor measuring weight and output voltage signal, after filtered signal disposal circuit, the amplification frequency-field handed to SCM processing information, and will weight real-time

display. System software including AD sampling, filter and show program. The paper also explains in detail the design debugging process and in during the commissioning of the problems and solving methods. This design completed each function, weighing systems by commissioning, the effect is good, has certain practical value.

Keywords:MSP430;weighing apparatus;LCD;

II

基于MSP430的称重系统

1 引言

1.1 课题研究背景及意义

随着时代科技的迅速发展和计算机等现代电子技术的提高,给传统的电子

测量技术带来了巨大的冲击和影响。常规的测试仪器仪表和控制装置被更先进的仪器所取代,使得传统的电子测量仪器在原理、功能、精度及自动化水平等方面发生了巨大变化,并相应的的出现了各种各样的智能仪器控制系统,使得科学实验和应用工程的自动化程度显著提高。

通过分析近年来电子衡器产品的发展情况及国内外市场的需求,电子衡器总的发展趋势是小型化、模块化、集成化、智能化;其技术性能趋向于速率高、准确度高、稳定性高、可靠性高;其功能趋向是称重计量的控制信息和非控制信息并重的―智能化‖功能;其应用性能趋向于综合性和组合性。

电子秤是日常生活中常用的电子衡器,广泛的应用于超市,物流配送中心,大中型商场。电子秤在结构和原理上取代了以杠杆平衡为原理的机械式称量工具。相比传统机械式称量工具,电子秤具有装机体积小,称量精度高,应用范围广,易于操作和使用等优点,在工作原理,外形布局,结构和材料上都是全新的计量衡器。电子秤的设计首先是通过压力传感器采集被测物体的重量并将其转换成电压信号。输出电压信号通常很小,需要通过前端信号处理电路进行准确的线性放大。放大后的模拟电压信号经AD转换电路转换为数字量并送入到主控电路的单片机中,再经过单片机控制显示外设,显示出称量数值。

作为重量测量的仪器,智能电子秤在各行各业开始呈现其测量准确,测量速度快,易于实时测量和监控的巨大优点,并开始逐渐取代传统的机械杠杆测量秤,成为测量领域的主流产品。

1.2 研究现状

20世纪前期,我国的衡器制造业主要以杠杆原理的机械式为主,20世纪后期,我国的衡器不断发展,由过去的全机械式进入机电结合式,在几十年的发展和完善中,发展到现在的全电子型和数字智能型。我国电子衡器的检测试验手段和技术装备基本达到国际90年代中期的水平。电子衡器制造技术及应用得到了新发展。电子秤重技术从静态称重技术向动态称重技术发展;计量方法从模拟量向数字量发展;测量特点从单参数测量向多参数测量发展,特别是对动态称重和快速称重的研究与应用。就总体而言,我国电子衡器产品的数量和质量与工业发达国家还有较大差距。其主要差距是技术与工艺不够先进、工艺装备与测试仪表老化、开发能力不足、产品的品种规格较少、功能不全、稳

1

基于MSP430的称重系统

定性和可靠性较差等。

众所周知,传统的量具是杆秤或盘秤,20世纪70年代开始出现电子秤。早期的电子秤多数通过模拟电路实现,随着电子技术的不断发展.数字芯片价格逐渐下降,模拟控制已逐步被数字控制所替代,电子秤的设计也大都以微处理器为核心,使精度和可靠性都有了明显提高。由于小型商用电子秤运算不太复杂,所以用8位微处理器即可满足要求。

电子秤重系统必须将多只传感器的输出进行计算,才能得到完整准确的称重结果。从20世纪70年代的模拟串联计算到80年代的模拟并联计算,计算技术的发展大幅度即降低了电子秤的成本,又提高了可靠性和稳定性。但是,模拟并联计算也存在不足:如对传感器的一致性要求较高、电子秤四角偏差调试复杂无法对单个传感器进行检测等。目前,解决上述问题的最好方法是采用数字计算或数模混合计算。由于信号放大器成本的不断下降及AD转换器性能的大幅度提高,数字计算无论在技术上还是在经济上都进入了实用阶段。

电子秤向提高精度和降低成本方向发展的趋势,引起了对低成本、高性能模拟信号处理器件需求的增加。目前大多数电子秤是以1:3,000或1:10,000的分辨率输出最终称重值的,这样的系统一般使用12 bit至14 bit的AD模数转换器就很容易满足要求。然而,高精密检测的电子秤如果要达到要求,那么ADC的精度需要接近于20 bit。

1.3 论文主要内容和预期目标

学习MSP430系列MSP430XF425单片机的使用,结合IAR编译器进行软件设计,设计一种称重系统用于测量量程在0~500g物体的质量。利用传感器测量桥式电路的压差,采用差分放大电路放大压差信号,使其达到可使单片机识别的电压,通过单片机的处理并显示出来。

预期目标:正确的设计称重系统方案,编写程序实现要求的控制算法。设计完成一种具有响应快、精确度高、稳定性好的称重系统。

1.4 论文组织结构

具体章节安排如下:

第1章介绍了本课题的研究背景、研究意义与研究现状,本论文的主要研究内容、所要解决的问题及最终所要实现的目标。

第2章概述了本课题部分知识的理论基础,对桥式传感器、模拟放大电路、液晶显示进行了介绍。重点学习了桥式传感器与模拟放大电路相结合的实现方法。通过对系统分析,选择系统的总体设计方案和各模块的设计方案。

2

基于MSP430的称重系统

第3章介绍了称重系统模块的硬件设计,并对设计出的系统硬件电路进行了说明。

第4章介绍了称重系统模块的软件设计,对程序流程设计进行了说明,并详细介绍了系统的软件设计。

第5章对完成称重系统的制作,对系统进行调试并总结。

3

基于MSP430的称重系统

2 称重系统总体方案设计

2.1 称重系统基本工作原理

称重系统的主要工作原理是:将应变片粘至金属力臂上侧,力臂上放置秤盘,重物放入秤盘时产生压力,使应变片发生形变从而产生电信号,信号经放大调理后传至微控制器处理显示。称重系统主要包括:桥式应变传感器、放大电路、AD转换电路、单片机最小系统电路、显示电路和电源管理电路等部分,图2.1为系统设计总体方案框图。

电源管理系统压力传感器信号调理电路AD微处理器LCD显示 图2.1 系统设计总体方案框图

2.2 称重系统模块方案设计

整个硬件系统由五大模块组成,下面以控制系统结构为依据就针对各模

块做具体的方案设计。 2.2.1 主控制器模块方案设计

方案一:选用51系列单片机作为称重系统的主控制芯片,51系列单片机是8位微处理器,使用简单,价格低,但是本称重系统需要涉及到高速AD的数据处理,51系列单片机运算速度达不到系统的设计要求,所以不采用本方案。

方案二:根据称重系统系统设计要求与主控制系统能完成的功能,选用MSP430F425单片机。MSP430F425单片机是一款16位单片机,运算速度快,精度高,而且以MSP430F425单片机为主控制器的设计,可以更加容易使计算控制技术和测量技术结合在一起。故采用此方案。 2.2.2 数据采集模块方案设计

数据采集模块分为 3 个部分:称重传感器、电压放大器和 AD转换器。 (1)称重传感器

4

基于MSP430的称重系统

称重传感器由以下方案可以选择:

方案一:采用四片贴片电阻,自行搭建桥式电路。优点是成本低,但是由于贴片需要的精度不能保证,那么传感器的测量精度和稳定性也不能保证。故此方案不宜采用。

方案二:选用平行式测重传感器LAA-H1,为全桥式电路形式。通过输出称量重物时产生的压差信号测量重物的大小。特点是精度高、回零快、滞后小。适合小量贵重物品的测量和要求精度高的称量工具的制造。以上特点适用于本设计,故采用此方案。

(2)电压放大器

电压放大器的设计有以下几种方案可以采用:

方案一:利用普通低温漂运算放大器构成多级放大器。但是普通低温漂运算放大器所构成多级放大器会引入大量噪声。而AD转换器需要很高的精度,几毫伏大小的干扰信号就会直接影响到最后的测量精度。所以,此方案不宜采用。

方案二:由高精度低漂移运算放大器构成差动放大器。差动放大器具有增益高,高输入阻抗,增益高的特点,可以利用普通运放做成一个差动放大器。 实际测量,每一级运放都会引入较大噪声。对精度会有较大影响。

方案三:采用专用的仪表放大器。此类芯片内部采用经典的三运放改进设计。差模输入阻抗大,共模抑制比高,增益高,精度也非常好,外部接口简单,且放大器的增益通过改变一个外接电阻的阻值是可以改变的。基于以上分析,我们决定采用制作方便而且精度很好的专用仪表放大器AD620作为称重系统的电压放大器。

(3)AD 转换器

按设计要求:电子秤最大称重为500g,重量误差不能大于1%0,精度要求为0.1g。同样也有以下几种方案采用:

方案一:采用 8位逐次逼近式AD转换器ADC0809,在单片机外接AD转换器完成,模数转换的功能,但是由于称重系统的精度要求精度较高,ADC0809不能达到设计功能的要求,故不采用。

方案二:选用MSP430单片机内部的AD模数转换器,转换器为16位高速模数转换器,完全可以满足精度要求,而且SD16是单片机内部器件,稳定性好,故采用此方案。 2.2.3 数据显示模块方案设计

本设计只需要显示出所称实物的实际重量,如果采用LCD1602显示,成

5

基于MSP430的称重系统

本较高,虽然可以显示更多信息,但是称重系统对此要求不高,所以不采用。而 LCD048 具有耗电省、成本低、亮度高、驱动简单、使用寿命长等优点,且在MSP430F425单片机中带有LCD048的硬件驱动,更易于使用单片机对其进行变成控制,所以选用LCD048显示。 2.2.4 电源管理模块方案设计

称重系统的供电系统需要多种电压,多种电压的需求就要求更加合理的电源系统设计。这里把电源设计成用220V的交流电经过变压器后输出的±12电压供驱动压力传感器使用,经整流滤波电路后, 通过电压转换芯片LM7805 转换为±5V电压供液晶LCD使用,再通过电压转换芯片LM1117转换得到±3.3V 电压,供MSP430F425单片机系统的其他芯片使用。多种电压的需求就要求更加合理的,电源系统设计。

2.3 设计方案总结

综上所述,称重系统以MSP430F425单片机作为控制器,压力检测传感器采用平行式称重传感器LAA-H1,信号放大采用精密仪表放大芯片AD620,采用低功耗LCD048显示屏。称重系统的设计量程为500g,分辨率为0.1g,可以实现精准测量。

6

基于MSP430的称重系统

3 称重系统硬件设计

3.1 MSP430单片机最小系统设计

3.1.1 MSP430单片机介绍

MSP430系列单片机的迅速发展和应用范围的不断扩大,主要取决于以下的特点:

(1)处理能力强

MSP430系列单片机是一个16位的单片机,采用了精简指令集(RISC)结构,具有丰富的寻址方式(7种源操作数寻址、4种目的操作数寻址)、简洁的27条内核指令以及大量的模拟指令;大量的寄存器以及片内数据存储器都可参加多种运算;还有高效的查表处理指令;有较高的处理速度,在8MHz晶体驱动下指令周期为125 ns。这些特点保证了可编制出高效率的源程序。

(2)运算速度快

MSP430系列单片机能在8MHz晶体的驱动下,实现125ns的指令周期。 16 位的数据宽度、125ns的指令周期以及多功能的硬件乘法器(能实现乘加)相配合,能实现数字信号处理的某些算法(如FFT等)。MSP430系列单片机的中断源较多,并且可以任意嵌套,使用时灵活方便。当系统处于省电的备用状态时,用中断请求将它唤醒只用6μs。

(3)功耗低

MSP430单片机之所以有超低的功耗,是因为其在降低芯片的电源电压及灵活而可控的运行时钟方面都有其独到之处。

(4)系统稳定

上电复位后,首先由DCOCLK启动CPU,以保证程序从正确的位置开始执行,保证晶体振荡器有足够的起振及稳定时间。然后软件可设置适当的寄存器的控制位来确定最后的系统时钟频率。如果晶体振荡器在用做CPU时钟 MCLK时发生故障,DCO会自动启动,以保证系统正常工作;如果程序跑飞,可用看门狗将其复位。

(5)偏上外围模块丰富

MSP430系列单片机的各成员都集成了较丰富的片内外设。它们分别是看门狗(WDT)、模拟比较器A、定时器A(Timer_A)、定时器B(Timer_B)、串口0、1(USART0、1)、硬件乘法器、液晶驱动器、10位/12位ADC、I 2 C 总线直接数据存取(DMA)、端口O(P0)、端口1~6(P1~P6)、基本定时器(Basic Timer)等的一些外围模块的不同组合。其中,看门狗可以使程序失控时迅速

7

基于MSP430的称重系统

复位;模拟比较器进行模拟电压的比较,配合定时器,可设计出AD转换器; 16位定时器(Timer_A和Timer_B)具有捕获/比较功能,大量的捕获/比较寄存器,可用于事件计数、时序发生、PWM等;有的器件更具有可实现异步、同步及多址访问串行通信接口可方便的实现多机通信等应用;具有较多的I/O 端口,最多达6*8条I/O口线;P0、P1、P2端口能够接收外部上升沿或下降沿的中断输入;12/14 位硬件AD转换器有较高的转换速率,最高可达200kbps,能够满足大多数数据采集应用;能直接驱动液晶多达160段;实现两路的12位D/A 转换;硬件I 2 C串行总线接口实现存储器串行扩展;以及为了增加数据传输速度,而采用直接数据传输(DMA)模块。MSP430系列单片机的这些片内外设为系统的单片解决方案提供了极大的方便。

(6)开发环境方便高效

目前MSP430系列有OPT型、FLASH型和ROM型三种类型的器件,这些器件的开发手段不同。对于OPT型和ROM型的器件是使用仿真器开发成功之后在烧写或掩膜芯片;对于FLASH 型则有十分方便的开发调试环境,因为器件片内有JTAG调试接口,还有可电擦写的FLASH存储器,因此采用先下载程序到FLASH内,再在器件内通过软件控制程序的运行,由JTAG接口读取片内信息供设计者调试使用的方法进行开发。这种方式只需要一台PC机和一个JTAG调试器,而不需要仿真器和编程器。开发语言有汇编语言和C语言。 3.1.2 MSP430单片机接口电路设计

MSP430单片机最小系统电路包括:晶振电路,复位电路,JTAG仿真、调试接口电路。 a.晶振电路

每个单片机系统里都有晶振,全称是叫晶体震荡器,在单片机系统里晶振的作用非常大,他结合单片机内部的电路,产生单片机所必须的时钟频率,单片机的一切指令的执行都是建立在这个基础上的,晶振的提供的时钟频率越高,那单片机的运行速度也就越快。

晶振用一种能把电能和机械能相互转化的晶体在共振的状态下工作,以提供稳定,精确的单频振荡。在通常工作条件下,普通的晶振频率绝对精度可达百万分之五十。高级的精度更高。有些晶振还可以由外加电压在一定范围内调整频率,称为压控振荡器(VCO)。晶振的作用是为系统提供基本的时钟信号。通常一个系统共用一个晶振,便于各部分保持同步。有些通讯系统的基频和射频使用不同的晶振,而通过电子调整频率的方法保持同步。

8

基于MSP430的称重系统

晶振电路如图3.1所示。

XINC130pFC230pFXTXOUT图3.1 晶振电路

b.复位电路

为确保微机系统中电路稳定可靠工作,复位电路是必不可少的一部分,复位电路的第一功能是上电复位。一般微机电路正常工作需要供电电源为5V±5%,即4.75~5.25V。由于微机电路是时序数字电路,它需要稳定的时钟信号,因此在电源上电时,只有当VCC超过4.75V低于5.25V以及晶体振荡器稳定工作时,复位信号才被撤除,微机电路开始正常工作。

本设计采用手动按钮复位,当人为在复位输入端RST上加入高电平。一般采用的办法是在RST端和正电源Vcc之间接一个按钮。当人为按下按钮时,则Vcc的+5V电平就会直接加到RST端。由于人的动作再快也会使按钮保持接通达数十毫秒,所以,完全能够满足复位的时间要求。单片机在启动时都需要复位,以使CPU及系统各部件处于确定的初始状态,并从初态开始工作。MSP430系列单片机的复位信号是从RST引脚输入到芯片内的触发器中。当系统处于正常工作状态时,且振荡器稳定后,如果RST引脚上有一个高电平并维持2个机器周期(24个振荡周期)以上,则CPU就可以响应并将系统复位。单片机系统的复位方式有:手动按钮复位和上电复位。如图3.2所示为复位电路图。

VccR74.7KS2SW-SPSTRESET图3.2 复位电路

9

基于MSP430的称重系统

c.JTAG仿真、调试接口电路

JTAG也是一种国际标准测试协议(IEEE 1149.1兼容),主要用于芯片内部测试。现在多数的高级器件都支持JTAG协议,如DSP、FPGA器件等。标准的JTAG接口是4线:TMS、TCK、TDI、TDO,分别为模式选择、时钟、数据输入和数据输出线。相关JTAG引脚的定义为:TCK为测试时钟输入;TDI为测试数据输入,数据通过TDI引脚输入JTAG接口;TDO为测试数据输出,数据通过TDO引脚从JTAG接口输出;TMS为测试模式选择,TMS用来设置JTAG接口处于某种特定的测试模式;TRST为测试复位,

输入引脚,低电平有效。

TI还定义了一种叫SBW-JTAG的接口,用来在引脚较少的芯片上通过最少的利用引脚实现JTAG接口,它只有两条线,SBWTCK,SBWTDIO。实际使用时一般通过四条线连接,VCC,SBWTCK,SBTDIO,GND,这样就可以很方便的实现连接,又不会占用大量引脚。

JTAG编程方式是在线编程,传统生产流程中先对芯片进行预编程现再装到板上因此而改变,简化的流程为先固定器件到电路板上,再用JTAG编程,从而大大加快工程进度。JTAG接口可对PSD芯片内部的所有部件进行编程。

在硬件结构上,JTAG 接口包括两部分:JTAG 端口和控制器。与JTAG 接口兼容的器件可以是微处理器(MPU)、微控制器(MCU)、PLD、CPL、FPGA、ASIC 或其它符合IEEE1149.1 规范的芯片。IEEE1149.1 标准中规定对应于数字集成电路芯片的每个引脚都设有一个移位寄存单元,称为边界扫描单元BSC。它将JTAG 电路与内核逻辑电路联系起来,同时隔离内核逻辑电路和芯片引脚。由集成电路的所有边界扫描单元构成边界扫描寄存器BSR。边界扫描寄存器电路仅在进行JTAG 测试时有效,在集成电路正常工作时无效,不影响集成电路的功能。如图3.3为JTAG接口电路图。

图3.3 JTAG接口电路图

10

基于MSP430的称重系统

如图3.4所示为MSP430单片机最小系统原理图。

VccUTXDD00UTRXP2.3TCLSMTTDITD0C1104RESETVccCON1VccS?P2.3/SVSINAXVTc0cP2.4/UDVs0sP2.5/URDXDAVssRST/NMITDI/TCLKCDKITDOT/TTMSXINC130pFC230pFXTXOUT104P2.2S0S1S2S3S412345678910111213141516P1.2/S31.0P1.3P/S13P1.4P.1/S129135791113JTAG2468101214TDOTDITMSGNDRESETR74.7KS2SW-SPST64636261605958575655545352515049DVccA0.0+A0.0-A1.0+A1.0-A2.0+A2.0-XINXOUTVrefP2.2/STE0S0S1S2S3S4MSP430F425P1.5/TTCLK/ACLK/S28P1.6/SIMO0/S27P1.7/SOMIO/S26P2.0/TA2/S25P2.1/UCLK0/S24R33R23R13R03COM3COM2COM1COM0S23S22S2148474645444342414039383736353433R11MCOM3COM2COM1COM0LCD偏压R21MR31MS5S6S7S8S190SLCD_08NCS11+3S12S11S10图3.4 MSP430单片机最小系统原理图

3.2 电源管理模块设计

3.2.1 5V转换电路

传感器需要12V电压供电,而LCD显示模块需要5V供电,这就需要将12V电压转换为5V电压。如图3.5 所示为12V转5V转换电路。

图3.5 12V转5V转换电路

11

S9S8S7S6S5S4S3S2S1COMS30COM2COM1COM01234567890111121314151617181920S9S8S7S6S5S4S3S2SC1OM3SC0OM2COM1COM0S15S13S12S11S10S5S6S7S8S190S11S12S13S14S1517181920212223242526272829303132S11S12S13S14S15S16S17S18S19S20基于MSP430的称重系统

3.2.2 3.3V转换电路

由于MSP430单片机使用3.3V电源供电,所以要将经过LM7805 转换得到的5V电压,再经LM1117将电压转换为3.3V。如图3.6所示为5V转3.3V转换电路图。

LM11173.3V1235VC30.1uF+R3104R4104+C40.1uF图3.6 5V转3.3V转换电路图

3.3 信号采集模块电路设计

3.3.1 工作原理

电阻应变式称重传感器是基于如下原理:弹性体(弹性元件,敏感梁)在外力作用下产生弹性变形,使粘贴在他表面的电阻应变片(转换元件)也随同产生变形,电阻应变片变形后,它的阻值将发生变化(增大或减小),再经相应的测量电路把这一电阻变化转换为电信号(电压或电流),从而完成了将外力变换为电信号的过程。由此可见,电阻应变片、弹性体和检测电路是电阻应变式称重系统的主要部分。 a.电阻应变片

电阻应变片是把一根电阻丝机械的分布在一块有机材料制成的基底上,即成为一片应变片。

电阻应变片的重要参数是灵敏系数K。

设有一个金属电阻丝,其长度为L,横截面是半径为r的圆形,其面积记作S,其电阻率记作ρ,这种材料的泊松系数是μ。当这根电阻丝未受外力作用时,它的电阻值为R: R = ρL/S(Ω) (3-1)

12

基于MSP430的称重系统

当他的两端受F力作用时,将会伸长,也就是说产生变形。设其伸长ΔL,其横截面积则缩小,即它的截面圆半径减少Δr。此外,还可用实验证明,此金属电阻丝在变形后,电阻率也会有所改变,记作Δρ。

对式(3-1)求全微分,即求出电阻丝伸长后,他的电阻值改变了多少。我们有: ΔR = ΔρL/S + ΔLρ/S –ΔSρL/S2 (3-2) 用式(3-1)去除式(3-2)得到 ΔR/R = Δρ/ρ + ΔL/L – ΔS/S (3-3)

另外,我们知道导线的横截面积S = πr2,则 Δs = 2πr*Δr,所以 ΔS/S = 2Δr/r (3-4) 从材料力学我们知道 Δr/r = -μΔL/L (3-5)

其中,负号表示伸长时,半径方向是缩小的。μ是表示材料横向效应泊松系数。把式(3-4)(3-5)代入(3-3),有 ΔR/R = Δρ/ρ + ΔL/L + 2μΔL/L

=(1 + 2μ(Δρ/ρ)/(ΔL/L))*ΔL/L = K *ΔL/L (3-6) 其中:

K = 1 + 2μ +(Δρ/ρ)/(ΔL/L) (3-7)

式(3-6)说明了电阻应变片的电阻变化率(电阻相对变化)和电阻丝伸长率(长度相对变化)之间的关系。

需要说明的是:灵敏度系数K值的大小是由制作金属电阻丝材料的性质决定的一个常数,它和应变片的形状、尺寸大小无关,不同的材料的K值一般在1.7—3.6之间;其次K值是一个无因次量,即它没有量纲。在材料力学中ΔL/L称作为应变,记作ε,用它来表示弹性往往显得太大,很不方便。常常把它的百万分之一作为单位,记作με。这样,式(3-6)常写作: ΔR/R = Kε (3-8) b.称重传感器工作原理

LAA-H1称重传感器的弹性体为例,介绍以下其中的应力分布。弹性体是一个有特殊形状的结构件。它的功能有两个,首先是它承受称重传感器所受的外力,对外力产生反作用力,达到相对静平衡;其次,它要产生一个高品质的应变场(区),使粘贴在此区的电阻应变片比较理想的完成应变棗电信号的转换任务。设有一带有肓孔的长方体悬臂梁。肓孔底部中心是承受纯剪应力,但其上、下部分将会出现拉伸和压缩应力。主应力方向一为拉神,一为压缩,若

13

基于MSP430的称重系统

把应变片贴在这里,则应变片上半部将受拉伸而阻值增加,而应变片的下半部将受压缩,阻值减少。下面列出肓孔底部中心点的应变表达式,而不再推导。 ε =(3Q(1+μ)/2Eb)*(B(H2-h2)+bh2)/(B(H3-h3)+bh3) (3-9) 其中:Q--截面上的剪力;E--扬氏模量:μ—泊松系数;B、b、H、h—为梁的几何尺寸。需要说明的是,上面分析的应力状态均是“局部”情况,而应变片实际感受的是“平均”状态。图3.7所示为电阻式应变片实物图。

图3.7 电阻式应变片实物图

3.3.2 信号检测电路设计

信号检测电路的功能是把电阻应变片的电阻变化转变为电压输出。因为惠斯登电桥具有很多优点,如可以抑制温度变化的影响,可以抑制侧向力干扰,可以比较方便的解决称重传感器的补偿问题等,所以惠斯登电桥在称重传感器中得到了广泛的应用。因为全桥式等臂电桥的灵敏度最高,各臂参数一致,各个电阻相对称,故各种干扰的影响容易相互抵销减弱,所以称重传感器均采用全桥式等臂电桥。

如图3.8为电阻式应变片内部结构图。

+12VR13KR23KOUT-OUT+R43KR33K-12V图3.8 电阻式应变片内部结构图

14

基于MSP430的称重系统

3.4 信号调理电路设计

3.4.1 AD620工作原理

AD620是一款单芯片仪表放大器,采用经典的三运放改进设计。通过调整片内电阻的绝对值,用户只需要一个电阻便可实现对增益的精确编程(G=100时精度可达0.15%)。单芯片结果和激光晶圆调整允许对电路元件进行严格匹配与跟踪,从而可确保此电路本身具有的高性能特性。如图3.9为AD620原理图。

图3.9 AD620原理图

输入晶体管Q1和Q2提供一路高精度差分对双极性输入,同时由于采用SuperBeta处理,因此输入偏置电流减小10倍。反馈环路Q1-A1-R1和Q2-A2-R2使输入器件Q1和Q2的集电极电流保持恒定,从而可将输入电压作用于外部增益设置电阻RG上。这样就产生了从输入至A1/A2输出的差分增益,器计算公式如(3-10)。单位增益减法器A3用来消除任何共模信号,以获得折合到REF引脚电位的单端输出。R值还可决定前置放大器级的跨导。当减小R以获得更大增益时,该跨导将渐进增大到输入晶体管的跨导。这会带来三大好处:

(1)开环增益提升以提供更大的编程增益,从而减小与增益相关的误差; (2)增益带宽积(由C1、C2和前置放大器跨导决定)随着编程增益提高而强大,从而优化频率响应;

(3)输入电压噪声降至9Nv/Hz,它主要由输入器件的集电极电流和基极电阻决定。

内部增益电阻R1和R2已调整至绝对值24.7K?,因此利用一个外部电阻

15

基于MSP430的称重系统

便可实现对增益的精确编程,增益公式为。

G?49.4K?RG?1(3-10)

(3-11)

RG?49.4K?G?13.4.2 信号放大电路

AD620可以提供低功耗、低成本和高精度的信号放大电路。在称重系统中,绝对精度和漂移误差是最重要的误差来源。在含有智能处理器的教复杂系统中,自动增益/自动归零周期将消除所有的绝对精度和漂移误差,仅留下增益、非线性度和噪声的分辨率误差,因此完全可以获得高精度。如图3.10为AD620信号放大电路图。

+12V17423812AD620620KREFINADC45AGND10K-12VAD705G=200047.8320K图3.10 AD620信号放大电路图

电压放大电路中AD705起着电压跟随器的作用,电压跟随器起缓冲、隔离、提高带载能力的作用。共集电路的输入高阻抗,输出低阻抗的特性,使得它在电路中可以起到阻抗匹配的作用,使得放大电路更好的工作。

3.5 AD转换电路设计

3.5.1 SD16概览

在MSP430F425单片机中,集成了3个独立的16位ADC,并且包含基准源、可编程序增益放大器,适合各种高精度测量应用。目前16位及以上的高分辨率ADC普遍采用了Σ-Δ调制技术,因此,此类ADC也被称为Σ-Δ型ADC。MSP430的AD转换器采用Σ-Δ原理,Σ-Δ的分辨率通常较高,Σ-Δ架构的数字化程度达90%。每个ADC都有独立的空盒子寄存器组,并有8个差分输入通道,通道0~5可以测量输入电压,通道7短路,通道6接到内部温度传感器。

16

基于MSP430的称重系统

对于MSP430F425单片机,实际上只有每个ADC的通道0对外引出。如图3.11为SD16主控制器,图3.12为SD16通道结构图。

图3.11 SD16主控制器

图3.12 SD16通道结构图

3.5.2 转换接口电路设计 如图3.13 为AD转换接口电路。 CON212344 HEADERVcc1K102P2.2AIN0R1100KR2C1图3.13 AD转换接口电路

3.6 显示电路设计

MSP430器件上的液晶显示器的控制/驱动将简化液晶显示器的显示。不同

17

基于MSP430的称重系统

型号的液晶驱动能力不同,我们采用 MSP430的F42X系列,有128段驱动能力。本设计采用LCD048显示数据。如图3.14 LCD048电路图。

S9S8S7S6S5S4S3S2S1COM3S0COM2COM1COM0S9S8S7S6S5S4S3S2S1COMS30COM2COM1COM0S15S13S12S11S10LCD_08NCS11+3S12S11S10液晶的驱动有4种方法:静态,2MUX或1/2占空比,3MUX或1/3占空比, 4MUX或1/4占空比。对于不同系列、不同型号的液晶驱动原理,控制方法都是一样的,不同点在于驱动液晶段数不一样,或可显示信息的多少不一样。我们采用4MUX,这种方式也最简单。

其中需要注意以下两点:

(1)液晶的偏压。由于液晶驱动使用交流电压,所以必须根据液晶的工作模MSP430进行偏压设置,具体的操作是:STATIC模式下,R33开路,R03-R23接地,2MUX模式下,分别在R33、R13以及R13、R03之间接上10K的电阻;3/4MUX模式下,分别在R33、R23之间,R23、R13以及R13、R03之间接上10K的电阻,这样就能保证COM0-COM3出来供给液晶块的电压符合要求。 (2)频率的设置。MSP430有三种时钟ACLK(辅助时钟)、MCLK(主时钟)、SMCLK(子时钟),其中液晶的驱动频率FCLK来自ACLK。在XTIN和XTOUT之间接上振荡频率为32KHz的晶振,Fclk可以根据需要选为1024Hz、512Hz、256Hz、128Hz等。由FRFQ0和FRFQ1的设置可以满足不同液晶对频率的要求,其中Flcd=2*MUX(rate)*F(framing)。 例如:采用3MUX,已知F(framing)=100Hz-30Hz, 由F(LCD)=2*MUX(rate)*F(framing)=6*F(framing),

可知F(LCD)=180Hz-600Hz。可选择的F(LCD)为1024Hz、512Hz、256Hz、128Hz,所以F(LCD)=32K/128=256Hz,所以FRFQ0=1、FRFQ1=0。 在以上两点做好的基础上,我们只要把要输出的数字所对应的代码输出到MSP430的显存就可以显示。实验中如液晶抖动,可适当提高液晶的驱动频率。如液晶亮度不够,应适当调整偏压电阻的大小。

18

1234567891011121314151617181920图3.14 LCD048电路图

基于MSP430的称重系统

在驱动电路中,液晶可以等效为电容。两个电极分别为公共极与段极。公共极由COMn信号驱动,段极由SEGn信号驱动。由此可以得到4种驱动方法。 (1

COM0,而每一段段极需要另一个引脚驱动。

(2)2MUX驱动:使用两个引脚作为液晶公共端COM0、COM1每两段段极需要另一引脚驱动。

(3)3MUX驱动:使用三个引脚作为液晶公共端COM0、COM1、COM2,每3段段极需要另一引脚驱动。

(4)4MUX驱动:使用4个引脚作为液晶公共端COM0、COM1、COM2,每4段段极需要另一引脚驱动。

3.7 硬件电路设计小结

本章介绍的是称重系统的硬件电路,分别完成MSP430最小系统设计、电源管理模块设计、信号采集模块电路设计、信号调理电路设计、AD转换电路设计和显示电路设计。硬件电路是本设计的基础,各个模块的电路为称重系统各个功能的完成提供了基础。

19

基于MSP430的称重系统

4 称重系统软件设计

模块化思想:初始化程序模块、AD采集与数据处理程序模块、显示程序模块。

4.1 主程序设计

根据称重系统的性能指标要求,程序设计需要完成以下模块设计,AD模块,数据处理模块、LCD模块。由于系统需要实时显示被测量的重量,所以在显示完经测量处理的数据信息后,程序将自动跳回AD采样环节继续重复执行。如图4.1为主程序流程图。

开始初始化AD采样采样数据处理显示数据结束 图4.1 主程序流程图

20

基于MSP430的称重系统

4.2 初始化程序模块

如图4.2为初始化程序流程图。

开始关闭看门狗初始化AD初始化LCD结束

图4.2 初始化程序流程图

初始化程序代码:

void ini_main() {

int i;

char j;

WDTCTL = WDTPW + WDTHOLD; // 关闭看门狗

FLL_CTL0 |= XCAP18PF; // 设置晶振负载电容18pF for (i = 0; i < 10000; i++); // 略延迟,让震荡稳定

SD16CTL = SD16REFON+SD16VMIDON+SD16SSEL0+SD16DIV_1;

// 开启内部1.2V基准源, 开启缓冲器,ADC时钟选择为SMCLK/2(524KHz)

for (i = 0; i < 500; i++); // 略延迟,让基准电压稳定

SD16CCTL0 |= SD16DF+SD16GRP; // ADC0与ADC1编组,数据格式为有符号 SD16CCTL1 |= SD16DF+SD16GRP; // ADC1与ADC2编组,数据格式为有符号 SD16CCTL2 |= SD16DF+SD16IE; // 打开ADC2中断,数据格式为有符号 //ADC0/1/2已经被编为同一组,对ADC2的操作将同时作用于ADC0与ADC1 SD16INCTL0 |= SD16INCH_0+SD16GAIN_1; // ADC0输入选择为外部输入,1倍放大 SD16INCTL1 |= SD16INCH_0+SD16GAIN_1; // ADC1输入选择为外部输入,1倍放大 SD16INCTL2 |= SD16INCH_0+SD16GAIN_1; // ADC2输入选择为外部输入,1倍放大 BTCTL = BTDIV+BT_fCLK2_DIV8; // 1/16s BT Int

IE2 |= BTIE; // Enable Basic Timer interrupt;

21

基于MSP430的称重系统

char *pLCD = (char *)&LCDM1; // 取LCDM1寄存器(最低位)的地址 for (j = 0; j < 8; j++) // Clear LCD memory *pLCD++ = 0; // 清屏

LCDCTL = LCDSG0_1 + LCD4MUX + LCDON; // LCD模式:4mux LCD, segs0-15 BTCTL |= BT_fLCD_DIV64; // 设置 LCD 刷新率 P2DIR|=BIT2;

P2DIR|=BIT0+BIT1+BIT3;

P1DIR|=BIT0+BIT1+BIT2+BIT3+BIT4; //悬空不用的IO设为输出,避免不确 P1OUT=0; //定电平造成IO口额外耗电。 P2OUT=0;

_EINT(); //总中断允许 }

4.3 AD采集与数据处理程序模块

ADC模块采用单通道单次采样转换方式。当ASC16SC触发一次转换时,下一次转换就可以通过简单的设置SD16SC为来启动,累加12次采样结果,并去平均值,才每次采样开始前都会查询中断完成标志,再根据结果判断是否开始转换。如图4.3所示为流程图如下。

开始启动A/D转换否查询中断完成标志是采样转换转换结果缓存及读取AD转换值并处理数据结束

图4.3 AD模块流程图

22

基于MSP430的称重系统

AD采集与数据处理程序代码:

void ADC_Sample3() {

long int ADC_Sum0=0;

int i;

SD16CCTL2 |= SD16SC; // 向ADC2发出\开始采样\命令 //由于ADC0/1/2已经被编为一组,三个ADC将同时收到出\开始采样\命令 for(i=0;i<16;i++) //采样4次

{

while(ADC_Flag==0) LPM0; //CPU休眠,等待被采样结束唤醒 ADC_Flag=0;

ADC_Sum0+=ADC_Result0; //ADC0采样结果累加 }

SD16CCTL2 &=~ SD16SC; // 向ADC2发出\停止采样\命令 //由于ADC0/1/2已经被编为一组,三个ADC将同时收到出\停止采样\命令 ADC_Result0=(ADC_Sum0/16 -852) / 10; }

4.4 LCD显示程序模块

LED显示器有静态和动态两种方法。所谓静态显示,就是显示某一字符时,相应的发光二极管恒定得导通或截止,这种方法,每一显示位都需要一个8位的输出口控制,占用的硬件较多,一般仅用于显示位数较少的场合。而动态就是一位一位地轮流点亮各位显示器,对每一位显示器而言,每隔一段时间点亮一次,利用人的视觉留感达到显示的目的。为了显示字符和数字,要为LED显示器提供显示段码(或称字形代码),组成一个―8‖字形的7段,再加上一个小数点位,共计8段,因此提供LED显示器的显示段码为1个字节。 LCD显示程序代码:

//在LCD上显示一个带有小数点的长数据。

void LCD_DisplayLongDecimal( long int Number, char DOT) {

char Neg;

char i;unsigned char temp; char *pLCD = (char *)&LCDM1;

char PolarLocate; char DispBuff[8];

if(Number<0) {Number=-Number; Neg=1;} //处理负数 else Neg=0;

for(i=0;i<7;i++) //拆分数字 {

DispBuff[i]=Number;

23

基于MSP430的称重系统

Number/=10; }

for(i=6;i>DOT;i--) //消隐无效\ {

if (DispBuff[i]==0) DispBuff[i]=SP; else break;

}

PolarLocate=i+1; // 负号显示在第一个有效数字左边 if(DOT>3) DOT=255; // 无效的小数点不显示

if(DOT<1) DOT=255; // LCD048段码中只有123位数字有小数点 for(i=0;i<7;i++)

{

temp=LCD_Tab[DispBuff[i]]; //查表

if (DOT==i) temp|=DOTSEG;//显示小数点 if ((PolarLocate==i)&&(Neg)) temp|=NEGSEG;//负号 pLCD[i]=temp; //写入显存 } }

4.5 软件设计小结

本系统的软件程序设计是基于硬件电路而完成的。分别完成了以下模块的程序设计:初始化程序模块、AD采集与数据处理程序模块、显示程序模块。通过程序控制硬件电路完成称重系统的功能与指标。

24

基于MSP430的称重系统

5 调试与总结

5.1 调试中遇到问题及解决方案

本设计在完成的过程中,第一个遇到的问题就是在电源管理电路中LM7805发热,但是输出的电压还是正确的,这是因为负载过大导致的,通过在LM7805的输入口上串联一个电阻,使12V的电压降到7~8V,解决了LM7805的发热问题。

在系统调试过程中,由于各方面因素的影响,不同时间测试的数值有差异。只是由于电路放大增益是由AD620调节增益电阻决定的,温度等因素会影响电位器的阻值,所以数值会产生差异。所以在确定电路的放大增益以后,使用公式(3-11)计算确定阻值,使用电阻代替电位器。使放大增益保持稳定。测试数据如表5-1。

表5-1 测试数据表

次数砝码数 1 2 3 4 5 21.2g 41.6g 61.4g 82.0g 102.4g 20.4g 40.2g 60.8g 81.2g 102.4g 19.8g 40.4g 60.8g 81.2g 102.4g 20.6g 41.8g 62.2g 82.6g 102.4g 1 2 3 4 如上表所示,系统精度达到0.1g,满足设计要求。 5.2 结论

本文所介绍的是基于MSP430F425微控制器的称重系统,用于对重物测量并显示测量值。本系统使用桥式应变片传感器测量重物并输出电压信号,经过信号调理电路放大滤波后,经模数转换将信息传至单片机处理,同时将重量实时显示。本称重系统的设计功能实现,精度可以达到0.1g,完全符合设计要求。

随着学技术的不断发展,称重系统已经在电力、工业、石化以及医疗等领域得到了广泛的应用。对称重系统的精确性和可靠性要求就更高,本文所介绍的基于MSP430称重系统具有一定应用前景。

25

基于MSP430的称重系统

致谢

大学四年的时光即将结束,在此我要向我的父母,亲人,母校,老师和同学们表达我由衷的感谢。感谢我的父母和亲人在我四年的大学生活和学习中给予巨大的支持,感谢母校给我提供了良好的学习环境,感谢老师在四年间对我的教育和帮助,感谢同学们和我一起走过这美好的时光。

为期一个学期的毕业设计就要结束了,我的大学时光有也将画上句号。毕业设计是对我大学四年学习成果的一次全面检验,也是对我运用科学知识能力的一次考核,有效的提高了我独立分析问题,解决问题的能力。

在此我要感谢杨春杰老师,作为我毕业设计的知道老师,她在整个毕业设计过程中给我提供了很多毕业设计所需要的资料,而且非常耐心的解答我在毕业设计中遇到的问题。杨老师平日里工作繁多,但在我做毕业设计的每个阶段,从查阅资料到设计草案的确定和修改,中期检查,后期详细设计等整个过程中都给予了我悉心的指导。除了敬佩杨老师的专业水平外,她的治学严谨和科学研究的精神也是我永远学习的榜样,并将积极影响我今后的学习和工作。

26

基于MSP430的称重系统

参考文献

[1] 沈建华等.MSP430系列16位超低功耗单片机原理与应用.2004年 清华大学出版社 [2] 谢楷,赵建.MSP430系列单片机系统工程设计与实践.2009年 机械工业出版社 [3] 谢兴红,林凡强,吴雄英.MSP430单片机基础与实践.2008 北京航空航天大学出版社 [4] 寇戈,蒋立平.模拟电路与数字电路(第2版). 2008年 电子工业出版社 [5] 谭浩强. C程序设计(第三版). 2005年 清华大学出版社 [6] 汤伟芳,戴锐青. Protel 99SE实用教程. 2010年 人民邮电出版社

[7] 唐思超.嵌入式系统软件设计实战:基IAR Embedded Workbench. 2010年 北京航空航天

大学出版社

27

基于MSP430的称重系统

附录?

系统电路如图:

VccVCCRESETUTP23DUT.XRX0D0TCLSMTTDITD0C1104CON1Vcc135791113JTAG2468101214TDOTDITMSGNDRESETR64.7K64636261605958575655545352515049A?RST/NMIP2.3/SVSINAXVTc0cP2.4/UDVs0sP2.5/URDXDAVssTDI/TCLKCDKITDOT/TTMSP1.2/S31.0P1.3P/S13.1P1.4P/S129S2P2.2AIN0AIN0C2102R4100KCON212344 HEADERVccR51KXT1P2.2S0S1S2S3S410412345678910111213141516DVccA0.0+A0.0-A1.0+A1.0-A2.0+A2.0-XINXOUTVrefP2.2/STE0S0S1S2S3S4MSP430F425P1.5/TTCLK/ACLK/S28P1.6/SIMO0/S27P1.7/SOMIO/S26P2.0/TA2/S25P2.1/UCLK0/S24R33R23R13R03COM3COM2COM1COM0S23S22S2148474645444342414039383736353433R11MCOM3COM2COM1COM0LCD偏压R21MR31MS5S6S7S8S90S1S11S12S13S14S15S16S17S18S19S20MCU17181920212223242526272829303132S5S6S7S8S90S1NCS11+3S12S11S10S15S13S12S11S10S9S8S7S6S5S4S3S2S1COMS30COM2COM1COM01234567890111121314151617181920S9S8S7S6S5S4S3S2S1COM3S0COM2COM1COM0S11S12S13S14S15

+12VLCD_08 17423812AD620620KREFINADC45AGND10K-12VAD705G=200047.8320K

28

基于MSP430的称重系统

附录II

程序代码如下:

#include \#include \int ADC_Result0;

#define Analog_On P2OUT|= BIT2 #define Analog_Off P2OUT&=~BIT2 char DispChannel=0; char BT_Flag=0; char ADC_Flag=0;

int Timer4=0;

/**************************************************************************** * 名 称:ADC_Sample3()

* 功 能:对3个ADC同时采样

****************************************************************************/ void ADC_Sample3()

{ long int ADC_Sum0=0; int i;

SD16CCTL2 |= SD16SC; // 向ADC2发出\开始采样\命令 //由于ADC0/1/2已经被编为一组,三个ADC将同时收到出\开始采样\命令 for(i=0;i<16;i++) //采样4次

{

while(ADC_Flag==0) LPM0; //CPU休眠,等待被采样结束唤醒 ADC_Flag=0;

ADC_Sum0+=ADC_Result0; //ADC0采样结果累加

}

SD16CCTL2 &=~ SD16SC; // 向ADC2发出\停止采样\命令 //由于ADC0/1/2已经被编为一组,三个ADC将同时收到出\停止采样\命令 ADC_Result0=(ADC_Sum0/16 -852) / 10; }

/**************************************************************************** * 名 称:SD16ISR() SD16中断

* 功 能:ADC采样结束产生的中断,读回采样结果,并唤醒CPU。

****************************************************************************/ #pragma vector=SD16_VECTOR

__interrupt void SD16ISR(void) {

ADC_Result0 = SD16MEM0; //读回采样结果 ADC_Flag=1;

__low_power_mode_off_on_exit(); //唤醒CPU }

/****************************************************************************

29

基于MSP430的称重系统

* 名 称:BT_ISR() BasicTimer 中断 * 功 能:1/16秒唤醒CPU一次。

****************************************************************************/ #pragma vector = BASICTIMER_VECTOR

__interrupt void BT_ISR(void) //1/16秒一次中断(由BasicTimer所产生) {

BT_Flag=1;

__low_power_mode_off_on_exit(); //唤醒CPU }

/**************************************************************************** * 名 称:int_main() 初始化程序 * 功 能: 初始化系统各个模块

****************************************************************************/ void ini_main() { int i;

char j;

WDTCTL = WDTPW + WDTHOLD; // 关闭看门狗

FLL_CTL0 |= XCAP18PF; // 设置晶振负载电容18pF for (i = 0; i < 10000; i++); // 略延迟,让震荡稳定 SD16CTL = SD16REFON+SD16VMIDON+SD16SSEL0+SD16DIV_1;

// 开启内部1.2V基准源, 开启缓冲器,ADC时钟选择为SMCLK/2(524KHz)

for (i = 0; i < 500; i++); // 略延迟,让基准电压稳定

SD16CCTL0 |= SD16DF+SD16GRP; // ADC0与ADC1编组,数据格式为有符号 SD16CCTL1 |= SD16DF+SD16GRP; // ADC1与ADC2编组,数据格式为有符号 SD16CCTL2 |= SD16DF+SD16IE; // 打开ADC2中断,数据格式为有符号 //ADC0/1/2已经被编为同一组,对ADC2的操作将同时作用于ADC0与ADC1 SD16INCTL0 |= SD16INCH_0+SD16GAIN_1; // ADC0输入选择为外部输入,1倍放大 SD16INCTL1 |= SD16INCH_0+SD16GAIN_1; // ADC1输入选择为外部输入,1倍放大 SD16INCTL2 |= SD16INCH_0+SD16GAIN_1; // ADC2输入选择为外部输入,1倍放大 BTCTL = BTDIV+BT_fCLK2_DIV8; // 1/16s BT Int

IE2 |= BTIE; // Enable Basic Timer interrupt; char *pLCD = (char *)&LCDM1; // 取LCDM1寄存器(最低位)的地址 for (j = 0; j < 8; j++)

// Clear LCD memory *pLCD++ = 0; // 清屏

LCDCTL = LCDSG0_1 + LCD4MUX + LCDON; // LCD模式:4mux LCD, segs0-15 BTCTL |= BT_fLCD_DIV64; // 设置 LCD 刷新率 P2DIR|=BIT2;

P2DIR|=BIT0+BIT1+BIT3;

P1DIR|=BIT0+BIT1+BIT2+BIT3+BIT4; //悬空不用的IO设为输出,避免不确 P1OUT=0; //定电平造成IO口额外耗电。 P2OUT=0;

_EINT(); //总中断允许

30

基于MSP430的称重系统

}

/**************************************************************************** * 名 称:LCD_DisplayDecimal()

* 功 能:在LCD上显示一个带有小数点的短整型数据。

****************************************************************************/ void LCD_DisplayDecimal( int Number, char DOT) {

char Neg;

char i;unsigned char temp; char *pLCD = (char *)&LCDM1; char PolarLocate;

char DispBuff[8];

if(Number<0) {Number=-Number; Neg=1;} //处理负数 else Neg=0;

for(i=0;i<7;i++) //拆分数字 {

DispBuff[i]=Number; Number/=10; }

for(i=6;i>DOT;i--) //消隐无效\ {

if (DispBuff[i]==0) DispBuff[i]=SP; else break;

}

PolarLocate=i+1; // 负号显示在第一个有效数字左边 if(DOT>3) DOT=255; // 无效的小数点不显示

if(DOT<1) DOT=255; // LCD048段码中只有123位数字有小数点 for(i=0;i<7;i++)

{

//temp=LCD_Tab[DispBuff[i]]; //查表

if (DOT==i) temp|=DOTSEG;//显示小数点 if ((PolarLocate==i)&&(Neg)) temp|=NEGSEG;//负号 pLCD[i]=temp; //写入显存 } }

/**************************************************************************** * 名 称:main() 主程序

* 功 能:每1/4秒对三个ADC同时采样一次、结果显示在LCD上。 三个采样结果可由按键切换显示。

****************************************************************************/ void main(void) {

31

基于MSP430的称重系统

int n;

ini_main();

while (1) {

while(BT_Flag==0) LPM3; //CPU休眠,等待被BascTimer唤醒 BT_Flag=0; Timer4++; if(Timer4>=4) {

Timer4=0;

Analog_On; //P2.2置高(如果有必要)

SD16CTL |= (SD16REFON+SD16VMIDON); //开启内部基准源,开启输出缓冲器 for (n = 0; n < 500; n++); //略延迟,让基准电压稳定 ADC_Sample3(); //同时采样3路

Analog_Off; //采样完毕关闭外部模拟电路电源

SD16CTL &=~ (SD16REFON+SD16VMIDON); //关闭内部基准源,关闭输出缓冲器

LCD_DisplayDecimal(ADC_Result0,1); //显示ADC0采样值 } } }

32

本文来源:https://www.bwwdw.com/article/jgfx.html

Top