1、I摘 要数字电压表是采用数字化测量技术,把连续的模拟量(直流输入电压)转换成不连续、离散的数字形式并加以显示的仪表,它是诸多数字化仪表的核心与基础。以数字电压表为核心扩展成的各种数字化仪表几乎覆盖了电子电工测量、工业测量、自动化系统等各个领域。本文介绍了一种基于 TI 公司生产的16 位超低功耗单片机 MSP430F149 的数字电压表系统,系统利用单片机内嵌的12 位 A/D 模块采集测量的电压信号,经过 A/D 转换、软件滤波和标度转换处理后,将测量的电压值实时显示在 LCD 显示器上。文中详细介绍了系统软件模块的程序设计,包括 A/D 转换模块,数据处理模块及显示模块的设计。本文设计的数
2、字电压表系统可以测量 0-3V 的 1 路模拟直流输入电压值,并通过 LCD 显示器实时显示。系统具有体积小、成本低,电路简单,安全性好,可扩展性强等特点。关键字: 数字电压表;MSP430F149 ;LCD 显示器; A/D 转换1基于 MSP430F149 的数字电压表系统软件设计1 绪论在电量的测量中,电压、电流和频率是最基本的三个被测量,其中电压量的测量最为经常。而且随着电子技术的发展,更是经常需要测量高精度的电压,所以数字电压表就成为一种必不可少的测量仪器。数字电压表简称 DVM,它是采用数字化测量技术,把连续的模拟量转换成不连续、离散的数字形式并加以显示的仪表。由于数字式仪器具有读
3、数准确方便、精度高、误差小、测量速度快等特而得到广泛应用 。 传统的指针式刻度电压表功能单一,进度低,容易引起视差和视觉疲劳,因而不能满足数字化时代的需要。采用单片机的数字电压表,将连续的模拟量如直流电压转换成不连续的离散的数字形式并加以显示,从而精度高、抗干扰能力强,可扩展性强、集成方便,还可与 PC 实时通信。数字电压表是诸多数字化仪表的核心与基础 。以数字电压表为核心,可以扩展成各种通用数字仪表、专用数字仪表及各种非电量的数字化仪表。目前,由各种单片机和 A/D 转换器构成的数字电压表作全面深入的了解是很有必要的。最近的几十年来,随着半导体技术、集成电路(IC)和微处理器技术的发展,数字
4、电路和数字化测量技术也有了巨大的进步,从而促使了数字电压表的快速发展,并不断出现新的类型 。数字电压表从 1952 年问世以来,经历了不断改进的过程,从最早采用继电器、电子管和形式发展到了现在的全固态化、集成化(IC 化) ,另一方面,精度也从 0.01%-0.005%。目前,数字电压表的内部核心部件是 A/D 转换器,转换的精度很大程度上影响着数字电压表的准确度,因而,以后数字电压表的发展就着眼在高精度和低成本这两个方面 。本文介绍了一种基于 TI 公司生产的 16 位超低功耗单片机 MSP430F149 的数字电压表系统,系统利用单片机内嵌的 12 位 A/D 模块采集测量的电压信号,经过
5、 A/D 转换、软件滤波和标度转换处理后,将测量的电压值实时显示在 LCD 显示器上。文中详细介绍了系统软件模块的程序设计,包括 A/D 转换模块,数据处理模块及显示模块的设计。本文设计的数字电压表系统可以测量 0-3V 的 1 路模拟直流输入电压值,并通过 LCD 显示器实时显示。系统具有体积小、成本低,2电路简单,安全性好,可扩展性强等特点。1.1 数字电压表技术发展现状与前景传统的模拟式(即指针式)电压表已有 100 多年的发展史,虽然不断改进与完善,仍无法满足现代电子测量的需要,数字电压表自 1952 年问世以来,显示强大的生命力,现已成为在电子测量领域中应用最广泛的一种仪表。数字电压
6、表简称 DVM(Digital Voltmeter) ,它是采用数字化测量技术,把连续的模拟量(直流输入电压)转换成不连续、离散的数字形式并加以显示的仪表。智能化数字电压表则是最大规模集成电路(LSI) 、数显技术、计算机技术、自动测试技术(ATE)的结晶。一台典型的直流数字电压表主要由输入电路、A/D 转换器、控制逻辑电路、显示器,以及电源电路等级部分组成。1与传统的指针式电压表相比数字电压表具有以下特点:1.显示清晰、直观、读数准确传统的模拟式电压表必须借助指针和刻度盘进行读数。在读书过程中不可避免地会引入人为的测量误差(例如视差) ,并且还容易造成视觉疲劳,数字电压表则采用了先进的数显技
7、术,使显示结果一目了然,只要仪表不发生跳数现象,测量结果就是唯一的,不仅保证了读书的客观性与准确性,还符合人们的读数习惯,能够缩短读书和记录的时间。2.准确度高数字电压表的准确度是测量结果中系统误差与随机误差的综合。它便是测量结果与真值的一致程度,也反映测量误差的大小,一般讲准确度愈高,测量误差愈小,反之亦然。数字电压表的准确度远优于模拟式电压表,后者的准确度只有 7 个等级:0.1、0.2、0.5、1.0、1.5、2.5、5.0。而普通的数字电压表的准确度就已经超过这几个等级2。3.分辨率高分辨率是数字电压表能够显示的被测电压的最小变化值,也就是使显示器末位跳一个字所需的输入电压值,通常用百
8、分数表示。12 位 DVM 的分辨率为1/4096,这是符合要求的准确度。34.扩展能力强在数字电压表的基础上,还可以扩展成各种专用及通用数字仪表、数字多用表。5.测量速度快数字电压表在每秒内对被测量电压的测量次数,叫测量速率,单位是“次/S”。它主要取决于 A/D 转换器的转换速率。目前,数字电压表的最高测量速率已达到 10 万次/S3。6.输入阻抗高数字电压表具有很高的输入阻抗,通常为 - ,最高可到 104100。这样在测量时从测量点路上吸取的电流极小,不会影响被测信号源的工作状态,由此可减小由信号源内阻带来的附加误差。7.集成度高,微功耗新型的数字电压表普遍采用 CMOS 大规模集成电
9、路,整机功耗很低。8.抗干扰能力强数字电压表的内部干扰有漂移及噪声,外部干扰有串模干扰及共模干扰。经过数字滤波和浮地保护等技术,数字电压表具有很高的抗干扰能力。由于数字电压表具有以上诸多优点优点,所以在国内外已得到很广泛的应用,具有很好的发展前景。1.2 本课题研究目的和意义MSP430F149 是德州仪器公司(TI)新推出的高性能的超低功耗 16 位微控制器,在测量系统、工业控制、数据采集和智能仪器仪表领域有着广泛的应用,MSP430F149 内嵌 12 位高精度 A/D 转换器4。采用 MSP430F149 的数字电压表精度高、抗干扰能力强,可扩展性强、集成方便,价格低廉,目前在国内外得到
10、了广泛的应用,有很好的发展前景。1.3 本课题的设计任务及要求 1.基于MSP430F149 数字电压表系统软件设计的设计任务设计由MSP430F149为控制器的直流数字电压表模块,对输入的直流电压进行测量,并通过12864C-1 液晶显示器显示测量电压值。学习并掌握MSP430F149工作原理及应用系统的开发,学习并掌握IAR公司的IAR Embedded Workbench 4EW430开发平台使用和操作。在EW430 设计平台上完成数字电压表模块系统初始化及A/D转换、LCD显示等程序的设计、编写和调试工作。2.基于MSP430F149 数字电压表系统软件设计的设计要求要求直流电压测量范
11、围:0V3V,误差为0.001 V。完成数字电压表模块软件程序的设计工作。1.4 本章小结随着电子技术的发展,需要高精度的测量工具,而基于 MSP430F149 数字电压表度高、抗干扰能力强,可扩展性强、集成方便,价格低廉,目前在国内外得到了广泛的应用,前景可观,具有极其深远的研究意义。2 基于 MSP430F149 的数字电压表系统2.1 系统总体设计方案 数字电压表设计主要部分有电源部分、AD 转换部分、LCD 显示部分、JTAG程序下载接口。1.电源采用 USB 电源加分压电路为整个系统供电。2.AD 转换部分采用 MSP430F149 单片机,单片机自带 ADC12 高精度 12 位模
12、数转换电路。3.LCD 部分选用 YJD12864C-1 液晶做显示器,实现测量的 4 位电压显示。4.单片机自带程序下载接口可用 14 脚 JTAG 接口连接,之后就可以通过下载器直接下载程。5.除以上主要部分还有 32.768 的单片机外接晶振电路,连接在单片机复位端脚的复位电路。以上是主要部分介绍具体连接电路在下面介绍。图 2.1 是系统总体结构图:5M S P 4 3 0 F 1 4 9 单片机单片机测试电路 复位电路晶振电路J T A G 程序下载口测量电压输入电路Y J D 1 2 8 6 4 c - 1 液晶系统电源 : U S B 接口和分压电路部分电源电路为液晶提供 5 V
13、电压P 6 . 0 口模拟电压输入端为单片机提供 3 V 电压万能板 1 2 * 1 8 c m2.2 MSP430F149 单片机介绍2.2.1 简单概述 MSP430F149 芯片是美国 TI 公司推出的超低功耗微处理器,有 60KB+256 字节 FLASH,2KBRAM,包括基本时钟模块、看门狗定时器、带 3 个捕获比较寄存器和 PWM 输出的 16 位定时器、带 7 个捕获比较寄存器和 PWM 输出的 l6 位定时器、2 个具有中断功能的 8 位并行端口、4 个 8 位并行端口、模拟比较器、12 位 AD 转换器、2 个串行通信接口等模块。52.2.2 MSP430F149 主要特点
14、 1.低功耗:电压 1.83.6V 低电压,RAM 数据保持方式下耗电仅 0.1pA,活动模式下耗电 250pA/MIPS(MIPS:每秒百万条指令数),I/O 输入端口的漏电流最大仅 50nA。2.强大的处理能力:MSP430 系列单片机采用了目前流行的精简指令集(RISC)结构,一个时钟周期可以执行一条指令,因此在 8MHz 晶振工作时,指令速度可达到 8MIPS。3.丰富的片上外围模块:MSP430 系列单片机结合 TI 的高性能模拟技术,各成员都集成了较丰富的片内外设,具体到 MSP430F149 单片机有以下功能模块:看门狗(WDT),模拟比较器 A,定时器 A(Timer A),定
15、时器 B(Timer B),串口,61(USART0,1),硬件乘法器,液晶驱动器,12 位 ADC,直接数据存取(DMA),端口 l-6(P1P6),基本定时器。64.系统工作稳定:MSP430 系列单片机均为工业级器件,运行环境温度为-40一+85,运行稳定、可靠性高,所设计的产品适用于各种民用和工业环境。5.方便高效的开发环境:因为器件片内有 JTAG 调试接口,还有可电擦写的FLASH 存储器,因此采用先通过 JTAG 接口下载程序到 FLASH 内,再由 JTAG 接口控制程序运行、读取片内 CPU 状态,以及存储器内容等信息供设计者调试,整个开发(编译、调试)都可以在同一个软件集成
16、环境中进行。72.2.3 MSP430F149 芯片引脚功能介绍MSP430F149 芯片设计时的封装方式为贴片式封装,64 个引脚,引脚间距为0.5mm,单片机面积很小很难手工焊接,所以够买的是带有转接板的单片机,贴片式的单片机转接成 4 列 2*8 排针的引脚,排针脚间距约为 2.54mm,能与万能板匹配8。MSP430F149 单片机引脚如图 2.2 所示:图 2.2 MSP430F149 单片机引脚图7表2.1描述了MSP430F149单片机各端口功能。表2.1 MSP430端口功能端口 功能P1、P2 I/O、中断功能、其他片内外设功能P3、P4、P5、P6 I/O、其他片内外设功能
17、S、COM I/O、驱动液晶端口使用特性:1.所有端口都可以单独进行编程;2.可以进行输入输出和中断条件的任意组合;3.对具有中断功能的引脚输入沿可进行选择;4.具有第2 功能选择,以适合不同I/O 口操作;5.所有指令支持端口控制寄存器的读写操作。2.3 本章小结 本章主要介绍本课题的总体设计方案以及对于单片机 MSP430F149 的核心芯片的特点及引脚功能进行了介绍。4 系统软件设计 4.1 简单概述 本系统设计中采用IAR Embedded Workbench forMSP430 6.0软件,这是一款非常优秀的LED开发环境具有强大的编译能力和调试功能。 4.2 软件设计总体流程图根据
18、模块划分原则,将改程序划分为初始化模块、A/D 转换子程序、LCD显示子程序 ,这三个程序模块构成了整个系统软件的主程序,软件设计总体流程图如图 4.1 所示:8图 4.1 总体流程图4.3 程序设计4.3.1 初始化程序所谓初始化,是对将要用到的 MSP430 系列单片机内部部件或扩展芯片进行初始工作状态设定,初始化子程序的主要工作是设置定时器的工作模式,初值预置,开中断和打开定时器等。9初始化程序如下:#include unsigned char flag=1;/*初始化程序*/void uart_org(void)ME1 |= UTXE0 + URXE0; / Enable USART0
19、 TXD/RXDUCTL0 |= CHAR; / 8-bit characterUTCTL0 |= SSEL0; / UCLK = ACLKUBR00= 0x03; / 32768/9600UBR10= 0x00;UMCTL0= 0x4a;P3SEL |= 0x30; / P3.4,5 = USART0 TXD/RXDP3DIR |= 0x10;结束初始化调用 A/D 转换子程序调用 LCD 显示子程序开始9UCTL0 / Initialize USART state machineIE1 |= URXIE0; / Enable USART0 RX interrupt4.3.2 A/D 转换程
20、序A/D 转换子程序用来控制对输入的模块电压信号的采集测量,并将对应的数值存入相应的内存单元,其转换流程图如图 4.2 所示:A D C 1 2 模块均值滤波标度转换数字切割L C D 显示函数待测电压从 A D C 1 2 M E M O 中读取数字值调用显示程序在液晶上显示A/D 转换程序如下:/*程序功能:MCU 的片内 ADC 对 P6.0 端口的电压进行转换将模拟电压值显示在 12864c-1 液晶上。-*/#include /10#define RS BIT0; /P3.0#define RW BIT1; /P3.1#define E BIT2; /P3.2#define PSB
21、BIT5; /控制端口 P1.5#define RES BIT6; /复位 P3.6#define Number_of_Results 200void uart_org(void);void UartStr(unsigned char *p);void delay(unsigned int i);/void delay(unsigned int t) ;void write_com(unsigned char cmdcode);void write_data(unsigned char Dispdata);void lcdreset() ;void hzkdis( char *s) ;void
22、 ceshi() ;void clrscreen();unsigned char shuzi = “0123456789.“;static unsigned int resultsNum_of_Results; /保存 ADC 转换结果的数组 void Trans_val(unsigned int Hex_Val); void InitADC12();/*主函数*/void main(void)WDTCTL = WDTPW+WDTHOLD;P3DIR|=0x47;P3OUTP3DIR|=0x47;P3OUT=0x00;11P1DIR|=0X20;P1OUT=0x00;P1OUTdelay(30
23、0);P1OUT|=PSB; / PSB=1; P3OUT|=RES;P3OUT / RW=0; LCD reset(); / 初始化 LCD 屏 ceshi(); delay(25000);Clrscreen();delay(5000);uartorg( );UartStr(“开始上传数据 请稍候-rtn“);delay(5000);UartStr(“电压测量开始:rtn“);P6SEL|=0x01; / 使能 ADC 通道 A0ADC12IE = 0x01;ADC12CTL0 = ADC12ON+MSC ; /开 ADC12 内核,设 SHT0=2 (N=4) /应该加上 MSC和 SHT
24、ADC12CTL1 = SHP+CONSEQ_2 ; /SAMPCON 信号选为采样定时器输出 /应该加上 CONSEQ_2 选择单通道多次转化/ADC12 内部参考电压设置ADC12CTL0 |= REF2_5V; /选用内部参考电压为 2.5VADC12CTL0 |= REFON; /内部参考电压打开 delay(5000); ADC12MCTL0 |= SREF_1; /R+=3.3V R-=VSS/转换允许ADC12CTL0 |= ENC ; /转换允许(上升沿)12_EINT();/ 使能转换ADC12CTL0 |= ADC12SC;/*函数名称:ADC12ISR功 能:ADC 中断
25、服务函数,在这里用多次平均的计算 P6.0 口的模拟电压数值参 数:无 返回值 :无*/#pragma vector=ADC_VECTOR_interrupt void ADC12ISR (void)static unsigned int index = 0;resultsindex+ = ADC12MEM0; / Move resultsif(index = Number_of_Results)unsigned char i;unsigned long sum = 0;index = 0;for(i = 0; i #define RS BIT0; /P3.0#define RW BIT1;
26、/P3.1#define E BIT2; /P3.2#define PSB BIT5; /控制端口 P1.5#define RES BIT6; /复位 P3.6#define FIRST_ADDR 0 /*-延时子程序-*/ void delay(unsigned int t) unsigned int i,j; for(i=0;i0) write_data(*s); s+; delay(50); /*-首屏显示-*/ void ceshi() write_com(0x01);/清除显示,并且设定地址指针为 00H delay(5); write_com(0x80);/第一行(如果是地址是:8
27、0H,即 LCD 的第一行的第一个位置显示)hzkdis(“MSP430 数字电压表“);19delay(5000);write_com(0x90);/第二行(如果是地址是:90H,即 LCD 的第二行的第一个位置显示) hzkdis(“设计人:“); delay(5000);write_com(0x88);/第三行(如果是地址是:A0H,即 LCD 的第三行的第一个位置显示) hzkdis(“10 电子信息工程专升本“); delay(5000);write_com(0x98);/第四行(如果是地址是:B0H ,即 LCD 的第四行的第一个位置显示) hzkdis(“许小陪 2010“);d
28、elay(5000); /*-清屏命令-*/ void clrscreen() write_com(0x01); delay(10); 4.4 软件调试软件调试的主要任务是排查错误,错误主要包括逻辑和功能错误,这些错误有些是显性的,而有些是隐形的,可以通过仿真开发系统发现逐步改正。本系统设计中采用IAR Embedded Workbench forMSP430 6.0软件,这是一款非常优秀的LED开发环境具有强大的编译能力和调试功能。4.5 本章小结 本章主要介绍基于 MSP430F149 的数字电压表系统的软件设计,并在 IAR EW430 设计平台上完成了软件程序设计,并进行了软件调试。2
29、05 结论软件设计程序可以实现 03V 电压测量,并在 LCD 上显示电压值,测量精度为0.001V,测量误差约 1mv,系统各部分软件工作正常。电路设计是本科学习阶段一次非常难得的理论与实际相结合的机会。通过电路设计,自己设计、调试了数字电压表整个小系统,虽然还有许多缺陷但这是自己设计制作的第一个比较完整的软件系统,其中许多的困难也是自己以前没有经历过的,设计平台很陌生、芯片功能不了解甚至根本无从下手、设计错误等等,都要自己耐心的学习和处理。当老师把资料提供并给我讲解和指导后,才对本课题有了初步的认识,当设计出现错误时才知道自己考虑的只是局部而没有注意到总体设计。通过电路设计才让我真正体会到
30、系统的概念。同时也提高自己的文献查阅和快速学习的能力,一个人不可能掌握所有的知识,在需要时一定要有快速学习的能力,查阅文献借鉴别人的经验可以让自己少走很多弯路。数字电压表是现在电子测量必需的测量设备,有很好的发展前景。MSP430 单片机超低功耗,功能强大,有非常大的开发空间。采用 MSP430 单片机设计多功能的电压测量设备很值得去研究,也有很高的实用价值。参 考 文 献1张晞,王德银,张晨. MSP430 系列单片机实用 C 语言程序设计M.北京:人民邮电出版社,2005.2赵亮,侯国锐.单片机语言编程与实例M.北京:人民邮电出版社,2003.3YJD12864C-1 LCD 数据手册R.
31、深圳:亚晶达电子有限公司,2006.5王晓亮. 基于MSP430单片机的数字电压表的设计J.科技创新导报,2009.6MSP430x13x,MSP430x14x,MSP430x14x1 MIXED SIGNAL MICROCONTROLLERR, Texas Instruments Incorporated, 2004. 7潘新民,王燕芳.单片微型计算机实用系统设计M. 北京:人民邮电出版社,1992.8沈艳华,杨艳琴.MSP430系列16位超低功耗单片机原理与实践M. 北京:北京航空航天大学出版社,2008.9OASISSOA Reerence Model TC.Mapping of W3C Webservice Architecture Wo r kto SOA RMworkR USA ,2005