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