数字电压表的设计报告队员:田猛唐静张超摘要:随着电子科学技术的发展,电子测量对测量精度和功能的要求也越来越高,正因为其方便与精度高,人们对其需求量与要求进一步提高,电压的测量甚为突出,因为电压的测量最为普遍。本设计主要通过MSP430F2274单片机结合内部A/D转换芯片构建了一个简单的直流数字电压表用分压器进行电压采样,以MSP430F2274为监测和控制核心,并以LCD1602输出显示电压。实现了0~10V的电压检测和,输出显示。关键词:直流电压检测A/D转换MSP430F2274LCD16021方案比较1.1总体设计方案与比较方案一:对A/D(模拟数字转换)芯片采集后将外测电压信号转换为数字信号,MSP430F2274进行数据处理,它有多路调制的BCD码输出端,采用动态扫描显示,便于实现自动控制。但芯片只能完成A/D转换功能,要实现显示功能还需配合其它驱动芯片等,使得整部分硬件电路板布线复杂,加重了电路设计和实际焊接的工作。方案二:采用MSP430F2274内部八路输入十位A/D转换器将采样电压进行转换,以MSP430F2274为监测和控制核心,并以LCD1602输出显示检测的直流电压数值。电路设计简单,电路板布线不复杂,便于焊接、调试。电源采用稳压电源提供的±5V输出,显示部分采用LCD1602液晶显示。方案论证:方案一采用外部AD转换0809,电路复杂,而采用方案二,外围电路简单且能实现方案一的所有功能,故选择方案二。2系统设计2.1总体设计总体设计框图如图2.2软件流程图软件流程图如图采样A/D转换MSP数据处理数码显示内部A/D初始化开始A/D转换数值计算显示程序3模块电路3.1采样电路利用分压器进行分压,用5k的滑动变阻器将被测直流电压1/2送入A/D转换器进行量化和编码,这样的分压可以使电压检测量程扩大1倍,在本电路中可达到10V,A/D的结果送入单片机进行处理。R3为300k的隔离电阻,其作用是减小耦合度,保护A/D转换的输入级。3.2A/D转换原理A/D转化电路,亦称“模拟数字转换器”,简称“模数转换器”。将模拟量或连续变化的量进行量化(离散化),转换为相应的数字量的电路。A/D变换包含三个部分:抽样、量化和编码。一般情况下,量化和编码是同时完成的。抽样是将模拟信号在时间上离散化的过程;量化是将模拟信号在幅度上离散化的过程;编码是指将每个量化后的样值用一定的二进制代码来表示。随着数字技术,特别是信息技术的飞速发展与普及,在现代控制。通信及检测等领域,为了提高系统的性能指标,对信号的处理广泛采用了数字计算机技术。由于系统的实际对象往往都是一些模拟量(如温度。压力。位移。图像等),要使计算机或数字仪表能识别。处理这些信号,必须首先将这些模拟信号转换成数字信号;而经计算机分析。处理后输出的数字量也往往需要将其转换为相应模拟信号才能为执行机构所接受。这样,就需要一种能在模拟信号与数字信号之间起桥梁作用的电路-模数和数模转换器。将模拟信号转换成数字信号的电路,称为模数转换器(简称a/d转换器或adc,analogtodigitalconverter);将数字信号转换为模拟信号的电路称为数模转换器(简称d/a转换器或dac,digitaltoanalogconverter);a/d转换器和d/a转换器已成为信息系统中不可缺少的模块,为确保系统处理结果的精确度,a/d转换器和d/a转换器必须具有足够的转换精度;如果要实现快速变化信号的实时控制与检测,a/d与d/a转换器还要求具有较高的转换速度。转换精度与转换速度是衡量a/d与d/a转换器的重要技术指标。随着集成技术的发展,现已研制和生产出许多单片的和混合集成型的a/d和d/a转换器,它们具有愈来愈先进的技术指标。d/a和a/d转换器的相关性能参数:d/a转换器是把数字量转换成模拟量的线性电路器件,已做成集成芯片。由于实现这种转换的原理和电路结构及工艺技术有所不同,因而出现各种各样的d/a转换器。目前,国外市场已有上百种产品出售,他们在转换速度。转换精度。分辨率以及使用价值上都各具特色。d/a转换器的主要参数:衡量一个d/a转换器的性能的主要参数有:(1)分辨率是指d/a转换器能够转换的二进制数的位数,位数多分辨率也就越高。(2)转换时间指数字量输入到完成转换,输出达到最终值并稳定为止所需的时间。电流型d/a转换较快,一般在几ns到几百ns之间。电压型d/a转换较慢,取决于运算放大器的响应时间。(3)精度指d/a转换器实际输出电压与理论值之间的误差,一般采用数字量的最低有效位作为衡量单位。(4)线性度当数字量变化时,d/a转换器输出的模拟量按比例关系变化的程度。理想的d/a转换器是线性的,但是实际上是有误差的,模拟输出偏离理想输出的最大值称为线性误差。a/d转换器的功能是把模拟量变换成数字量。由于实现这种转换的工作原理和采用工艺技术不同,因此生产出种类繁多的a/d转换芯片。a/d转换器按分辨率分为4位。6位。8位。10位。14位。16位和bcd码的31/2位。51/2位等。按照转换速度可分为超高速(转换时间≤330ns),次超高速(330~3.3μs),高速(转换时间3.3~333μs),低速(转换时间>330μs)等。a/d转换器按照转换原理可分为直接a/d转换器和间接a/d转换器。所谓直接a/d转换器,是把模拟信号直接转换成数字信号,如逐次逼近型,并联比较型等。其中逐次逼近型a/d转换器,易于用集成工艺实现,且能达到较高的分辨率和速度,故目前集成化a/d芯片采用逐次逼近型者多;间接a/d转换器是先把模拟量转换成中间量,然后再转换成数字量,如电压/时间转换型(积分型),电压/频率转换型,电压/脉宽转换型等。其中积分型a/d转换器电路简单,抗干扰能力强,切能作到高分辨率,但转换速度较慢。有些转换器还将多路开关。基准电压源。时钟电路。译码器和转换电路集成在一个芯片内,已超出了单纯a/d转换功能,使用十分方便。3.3LCD1602显示电路1.简介LCD1602是工业字符型液晶,能够同时显示16x02即32个字符。(16列2行)注:为了表示的方便,后文皆以1表示高电平,0表示第电平。1602液晶模块内部的字符发生存储器(CGROM)已经存储了160个不同的点阵字符图形,这些字符有:阿拉伯数字、英文字母的大小写、常用的符号、和日文假名等,每一个字符都有一个固定的代码,比如大写的英文字母“A”的代码是01000001B(41H),显示时模块把地址41H中的点阵字符图形显示出来,我们就能看到字母“A”。因为1602识别的是ASCII码,试验可以用ASCII码直接赋值,在单片机编程中还可以用字符型常量或变量赋值,如'A’。2.管脚功能1602采用标准的16脚接口,其中:第1脚:VSS为电源地。第2脚:VDD接5V电源正极。第3脚:V0为液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比度最高(对比度过高时会产生“鬼影”,使用时可以通过一个10K的电位器调整对比度)。第4脚:RS为寄存器选择,高电平1时选择数据寄存器、低电平0时选择指令寄存器。第5脚:RW为读写信号线,高电平(1)时进行读操作,低电平(0)时进行写操作。第6脚:E(或EN)端为使能(enable)端。第7~14脚:D0~D7为8位双向数据端。第15~16脚:空脚或背灯电源。第15脚背光正极。第16脚背光负极。1602液晶模块内部的字符发生存储器(CGROM)已经存储了160个不同的点阵字符图形,这些字符有:阿拉伯数字、英文字母的大小写、常用的符号、和日文假名等,每一个字符都有一个固定的代码,比如大写的英文字母“A”的代码是01000001B(41H),显示时模块把地址41H中的点阵字符图形显示出来,我们就能看到字母“A”。因为1602识别的是ASCII码,试验可以用ASCII码直接赋值,在单片机编程中还可以用字符型常量或变量赋值,如'A’。4整机调试将各模块按照电路要求连接到相应位置,并连接好所有的电源线和和液晶显示控制线,检查线路是否正确无误,将电压测量线引出。然后将程序下载到单片机中。需调试的功能有液晶显示、电压采样、精度校准、故障排查,重复以上步骤,直到达到要求为止。项目完成情况基本要求电压采样完成液晶显示功能完成电压检测结果输出完成5程序清单#includemsp430x22x4.h#includeLCD1602.h#defineucharunsignedchar#defineuintunsignedintuintad_value,data;unsignedintlcd_data[]={'0','1','2','3','4','5','6','7','8','9',};intmain(void){WDTCTL=WDTPW+WDTHOLD;//关看门狗BCSCTL1=CALBC1_1MHZ;//设定DCO为1MHZDCOCTL=CALDCO_1MHZ;ADC10CTL1=INCH_0;//选择第7通道ADC10CTL0=REFON+REF2_5V+SREF_1;//打2.5V参考,地为负参考ADC10CTL0|=ADC10ON+ADC10SHT_3+ADC10IE;//打开ADC10内核,设定采样保持时间为64个ADC10CLK,使能ADC10中断P2SEL|=BIT4;P3SEL|=BIT7;LCD1602();Init_Lcd();Display_LCD_Byte(0,0,'v');Display_LCD_Byte(0,1,'o');Display_LCD_Byte(0,2,'l');Display_LCD_Byte(0,3,'t');Display_LCD_Byte(0,4,'a');Display_LCD_Byte(0,5,'g');Display_LCD_Byte(0,6,'e');Display_LCD_Byte(1,0,'=');Display_LCD_Byte(1,13,'m');Display_LCD_Byte(1,14,'v');ADC10CTL0|=ENC+ADC10SC;//启动AD转换_BIS_SR(GIE+CPUOFF);//开总中断并进入低功耗while(1){Display_LCD_Byte(1,2,'w');Display_LCD_Byte(1,3,'a');Display_LCD_Byte(1,4,'i');Display_LCD_Byte(1,5,'t');Display_LCD_Byte(1,6,'.');Display_LCD_Byte(1,7,'.');Display_LCD_Byte(1,8,'.');}}#pragmavector=ADC10_VECTOR//ADC10中断服务__interruptvoidadc_isr(void){ad_value=ADC10MEM;//将AD采样值存入ad_valueADC10CTL0|=ADC10SC;data=ad_value*(2500/1023);Display_LCD_Byte(1,4,lcd_data[data/1000]);Display_LCD_Byte(1,5,lcd_data[data%1000/100]);Display_LCD_Byte(1,6,lcd_data[data%100/10]);Display_LCD_Byte(1,7,lcd_data[data%10]);}