版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领
文档简介
1、集成运放参数测试仪程序设计内容摘要:该课题设计的运算放大器闭环参数测试系统是基于MSC-51单片机控制模块,并且由LCDLiquid Crystal Display显示模块,键盘模块,数据采集和转换模块,采用DDS芯片AD9851实现了40kHz4MHz的扫频输出模块等五局部组成。采用辅助运放测试方法,可对运放的输入失调电压、输入失调电流、交流差模开环电压增益和交流共模抑制比以及单位增益带宽进行测量。在软件上,用C语言来编程实现。其要实现的功能包括:对来自TLC2543A/D转换的数字信号进行接收、分析、计算和对结果的显示;通过不同键值的接收、分析来控制对不同对象的测量,并在LCD上显示对应的
2、人机界面;对来自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 operatio
3、n 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
4、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: re
5、ceiving, 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 bandwid
6、th 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目 录 TOC o
7、1-2 u 前言 PAGEREF _Toc136432037 h 1一、系统原理框图 PAGEREF _Toc136432038 h 1二、硬件单元电路设计与实现 PAGEREF _Toc136432039 h 2一、四个参数的测试电路 PAGEREF _Toc136432040 h 2二单位增益带宽测量电路 PAGEREF _Toc136432041 h 3三测试的信号源 PAGEREF _Toc136432042 h 3四峰峰值检测电路的设计 PAGEREF _Toc136432043 h 4五A/D采样电路 PAGEREF _Toc136432044 h 4六扫频信号源 PAGEREF
8、_Toc136432045 h 4七键盘接口电路 PAGEREF _Toc136432046 h 5八显示接口电路 PAGEREF _Toc136432047 h 5三、软件设计 PAGEREF _Toc136432048 h 6一软件功能设计 PAGEREF _Toc136432049 h 6二系统软件框图和程序流程图 PAGEREF _Toc136432050 h 6三软件模块设计 PAGEREF _Toc136432051 h 7四、系统测试 PAGEREF _Toc136432052 h 19一程序调试方法 PAGEREF _Toc136432053 h 19二软件调试 PAGEREF
9、 _Toc136432054 h 19三联机调试 PAGEREF _Toc136432055 h 20五、结束语 PAGEREF _Toc136432056 h 20六、感谢词 PAGEREF _Toc136432057 h 20参考文献 PAGEREF _Toc136432058 h 20附录一 PAGEREF _Toc136432059 h 21附录二 PAGEREF _Toc136432060 h 22附录三 PAGEREF _Toc136432061 h 36一TLC2543 PAGEREF _Toc136432062 h 36二LCD液晶显示器 PAGEREF _Toc1364320
10、63 h 36附录四 PAGEREF _Toc136432064 h 38集成运放参数测试仪程序设计前言目前国内外市场上各种型号的集成运放参数测试仪已经相当多,而且普遍性都采用“辅助放大器的测量方法,使测试仪的整个系统具有稳定性好,精确度高,范围大的特点,而且测试仪测试参数一般包括:正向最大输出电压+,负向最大输出电压-,正向最大共模输出电压+,负向最大共模输出电压-,正转换速率+ ,负转换速率-,静态工作电流,输入失调电压,共模抑制比,开环增益带宽乘积BW,输入失调电流,开环电压增益,基极偏置电流等15项。但这种测试仪有一种共同的特点电路系统复杂,本钱高,因此在某些应用领域中不能普遍使用。在
11、此我们根据GB344286?半导体集成电路运算电压放大器测试方法的根本原理?规定的测试方法来设计,主要测试参数包括:输入失调电压,共模抑制比,开环增益宽带乘积BW,输入失调电流,开环电压增益等5个,而且用MSC51系列单片机作为中央处理器,这样大大降低了本钱,并且具有显示功能,使用方便,体积小,适合搬移,系统稳定。在软件方面,汇编语言是能直接控制单片机的底层语言,而且在控制硬件和位操作等方面表现很优异,程序运行时效率也很高,但当用汇编语言来编制复杂的数学运算类型的程序时就显得有些不方便。而使用C51高级语言开发MSC51系列单片机比汇编语言优越地多,如程序编写直观易懂、便于移植、便于修改和维护
12、、便于进行模块化程序设计、提高计算精度等。虽然高级语言在产生代码方面会比拟长些,而且运行速度相对来说会慢些但对于当今作为开发的计算机软件来说优化程序的编译已经不是问题。在次我们结合了该设计自身的特点和需要,综合分析了以上的优、缺点最后决定采用C语言来编程,实现这个课题的功能,从而也提高其使用性。该成品可方便用于小型实验或个人实验室等场合。系统原理框图该系统包括软件和硬件两个方面,程序被下载到单片机中,自动进行一系列测试工作,而且可以通过良好的人机界面对其进行选择、控制。其整体系统原理框图如图1所示。运放参数测试电路数据采集测试参数选择高频信号源增 益 控 制单片机LCD显示输出键 盘 输 入图
13、1 系统原理框图硬件单元电路设计与实现、四个参数的测试电路按照GB344286?半导体集成电路运算(电压)放大器测试方法的根本原理?规定的辅助直流测试法,可实现运算放大器直流参数的准确测量。该方案的测试原理如图2所示。 图2 GB344286规定的运算放大器直流参数测试方法它是国标推荐的测试方法也是目前国际普遍采用的一种测试方法,具有稳定性好、精度高、范围大等特点,可测量各种集成运算放大器的输入失调电压、失调电流、共模抑制比、差模开环增益等参数,测试方便,测量输出的电压范围适宜。而辅助运放对系统增益的稳定性有很关键的作用,虽然也会引起自激,但可以通过一定的方法来抑制。测试这四个参数的电路可以集
14、成在两个电路里。首先可以将测试、这两个参数的电路通过继电器做成一个电路系统,如图3所示。电容Cu是补偿分布电容,用来抑制自激的发生,而Cu的值是通过实验获得的:先将数百皮法的瓷片电容接入电路选定位置,观察自激信号的变化,直到取得使自激信号最小的电容值为止。然后将测试、这两个参数的电路也集成一个电路系统,如图4所示。这样通过两个核心测量电路就可以完成所有参数测试,同时通过对继电器的控制实现了测量的自动化,而且大大简化了电路。图3 输入失调电压和输入失调电流测试电路图4 电压增益和共模抑制比测试电路其测试电路和过程如下:当继电器1、4分别脚接向3、6脚时,测得辅助运放的输出电压记为VL0 ,那么有
15、:当继电器1、4分别脚接向2、5脚时,测得辅助运放的输出电压记为VL1,那么有:、当把信号源输出电压为VS接到继电器的第1脚时,测得辅助运放输出电压为VL0,那么有 、当把信号源输出电压为VS接到继电器的第4脚时,测得辅助运放输出电压为VL0,那么有 通过上述方法就可测得所要测试的四个参数。单位增益带宽测量电路单位增益带宽测量电路为一个反向比例放大器,从P1.3口输入正弦信号的幅值,改变信号频率,当P1.3口的输入电压幅值下降到3dB时的频率即为单位增益带宽。测试的信号源用文氏电桥电路实现产生4V、5Hz的正弦波。它是由RC振荡电路构成的低频正弦信号发生器。通过调节电路中的电阻和电容值的大小,
16、可以产生不同频率和幅度的正弦信号,而且信号比拟纯。该电路简单、信号幅度稳定,其稳定度优于1%。经过仿真后发现该电路只能产生400KHz以内的信号,但这个频率范围已经满足我们的要求。峰峰值检测电路的设计图5 峰值检波图该电路主要由一个二极管和两个电容组成,用于检测扫频信号源的峰值。实际测量说明,该峰值检测电路在40kHz4MHz具有很好的线性度。该电路如图5所示。A/D采样电路为保证测量精度,该局部电路采用12位串行口TLC2543。电路如图6所示。图6 A/D采样电路图扫频信号源采用直接数字频率合成芯片AD9851来产生扫频信号。它的频率稳定度完全由有源晶振的频率稳定度决定,具有较高的频率输出
17、范围,而且可以直接由单片机的输出来控制频率的大小。经过输出扫频测试,DDS芯片可以在10秒内连续、稳定输出频率在40kHz4MHz范围内连续变化的正弦波。其电路原理图如图7所示。AD9851采用并行送控制字的方式将频率控制字送入芯片。频率控制字FSW与最终合成的信号频率之间的转换公式为: 假设系统时钟频率为30MHz,那么最大分辨率=30106232Hz=0.007Hz。远超出此题1kHz分辩力的要求。图7 扫频信号源图键盘接口电路键盘的接收局部电路如图8所示:图8 键盘接收电路图当有按键时就触发外中断0,再通过控制片选端(KEY_CS)来读取当前按键的键值,这个信号是由74LS138实现的,
18、其地址为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.
19、2连CS1,P2.1连R/W,P2.0连R/S,P2.4连E;数据线:D0P0.7相连接;因此液晶显示器和单片机的接口电路连接如图9所示。表1 液晶显示器管脚分配20191817161514131211SLKSLAVOUTRSTBCS2CS1DB7DB6DB5DB410987654321DB3DB2DB1DB0ER/WRSVOVDDVss图9显示接口电路图软件设计软件功能设计软件系统以界面直观、利于操作、便于维护和升级为根底。而且为了增强系统的抗干扰性,还增加了软件陷阱处理,防止软件的“跑飞。对于软件功能的设计不仅仅是对程序的简单设计,还包括对各电路间接口的设计,接口设计描述的是软件如何与外界
20、系统进行通信,软件内部如何通信、以及软件和软件的使用人员之间如何通信等问题。一个接口意味着一个信息流例如,数据或控制流等,因此,在这里的一个重点就是要实现如何更好的分配数据和控制流,从而实现整个功能。系统软件框图和程序流程图AT89C52是美国ATMEL公司生产的低电压,高性能CMOS 8 位单片机,片内含8K bytes 的Flash ROM和256 bytes的SRAM。器件采用ATMEL公司的高密度、非易失性存储技术生产,与标准MCS-51指令系统及8052产品引脚兼容。本系统以单片机AT89C52为主控核心,系统软件和硬件的接口框图如图10所示,程序流程图如图11所示。与单片机相连的接
21、口电路还包括键盘接口电路,LCD接口电路,转换模块接口电路。键盘输入51单片机LCD显示A/D转换模块测试板图10系统软件和硬件的接口框图TLC2543读入信号自动测试计算每路的值计算参数Uio、Uco、Avd、Kcmr并显示输出频率为4M400KHz的波形计算带宽增益键值1有按键键值0键值2初始化界面初始化界面图11程序流程图软件模块设计软件设计工作是建立在自顶而下和模块化的设计方法之上的。这就是说,软件应在逻辑上分割为实现特定功能局部的子程序,既程序编写的模块化,这样无论在设计、编码、还是以后的维护上都提供了很大的方便。在此我们根据接口电路的需要可以把该程序分为六个模块:主程序模块、显示模
22、块、键盘模块、高频输出模块、转换模块、数据处理模块。虽然每个模块之间都是利用数据的传送将他们联系起来,但在功能的实现上都是独立的。 主程序模块该模块主要包括main()函数。在将程序进行模块化时当然还要将各个子程序联系起来,在主程序里就是要实现它们之间逻辑关系的联系,而且基于单片机自身的特点,主程序应该是一个死循环的过程,否那么程序执行完一次程序后就会跑飞,而不能实现整体功能,因而使整个系统处于瘫痪状态,此时只能通过重新断电和通电才能使系统重新运行,即使这样该系统还是会再次进入瘫痪状态。因此只能利用死循环来解决这个问题,这也是对单片机编程的一种常用的方法。在主程序模块中,主要实现的功能为:刚开
23、机时,对外围设备进行初始化设置,然后显示主界面,即欢送界面;等待按键,通过按键标志来判断是否要调用按键处理函数keycl()。在keycl()函数中包括对不同键值的判断,并调用数据采集、分析、处理、显示等函数。因此主函数的流程图如图12所示。该主函数处于一种死循环的状态。开始显示主界面有按键否判断键值,并调用显示模块、调用键盘模块子程序、转换模块和数据处理模块子程序结束NY图12 主函数流程图主函数的程序如下所示: /*/ /* 主函数 */ /*/void main() unsigned char k,adbuf,dabuf,rambuf; idata unsigned int *para=
24、&ramaddr; ad2543(0 x0C); /预先将要读取数据的通道数送入 dabuf=0 xff; P3_4=1; /改变继电器 INTlcd(); /* 调初始化函数 */ CLEAR(); /* 调清屏函数 */ EA=1; EX0=1; IT0=1; flag=0; fw(); /复位 while(1) /使程序处于死循环 if(flag=1) /当有按键按下时 keycl(); /调用键盘处理函数包括对数据采集、分析、计算 其中INTlcd()函数,CLEAR()函数和fw()函数将在附录一里给出。 显示模块显示模块主要是负责跟液晶显示器接口的程序模块,包括液晶的驱动程序和结果
25、显示程序。该模块主要是由xianshi()函数组成,它的功能是将处理结果数据显示在LCD上。流程图如图13所示。其中调用了写中文函数whz(),写西文函数wcode()。流程图如图14所示,以及两个判忙函数BUSYM(),BUSYR(),两个写指令函数PR1(),PR4(),两个写数据函数PR2(),PR5(),该模块在设计时主要考虑单片机和液晶之间的管脚连接,以及液晶自身的地址分配。在此我们参考了液晶显示器的使用手册,分析了在硬件上单片机的管脚分配情况,因此单片机和液晶的接口电路如图9。其地址控制说明如图15所示,接口管脚电平说明如表2所示。开始取出要计算的每一位调用写西文函数显示结果结束
26、开始液晶忙送要显示的数据结束NY 图13 显示模块流程图 图14写中、西文函数流程图图15地址控制说明图表2: LCD管脚电平说明表Pin No.SymbolLevelDescription1VSS0VGround2VDDSupply 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/LD
27、ata 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 LCD19SLASide light anode20SLK0VSide light cathode由液晶显示器的资料可知LCD是由两片KS0108B组成
28、,且在液晶显示器上片选CS1,CS2都是高电平有效,E脚:芯片使能端,是高电平或下降沿到来时有效,即只有当它为高电平或下降沿来时才能进行读、写入数据或者写指令操作,当该管脚为低电平时为忙状态,因此结合硬件电路的设计可得到液晶显示器的地址分配为:#define cwadd2 XBYTE0 xb400 /*第二片写状态地址*/#define cradd2 XBYTE0 xf600 /*第二片读状态地址*/#define dwadd2 XBYTE0 xb500 /*第二片写数据地址*/#define cwadd1 XBYTE0 xb800 /*第一片写状态地址*/#define cradd1 XBY
29、TE0 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 /设置页地址在显示数据之前一定要进行对液晶进行判忙工作,只有当液晶处于空闲状态才能对液晶进行写入操作,因此在开始对液晶进行写入指令和数据之前要先调用两个判忙函数,一个是BUS
30、YM()即对左片判忙,还有一个是BUSYR()即对右片进行判忙。而且只有当液晶是处于空闲和开状态的时候,才能进行下一个操作,否那么将在此进入死循环中。其中写指令函数PR1(),PR4(),主要功能是设置液晶显示器的地址;写数据函数PR2(),PR5()是在地址设置后将要显示的数据写入到液晶显示器中;写中文函数whz()是显示中文字符,写西文函数wcode()是显示西文字符。以下给出了xianshi()函数具体程序,其它的程序在附录里给出,这里就不一一详述。/*/* 显示结果 */*/ void xianshi(void) float k; int j; unsigned char i,last
31、,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位,有四位小数 wcode(lie,hang
32、,46); /显示小数点 lie=lie+5; j-; wcode(lie,hang,last); averagei=averagei/10; /求出下位数据 键盘模块该模块主要包括中断函数int1() interrupt 0和keycl()函数。 为了使该系统更具人性化,在硬件上参加了三个按键,相应地在软件上也离不开这个模块。这三个按键分别用来在:初始界面,参数测试界面和增加功能的带宽测试界面之间转换。当有键按下,就会产生一个下降沿脉冲从而触发中断的发生。在中断函数中调用一个延时程序实现消抖,如果确定有按键按下那么将中断标志变量置1,即flag=1;在主程序中,通过对这个标志变量的查询,来决
33、定是否调用函数keycl()。在该函数中具体实现不同按键要显示的对应界面,并进行不同的操作。如果当前按下第一个键,那么调用复位函数fw(),返回到初始的欢送界面,显示“欢送使用这四个字;如果按下的是第二个键,在液晶的顶部中间显示要测试的四个参数 、然后调用参数测试函数ad2543()读取不同通道的数据,并通过对继电器的控制来读入相同通道中不同参数所需要的电压值,然后调用sort()函数去掉采集的数据中的一个最大值和一个最小值,并将获得的数据转换为真实的电压值,调用函数jisuan()将数据进行平均后再计算参数结果,最后调用函数xianshi()将处理完的结果显示出来;如果按下的是第三个键,那么
34、显示频带宽度界面,并调用函数highsource()输出高频信号,频率的分辨率为1KHz。该模块的流程图如图16所示。开始结束第一个按键NY调用主界面第二个按键采集AD2543中的数据并进行分析和显示第三个按键控制AD9851产生信号源YYNN图16 键盘模块程序流程/*/* 键盘中断 */*/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=
35、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时换通
36、道获得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/因为输入通道数时只有前面的四位数有效 sort(); /去掉一个最大值和一个最小值,并转换为真实的电压值 jisuan(); /将数据进行平均,后再进行计算参数结果 xianshi(); /显示获得的结果 else if(keyv=2) highsource(); /输出高频信号,频率的分辨率为1KHz flag=0; /去除按键标志 其中
37、jdq0,jdq1:继电器通断标志变量;falg:按键标志变量,有键按下那么为1,否那么为0;keyv:存放不同按键的键值;ad0ij:存放来自通道的电压信号的数据,idata unsigned int ad058存放参数测试所需要的5组数据,又把每个所需要的数据采集的8次,因此每组数据中包括8个数据,这样真正采集的数据应该是40个。 高频输出模块void highsource()函数是控制DDS产生正弦波的,产生的正弦波的分辨率为1KHz。以下是AD9851的局部管脚功能说明:41,2825D0D7:是8位的数据输入口,其中D04脚是低位,D725脚是高位;5PGND:接地端;6PVCC:电
38、源端;这两个管脚都是当频率取输入数据的六倍时用的;7W_CLK:数字载入端,上升沿有效,由单片机控制,与P1.5相连; 8FQ_UD):频率刷新端,上升沿有效,由单片机控制,与P1.6相连;9REF_CLK:系统时钟,是外部输入,直接用10M晶振产生;10、19(AGND):模拟信号接地端;11、18AVDD:模拟信号电源端;21IOUT:输出口,产生的信号源输出口,必须接负载后再接入示波器;22RESET:复位端,高电平时复位,当该管脚是低电平时处于正常工作,该管脚由单片机控制,与P1.7相连。AD9851芯片具有输入数字信号直接输出对应频率的正弦波的功能的芯片,有以上的管脚说明可知,数据输
39、入端只有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 un
40、signed char zanc5=0 x00,0 x22,0 x22,0 x22,0 x22;unsigned char *p=&dacs; /高频信号源地址unsigned 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
41、+; 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; /改变频率值 开始频率值为0送时钟脉冲和刷新脉冲结束NY送频率字改变频率值图17 高频输出模块图 转换模块该模块主要包括ad2543()函数,主要实现采集通道中的数据,并将模拟信号转换为数字信号。从测试板输出的信号仍然是模拟信号,而单片机只能对数字信号进行处理,因此对于单片机而言是不可能识别模
42、拟信号的大小,只能判断有无电压的输入,所以测试板中的信号通过峰峰值检测后必须经过A/D转换才能和单片机相连,被程序读入并做相应的处理。转换模块的程序主要是负责读取来自TLC2543的数据,该芯片有11路模拟信号输入通道AN0AN10,两个参考电压输入端REF+,REF-和5个控制管脚。其接口电路如图6所示。它们的功能分别为:AN0AN10:11路模拟输入通道REF+:正参考电压,输入端REF-:负参考电压,输入端,一般直接接地IOCLK:输入输出脉冲,当读输出数据时下降沿有效,当输入地址时,上升沿有效,输入端DATA INPUT:地址选择端,输入当前要转换的模拟信号的通道号,四位串行输入,输入
43、端DATA OUT:12位数字串行信号输出口,输出端 EOC:输出结束标志,转换结束后自动置1,输出端CS:片选信号,低电平有效,输入口 开始结束位操作方式送通道数位操作方式先读高8位,再读后4位图18 转换模块的程序流程图转换模块的程序流程如图18所示,其工作原理为:转换输出电平的量程大小为正负参考电压之差,输入模拟信号的电压范围即为正负参考电压的大小,一般REF+大小要小于或等于V+;当要开始A/D转换时,先使该芯片有效,即使/CS信号端为低电平,连续输入四个IOCLK,在IOCLK的上升沿处在DATA INPUT端口输入要转换的通道地址,高位在前,低位在后,通道地址的范围为0到10,并且
44、在IOCLK的第四个脉冲的下降沿到来时,读入选择的通道中的模拟信号并开始转换;调用延时函数作为其转换时间,然后单片机要给A/D芯片的IOCLK端口连续16个脉冲,在每个脉冲的下降沿到来时读取A/D中的一位数据,先读入的数据为高位,在程序中利用左移功能,将前12位数据保存在变量ad中,后4位数据为无效数据舍去,然后返回到上级函数。其实在该函数中采用送通道数和读数据在同一个时刻进行,事实上读的数据是上次送的通道数的结果。因此在主函数中预先调用一次ad2543()函数作为预先送通道数的操作。ad2543()函数如下所示:/*/* 读取ad2543中的数据 */*/unsigned int ad254
45、3(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位 cjn=tin; /还是原来的通道 for(i=0;i8;i+) cj=dout; din=cj7; cjn=cjn1; cj0=cj; scl
46、k=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; unsigne
47、d 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;
48、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*l
49、og10(temp);系统测试当我们调试用I/O方式在液晶上显示数据时,不小心烧坏了LCD。最后在硬件上只能用LED来代替LCD,软件上也重新编写了LED显示程序和其他相关程序,经过调试,能正确显示结果。显示数据结果时每次显示一个参数结果,通过按键显示下一个参数结果。以I/O方式显示的程序在附录四中给出。一程序调试方法1、修改语法上的错误:软件仿真编译程序,查改有错误的地方,直到编译通过;2、按软件模块的划分,用仿真器结合硬件进行仿真各模块程序,查找逻辑错误;3、通过单步运行和打断点的方式调试程序,直到出现自己想要的结果。二软件调试测试仪器:微机电源WD999、仿真器E6000/L、数字示波器
50、TDS2021、万用表HONEYTEK A830L测试方案:将每个子程序经过汇编后分别进行软件模拟仿真,然后联合硬件用仿真 器进行仿真。调试过程和结果:LCD显示的测试过程和结果:运行清屏程序,在屏幕任意位置显示一个汉字和西文,发现无任何反响,参考其它的程序,发现所包含的头文件与我的程序都是不同的,于是改变头文件,结果显示正确;然后在所要的位置显示所需要的汉字和字母,显示程序正确;给TCL2543芯片的0通道输入2V电压,调用ad2543()函数测试获得数据,并将获得的数据在液晶上显示,看得到的数据是否正确。调用highsource()函数将频率控制字送入AD9851芯片,控制输出频率为4M的
51、正弦波,并用示波器看输出波形的效果,修改程序直到输出的波形就是所要的波形。三联机调试测试仪器:微机电源WD999、万用表HONEYTEK A830L、仿真器E6000/L调试过程和结果:将获得的数据显示在LCD上,和手动测试的结果进行比拟,结果有误差。首先查看程序里逻辑上是否有错误,发现继电器控制那局部有点混乱,于是参考题目要求,重整这局部程序;然后再次运行程序,还是有误差存在;接着就查看程序的数据处理模块局部,然后再次根据题目的要求来修改程序的逻辑问题;最后虽然还是有误差存在,但程序已经根本正确,硬件上也已无错误,就把这结果作为最后的结果。结束语这次毕业设计,虽然是我们以前电子竞赛中接触过,
52、但由于以前的软件没被保存下来,这次的编程相当于是从头开始。因此在刚开始编程时,思路上还是有点混乱,并且犯了一些错误,比方对液晶显示器写数据和读状态时发生了一些错误,致使整个过程在开始几天没有一点进展。后来在何老师的指导下,我重新理清思路,结合电路原理图编写程序,能够较快的找准问题所在,能顺利完成毕业设计。在这次毕业设计中,令人欣慰的是我们的毕业设计根本能够完成课题的根本局部和发挥局部的要求。在数据处理的精度方面由于采用C语言编程,大大提高了精度,但遗憾的是,有些发挥局部如单位带宽增益没能完成,并且测试结果存在有较大的误差。总之,这次设计有值得我回忆的地方也有令我感到遗憾的地方。感谢词随着毕业设
53、计的结束,我也即将离开川师。回忆这四年,我在这儿学到了许多有用的知识,为人的道理,受益匪浅。我想,这些将伴我走过以后的人生。虽然四年就像弹指一挥间,但这四年却有许多令我感谢和思念的东西。首先要感谢我的学校四川师范大学,它为我提供了一个良好的学习气氛。再者,我要感谢我的老师们,任课老师让我学到了许多有用的理论知识,而实验室的老师们在实验室辛勤工作,早出晚归地为我们指导毕业设计,教会了我如何把理论知识应用到实践中去,将两者很好结合,我才能得到更好的进步。从您们身上,我不仅领略到了您们那渊博的知识,也看到了您们敬业的高尚品德。在此要特别感谢我的指导老师何巍老师。感谢您在毕业设计中对我们的指导,您不仅
54、教给我们该怎样去设计,还教我们该如何去发现问题,自己思考解决问题。您的启发式教育让我们受益良多。感谢吴均老师、毛老师、梁老师以及麦老师对我们毕业设计的大力支持和帮助。同时,还要感谢我的组员:沈翔、张超和李云菲,没有他们在这次毕业设计中的合作和帮助,毕业设计也不会如此顺利。从他们身上,我也学到了团队精神和其它许多知识。参考文献1.白驹珩,雷晓平:单片计算机及其应用第二版,成都:电子科技大学出版社,1997;2.邹北骥:C语言程序设计(第二版),北京:电子工业出版社出版,2000;3.张齐,杜群贵:单片机应用系统设计技术基于C语言编程, 电子工业出版社, 2004;4.谢自美:电子线路设计实验测试
55、第二版,武汉:华中理工出版社,2000;5.全国大学生电子设计竞赛组委会,全国大学生电子设计竞赛获奖作品选编2003, 北京:北京理工大学出版社 ,2005;6.康华光,陈大钦:电子技术根底模拟局部第四版,北京:高等教育出版社,1999;7.康华光,邹寿彬:电子技术根底数字局部第四版,北京:高等教育出版社,1999.附录一整体系统电路图:附录二源程序:#include #include AT89X52.h#include #include #include #define cwadd2 XBYTE0 xB800#define cradd2 XBYTE0 xFa00#define dwadd2
56、XBYTE0 xB900#define dradd2 XBYTE0 xFb00#define cwadd1 XBYTE0 xB400#define cradd1 XBYTE0 xF600#define dwadd1 XBYTE0 xB500#define dradd1 XBYTE0 xF700#define daaddr XBYTE0X2fff#define adaddr XBYTE0X5fff#define ramaddr XBYTE0X0001#define keyaddr XBYTE0XC000sbitACC_0=ACC0;sbitACC_1=ACC1;sbitACC_2=ACC2;sb
57、itACC_3=ACC3;sbitACC_4=ACC4;sbitACC_5=ACC5;sbitACC_6=ACC6;sbitACC_7=ACC7;#define dacs XBYTE 0X9fFF /高频信号源产生地址#define display_on 0 x3f;#define display_off 0 x3e;#define para1 0 x40;#define start_line0 0 xc0;idata unsigned char keyv;sbit sclk = P10; /TLC2543时钟信号线sbit din = P11; /TLC2543串行数据输入线sbit dou
58、t = P12; /TLC2543串行数据输出线sbit cs = P14; /TLC2543片选信号线sbit jdq0 = P30; /继电器标志sbit jdq1=P31; /继电器标志bdata char cjn;sbit cj0=cjn0;sbit cj1=cjn1;sbit cj2=cjn2;sbit cj3=cjn3;sbit cj4=cjn4;sbit cj5=cjn5;sbit cj6=cjn6;sbit cj7=cjn7;bit cj;bit flag;unsigned int com,dat1;float xf,yf;unsigned char code_1,count1
59、;idata unsigned int ad058;float average5;sbit fq_up=P16;sbit reset=P17;idata unsigned int vio8,vlo8;idata unsigned char *lcdpointer1=&cradd1,*lcdpointer2=&cradd2;code unsigned char CHTAB488= 0 x00,0 x3E,0 x51,0 x49,0 x45,0 x3E,0 x00,0 x00, /*0=0h*/ 0 x00,0 x00,0 x42,0 x7F,0 x40,0 x00,0 x00,0 x00, /*
60、1=1h*/ 0 x00,0 x42,0 x61,0 x51,0 x49,0 x46,0 x00,0 x00, /*2=2h*/ 0 x00,0 x21,0 x41,0 x45,0 x4B,0 x31,0 x00,0 x00, /*3=3h*/ 0 x00,0 x18,0 x14,0 x12,0 x7F,0 x10,0 x00,0 x00, /*4=4h*/ 0 x00,0 x27,0 x45,0 x45,0 x45,0 x39,0 x00,0 x00, /*5=5h*/ 0 x00,0 x3C,0 x4A,0 x49,0 x49,0 x30,0 x00,0 x00, /*6=6h*/ 0 x
温馨提示
- 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
- 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
- 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
- 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
- 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
- 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
- 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。
最新文档
- 护理课题申报的流程与要点
- 医院感染预防的持续改进工具
- 基于无人机的物流配送技术研究与应用
- 基于环保理念的绿色产品设计思路和实施方法
- 廉政风险防控体系建设规范
- 零售业店长岗位技能与职责解析
- 基于区块链技术的互联网医院财务管理模式
- 基于虚拟现实的远程教育技术应用
- 六年级上册英语导学案-Module7 Unit2 pandas love bamboo|外研社(三起)(无答案)
- 旅游行业景区开发面试要点分析
- 2026年安庆医药高等专科学校单招综合素质考试题库及答案详解(各地真题)
- 2025至2030中国智能射击装备行业市场运行分析及发展前景与投资研究报告
- 既有公共建筑节能改造技术标准
- 初中七年级历史大概念视域下第一单元“隋唐繁荣与开放”深度复习导学案
- 妇科妇科肿瘤化疗护理
- 货车尾板装卸培训课件
- 2025年江苏省(专升本)医学综合考试真题及答案
- 2026年辅警面试常见试题及深度解析
- 矿山地质安全教育培训课件
- 2026年及未来5年市场数据中国腐植酸衍生品行业发展趋势及投资前景预测报告
- 机械加工安全培训资料教学
评论
0/150
提交评论