1智能仪器设计报告姓名:学号:班级:时间:南京理工大学紫金学院电光系2目录摘要1系统总设计方案1.1设计原理………………………………………………………………错误!未定义书签。1.2系统流程………………………………………………………………21.3模块原理………………………………………………………………错误!未定义书签。1.4元器件的选择……………………………………………………………错误!未定义书签。2理论分析2.1电路的仿真和分析………………………………………………………43硬件模块3.1OP07放大模块……………………………………………………………53.2COMPIM串口电路模块……………………………………………………63.3LED显示…………………………………………………………………73.4A/D采集电路模块………………………………………………………73.5STC89C58RD+控制模块……………………………………………………84软件模块4.1主函数流程图……………………………………………………………94.2功能函数流程图……………………………………………………………104.3显示函数流程图……………………………………………………………114.4虚拟仪器设计………………………………………………………………125系统测试与分析5.1仿真测试……………………………………………………………………135.2测试中遇到的问题及解决方法……………………………………………19参考文献203摘要随着电子学的发展,程控电子测量备受广大电子工程师的重视,测量精度和功能的要求也越来越高。本次课程设计是电压表硬件由单片机系统、ADC0809芯片、OP07芯片、74HC4052芯片构成。代码由C语言编程编写,上位机界面Labview构成。本设计阐述了基于单片机和Labview的智能数字电压表。电压表设计要求分成三档0~100mV;100mV~1V;1~5V,为了实现电压的自动换挡,提高测量精度,利用程控增益放大器改变放大器的放大倍数,将各档内的输入电压依次放大50倍,5倍,1倍,程控放大器的输出端经ADC0809进行A/D转换,转换结果传输给STC89C51(实际硬件电路采用STC89C58RD+),STC89C51根据结果将信息反馈给多路选择器从而改变放大器放大倍数的,并利用串行通信发送给上位机,在Labview上实现测量数据的显示。关键词数字电压表单片机程控放大电路Labview11系统方案在电量的测量中,电压、电流和频率是最基本的三个被测量,其中电压量的测量最为经常。而且随着电子技术的发展,更是经常需要测量高精度的电压,所以数字电压表就成为一种必不可少的测量仪器。1.1设计原理采用STC89C51(实际为STC89C58RD+)单片机作为系统的控制单元,通过A/D转换将被测值转换为数字量送入单片机中再由单片机来送显。采用ADC0809转换芯片,其中A/D转换器用于实现模拟量数字量的转换,单电源供电。它是具有8路模拟量输入(实际只选一路),8位数字量输出功能的A/D转换器,转换时间大约为100us,模拟输入电压范围为0V~5V。开始输入电压A/D转换放大50倍,完成一次A/D转换是否为满量程?YN放大50倍,完成一次A/D转换是否为满量程?Y放大一倍,完成一次A/D转换A/D采样串口发送数据显示结束YN21.2系统流程该设计主要由滑动变阻器采集信号,送入信号放大模块,实现自动切换变档功能,变档功能由单片机控制多路选择开关CD4052实现不同的测量档位;模拟信号送入A/D转换得到的数字信号经单片机进行判断处理后,再由单片机控制共阴数码管显示电压值,并通过串口上传至abview显示。主要由信号采集模块、信号放大模块、多路模拟开关、A/D转换模块、单片机控制模块、智能仪器显示模块、数码管显示模块组成。输入电压程控放大器A/D转换单片机PC机1.3模块基本原理(1)信号采集模块(产生输入信号):设计中主要采用分压电路实现,由两个电阻组成,一个为标称电阻,一个为滑动变阻器,滑动变阻器接在电路以产生不同电压。(2)信号放大模块:信号放大部分主要由集成运放OP07组成,构成电路的三种测量倍率,分别为:1倍、5倍、50倍,配合多路模拟开关实现不同倍率的输出。(3)多路模拟开关:通过单片机控制多路开关CD4052的地址位,顺序循环选择不同阻值的反馈电阻来确定电路模块的放大倍率,输出给A/D模块进行转换。(4)A/D转换模块:接收信号模块产生的模拟信号由单片机控制进行适当延时,保证输出数据显示不会产生跳动,得到的数字信号送单片机处理。(5)单片机模块:此模块为系统的控制中心,通过循环选择多路模拟开关输出不同倍率的模拟信号,通过控制A/D转换得到不同倍率的数字信号,进行逻辑判断,若得到的数据超过A/D的最大输出量程0XFF,则认为此组数据无效,继续进行下一倍率转换,直到数据在A/D测量量程内,则认为此组数据为实际测量所需值。(6)Labview显示模块:待单片机得到实际所需的测量值,通过串口发送到虚拟仪器,上位机界面由Labview软件设计,所得数据经过Labview编程处理,在界面上得到对应的电压值。3(7)数码管显示模块:待单片机得到实际所需的测量值,通过数据口将数据经过处理,发送给数码管,从而使数码管显示电压值。1.4元器件的选择(1)集成运放在集成运放中选用OP07具有输入偏置电流低(OP07A为±2nA)和开环增益高(对于OP07A为300V/mV)的特点,这种低失调、高开环增益的特性使得OP07特别适用于高增益的测量设备和放大传感器的微弱信号等方面。(2)多路模拟开关在多路模拟开关中选用OP07是因为CD4052是一个双4选一的多路模拟选择开关,有A、B两个二进制控制输入端和INH输入,具有低导通阻抗和很低的截止漏电流。符合本次设计需求。所以选择该芯片。(3)A/D转换ADC0809芯片为A/D转换芯片,在本次设计中选择此芯片是因为AD0809转换速率高单(通道转换时间仅为116us)、电路简单,易于控制;并且还带有三态输出锁存器,转换结束时,可由MCU打开三态门,读出8位的转换结果,输出数据稳定。所以设计中选择了该芯片。(4)STC89C58RD+此次设计中的核心芯片选择了51单片机系列中的STC89C58RD+,STC89C58RD+与传统51单片机相比具有超低功耗,正常工作模式下典型功耗为4~7mA,空闲模式下功耗小于2mA。并且该芯片还具有超强抗干扰能力,每个I/O口都对VCC和GND进行了保护措施。因此输入电压范围宽,不怕电源抖动。STC89C58RD+相比于传统的AT89C51存储容量更大,不需另加外扩存储器,且下载方便,用官方软件STC-ISP即可烧录程序,所以此次设计选择STC89C58RD+为核心芯片。2.1电路的仿真与分析该仿真图由在Proteus背景下完成的,由信号采集模块、信号放大模块、多路模拟开关、A/D转换模块、单片机控制模块、上位机显示模块、数码管显示模块等共同构成。智能电压表仿真如图2.1.1所示,实际电路图如图2.1.2所示。4图2.1.1程控电压表仿真图2.1.2实际电路图53硬件设计3.1OP07放大电路模块程控放大器实现多个放大倍数,确保输出电压在0~5V之间,能有效输入到ADC0809。其中R1=5KΩ,R2=5KΩ,R4=20KΩ,R5=250Ω,根据多路选择器的A,B端的输入,RF选择0Ω、R4、R5之中的一个,为放大器的反馈电阻,从而起到改变放大器放大倍数的作用。放大倍数AB图示50003.1.15103.1.21013.1.36图3.1.1放大50倍电路图3.1.2放大5倍电路7图3.1.3放大1倍电路83.2COMPIM串口电路模块该电路的功能是把单片机处理后的数据,经过该电路送至虚拟仪器(Labview)上显示,使用的电平转换芯片为Max232。串口电路如图3.2.1图3.2.1串口电路3.3LED显示电路模块该电路是由单片机处理过的数据,进而控制共阴数码管显示电压值,显示的电压值跟电路中所要测的电压值相同,数据口A-G接单片机P1.0-P1.7端口。电路如图3.3.1所示。图3.3.1数码管显示电路93.4A/D采集电路模块A/D采集电路中包括启动、等待、采集数据。ADC0809系列内部含有三—八译码电路,以控制分别选通八个模拟输入通道,首先确定ADDA、ADDB、ADDC值,选通IN0-IN7中的一路(IN0),在clock信号下降该地址锁存在AD0809内部的地址锁存器中,经译码后选通指定的模拟通道。然后在START引脚上输出一个脉冲以启动A/D转换。EOC端上电平在A/D转换期间为低,转换后变成高电平,可作为查询中断信号使用。A/D采集电路如图3.4.1所示。图3.4.1A/D采集电路103.5STC89C58RD+控制模块此模块为系统的控制中心,通过循环选择多路模拟开关输出不同倍率的模拟信号,通过控制A/D转换得到不同倍率的数字信号,进行逻辑判断,若得到的数据超过A/D的最大输出量程,则认为此组数据无效,继续进行下一倍率转换,直到数据在A/D测量量程内,则认为此组数据为实际测量所需值。单片机控制模块如图3.5.1所示。图3.5.1单片机控制模块114软件设计4.1主函数流程图功能函数实现的功能为:先用放大50倍方式获取电压值,判断是否满量程,如果没有满量程,则经串口发送数据到虚拟仪器,电压值显示在labview上。如果满量程,到下一次条件判断电压值是否大于0.1V-1V,若满足,则经5倍方式串口发送数据到虚拟仪器,电压值显示在labview上。如果不满足条件,则经1倍方式串口发送数据到上位机,电压值显示在屏幕上。主函数流程图如图4.1.1所示。主函数代码:voidmain(){uchari;vart_uint();while(1){tx_voltage();for(i=0;i50;i++){delay(500);c=result*100000;p=c/100000;q=c/10000%10;m=c/1000%10;n=c/100%10;x=c/10%10;y=c%10;xianshi(p,q,m,n,x,y);}}}124.2A/D转换函数流程图功能函数实现的功能为:判断放大倍数是否满足条件,不满足条件,转到判断是否满足其他放大倍数。判断好倍数,开始AD转换,判断是否AD转换结束,若满足AD转换结束,计算出电压值。A/D转换函数流程图如图4.2.1所示功能函数代码:voidtx_voltage(){floatadc_data;CD4052_A=0;CD4052_B=0;delay(200);adc_data=read_adc0808();if(adc_data0XFF){result=result/50;vart_tx(adc_data,50);}else{CD4052_A=1;CD4052_B=0;delay(200);adc_data=read_adc0808();if(adc_data0XFF){result=result/5.0;vart_tx(adc_data,5);}else{CD4052_A=0;CD4052_B=1;delay(200);adc_data=read_adc0808();if(adc_data0XFF){result=esult/1.07;vart_tx(adc_data,1);}}}}134.3显示函数显示模块进行位选,段选通过单片机P2口显示voidxianshi(uintp,q,m,n,x,y){P20=1;P21=0;P22=0;P23=0;P24=0;P25=0;P1=LED[p];delay(25);P20=0;P21=1;P22=0;P23=0;P24=0;P25=0;P1=LED[q];delay(25);P20=0;P21=0;P22=1;P23=0;P24=0;P25=0;P1=LED[m];delay(25);P20