毕业设计(论文)集成运放参数测试仪程序设计

上传人:沈*** 文档编号:41368666 上传时间:2021-11-20 格式:DOC 页数:48 大小:680KB
返回 下载 相关 举报
毕业设计(论文)集成运放参数测试仪程序设计_第1页
第1页 / 共48页
毕业设计(论文)集成运放参数测试仪程序设计_第2页
第2页 / 共48页
毕业设计(论文)集成运放参数测试仪程序设计_第3页
第3页 / 共48页
点击查看更多>>
资源描述
集成运放参数测试仪程序设计内容摘要:该课题设计的运算放大器闭环参数测试系统是基于 MSC-51 单片机控制模块,并且由 LCD(Liquid Crystal Display)显示模块,键盘模块,数据采集和转换模块,采用 DDS 芯片(AD9851)实现了 40kHz4MHz 的扫频输出模块等五部分组成。采用辅助运放测试方法,可对运放的输入失调电压、输入失调电流、交流差模开环电压增益和交流共模抑制比以及单位增益带宽进行测量。在软件上,用 C 语言来编程实现。其要实现的功能包括:对来自 TLC2543A/D转换的数字信号进行接收、分析、计算和对结果的显示;通过不同键值的接收、分析来控制对不同对象的测量,并在 LCD 上显示对应的人机界面;对来自 DDS 的高频信号源的频率进行控制来实现对集成运放的带宽参数的测试和显示。而且具有自动量程转换、自动测量功能和良好的人机交互性。关键词:单片机 C 语言 DDS LCD 人机交互界面The Instrument for testing the Parameters of Integrated Operation Amplifierprogram designAbstract:This system is designed based on C51 microcontroller to measure the close loop parameters of the operation amplifier. The system conclude five modules: LCD (liquid crystal display) display module, keyboard module, data collection module, conversion module, and the module of generating sweep sine-wave signal with frequency range from 40 kHz to 4 MHz, using the DDS chip of AD9851. The system can measure the input offset voltage、the input offset current、the open loop AC differential mode voltage gain、the AC common mode rejection ratio and unit gain bandwidth,using the measure method of assistant amplifier. The data can be display on the LCD which is using of C program. And the function concludes: receiving, analysing and calculating the digital signals from TLC2543A/D then send them to show; accepting different key value on keyboards, analysing and processing it for controlling the measurement of different target and display on the LCD with different computer interface; controlling the bandwidth of HF signal source from DDS chip to measure the integrated transport bandwidth parameters and display the result. Whats more C51 microcontroller can control relays to complete auto measurement range switching ,auto measuring and good interface. Key Words:MCU CLanguage DDS LCD interface目 录前言.1一、系统原理框图.1二、硬件单元电路设计与实现.2(一)、四个参数的测试电路.2iocVioIvdAcmrK(二) 单位增益带宽测量电路.3(三) 测试的信号源.3vdCMRAK、(四) 峰峰值检测电路的设计.4(五) A/D 采样电路.4(六) 扫频信号源.4(七) 键盘接口电路.5(八) 显示接口电路.5三、软件设计.6(一) 软件功能设计.6(二) 系统软件框图和程序流程图.6(三) 软件模块设计.7四、系统测试.19(一)程序调试方法.19(二)软件调试.19(三)联机调试.20五、结束语.20六、感谢词.20参考文献.20附录一.21附录二.221附录三.36(一)TLC2543.36(二)LCD 液晶显示器.36附录四.382集成运放参数测试仪程序设计前言目前国内外市场上各种型号的集成运放参数测试仪已经相当多,而且普遍性都采用“辅助放大器的测量方法” ,使测试仪的整个系统具有稳定性好,精确度高,范围大的特点,而且测试仪测试参数一般包括:正向最大输出电压+,负向最大输出电压-,正向最大共模输出oppVoppV电压+,负向最大共模输出电压-,正转换速率+ ,负转换速率-,静态工作电流,icmVicmVrSrSqI输入失调电压,共模抑制比,开环增益带宽乘积 BW,输入失调电流,开环电压增益iocVcmrKIio,基极偏置电流等 15 项。vdAibI但这种测试仪有一种共同的特点电路系统复杂,成本高,因此在某些应用领域中不能普遍使用。在此我们根据 GB344286半导体集成电路运算电压放大器测试方法的基本原理规定的测试方法来设计,主要测试参数包括:输入失调电压,共模抑制比,开环增益宽带iocVcmrK乘积 BW,输入失调电流,开环电压增益等 5 个,而且用 MSC51 系列单片机作为中央处理ioIvdA器,这样大大降低了成本,并且具有显示功能,使用方便,体积小,适合搬移,系统稳定。在软件方面,汇编语言是能直接控制单片机的底层语言,而且在控制硬件和位操作等方面表现很优异,程序运行时效率也很高,但当用汇编语言来编制复杂的数学运算类型的程序时就显得有些不方便。而使用 C51 高级语言开发 MSC51 系列单片机比汇编语言优越地多,如程序编写直观易懂、便于移植、便于修改和维护、便于进行模块化程序设计、提高计算精度等。虽然高级语言在产生代码方面会比较长些,而且运行速度相对来说会慢些但对于当今作为开发的计算机软件来说优化程序的编译已经不是问题。在次我们结合了该设计自身的特点和需要,综合分析了以上的优、缺点最后决定采用 C 语言来编程,实现这个课题的功能,从而也提高其使用性。该成品可方便用于小型实验或个人实验室等场合。一、 系统原理框图该系统包括软件和硬件两个方面,程序被下载到单片机中,自动进行一系列测试工作,而且可以通过良好的人机界面对其进行选择、控制。其整体系统原理框图如图 1 所示。运放参数测试电路数据采集测试参数选择高频信号源增 益 控 制单片机LCD 显示输出键 盘 输 入3图 1 系统原理框图二、硬件单元电路设计与实现(一)iocV、四个参数的测试电路ioIvdAcmrK按照 GB344286半导体集成电路运算(电压)放大器测试方法的基本原理规定的辅助直流测试法,可实现运算放大器直流参数的准确测量。该方案的测试原理如图 2 所示。+-+-被测运放辅助运放Rf R1RiRiR2K1K2R R VLRf数字电压表(4位半以上) 图 2 GB344286 规定的运算放大器直流参数测试方法它是国标推荐的测试方法也是目前国际普遍采用的一种测试方法,具有稳定性好、精度高、范围大等特点,可测量各种集成运算放大器的输入失调电压、失调电流、共模抑制比、差模开环增益等参数,测试方便,测量输出的电压范围合适。而辅助运放对系统增益的稳定性有很关键的作用,虽然也会引起自激,但可以通过一定的方法来抑制。测试这四个参数的电路可以集成在两个电路里。首先可以将测试、这两个参数的电iocVioI路通过继电器做成一个电路系统,如图 3 所示。电容 Cu 是补偿分布电容,用来抑制自激的发生,而 Cu 的值是通过实验获得的:先将数百皮法的瓷片电容接入电路选定位置,观察自激信号的变化,直到取得使自激信号最小的电容值为止。然后将测试、这两个参数的电路vdAcmrK也集成一个电路系统,如图 4 所示。这样通过两个核心测量电路就可以完成所有参数测试,同时通过对继电器的控制实现了测量的自动化,而且大大简化了电路。12345678K23R1R111kR121k113322w150kR3100R4100R51MR61MRf220kRf120kR730kR830K3261574u11M54271 836 14 11 10 13 12 9U27650C4C3104*2+12vQ1NPND1DIOD E32184U3ATL 082+12v-12v-12v+12v+12v+12v-12vR1330KCuCR2CR1R30012J1CO N2567U3BTL 082图 3 输入失调电压和输入失调电流测试电路4R111kR121kR131kR14100R1543kw250kC747uC81uR3100R4100Rf220kR730kR830K3261574u11M54271 836 14 11 10 13 12 9U27650C4C3104*2Rf120kRL10KR1+12vB1C2E3Q2NPND4DIOD E12345678K2132184U3ATL 08232184U4ATL 082567U4BTL 082+12v-12v-12v+12vD3DIOD E+12v-12v+12v+12v-12vR1430KCuCR2 R30012J2CO N24v 5H z图 4 电压增益和共模抑制比测试电路其测试电路和过程如下:、当继电器 1、4 分别脚接向 3、6 脚时,测得辅助运放的输出电压记为 VL0 ,则有:L0fiiIOVRRRV、当继电器 1、4 分别脚接向 2、5 脚时,测得辅助运放的输出电压记为 VL1,则有:RVVRRRIL0L1fiiIO、当把信号源输出(电压为 VS)接到继电器的第 1 脚时,测得辅助运放输出电压为 VL0,则有 )dB(lg20ifiLOSVDRRRVVA、当把信号源输出(电压为 VS)接到继电器的第 4 脚时,测得辅助运放输出电压为 VL0,则有 )dB(lg20ifiLOSCMRRRRVVK通过上述方法就可测得所要测试的四个参数。(二)单位增益带宽测量电路单位增益带宽测量电路为一个反向比例放大器,从 P1.3 口输入正弦信号的幅值,改变信号频率,当 P1.3 口的输入电压幅值下降到 3dB 时的频率即为单位增益带宽。(三)测试的信号源vdCMRAK、用文氏电桥电路实现产生 4V、5Hz 的正弦波。它是由 RC 振荡电路构成的低频正弦信号发生器。通过调节电路中的电阻和电容值的大小,可以产生不同频率和幅度的正弦信号,而且信号比较纯。该电路简单、信号幅度稳定,其稳定度优于 1%。经过仿真后发现该电路只能产生 400KHz 以内的信号,但这个频率范围已经满足我们的要求。5(四)峰峰值检测电路的设计3261574U2TL 710C1CAPC2CAPC3CAPC4CAPR110KR210KR310KR410KR510KR610KD1DIODED2DIODE12J1CON2VCCINPUT32184U1AOP07图 5 峰值检波图该电路主要由一个二极管和两个电容组成,用于检测扫频信号源的峰值。实际测量表明,该峰值检测电路在 40kHz4MHz 具有很好的线性度。该电路如图 5 所示。(五)A/D 采样电路为保证测量精度,该部分电路采用 12 位串行口TLC2543。电路如图 6 所示。EA /VP31X119X218RE SE T9RD17WR16INT 012INT 113T014T115P101P112P123P134P145P156P167P178P0039P0138P0237P0336P0435P0534P0633P0732P2021P2122P2223P2324P2425P2526P2627P2728PSEN29AL E/P30TX D11RX D10IC1AT 89S51AN 01AN 12AN 23AN 34AN 45AN 56AN 67AN 78AN 89GND10AN 911AN 1012RE F-13RE F+14/CS15DA TA O UT16DA TA INPUT17I/O CLK18EO C19VCC20IC18TL C2543/WR/RDVCCD0D1D2D3D4D5D6D7P20P21P22C20.1C6123456789101112JP1TL C2543 IN PO RTP15P16P17SE RIAL A/DP23P24RE SE TKE Y_IN T0C7C8JZHE NVCCINT 1 P3.3T0T1P10P11P12P13P14C310U图 6 A/D 采样电路图(六)扫频信号源采用直接数字频率合成芯片(AD9851)来产生扫频信号。它的频率稳定度完全由有源晶振的频率稳定度决定,具有较高的频率输出范围,而且可以直接由单片机的输出来控制频率的大小。经过输出扫频测试,DDS 芯片可以在 10 秒内连续、稳定输出频率在 40kHz4MHz 范围内连续变化的正弦波。其电路原理图如图 7 所示。AD9851 采用并行送控制字的方式将频率控制字送入芯片。频率控制字 FSW 与最终合成的信号频率0f之间的转换公式为: 3202/FSWffc若系统时钟频率cf为 30MHz,则最大分辨率0f=30106232Hz=0.007Hz。远超出本题 1kHz 分辩力的要求。6D31D22D13D0 LSB4PGND5PVCC6W_CLK7FQ_UD8REF_CLK9AGND10AVDD11Rset12VOUT N13VOUT P14VINN-15VINP+16DACBP17AVDD18AGND19IOUTB20IOUT21RESET22DVDD23DGND24D7 MSB SLO AD25D626D527D428IC1AD9851R1L12L6L9L1C13C19C20C21C10C18VCCVCCVCC1-2out3+4XTAL 2C25C27C28C29L13in123out4U2UPC1651C22C23L15L16C30VCCVCCVCCR2R10C26L1412345678J21234J31122J41122J5R9R8VCC图 7 扫频信号源图(七)键盘接口电路键盘的接收部分电路如图 8 所示:IN/CL K1IN2IN3IN4IN5IN6IN7IN8IN9IN10IN11IN13IO14IO15IO16IO17IO18IO19IO20IO21IO22IO23U1GAL22V10B25L P(24)123456789PR24.7KVCC1234KEY01234KEY11234KEY2A02A13A24A35A46A57A68A79B018B117B216B315B414B513B612B711E19DIR1U274ALS245VCCVCCD0D1D2D3D4D5D6D7KEY_CSKEY_INT12345678J1I/O图 8 键盘接收电路图当有按键时就触发外中断 0,再通过控制片选端(KEY_CS)来读取当前按键的键值,这个信号是由 74LS138 实现的,其地址为 C000H;键值的编辑则是采用一块 PLD 芯片GAL22V100 和一个双向选通芯片 74LS245 来实现;数据的读入和其他的数据一样都是通过总线的方式,(74ALS245 的输出端 B0 到 B7 与单片机的 P0 口相连接)。键值的四位由低到高分别对应P0.0、P0.1、P0.2、P0.3。该键盘中各键的功能分配如下:KEY0:屏幕复位,键值为 0;KEY1:进入参数测试界面,键值为 1;KEY2:进入幅频特性测试界面,键值为 2。(八)显示接口电路采用 MSC-G12864 液晶显示器。该液晶显示器的管脚分配和管脚功能使用如表 1 所示,根据资料我们在硬件设计时将其管脚与单片机的连接如下:控制线:P2.3 连 CS2,P2.2 连 CS1,P2.1 连 R/W,P2.0 连 R/S,P2.4 连 E;数据线:D0D7 分别与 P0.0P0.7 相连接;7因此液晶显示器和单片机的接口电路连接如图 9 所示。表 1 液晶显示器管脚分配20191817161514131211SLKSLAVOUTRSTBCS2CS1DB7DB6DB5DB410987654321DB3DB2DB1DB0ER/WRSVOVDDVss456U3B74HC00RST111213U3D74HC00E/CS1/CS2R/SR/W/RSTEA/VP31X119X218RESET9RD17WR16INT012INT113T014T115P101P112P123P134P145P156P167P178P0039P0138P0237P0336P0435P0534P0633P0732P2021P2122P2223P2324P2425P2526P2627P2728PSEN29ALE /P30TXD11RXD10IC1AT89S51/OE1D02D13D24D35D46D57D68D79GND10LE11O712O613O514O415O316O217O118O019VCC20IC274LS573/OE1D02D13D24D35D46D57D68D79GND10LE11O712O613O514O415O316O217O118O019VCC20IC874LS573/WR/RDVCCVCCD0D1D2D3D4D5D6D7D0D1D2D3D4D5D6D7D0D1D2D3D4D5D6D7A0A1A2A3A4A5A6A7A8A9A10A11A12A13A14A15HIGH 8BIT A DRESS LO CKA1B2C3E14E25E36Y015Y114Y213Y312Y411Y510Y69Y77IC2074HC138VCC7524 CSTL C0820 CS123IC21A74LS02456IC21B74LS028910IC21C74LS02111213IC21D74LS02/WR628128 ADH 8628128 ADH 8KEY_CS/RDKEY_RDLCD_WRC6P15P16P17P24RESETKEY_INT 0C8JZ HENVCCINT1 P3.3T0T1P10P11P12P13P1412IC28A74LS04R2433/2WVCCQ1BD140R710KP3.41234567891011121314151617181920LCD2MSC-G12864D0D1D2D3D4D5D6D7ER/WR/SVOVCCGND/CS2/CS1VOUT/RSTLE D+LE D-C7W215KVCCVO123JMPVOUT图 9 显示接口电路图三、 软件设计(一)软件功能设计软件系统以界面直观、利于操作、便于维护和升级为基础。而且为了增强系统的抗干扰性,还增加了软件陷阱处理,防止软件的“跑飞”。对于软件功能的设计不仅仅是对程序的简单设计,还包括对各电路间接口的设计,接口设计描述的是软件如何与外界系统进行通信,软件内部如何通信、以及软件和软件的使用人员之间如何通信等问题。一个接口意味着一个信息流(例如,数据或控制流等) ,因此,在这里的一个重点就是要实现如何更好的分配数据和控制流,从而实现整个功能。(二)系统软件框图和程序流程图AT89C52 是美国 ATMEL 公司生产的低电压,高性能 CMOS 8 位单片机,片内含 8K bytes 的 Flash ROM 和 256 bytes 的 SRAM。器件采用 ATMEL 公司的高密度、非易失性存储技术生产,与标准 MCS-51 指令系统及 8052 产品引脚兼容。本系统以单片机 AT89C52 为主控核心,系统软件和硬件的接口框图如图 10 所示,程序流程图如图 11 所示。与单片机相连的接口电路还包括键盘接口电路,LCD 接口电路,转换模块接口电路。8图 10 系统软件和硬件的接口框图图 11 程序流程图(三)软件模块设计软件设计工作是建立在自顶而下和模块化的设计方法之上的。这就是说,软件应在逻辑上分割为实现特定功能部分的子程序,既程序编写的模块化,这样无论在设计、编码、还是以后的维护上都提供了很大的方便。在此我们根据接口电路的需要可以把该程序分为六个模块:主程序模块、显示模块、键盘模块、高频输出模块、转换模块、数据处理模块。虽然每个模块之间都是利用数据的传送将他们联系起来,但在功能的实现上都是独立的。TLC2543读入信号自动测试计算每路的值计算参数Uio、Uco、Avd、Kcmr 并显示输出频率为4M400KHz 的波形计算带宽增益键值 1有按键键值 0键值 2初始化界面初始化界面键盘输入51 单片机LCD 显示A/D转换模块测试板9 主程序模块该模块主要包括 main()函数。在将程序进行模块化时当然还要将各个子程序联系起来,在主程序里就是要实现它们之间逻辑关系的联系,而且基于单片机自身的特点,主程序应该是一个死循环的过程,否则程序执行完一次程序后就会跑飞,而不能实现整体功能,因而使整个系统处于瘫痪状态,此时只能通过重新断电和通电才能使系统重新运行,即使这样该系统还是会再次进入瘫痪状态。因此只能利用死循环来解决这个问题,这也是对单片机编程的一种常用的方法。在主程序模块中,主要实现的功能为:刚开机时,对外围设备进行初始化设置,然后显示主界面,即欢迎界面;等待按键,通过按键标志来判断是否要调用按键处理函数 keycl()。在keycl()函数中包括对不同键值的判断,并调用数据采集、分析、处理、显示等函数。因此主函数的流程图如图 12 所示。该主函数处于一种死循环的状态。开始显示主界面有按键否判断键值,并调用显示模块、调用键盘模块子程序、转换模块和数据处理模块子程序结束NY图 12 主函数流程图主函数的程序如下所示: /*/ /* 主函数 */ /*/void main() unsigned char k,adbuf,dabuf,rambuf; idata unsigned int *para=&ramaddr; ad2543(0 x0C); /预先将要读取数据的通道数送入 dabuf=0 xff; P3_4=1; /改变继电器 INTlcd(); /* 调初始化函数 */ CLEAR(); /* 调清屏函数 */ EA=1; EX0=1;10 IT0=1; flag=0; fw(); /复位 while(1) /使程序处于死循环 if(flag=1) /当有按键按下时 keycl(); /调用键盘处理函数包括对数据采集、分析、计算 其中 INTlcd()函数,CLEAR()函数和 fw()函数将在附录一里给出。 显示模块显示模块主要是负责跟液晶显示器接口的程序模块,包括液晶的驱动程序和结果显示程序。该模块主要是由 xianshi()函数组成,它的功能是将处理结果数据显示在 LCD 上。流程图如图 13 所示。其中调用了写中文函数 whz(),写西文函数 wcode()。流程图如图 14 所示,以及两个判忙函数 BUSYM(),BUSYR(),两个写指令函数 PR1(),PR4(),两个写数据函数 PR2(),PR5(),该模块在设计时主要考虑单片机和液晶之间的管脚连接,以及液晶自身的地址分配。在此我们参考了液晶显示器的使用手册,分析了在硬件上单片机的管脚分配情况,因此单片机和液晶的接口电路如图 9。其地址控制说明如图 15 所示,接口管脚电平说明如表 2 所示。 开始取出要计算的每一位调用写西文函数显示结果结束开始液晶忙送要显示的数据结束NY图 13 显示模块流程图 图 14 写中、西文函数流程图11图 15 地址控制说明图表 2: LCD 管脚电平说明表Pin No.SymbolLevelDescription1VSS0VGround2VDD5.0VSupply voltage for logic3VO-Input voltage for LCD4RSH/LH:Date signal, L:Instruction signal5R/WH/LH:Read mode, l:write mode6EH,H-LChip enable signal7DB0H/LData bit 08DB1H/LData bit 19DB2H/LData bit 210DB3H/LData bit 311DB4H/LData bit 412DB5H/LData bit 513DB6H/LData bit 614DB7H/LData bit 715CS1HChip select signal for KS0108B(1)16CS2HChip select signal for KS0108B(2)17RSTBLReset signal18VOUT-5VOutput voltage for LCD19SLA4.2vSide light anode20SLK0VSide light cathode由液晶显示器的资料可知 LCD 是由两片KS0108B组成,且在液晶显示器上片选 CS1,CS2 都是高电平有效,E 脚:芯片使能端,是高电平或下降沿到来时有效,即只有当它为高电平或下降沿来时才能进行读、写入数据或者写指令操作,当该管脚为低电平时为忙状态,因此结合硬件电路的设计可得到液晶显示器的地址分配为:#define cwadd2 XBYTE0 xb400 /*第二片写状态地址*/#define cradd2 XBYTE0 xf600 /*第二片读状态地址*/12#define dwadd2 XBYTE0 xb500 /*第二片写数据地址*/#define cwadd1 XBYTE0 xb800 /*第一片写状态地址*/#define cradd1 XBYTE0 xfa00 /*第一片读状态地址*/#define dwadd1 XBYTE0 xb900 /*第一片写数据地址*/#define display_on 0 x3f; /开显示#define display_off 0 x3e; /关显示#define para1 0 x40; /*设置列地址*/#define start_line0 0 x0c0; /*开始显示行为第 0 行*/#define page 0 xb8 /设置页地址在显示数据之前一定要进行对液晶进行判忙工作,只有当液晶处于空闲状态才能对液晶进行写入操作,因此在开始对液晶进行写入指令和数据之前要先调用两个判忙函数,一个是BUSYM()即对左片判忙,还有一个是 BUSYR()即对右片进行判忙。而且只有当液晶是处于空闲和开状态的时候,才能进行下一个操作,否则将在此进入死循环中。其中写指令函数 PR1(),PR4(),主要功能是设置液晶显示器的地址;写数据函数 PR2(),PR5()是在地址设置后将要显示的数据写入到液晶显示器中;写中文函数 whz()是显示中文字符,写西文函数 wcode()是显示西文字符。以下给出了 xianshi()函数具体程序,其它的程序在附录里给出,这里就不一一详述。/*/* 显示结果 */*/ void xianshi(void) float k; int j; unsigned char i,last,hang,lie; for(i=64;i=100;i+=6) wcode(i,4,47); j=4; /求出每一位数,便于在 LCD 上显示 for(i=0;i0;j-) /要显示的数据共 5 位从最后一位开始显示 k=averagei-(int)averagei; /获得最后一位小数 if (k0.000000) k=0.000000; averagei=(int)averagei; last=k*10; / 将获得的最后一个小数转换为整数,便于显示 lie=64+j*7; /要显示的数据的行、列 hang=7-i; if (j=5) /要显示的数据共 5 位,有四位小数13 wcode(lie,hang,46); /显示小数点 lie=lie+5; j-; wcode(lie,hang,last); averagei=averagei/10; /求出下位数据 键盘模块该模块主要包括中断函数 int1() interrupt 0 和 keycl()函数。 为了使该系统更具人性化,在硬件上加入了三个按键,相应地在软件上也离不开这个模块。这三个按键分别用来在:初始界面,参数测试界面和增加功能的带宽测试界面之间转换。当有键按下,就会产生一个下降沿脉冲从而触发中断的发生。在中断函数中调用一个延时程序实现消抖,如果确定有按键按下则将中断标志变量置 1,即 flag=1;在主程序中,通过对这个标志变量的查询,来决定是否调用函数 keycl()。在该函数中具体实现不同按键要显示的对应界面,并进行不同的操作。如果当前按下第一个键,则调用复位函数 fw(),返回到初始的欢迎界面,显示“欢迎使用”这四个字;如果按下的是第二个键,在液晶的顶部中间显示要测试的四个参数 、然后调用参数测试函数 ad2543()读取不同通道的数据,并通过对继电iocVioIVDACMRK器的控制来读入相同通道中不同参数所需要的电压值,然后调用 sort()函数去掉采集的数据中的一个最大值和一个最小值,并将获得的数据转换为真实的电压值,调用函数 jisuan()将数据进行平均后再计算参数结果,最后调用函数 xianshi()将处理完的结果显示出来;如果按下的是第三个键,则显示频带宽度界面,并调用函数 highsource()输出高频信号,频率的分辨率为1KHz。该模块的流程图如图 16 所示。开始结束第一个按键NY调用主界面第二个按键采集 AD2543 中的数据并进行分析和显示第三个按键控制 AD9851 产生信号源YYNN图 16 键盘模块程序流程/*/* 键盘中断 */14/*/void int1() interrupt 0 delay(100); if (P32=0) /消抖 keyv=keyaddr; flag=1; /*/* 按键处理函数 */*/void keycl(void) unsigned char i,j,k; flag=0; /清除按键标志 if (keyv=0) /当按下第一个键时 fw(); /显示主界面即复位 else if(keyv=1) /当按下第二个键时 zdcs(); /调用显示参数测试界面 k=0 x0c; /选择通道 0 for(i=0;i5;i+) /需要 5 个数据 /采集数据时要采集 8 组 for(j=0;j8;j+) ad0ij=ad2543(k); delay(0 x30); /在每次采集之间调用延时程序 delay(0 x60); /在要选部通道之间延时 /通过改变继电器获得所需的不同电压 if(i=0) /获得 vlO 当 i=0 时 jdq0=1; /当 i=1 时闭合开关获得 vli if (i=1) /输入时信号源当 i=2 时换通道获得 vlo 用来计算avd jdq0=0; jdq1=0; k=k+0 x10; if (i=2) /i=3 时获得 vlo 是用来计算 dcmr jdq1=1; if (i=3) /更换通道 获得信号源电压 jdq1=0; k=k+0 x10; /通道数加 1/因为输入通道数时只有前面的四位数有效 15sort(); /去掉一个最大值和一个最小值,并转换为真实的电压值 jisuan(); /将数据进行平均,后再进行计算参数结果 xianshi(); /显示获得的结果 else if(keyv=2) highsource(); /输出高频信号,频率的分辨率为 1KHz flag=0; /清除按键标志 其中jdq0,jdq1:继电器通断标志变量;falg:按键标志变量,有键按下则为 1,否则为 0;keyv:存放不同按键的键值;ad0ij:存放来自通道的电压信号的数据,idata unsigned int ad058存放参数测试所需要的 5 组数据,又把每个所需要的数据采集的 8 次,因此每组数据中包括 8 个数据,这样真正采集的数据应该是 40 个。 高频输出模块void highsource()函数是控制 DDS 产生正弦波的,产生的正弦波的分辨率为 1KHz。以下是 AD9851 的部分管脚功能说明:41,2825(D0D7):是8位的数据输入口,其中D0(4脚)是低位,D7(25脚)是高位;5(PGND):接地端;6(PVCC):电源端;这两个管脚都是当频率取输入数据的六倍时用的;7(W_CLK):数字载入端,上升沿有效,由单片机控制,与P1.5相连; 8(FQ_UD):频率刷新端,上升沿有效,由单片机控制,与P1.6相连;9(REF_CLK):系统时钟,是外部输入,直接用10M晶振产生;10、19(AGND):模拟信号接地端;11、18(AVDD):模拟信号电源端;21(IOUT):输出口,产生的信号源输出口,必须接负载后再接入示波器;22(RESET):复位端,高电平时复位,当该管脚是低电平时处于正常工作,该管脚由单片机控制,与P1.7相连。AD9851芯片具有输入数字信号直接输出对应频率的正弦波的功能的芯片,有以上的管脚说明可知,数据输入端只有8个口即D0D7,但AD9851允许输入的数据范围为40位,因此在程序中要用串并合用的方法,每次送入8位数据,并送W_CLK端一个脉冲,使芯片接受送入的数据,共送5次,先送入的为高电位,送完后将FQ_UD信号置1,使送入得数据有效,产生所需要频率的正弦波。该模块的程序流程如图17所示。highsource()函数如下所示:/*/* 产生高频信号 */*/void highsource()unsigned char i, j;idata unsigned long step;idata unsigned long addr=0 x22222222; /频率的最大值约为4Midata unsigned char zanc5=0 x00,0 x22,0 x22,0 x22,0 x22;unsigned char *p=&dacs; /高频信号源地址16unsigned char *p1=&addr;unsigned int k;step=0 x01000000; /频率变化的步进值fq_up=0;w_clk=0; reset=1; j+; /延时作用 j+; reset=0;for(k=1;k0 x0f78;k+) /产生信号源,由于指针之间不能直接付值所以用/zanc变量作为它的中间变量 p=&dacs; p1=&addr; for(i=1;i5;i+) zanci=*p1; p1+; for(i=0;i5;i+) *p=zanci; w_clk=1; /送频率控制字,先高位,后低位 j+; j+;w_clk=0; fq_up=1; /产生一个上升沿 j+; fq_up=0; delay(100); if (addrstep) step=0 x10000; addr-=step; /改变频率值 17开始频率值为 0送时钟脉冲和刷新脉冲结束NY送频率字改变频率值图 17 高频输出模块图 转换模块该模块主要包括 ad2543()函数,主要实现采集通道中的数据,并将模拟信号转换为数字信号。从测试板输出的信号仍然是模拟信号,而单片机只能对数字信号进行处理,因此对于单片机而言是不可能识别模拟信号的大小,只能判断有无电压的输入,所以测试板中的信号通过峰峰值检测后必须经过 A/D 转换才能和单片机相连,被程序读入并做相应的处理。转换模块的程序主要是负责读取来自 TLC2543 的数据,该芯片有 11 路模拟信号输入通道(AN0AN10),两个参考电压输入端(REF+,REF-)和 5 个控制管脚。其接口电路如图 6 所示。它们的功能分别为:AN0AN10:11 路模拟输入通道REF+:正参考电压,输入端REF-:负参考电压,输入端,一般直接接地IOCLK:输入输出脉冲,当读输出数据时下降沿有效,当输入地址时,上升沿有效,输入端DATA INPUT:地址选择端,输入当前要转换的模拟信号的通道号,四位串行输入,输入端DATA OUT:12 位数字串行信号输出口,输出端 EOC:输出结束标志,转换结束后自动置 1,输出端CS:片选信号,低电平有效,输入口 18开始结束位操作方式送通道数位操作方式先读高 8位,再读后 4 位图 18 转换模块的程序流程图转换模块的程序流程如图 18 所示,其工作原理为:转换输出电平的量程大小为正负参考电压之差,输入模拟信号的电压范围即为正负参考电压的大小,一般 REF+大小要小于或等于V+;当要开始 A/D 转换时,先使该芯片有效,即使/CS 信号端为低电平,连续输入四个IOCLK,在 IOCLK 的上升沿处在 DATA INPUT 端口输入要转换的通道地址,高位在前,低位在后,通道地址的范围为 0 到 10,并且在 IOCLK 的第四个脉冲的下降沿到来时,读入选择的通道中的模拟信号并开始转换;调用延时函数作为其转换时间,然后单片机要给 A/D 芯片的 IOCLK 端口连续 16 个脉冲,在每个脉冲的下降沿到来时读取 A/D 中的一位数据,先读入的数据为高位,在程序中利用左移功能,将前 12 位数据保存在变量 ad 中,后 4 位数据为无效数据舍去,然后返回到上级函数。其实在该函数中采用送通道数和读数据在同一个时刻进行,事实上读的数据是上次送的通道数的结果。因此在主函数中预先调用一次 ad2543()函数作为预先送通道数的操作。ad2543()函数如下所示:/*/* 读取 ad2543 中的数据 */*/unsigned int ad2543(unsigned char tin) /tin 是通道数 unsigned int ad; unsigned char i,j; cs=1; for(i=0;i10;i+) ; cs=0; cjn=tin; for(i=0;i8;i+) /通过循环将获得的数据保存在 cjn 中 cj=dout; din=cj7; cjn=cjn1; cj0=cj; sclk=1; j+; /脉冲高电平保持时间 sclk=0; ad=cjn*16; /先读出来的是高 8 位19 cjn=tin; /还是原来的通道 for(i=0;i8;i+) cj=dout; din=cj7; cjn=cjn1; cj0=cj; sclk=1; j+ ; sclk=0; ad=ad+cjn/16; /只需要后读入数据中低 4 位 cs=1; /片选无效 return(ad); 数据处理模块该模块主要包括 sort()函数和 jisuan()函数。其中 sort()函数主要是将获得的 5 组 40 个数据中每组的最大值和最小值去掉,并转换为真实的电压值,范围为电压为 05V。jisuan()函数是将去掉最大值和最小值后每组数据进行平均,然后再参考公式进行计算,求出参数值。其函数如下所示:(其中 ad0ij是在 ad2543()中获得的数据)/*/* 排序 */*/void sort(void) /排序 unsigned char i,j; unsigned int temp; float sum; /比出最大值 放在最后一位 for (i=0;i5;i+) for(j=0;jad0ij+1) temp=ad0ij; ad0ij=ad0ij+1; ad0ij+1=temp; /比出最小值 放在倒数第二位 for (i=0;i5;i+) for(j=0;j6;j+) if (ad0ijad0ij+1) temp=ad0ij; ad0ij=ad0ij+1; ad0ij+1=temp; /求和时只求出前 6 位 去掉一个最大值去掉一个最小值 for (i=0;i5;i+) sum=ad0i0; for(j=1;j6;j+) sum=sum+ad0ij;20 averagei=sum/6; /假设放大倍数为 1 for(i=0;i5;i+) averagei=averagei*5/4096 ; /*/* 计算结果 */*/void jisuan(void)float temp; average0=average0/21; /vio average1=average1/21-average0; /Iiotemp=average2; /avdtemp=average4/temp/21;temp=20*log10(temp);average2=temp;temp=average4/average3; temp=temp/21; /kcmrtemp=20*log10(temp);四、 系统测试当我们调试用 I/O 方式在液晶上显示数据时,不小心烧坏了 LCD。最后在硬件上只能用LED 来代替 LCD,软件上也重新编写了 LED 显示程序和其他相关程序,经过调试,能正确显示结果。显示数据结果时每次显示一个参数结果,通过按键显示下一个参数结果。以 I/O 方式显示的程序在附录四中给出。(一)程序调试方法1、修改语法上的错误:软件仿真编译程序,查改有错误的地方,直到编译通过;2、按软件模块的划分,用仿真器结合硬件进行仿真各模块程序,查找逻辑错误;3、通过单步运行和打断点的方式调试程序,直到出现自己想要的结果。(二)软件调试1、测试仪器:微机电源(WD999) 、仿真器(E6000/L) 、数字示波器(TDS2012) 、万用表(HONEYTEK A830L)2、测试方案:将每个子程序经过汇编后分别进行软件模拟仿真,然后联合硬件用仿真 器进行仿真。3、调试过程和结果:LCD 显示的测试过程和结果:运行清屏程序,在屏幕任意位置显示一个汉字和西文,发现无任何反应,参考其它的程序,发现所包含的头文件与我的程序都是不同的,于是改变头文件,结果显示正确;然后在所要的位置显示所需要的汉字和字母,显示程序正确;给 TCL2543 芯片的 0 通道输入 2V 电压,调用 ad2543()函数测试获得数据,并将获得的数据在液晶上显示,看得到的数据是否正确。21调用 highsource()函数将频率控制字送入 AD9851 芯片,控制输出频率为 4M 的正弦波,并用示波器看输出波形的效果,修改程序直到输出的波形就是所要的波形。(三)联机调试1、 测试仪器:微机电源(WD999) 、万用表(HONEYTEK A830L) 、仿真器(E6000/L)2、 调试过程和结果:将获得的数据显示在 LCD 上,和手动测试的结果进行比较,结果有误差。首先查看程序里逻辑上是否有错误,发现继电器控制那部分有点混乱,于是参考题目要求,重整这部分程序;然后再次运行程序,还是有误差存在;接着就查看程序的数据处理模块部分,然后再次根据题目的要求来修改程序的逻辑问题;最后虽然还是有误差存在,但程序已经基本正确,硬件上也已无错误,就把这结果作为最后的结果。五、 结束语这次毕业设计,虽然是我们以前电子竞赛中接触过,但由于以前的软件没被保存下来,这次的编程相当于是从头开始。因此在刚开始编程时,思路上还是有点混乱,并且犯了一些错误,比如对液晶显示器写数据和读状态时发生了一些错误,致使整个过程在开始几天没有一点进展。后来在何老师的指导下,我重新理清思路,结合电路原理图编写程序,能够较快的找准问题所在,能顺利完成毕业设计。在这次毕业设计中,令人欣慰的是我们的毕业设计基本能够完成课题的基本部分和发挥部分的要求。在数据处理的精度方面由于采用 C 语言编程,大大提高了精度,但遗憾的是,有些发挥部分(如单位带宽增益)没能完成,并且测试结果存在有较大的误差。总之,这次设计有值得我回忆的地方也有令我感到遗憾的地方。六、 感谢词随着毕业设计的结束,我也即将离开川师。回顾这四年,我在这儿学到了许多有用的知识,为人的道理,受益匪浅。我想,这些将伴我走过以后的人生。虽然四年就像弹指一挥间,但这四年却有许多令我感谢和怀念的东西。首先要感谢我的学校四川师范大学,它为我提供了一个良好的学习氛围。再者,我要感谢我的老师们,任课老师让我学到了许多有用的理论知识,而实验室的老师们在实验室辛勤工作,早出晚归地为我们指导毕业设计,教会了我如何把理论知识应用到实践中去,将两者很好结合,我才能得到更好的进步。从您们身上,我不仅领略到了您们那渊博的知识,也看到了您们敬业的高尚品德。在此要特别感谢我的指导老师何巍老师。感谢您在毕业设计中对我们的指导,您不仅教给我们该怎样去设计,还教我们该如何去发现问题,自己思考解决问题。您的启发式教育让我们受益良多。感谢吴均老师、毛老师、梁老师以及麦老师对我们毕业设计的大力支持和帮助。同时,还要感谢我的组员:沈翔、张超和李云菲,没有他们在这次毕业设计中的合作和帮助,毕业设计也不会如此顺利。从他们身上,我也学到了团队精神和其它许多知识。参考文献1.白驹珩,雷晓平:单片计算机及其应用(第二版),成都:电子科技大学出版社,1997;2.邹北骥:C 语言程序设计(第二版),北京:电子工业出版社出版,2000;3.张齐,杜群贵:单片机应用系统设计技术基于 C 语言编程, 电子工业出版社, 2004;4.谢自美:电子线路设计实验测试(第二版),武汉:华中理工出版社,2000;5.全国大学生电子设计竞赛组委会,全国大学生电子设计竞赛获奖作品选编(2003), 北京:北京理工大学出版社 ,2005;226.康华光,陈大钦:电子技术基础模拟部分(第四版),北京:高等教育出版社,1999;7.康华光,邹寿彬:电子技术基础数字部分(第四版),北京:高等教育出版社,1999.23附录一整体系统电路图:IN/CL K1IN2IN3IN4IN5IN6IN7IN8IN9IN10IN11IN13IO14IO15IO16IO17IO18IO19IO20IO21IO22IO23U1GAL22V10B25L P(24)123456789PR24.7KVCC1234KEY01234KEY11234KEY2A02A13A24A35A46A57A68A79B018B117B216B315B414B513B612B711E19DIR1U274ALS245VCCVCC456U3B74HC00R2433/2WVCCQ1BD140R710KP3.4D0D1D2D3D4D5D6D7KEY_CSKEY_INTRST12345678J1I/OW215KVCC111213U3D74HC00E/CS1/CS2VOR/SR/W/RST123JMPVOUTC10.1C20.1C30.1C40.1C50.1C60.1C70.1C810uC910uC1010uVCCEA/VP31X119X218RESET9RD17WR16INT012INT113T014T115P101P112P123P134P145P156P167P178P0039P0138P0237P0336P0435P0534P0633P0732P2021P2122P2223P2324P2425P2526P2627P2728PSEN29ALE /P30TXD11RXD10IC1AT89S51/OE1D02D13D24D35D46D57D68D79GND10LE11O712O613O514O415O316O217O118O019VCC20IC274LS573/OE1D02D13D24D35D46D57D68D79GND10LE11O712O613O514O415O316O217O118O0
展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 办公文档


copyright@ 2023-2025  zhuangpeitu.com 装配图网版权所有   联系电话:18123376007

备案号:ICP2024067431-1 川公网安备51140202000466号


本站为文档C2C交易模式,即用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。装配图网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知装配图网,我们立即给予删除!