《基于单片机和CPLD的数字万用表(程控万用表)设计说明.doc》由会员分享,可在线阅读,更多相关《基于单片机和CPLD的数字万用表(程控万用表)设计说明.doc(67页珍藏版)》请在taowenge.com淘文阁网|工程机械CAD图纸|机械工程制图|CAD装配图下载|SolidWorks_CaTia_CAD_UG_PROE_设计图分享下载上搜索。
1、 可程控万用表摘 要:本文介绍了一种基于51单片机和CPLD的数字万用表设计。系统由直流电压变换模块,测频模块,电容测量模块,电阻测量模块,LCD显示模块,精密整流模块,AD转换模块,电源模块,用CPLD和51的方式实现对各个模块的功能控制和量程切换。经过实物验证,本设计很好地实现了对交直流电压电流,频率,电容,电阻测量。关键词:单片机、复杂可编程逻辑器件、万用表Abstract:This design describes a microcontroller and CPLD based on 51 digital multimeter. The System consists of DC v
2、oltage transformation module, frequency measurement module, the capacitance measurement module, the resistance measurement modules, LCD display module, precision rectifier, AD converter module, power module, with the CPLD and 51 means to achieve the functions of each module to control and range swit
3、ching . After physical verification, the design is very well on the AC and DC voltage and current, frequency, capacitance, resistance measurement.Keywords:MCU、CPLD、Multimeter目 录1 前言12 总体方案设计22.1方案比较:22.2 方案论证与选择33单元模块设计53.1各单元模块功能介绍与电路设计53.1.1 单片机系统模块设计53.1.2 ICL7135 A/D转换电路模块设计63.1.3 电源模块设计73.1.4 串
4、口通讯接口设计83.1.5 仪用放大83.1.6 LCD显示设计103.1.7 电压采集模块113.1.8 测电容模块123.1.9 测电阻模块133.1.10频率测量模块143.1.11精密整流模块143.1.12 CPLD模块153.2 特殊器件介绍163.2.1 AT89C52单片机163.2.2 ICL7135双积分型A/D转换器183.2.3 TL084放大器193.2.4 MAX232203.2.5 异步计数器(74ls90)214软件设计234.1 Labview上位机234.2软件设计环境244.3 单片机程序流程图254.4 子程序设计274.4.1 ICL7135A/D转换
5、子程序设计274.4.2 电阻测量模块程序流程图284.4.3电压、电流测量模块程序流程图294.4.4频率测量模块程序流程图304.4.5 LCD1602液晶显示子程序设计314.4.6 上位机串口程序流程图325系统调试335.1调试过程335.1.1电源调试335.1.2 数字电路调试335.1.3 ICL7135转换电路调试345.1.4 TL084放大电路调试345.1.5 测电阻模块调试345.1.6 测频模块调试345.1.7 精密整流模块调试345.1.8 软件测试结果355.2测试数据365.2.1电源测试375.2.2 电参数测试数据376结论397总结与体会408辞419
6、 参考文献42附录1:原理总图43附录2:CPLD顶层结构设计44附录3:软件设计45附录4:翻译资料6365 / 671 前 言数字万用表是一种将所测的模拟量转换为数字量显示的测量仪器,其由液晶显示板或LED数码管显示所测量物理量大小的数字化仪表。万用表作为一种基本的测量仪表,可用来测量直流电压和交流电压、直流电流、电阻、二极管、通断测试等参数。在日常电测试中应用广泛,特别是数字万用表在实验室与维修中发挥着重要的作用。特别是便携式数字万用表,由于其使用方便,携带读数方便,在工业自动化现场故障排除,电器维修,设备检修中发挥着重要作用。又由于其价格低廉,是实验室、工厂、无线电爱好者与家庭的理想工
7、具。随着电子技术尤其是检测和计算机控制技术的飞跃发展,为提高数字化万用表的自动化水平提供了可能,用测量功能自动识别的数字万用表代替手动操作的万用表成为必然的趋势。将测控技术的发展成果应用到万用表的设计过程中,对传统的数字万用表的结构进行改造,将先进的计算机技术以与功能强大的MCU运用到万用表的机械功能/量程的选择上,研制出在国际上具有先进水平的新一代高智能化的数字化万用表具有里程碑的意义,它将很大程度的提高我国在仪表制造业方面的国际影响力和数字化万用表在国际市场的竞争力具有重大的意义。2 总体方案设计在本设计中,要实现电阻,电容,电压,电流频率的测量,我们采用模块化测量设计。通过I/V变换将电
8、流转换为电压,如果电压为交流,我们需要对之进行精密整流,使之变为可测的直流电压,直流电压进入ICL7135即可实现A/D转换,这样实现了对交直流电压电流的测量;通过555多谐振荡器产生于C对应的频率,进入单片机测频,即可实现对频率与电容的测量。利用精密运放对标准电压放大,被测电阻为反馈电阻,通过测量输出电压即可实现对电阻的测量;在本设计中,我们需要电压测量模块,电流测量模块,频率测量模块,电容测量模块等多个功能模块进行选择,同时根据需要切换量程。需要控制的开关量很多,如果采用单一的单片机IO进行操作,存在IO口不够和控制复杂等问题,我们采用总线控制方法,在CPLD总构建总线控制器,所有模块在C
9、PLD的控制下协调工作,能够有序得实现对七个电参量的准确测量。在部分调试完成后,对程序进行很小改动就可以实现整机功能,实现方案的快速设计。电容模块分频/V变换仪用放大精密整流ICL7135电压衰减CPLD51单片机电源电压电阻电容测频信号IV变换电流图2.1数字万用表系统框图2.1方案比较:方案一:采用数字万用表集成芯片ICL7135,对输入模拟量进行AD转换后,直接输出BCD码在LED上显示,接口简单。整个电路手动切换量程,被测量。图2.2 方案一框图方案二:采用单片机控制,自动切换量程,LCD显示。由于系统是在单片机的控制下工作,可以很容易实现仪表的自校准。测量精度在于各个测量模块方案优劣
10、。同时高精度元件也可以很好地提高测量精度。被测物理量通道和功能选择CPLD放大器A/D转换MCURS232串口通信上位机LCD图2.3方案二框图2.2 方案论证与选择方案一成本很低,是目前市场上一种成熟的3位半数字万用表方案。利用一块集成芯片即可实现电压电流以与电阻的测量,如果还要加其他功能,需要添加其他的数字芯片。方案二采用51单片实现,控制灵活,可以很便捷地实现七个电参数的测量,且量程的切换不用手动就可以进行,真正实现自动化测量。同时,单片机还带有串口通信模块,可与上位机进行通信,将被测参数等返回到上位机机中,实现远程测量,变成一种可程控仪器。综上述,我们选用方案二来实现数字万用表设计。3
11、单元模块设计3.1各单元模块功能介绍与电路设计3.1.1 单片机系统模块设计在单片机系统电路中,包括复位电路,时钟电路,LCD1602显示电路,MAX232电平转换电路,ISP下载电路。时钟电路选择的晶振为12MHz。LCD1602可以显示16*2个字符,用于显示的处理后的电压、电流、电阻、电容、频率值等。由于单片机的电平逻辑是TTL/CMOS电平逻辑, MAX232是由仪器公司(TI)推出的一款兼容RS232标准的芯片。该器件包含2驱动器、2接收器和一个电压发生器电路提供TIA/EIA-232-F电平。选择MAX232芯片实现TTL电平与EIA电平的转换,通过RS232传输线可以与PC机实现
12、串行通讯。LCD1602是自带字符库的LCD液晶显示器,可以显示16*2个字符,此电路中由P0、P2口控制读写的数据,由CPLD构成的总线控制控制器控制LCD读写,其电路图如图3.1所示。图3.1单片机系统模块电路3.1.2 ICL7135 A/D转换电路模块设计本次设计要使用A/D转换器,将模拟信号转换为数字信号进行采样,A/D转换器是要将时间和幅值都连续的模拟量转换为时间、幅值都离散的数字量,一般要经过取样、保持和量化、编码几个过程。模拟电流信号经过仪用放大后,输出电压足够大,信号可以被ICL7135组成的A/D转换电路转换为数字信号,从而可以被MCU的后续电路处理。ICL7135是双积分
13、型的AD,因有积分器的存在,积分器的输出只对输入信号的平均值有所响应,所以,它突出优点是工作性能比较稳定且抗干扰能力强。双积分型A/D转换器的转换速度普遍不高(通常每秒转换几次到几百次),但是双积分A/D转换器具有转换精度高,廉价,抗干扰能力强等优点,在速度要求不高的实际工程中使用广泛。本次设计中,ICL7135的外围电路如图3.2所示,引脚CLOCK和BUSY分别接单片机的14脚(T0)和12脚(INT0),参考电压为5V稳压管分压所得。图3.2 ICL7135A/D转换器3.1.3 电源模块设计在电池电量测量系统中,TLC084为正负9V供电,单片机、DS18B20、液晶为5V供电,ICL
14、7135为-5V供电,所以在系统中需要四个电源,考虑到数字部分与模拟部分的干扰,我们需要设计两个电源,一个模拟对系统的模拟部分供电,一个数字电源负责为系统的数字部分提供电源。在PCB设计是要采用一点接地的方式,能有效消除电源的干扰。本模拟电源在变压器变压、电桥整流和电容滤波后由三端稳压器7809、7909将电源先转换为-9V和+9V的电源,然后再经过三端稳压器7805、7905转换为-5V和+5V,为系统模拟部分提供电源。图3.3模拟电源电路图数字电源是由经变压器变压和电桥整流电容滤波后再由三端稳压器7805转换为+5V的数字电源,为系统数字部分提供电源。图3.4数字电源电路图3.1.4 串口
15、通讯接口设计将PC程序通过串口下载到STC单片机上,需要将正负12V的电平转换到0到5V的TTL电平,这样单片机才能和PC进行正常通信。芯片第11(TIN1)、10(TIN2)脚分别和单片机的11(TXD)脚、10(RXD)脚相连其应用电路如图3.5所示:图3.5 MAX232接口电路3.1.5 仪用放大仪用放大器是一种高性能的放大器。其对称性结构可同时满足对放大器的抗共模干扰能、输入阻抗、闭环增益的时间和温度稳定性等不同的性能要求。该电路前级采用同相放大器,可获得很高的输入阻抗,后级采用差动放大器可获得较高的共模抑制比,增强电路的抗干扰能力。在本电路中,有三个增益通道,根据对输入信号的处理要
16、求,我们可以通过模拟开关CD4066选择不同的增益。该电路三个放大倍数可选择10倍,100倍,1000倍。放大倍数计算公式为:K=(1+(R9+R10)/R)*R13/R11 式3-1式中,R分别为R6、R7、R8,当选择不同的放大倍数时,R所对应的值不同。R=R6时,放大倍数为10倍,R=R7时,放大倍数为100倍,R=R8时,放大倍数为1000倍。在本次设计中,选用Tl084芯片作为仪用放大器。图3.6仪用放大电路图3.7 增益通道选择电路图3.8 电流测量模块3.1.6 LCD显示设计本设计我们采用LCD1602显示电压值。LCD1302可以显示16*2个字符,芯片工作电压为4.5V到5
17、.5V,第三脚V0为液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比度最高,对比度过高时会产生“鬼影”。1602液晶模块部的字符发生存储器(CGROM)已经存储了160个不同的点阵字符图形,这些字符有:阿拉伯数字、英文字母的大小写、常用的符号、和日文假名等,每一个字符都有一个固定的代码,比如大写的英文字母“A”的代码是01000001B(41H),显示时模块把地址41H中的点阵字符图形显示出来,我们就能看到字母“A”。1602液晶模块部的控制器共有11条控制指令。D0到D7为双向数据口,RS为寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄存器。RW为读写信号线,高电平时进行
18、读操作,低电平时进行写操作。当RS和RW共同为低电平时可以写入指令或者显示地址,当RS为低电平RW为高电平时可以读忙信号,当RS为高电平RW为低电平时可以写入数据。第6脚:E端为使能端,当E端由高电平跳变成低电平时,液晶模块执行命令。图3.9 LCD1602接口3.1.7 电压采集模块在此电路中,为实现不同档位电压测量,我们采用电阻分压网络对输入电压进行分压,将电压衰减至原电压的1倍,10倍,100倍,1000倍,通过继电器选择分压网络的不同节点,实现对2V,20V,200V,1000V电压的测量。继电器用三极管9014驱动,由于单片机上电复位一脚输出高电平,为防止继电器在高电平下误动作,我们
19、在所有的控制端均加上74HC04反相器,单片机输出控制端低电平有效。同时,为防止输入AD电压过大,我们在电压模块输出即AD输入端加上两个反向串联的稳压二极管限压。图3.10 电压测量模块3.1.8 测电容模块在由555组成的多谐振荡器中,输出频率f1.43/((Rtc1+R)*C)。此电路中Rtc1为1k,f即Cin可以通过单片机测出,R为可控已知参数,这样就能测量出C的的大小。通过控制接入R+与R-端的电阻大小,我们可以实现对C测量的量程切换。当R值比较小时,可以测量较大的电容,当R值比较大时,可以测量比较小的电容。输出的频率过大的话,先输入测频模块,进行分频后在测量其频率,测量效果更准确。
20、图3.11 电容测量模块3.1.9 测电阻模块在电阻测量中,将被测电阻作为反馈电阻接入到运放TL084中,输入电压为稳压管LM336经分压得到的精准电压1V,输出OM=Rx/R,OM可以通过ICL7135测出,R为可控已知参数,同样也能算出Rx的大小。当被测电阻阻值较小时,可以控制电子开关接入较小的电阻,当被测阻值大时,可以接入较大的电阻。图3.12 电阻测量模块3.1.10频率测量模块在此电路中,被测信号经过两级由74LS90组成的10进制计数器,得到10分频和100分频的两路信号,选择合适的频率进行输入到单片机中,在单片机部采用等精度测频原理对输入信号进行准确测频。同样,被测频率的量程选择
21、由电子开关CD4066完成。图3.13 测频模块3.1.11精密整流模块在交流信号测量中,需要对交流信号进行整流,将交流信号变为直流,得出其有效值,再放到电压测量模块中进行测量。所以,在对交流信号进行整流时,要考虑到整流不能有太大的压降,普通的桥式全波整流不能满足测量要求。在此,我们选择精密整流电路对输入交流信号进行整流。通过单片机对所得数据进行处理,得出交流信号的有效值。图3.14 精密整流模块3.1.12 CPLD模块在本设计中,采用总线控制方法,所有的测量和显示模块都在CPLD的控制下分时工作。我们运用Quartus9.0对CPLD进行设计,在CPLD中实现数字锁存,档位选择,测量参数选
22、择。CPLD芯片选用Atera公司的EPM32526ATC1447-7。为满足单片处理大量数据的需要,在CPLD外挂IS62C256芯片,可以存储4KB的数据。在程序设计时,作为液晶显示的缓存使用。在进行CPLD设计时,我们采用自顶向下的设计方法,通过调用开发坏境中的宏模块,能够大大减轻设计的工作量。顶层设计效果见附录二。图3.15 CPLD管脚分配原理图3.2 特殊器件介绍3.2.1 AT89C52单片机AT89C52是51系列单片机的一个型号,它是ATMEL公司生产的。AT89C52是一个低电压,高性能CMOS 8位单片机,片含8k bytes的可反复擦写的Flash只读程序存储器和256
23、 bytes的随机存取数据存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片置通用8位中央处理器和Flash存储单元,功能强大的AT89C52单片机可为您提供许多较复杂系统控制应用场合。 AT89C52有40个引脚,32个外部双向输入/输出(I/O)端口,同时含2个外中断口,3个16位可编程定时计数器,2个全双工串行通信口,2个读写口线,AT89C52可以按照常规方法进行编程,但不可以在线编程(S系列的才支持在线编程)。其将通用的微处理器和Flash存储器结合在一起,特别是可反复擦写的Flash存储器可有效地降低开发成本。AT89C52是使
24、用Atmel 公司高密度非易失性存储器技术制造,与工业80S51 产品指令和引脚完全兼容,是一种低功耗、高性能CMOS8位微控制器,具有8K 在系统可编程Flash 存储器。片上Flash允许程序存储器在系统可编程,亦适于常规编程器。在单芯片上,拥有灵巧的8 位CPU 和在系统可编程Flash,使得80C52为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。80S52具有以下标准功能:8位中央处理单元、8k字节Flash,256字节RAM,32 位I/O 口线,看门狗定时器,2 个数据指针,三个16 位定时器/计数器,一个6向量2级中断结构,全双工串行口,片晶振与时钟电路。另外,80C52
25、可降至0Hz 静态逻辑操作,支持2种软件可选择节电模式。空闲模式下,CPU停止工作,允许RAM、定时器/计数器、串口、中断继续工作。掉电保护方式下,RAM容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。89C52共40引脚: 18脚: 通用I/O接口p1.0p1.7;9脚: rst复位键; 10 .11脚: RXD串口输入 TXD串口输出; 1219:I/O p3接口;12,13脚:INT0中断0 INT1中断1; 14,15 : 计数脉冲T0 T1; 16,17: WR写控制 RD读控制输出端; 18,19: 晶振谐振器; 20: 地线;2128 p2 接口 高8位
26、地址总线;29: psen 片外rom选通端,单片机对片外rom操作时 29脚(psen)输出低电平; 30:ALE/PROG 地址锁存器;31:EA rom取指令控制器 高电平片取 低电平片外取; 3239:p0.7p0.0(注意此接口的顺序与其他I/O接口不同 与引脚号的排列顺序相反);40:电源+5V。图 3.16单片机芯片图3.2.2ICL7135双积分型A/D转换器ICL7135是4位半双积分A/D转换芯片,可以转换输出20000个数字量,有STB选通控制的BCD码输出,与微机接口十分方便。ICL7135具有精度高(相当于14位A/D转换),价格低的优点。其转换速度与时钟频率相关,每
27、个转换周期均有:自校准(调零)、正向积分(被测模拟电压积分)、反向积分(基准电压积分)和过零检测四个阶段组成,其中自校准时间为10001个脉冲,正向积分时间为10000个脉冲,反向积分直至电压到零为止(最大不超过20001个脉冲)。故设计者可以采用从正向积分开始计数脉冲个数,到反向积分为零时停止计数。将计数的脉冲个数减10000,即得到对应的模拟量。图3.8给出了ICL7135时序,由图可见,当BUSY变高时开始正向积分,反向积分到零时BUSY变低,所以BUSY可以用于控制计数器的启动停止。ICL7135芯片重要引脚的介绍:图3.17 ICL7135芯片引脚ICL7135主要引脚功能与含义如下
28、:-V:ICL7135负电源引入端,典型值-5V,极限值-9V;+V:ICL7135正电源引入端,典型值+5V,极限值+6V;CLOCK:时钟信号输入。当T=80ms时,fcp=125kHz,对50Hz工频干扰有较大抑制能力,此时转换速度为3次/s。极限值fcp=1MHz时,转换速度为25次/s。BUSY:忙信号输出,高电平有效.正向积分开始时自动变高,反向积分结束时自动变低。ICL7135主要参数如表4.1所示:表3.1 ICL7135主要参数电源电压V+6V温度围0至70V-9V热电阻PDI封装qJA()55模拟输入电压V+ to V-最大结温150参考输入电压V+ to V-最高储存温度
29、围-65to 150时钟输入电压GND to V+TLC7135的主要性能特点为:1、输入阻抗达109欧以上,对被测电路几乎没有影响;2、自动校零;3、有精确的差分输入电路;4、自动判别信号极性;5、有超、欠压输出信号;图3.18 ICL7135时序3.2.3 TL084放大器概述:TL084,TL084A与TL084B高速J-FET输入四通道运算放大器,在一个单片集成电路里包含了良好匹配的高压J-FET与双极性三极管。它具有宽共模(磕打Vcc+)与差模电压围、低输入偏置与偏移电流、输出短路保护、高输入阻抗J-FET输入级、部频率补偿、锁定自由操作、高循环率等特性。表3.2 TL084引脚功能
30、序号符号功能直流电压(V)序号符号功能直流电压(V)1输出16.558输出36.52反向输入16.559反向输入36.53非反向输入16.510非反向输入36.54VCC+1211VCC-05非反向输入26.512非反向输入46.56反向输入26.513反向输入46.57输出26.514输出46.53.2.4 MAX232MAX232芯片是美信公司专门为电脑的RS-232标准串口设计的单电源电平转换芯片,使用+5v单电源供电。芯片如图3.19所示:图3.19 MAX232引脚介绍:第一部分是电荷泵电路。由1、2、3、4、5、6脚和4只电容构成。功能是产生+12v和-12v两个电源,提供给RS-
31、232串口电平的需要。 第二部分是数据转换通道。由7、8、9、10、11、12、13、14脚构成两个数据通道。 其中13脚(R1IN)、12脚(R1OUT)、11脚(T1IN)、14脚(T1OUT)为第一数据通道。 8脚(R2IN)、9脚(R2OUT)、10脚(T2IN)、7脚(T2OUT)为第二数据通道。 TTL/CMOS数据从T1IN、T2IN输入转换成RS-232数据从T1OUT、T2OUT送到电脑DB9插头;DB9插头的RS-232数据从R1IN、R2IN输入转换成TTL/CMOS数据后从R1OUT、R2OUT输出。 第三部分是供电。15脚GND、16脚VCC(+5v)。 主要特点:1
32、、符合所有的RS-232C技术标准 2、只需要单一 +5V电源供电 3、片载电荷泵具有升压、电压极性反转能力,能够产生+10V和-10V电压V+、V- 4、功耗低,典型供电电流5mA 5、部集成2个RS-232C驱动器 6、部集成两个RS-232C接收器该器件包含2驱动器、2接收器和一个电压发生器电路提供TIA/EIA-232-F电平。选择MAX232芯片实现TTL电平与EIA电平的转换,通过RS232传输线可以与PC机实现串行通讯。单片机系统中采用的最简单的上电自动复位电路,上电自动复位是通过外部复位电路的电容充电来实现的。当电源接通时只要Vcc的上升时间不超过1ms,就可以实现上电复位。3
33、.2.5 异步计数器(74ls90)所谓异步计数器是指计数器各触发器的时钟信号不是来自同一外接输入的时钟信号,因而各触发器不是同时翻转的计数器。这种计数器的技术速度比较慢。74ls90是二-五-十进制计数器,其部结构图如图3.20所示。图3.20 74ls90部逻辑电路该电路由4级触发器与几个门电路所组成,有两个时钟输入端CKA和CKB。其中CKA和QA组成一位二进制计数器,CKB和QB、QC、QD组成五进制计数器;若将QA与CKB相连接,时钟脉冲从CPA相连,计数脉冲从CKB输入,则QAQDQCQB的输出构成二-五混合十进制计数器。74ls90有两个清零端Ro(1)、Ro(2)和两个置9端R
34、9(1)、R9(2),其功能如表3.3所示。表3.3 Ro(1)、Ro(2)、 R9(1)、R9(2)功能表4软件设计4.1 Labview上位机虚拟仪器技术就是利用高性能的模块化硬件,结合高效灵活的软件来完成各种测试、测量和自动化的应用。自1986年问世以来,世界各国的工程师和科学家们都已将NI LabVIEW图形化开发工具用于产品设计周期的各个环节,从而改善了产品质量、缩短了产品投放市场的时间,并提高了产品开发和生产效率。使用集成化的虚拟仪器环境与现实世界的信号相连,分析数据以获取实用信息,共享信息成果,有助于在较大围提高生产效率。虚拟仪器提供的各种工具能满足我们任何项目需要。20年来,无
35、论是初学乍用的新手还是经验丰富的程序开发人员,虚拟仪器在各种不同的工程应用和行业的测量与控制的用户中广受欢迎,这都归功于其直观化的图形编程语言。虚拟仪 器的图形化数据流语言和程序框图能自然地显示您的数据流,同时地图化的用户界面直观地显示数据,使我们能够轻松地查看、修改数据或控制输入。 图4.1 上位机界面在程序面板中,先调用VISA串口配置VI。在启动串口的端口给一个真值,让串口工作。超时端口为10ms。波特率设为9600Hz。无奇偶校验位。数据比特位8位数据。进行串口写入操作时用平铺式结构,并在后面添加4个分支。分别对应电流、电压、电阻、电容、频率值的写入。然后用500ms时间延迟。在进行串
36、口数据的读出操作并显示。同样这里也是用平铺式结构,在后面添加4个分支并要求与前面的写入数据相对应。使用连接字符串将分别对应显示所测得电流、电压、电阻、电容、频率。程序如图所示。图4.2上位机程序4.2软件设计环境Keil uVision是美国Keil Software公司出品的51系列兼容单片机C语言软件开发系统,使用接近于传统C语言的语法来开发,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用,而且大大的提高了工作效率和项目开发周期,他还能嵌入汇编,您可以在关键的位置嵌入,使程序达到接近于汇编的工作效率。Keil C51软件提供丰富的库函数和功能强大的集成开发
37、调试工具,全Windows界面,使您能在很短的时间就能学会使用keil C51来开发您的单片机应用程序 。 另外重要的一点,只要看一下编译后生成的汇编代码,就能体会到Keil C51生成的目标代码效率非常之高,多数语句生成的汇编代码很紧凑,容易理解。在开发大型软件时更能体现高级语言的优势。本设计使用的开发软件为Keil编程环境软件。Keil软件是目前最流行开发MCS-51系列单片机的软件。Keil提供了包括C编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在的完整开发方案,通过一个集成开发环境(uVision)将这些部份组合在一起。设计采用的是使用最广泛的C51语言进行程序设计。C5
38、1语言是一种结构化语言。它层次清晰,便于按模块化方式组织程序,易于调试、维护和移植。C51语言的表现能力和处理能力极强,能完成较大或较复杂工程的编写。4.3单片机程序流程图单片机开机后,必须接收到上位机传来的命令之后,再调用相应的程序模块,以实现测量对象的转化,当单片机将所测量对象的值进行处理之后,在通过串口将所得数据传回给上位机,供上位机显示测量值。单片机的测量流程图如图4.3所示。初始化上位机是否发送命令测电流测电压测电阻测频率测电容进入电流测量程序入口进入电压测量程序入口测量程序入口进入电阻测量程序入口进入频率测量程序入口进入电容测量程序入口YNYYYYYNNN上电显示向上位机发送数据N
39、N11图4.3 系统流程图4.4子程序设计在测量五个测量模块中,我们采用子程序设计方法,一个测量模块完成一个测量功能,测量模块中包含初始化程序,显示程序,量程切换判断等功能。4.4.1ICL7135A/D转换子程序设计ICL7135对放大后的电压信号进行A/D转换,采用单片机的ALE引脚作为时钟,晶振采用12MHZ,ALE的时钟频率为2MHZ,经过四分频后,得到500KHZ的时钟,该时钟能有效消除工频干扰。该时钟同时接ICL7135的CLK引脚和单片机的T0计数器引脚,将BUSY 与INT0相连,设置T0高电平开始计数,停止的触发方式为下降沿触发。在A/D转换期间,BUSY引脚一直是输出高电平
40、,在高电平期间用T0对时钟信号进行计数,BUSY信号的下降沿到来时,计数停止。计数个数减去10001,则是电压的数字量。中断后,关掉计数器T0控制位TR0,读取TH0和TL0的值到变量COUNT后,对TH0和TL0进行再次赋初值,打开计数控制位TR0。进入中断关计数读出计数个数TH0,TL0赋初值开计数中断返回图4.4 ICL7135 A/D转换流程图4.4.2电阻测量模块程序流程图在电阻测量程序中,我们将被测电阻放在放大器的反馈通路上,将流过的电压值输入到ICL7135中,转化为对应的数字量,利用单片机的计数器0中断来得到对应的模拟量的值,当所测的模拟量小于设定的阀值时,我们减小档位,当测得
41、的模拟量的值大于阀值时,我们增大档位,选择好对合适的档位之后,我们将测得数值进行码制转换之后,送给LCD1602显示。YNYN电阻测量子程序入口初始化计数器开启A/D是否切换档位档位正确?数据处理出口图4.5电阻测量子程序框图4.4.3电压、电流测量模块程序流程图在电压测量程序设计过程中我们通过所得的模拟量的值和档位共同来选择适当的测量档位,尽量保证测量值能在满偏刻度值的2/3处。子程序入口初始化计数器开启A/D读计数器的值是否切换档位档位正确?数据处理出口NYYN4.6电压测量子程序框图4.4.4频率测量模块程序流程图在频率测量模块程序设计中,我们不需要将其进行A/D转化,而是要通过由两个7
42、4ls90级联组成的分频器,以便我们通过定时器计数来得到对应的频率大小,分频器来提供我们选择的频率倍数,为了是万用表能显示合适的大小,我们选择量程阀值为1000和19999,同时和当前量程标志共同来选择合适的量程,以保证万用表能得到比较可靠的测量结果。入口设置定时器0,计数器1读计数器1的值是否切换档位?档位正确?数据处理出口NYYN图4.7 测量频率模块子程序流程图4.4.5LCD1602液晶显示子程序设计在主程序中调用LCD显示子程序。LCD显示程序分两个步骤:一是写命令,二是写显示数据。写命令和写数据时序不同,写命令时:先将命令字送地址0x800f,地址锁存后,然后设置时序RS=0,R/
43、W=0,读取忙标志位BF,经过延时后,接着发下一条命令。写数据时:先将欲显示的数据送到地址0x840f,然后设置时序RS=1,R/W=0,E下降沿,读取忙标志位BF,延时后进行下一个数据的发送。在显示的子程序中,先要将整形或者浮点型数据转换为可显示字符,其程序流程如图4.8所示:子程序入口写命令写数据忙?显示完?返回主程序延时NNYY图4.8 LCD1602显示程序设计流程图4.4.6 上位机串口程序流程图在串口程序的设计中,我们要求当上位机发送测电流命令时,发送字符串0;选择测电压时,发送字符串1;选择测电阻时,发送字符串2;选择测电容时,发送字符串3;选择测频率时,发送字符串4;单片机接收
44、命令后,判断到底是调用哪个模块程序,待单片机运行完后,又要将得到的测量值通过串口发送给上位机,使得上位机和LCD同时显示测量值。串口程序设计框图如图4.9所示。初始化定时器1设置波特率上位机显示测量值YN向单片机发送命令串口数据是否发送完读取数据图4.9 串口程序设计框图5系统调试调试分为硬件调试,软件调试。调试因该先硬后软,在硬件平台实现的基础上进行软件调试。在进行系统调试之前,先要进行模块调试。模块调试时,采取焊接一块,调试一块。首先焊接电源,其次是各个功能模块。模块调试完成后,再进行系统进行调试。5.1调试过程在调试过程中,需要用到的仪器有数字示波器YB4324,六位半高精度数字万用表M
45、S8050,函数信号发生器。5.1.1电源调试电源分模拟电源和数字电源两部分。分别为系统模拟部分和数字部分提供电压。模拟电源部分将交流市电变压、稳压后分别产生+9V,-9V,+5V,-5V电压。其中+9V,-9V是为放大器TL084提供电压的。+5V,-5V为ICL7135芯片供电。接通模拟电源,在不连接集成芯片条件下,测各器件电源管脚处的电压。数字电路电源主要通过对外部输入的9V交流电压进行稳压后输出5V电压。提供单片机电源、CD74HC74芯片电源、MAX232芯片电源和LCD1602电源。将数字电源通电后测试各个数字芯片的电源电压。5.1.2 数字电路调试测量芯片电源电压正常后,插上数字
46、芯片。将LCD1602的1到16引脚通过插针引出,LCD1602的3脚直接接地,15脚背光正极接VCC,16脚背光负极接地,其它管脚插到STC89C52RC单片机对应I/O口上。检查电路连接正确后,接上电源。测试到LCD1602的1脚为0V,2脚为+5V,通过串口下载接口,下载LCD测试程序到单片机进行测试。测试单片机ALE管脚有2M频率的信号输出,程序运行后LCD1602显示字符。说明数字电路块调试通过。5.1.3ICL7135转换电路调试接通电源,测量ICL7135芯片第11脚电压为+5.01V,第1脚电压为-4.92V。再检测CLKIN管脚有信号输入,频率为500KHz,而且BUSY信号有电平变化。证明ICL7135芯片工作正常。此时调节ICL7135参考电压输入为1V。5.1.4 TL084放大电路调试在单片机中下载写入一个控制P1.7为高电平,P1.6、P1.5为低电平的程序,进行调试10B放大。接通电源,在TL084放大器的信号输入端加上一个0-