基于ATmega 8单片机的电子元件测试仪毕业设计论文.doc
本科毕业设计基于ATmega 8单片机的电子元件测试仪学生姓名: 学 号: 专 业: 电子信息工程 年 级: 2008级2班 指导教师: The ATmega 8 microcontroller-based electronic components testerStudent name Student number Major Electronic Information EngineeringSupervising teacher University摘 要随着电子科技的发展,电子元器件的广泛应用,电子元器件的测量显得愈来愈重要。因此,设计可靠、安全、便捷的电子元件测试仪具有极大的现实必要性。在系统的硬件设计中,以ATmega 8单片机为核心的电子元件测试仪,使用对应的震荡电流对被测元件进行充放电计算实现各个参数的测量。该系统通过测试电路进行信号输入,取平均等技术获得较理想的测试结果。目前能够完成对电阻器电容器这些基本电子元件测试,还能对大部分半导体器件参数的测试。论文详细说明该系统的基本原理、硬件框架、主要电路以及软件框架。对该课题的研究有助于了解电子元件的各个参数与电子元件的优劣。在应用设计实践中,电子元件的测量是一个重要的发展方向。关键词:ATmega 8单片机;测试仪;LCD1602 AbstractWith the development of electronic technology, electronic components widely used in the measurement of the electronic components are increasingly important. Therefore, the design is reliable, safe, and convenient electronic components tester has a great practical necessity.In the hardware design of the system to ATmega 8 microcontroller as the core of the electronic component tester, the shock current charge and discharge the measurement of various parameters on the measured components. The system passed the test circuit, the signal input, take the average and other technology to get better test results. Able to complete these basic electronic components resistor capacitor test, but also most of the semiconductor device parameters of the test. The paper detailed the basic principles of the system, the hardware framework, the main circuit and software framework.On the subject of research helps to understand the performance of the various parameters of the electronic components and electronic components. In the large-scale equipment design practice, the measurement of electronic components is an important direction of development.Key words: ATmega 8 MCU; Tester; LCD1602目 录摘 要IABSTRACTII目 录I第1章 电子元件测试系统的背景、意义及技术路线1第1节 电子元件测试系统的背景1第2节 电子元件测试系统的意义1第3节 技术路线1第2章 系统硬件电路设计与软件设计4第1节 电子元件测试系统功能说明与组成4第2节 系统硬件配置及说明4第3节 电子元件的测量原理8第4节 主程序软件流程图8第3章 测试结果10第1节 参数测试结果10第2节 误差分析11结 论12参考文献13附 录14致 谢20第1章 电子元件测试系统的背景、意义及技术路线第1节 电子元件测试系统的背景电子元件测试仪是电子设计中应用广泛的测试仪器之一。目前市场上存在多种电子元件测试仪,普遍用于观察及测量电子元件各种输入输出特性,其性能较好、精度较高。但是这些仪器一般采用模拟电路制作,制作复杂,而且价格昂贵。一些小型的电子元件测试仪采用数字电路制作,价格低廉,但测量精度较低,测量的参数种类较少,而且一般只能测量输出特性。因此本次设计了一个构造简单,使用方便,精度高,自动化程度高及成本低的电子元件测试系统。对于电阻器电容器这些基本电子元件通常采用电桥法测量其阻值,而对晶体二极管、三极管、场效应管、晶闸管这些半导体电子元器无法用电桥法测量其各项参数,所以一般使用晶体管特性图示仪和晶体管直流参数测试仪测量半导体电子元器件的各项参数第2节 电子元件测试系统的意义随着人们生活水平的提高,电子产品DIY的盛行,这些都需要对电子元件参数进行较准确测量。对于普通的电子爱好者来说需要一个体积小巧价格便宜的测量设备,所以就制作一个适合电子爱好者使用的测量仪器。单片机为核心,测量电子元器件的参数,自动识别电子元器件的引脚并显示在液晶上,当电子元器件取下后被测参数锁定在液晶上,更能直观的了解电子元器件的参数及好坏情况,只需按一下测试按钮,即可进行下一次测量,完全实现了一键操作的功能。通过本次基于ATmega 8单片机的电子元件测试仪的制作,可以了解、熟悉有关单片机开发设计的过程,提高单片机编程技巧,了解I/O控制情况和各个引脚的功能。能更好的掌握单片机的编程算法,提高编程技巧。第3节 技术路线单片机在实现电子产品智能化方面扮演着重要的角色。本设计在众多型号的单片机中选用了ATMEL 公司开发ATmega 8单片机。ATmega 8单片机继承了C51单片机和PIC单片机,运行速度快、功能强大的优点,是一款面向C语言编程的单片机1。本设计结构非常简单,除了能够测量电阻器电容器等常用的基本元器件还能识别多种常用的晶体管,如二极管、三极管、晶闸管及场效应管的功能。系统的选择方案与论证如下:3.1 核心模块的选择鉴于核心模块在整个测量系统中的重要地位,这里给出了核心处理器的几种设计方案,对各方案进行详细介绍,并从中选择了一种适用于本次设计的方案。方案一:测试仪由NE555和R1、R2、C1组成无稳态多谐振荡器及待测晶体管组成的驱动级构成。可测NPN三极管和PNP三极管的好坏,并估计其ß值。振荡器的震荡频率f=1.44/(R1+2R2)C1,图示参数的震荡频率约为850Hz。若插上元件后无声,说明元件已坏;若是声小,说明ß低;声音大,说明ß高。其原理图如图1-1所示。图1-1 NE555 晶体管测量仪方案二:采用8位单片机AT89S52作为系统核心。系统的输入输出特性测量和频率特性测量部分各使用一片单片机控制。由芯片ADC0809、运放OPA27 和INA120 构成电压采样电路,数控电流源采用了DA转换芯片DAC0832,在电路中应用了CMOS电流开关和控制电路来测量元件。并且采用DDS芯片AD9852形成单片机控制的数控频率源。经过这些部分的链接将示波器的两个通道Y1、Y2接到电路上就可以实现晶体管频率特性的测量。方案三:选用ATmega 8单片机,在测量时使用其内部ADC端口采集数据后对数据进行判断,进而得出被测对象类型及具体参数。方案选择论证:在本次设计中,为了让测量得更准确、更稳定,系统的核心制作应具有电路简单、功能强大、可靠性高、便于扩展等优点,显然用ATmega 8单片机来制作的晶体管测试仪符合了体积小、使用方便可靠性高等要求,可以满足人们的要求。因此方案三更适合本次设计。3.2 显示模块方案显示部分是测量系统中实现人机交互的重要模块,准确实时的显示元件参数。常用的显示方案有以下几种:方案一:通过电平转换芯片MAX232使该设计与电脑进行数据之间的传输,在上位机界面显示测量结果。方案二:LCD1602液晶能显示16×2个字符,并且有串行和并行数据传输方式,可以通过1602液晶显示元件的参数,可以满足本设计的基本需求。方案选择论证:在方案一中,通过串口实现在电脑上显示元件参数使设计对电脑的依赖性很大,违背了简单方便的原则。LCD1602可以实现数据在其屏幕上用英文的形式显示出来。本设计采用LCD1602串行控制方法对其测量结果进行显示。3.3 供电模式的选择电,是一个系统的能量来源,因此对供电的选择也是十分的重要。供电模式分为以下三种方案:方案一:使用外接电源供电。方案二:使用内部电池供电。方案三:外接电源与内部电池并用。方案选择论证:通过长时间的实践经验,我选择了方案三,既使用外部电源和电池并用的方法给系统供电,在正常的情况下使用外接电源,在户外或不便时通过9V电池对系统供电使用起来非常方便。第2章 系统硬件电路设计与软件设计第1节 电子元件测试系统功能说明与组成1.1电子元件测试仪的主要功能如下:1电阻器和电容器的测量2自动检测NPN和PNP三晶体管,N沟道和P沟道MOSFET,二极管(包括双二极管),晶闸管3自动检测和测试元件的引脚4测量MOSFET的栅极阈值电压和栅电容5使用液晶LCD1602显示数据6一键操作,自动测量1.2电子元件测试仪的系统组成该智能晶体管测量仪主要由主控制器模块、晶体管测试模块、显示模块、测试按键模块、电源模块组成。系统框图如图2-1。主控制器ATmega 8单片机显示模块LCD1602键盘测试模块晶体管检测模块系统电源模块图2-1 系统整体框图第2节 系统硬件配置及说明2.1电子元件测试系统原理图图2-2为系统原理图,原理图中ATmega 8单片机为整个系统的核心部分,系统中,程序是假设IO口输出1时,其端口电压肯定为0,无论其输出多少电流。但实际上如果被拉的电流多了,该点电压会下降的。所以系统程序是依赖于电源供电,必需要带+5V稳压,并用一个AD通道监测输入电压以保证稳压芯片两端有足够压降。使用LCD1602作为显示输出,S1为测试按键。R11为检测供电电压,R12用来校准ATmega 8单片机内部ADC。根据实际测量值计算转换因子。采样电阻R1R7对结果影响很大,所以需要每个电阻的阻值尽量接近680和470K。图2-2 系统原理图2.2 主控制芯片ATmega8单片机的介绍AVR的单片机可以广泛应用于计算机外部设备、工业实时控制、仪器仪表、通讯设备、家用电器等各个领域。ATmega 8单片机是ATMEL公司在2002年第一季度推出的一款新型AVR高档单片机。ATmega 8单片机的芯片内部集成了较大容量的存储器和丰富强大的硬件接口电路,具备AVR高档单片机MEGE系列的全部性能和特点。但由于采用了小引脚封装,所以其价格仅与低档单片机相当,同时也为单片机的初学者提供了非常方便和简捷的学习开发环境2。ATmega8单片机的特点如下:高性能、低功耗的8位AVR微控制器,先进的RISC精简指令集结构先进的RISC结构,130条功能强大的指令,大多数为单时钟周期指令,32个8位通用工作寄存器工作在16MHz时,具有16MIPS的性能片内集成硬件乘法器片内集成了较大容量的非易失性程序和数据存储器以及工作存储器。具有丰富强大的外部接口性能有16位定时计数器1个具有独立振荡器的异步实时时钟,8通道A/D转换(TQFP、MLF封装),6路10位A/D+2路8位A/D,6通道 A/D转换(PDIP封装),4路10位A/D+2路8位A/D,带片内RC振荡器的可编程看门狗定时器,片内模拟比较器,可控制的上电复位延时电路和可编程的欠电压检测电路,外部和内部的中断源18个。最多23个可编程I/O口,可任意定义I/O的输入输出方向;输出时为推挽输出,驱动能力强;输入口可定义为三态输入,可以设定内部带上拉电阻,省去外接电阻3。2.3 ATmega 8单片机的引脚配置图2-3 ATmega 8引脚图ATmega 8单片机引脚说明:端口C(PC7PC0)作为A/D转换器的模拟输入端。端口C为8位双向I/O口,具有可编程的内部上拉电阻。其输出缓冲器具有对称的驱动特性,可以输出和吸收大电流。作为输入使用时,若内部上拉电阻使能,端口被外部电路拉低时将输出电流。在复位过程中,即使系统时钟还未起振,端口C处于高阻状态。端口B(PB7PB0)为8 位双向I/O口,具有可编程的内部上拉电阻。其输出缓冲器具有对称的驱动特性,可以输出和吸收大电流。作为输入使用时,若内部上拉电阻使能,端口被外部电路拉低时将输出电流。在复位过程中,即使系统时钟还未起振,端口B处于高阻状态。也可以用做其他不同的特殊功能。端口D(PD7PD0)为8 位双向I/O口,具有可编程的内部上拉电阻。其输出缓冲器具有对称的驱动特性,可以输出和吸收大电流。作为输入使用时,若内部上拉电阻使能,则端口被外部电路拉低时将输出电流。在复位过程中,即使系统时钟还未起振,端口D处于高阻状态。端口D也可以用做其他不同的特殊功能。RESET复位输入引脚。持续时间超过最小门限时间的低电平将引起系统复位。持续时间小于门限间的脉冲不能保证可靠复位4。引脚XTAL1为反向振荡放大器与片内时钟操作电路的输入端。XTAL2为反向振荡放大器的输出端。AVCC是端口A与A/D转换器的电源。不使用ADC模块时,该引脚应直接与Vcc连接。使用ADC时应通过一个低通滤波器与Vcc连接。AREF为A/D的模拟基准输入引脚5。2.4其他元件说明在本设计中采用L7805三端稳压IC来组成稳压电源,所需的外围元件极少,电路内部还有过流、过热及保护电路,使用起来可靠、方便,而且价格便宜。图2-5为L7805实物图。图2-5 L7805实物图本设计采用LCD1602液晶作为显示部分,LCD1602液晶能显示16×2个字符,并且使用四线制数据传输方式。LCD1602采用标准的16脚接口,其中引脚说明如下:第1脚为Vss为电源地。第2脚为VDD接5V电源正极。第3脚是V0为液晶显示器对比度调整端,当接正电源时对比度最弱,接地电源时对比度最高。第4脚为RS为寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄存器。第5脚为RW为读写信号线,高电平时进行读操作,低电平时进行写操作。第6脚是E端为使能端。D0D7为8位双向数据端。LCD1602的背灯电源为15脚背光正极,16脚背光负极。图2-6为LCD1602的实物图。图2-6 LCD1602实物图第3节 电子元件的测量原理电子元件的测试仪的测试电路如图3-1所示,PX、PY、PZ分别接入ATmega 8单片机的ADC模块引脚,PX1、PX2、PY1、PY2、PZ1、PZ2分别接入ATmega 8单片机端口B双向I/O口,当X Y Z引脚接入被测元件后,按下测试按钮,程序就会分别设置X Y Z通道电平,分别测量X Y Z这3个通道电阻上是否存在电压,所有ADC通道都进行对X Y Z通道上电阻上压降的采样,只要任意一个通道上电阻有压降说明导通了,只要导通则记录其状态,然后根据对照真值表可以得出X Y Z引脚接的是电子元件中哪一只引脚。程序的关键就是各种元件的真值表,元件真值表与元件判断程序见附录。图2-7 被测电路第4节 主程序软件流程图主程序功能是初始化及按键监控。如图3-2所示,本设计程序流程图,本次设计采用了ATmega 8内部ADC模块实现数据采集与分析,最后取平均值,达到更精确。最后由LCD1602显示出晶体管的参数。当被测晶体管接入电路后按下测试按键等待数秒后液晶上就会显示该晶体管的具体参数,从而实现晶体管的测量。部分程序见附录。开始初始化数据处理AD采样LCD1602显示结束有键按下?是否图2-8 系统流程图第3章 测试结果第1节 参数测试结果用本套系统对实验室现有的电子元器件进行测量,相应的数据如表4-1到表4-4所示。表4-1电阻参数测试结果电阻阻值3510010273599710 K9.8 K1M 9092K 表4-2二极管参数测试结果AKUf红色发光LED121708mV绿色发光LED212926mV二极管IN400121697 mV二极管IN400731687mV表4-3电容参数测试结果电容引脚引脚Uf103J319.92nF473J3144.56nF47431466.49nF4.7uF314.40uF220uF31183.81 uF330uF31264.49uF表4-4 半导体元件参数测试结果元件型号引脚引脚引脚C8550PNPB=2C=3E=1Hfe=218Uf=893mV8050DNPNB=2C=3E=1Hfe=158Uf=805mVA1015PNPB=1C=2E=3Hfe=653Uf=785mV9015PNPB=1C=2E=3Hfe=762Uf=780mVE1300SNPNB=1C=2E=3Hfe=51Uf=648mV6N60N-E-MOSC=0.16nGDS=123Vt=4080mV由于使用的采样电阻不是很精确,在焊接上也存在导线的内阻,因此在对电阻器电容器的测量上随着参数的增加精确度也随之降低。而对半导体元件参数的测量可以准确的测量出元件的型号与引脚排布。第2节 误差分析误差,在任何一种测量中,无论所用仪器多么精密,方法多么完善,实验者多么细心,所得结果常常不能完全一致而会有一定的误差或偏差。严格地说,误差是指观测值与真值之差,偏差是指观测值与平均值之差。但习惯上常将两者混用而不加区别。根据误差的种类、性质以及产生的原因,可将误差分为系统误差、偶然误差和过失误差三种6。在本设计中系统误差就是在信号输入的部分的680电阻470K电阻的精度上,因为在实验室没有精度那么高的电阻,因此采用了阻值比较接近的电阻代替,从而产生了系统误差。偶然误差和过失误差的产生在于对电路的焊接与测量得方法上,在焊接过程中必然导致线路阻值对电路的影响。在测量过程中,电子元件的引脚与插座之间的接触不良或是悬空也对产生偶然误差和过失误差 7。结 论本文论述了基于ATmega 8单片机的电子元件测试仪的原理,实现了晶体管的数据、信息的显示。阐述了ATmega 8单片机的基本原理和测量过程中的数据传送方式。在单片机方面针对ATmega 8单片机ADC端口的特点、工作原理、数据采集的控制,各种工作方式等问题进行了讲解。数据采集介绍了如何在单片机与硬件电路的连接,阐述了如何利用ADC模块来进行数据采集,保证通信过程不出现逻辑紊乱。经过一段时间的收集资料,我的设计终于完成,看着自己的成果,有说不出的感触。经过这段时间的努力,对我所学知识有了系统的总结。在本设计中,我主要是说明它的原理和应用,然后针对半导体器件、电容、电阻的测量实现测量功能,让我学会了分析问题、处理问题的方法,为以后的工作学习打下了比较坚实的基础。总之,在设计过程学到了许多,作为现代的大学生,如果仅仅停留在以往的书面层次上,是远远跟不上时代步伐的,也无法使自己立足在竞争如此激烈的社会里。通过对本课题的研究,让我看到了自己的水平和差距,使我受益匪浅。参考文献1 耿德根,宋建国,马潮等,AVR高速嵌入式单片机原理与应用(修订版)M,北京:北京航空航天大学出版社,(2002):185-1902 江海波,王卓然,耿德根,深入浅出AVR M,北京:中国电力出版社,(2007):6-123 沈文,Eagle lee,詹卫前,AVR单片机C语言开发入门指导 M,北京:清华大学出版社,(2003):2-164 马潮,詹卫前,耿德根,ATmega 8原理及应用手册 M,北京:清华大学出版社,(2003):1-115 RichardBarnett, Larry OCull,嵌入式C编程与Atmel AVR M,Ssrsh Cox,周俊杰等译,北京:清华大学出版社,(2003):1-116 李明生,电子测量与仪器M,北京:高等教育出版社,(2003):215-2257 刘建清,刘汉文,寻李波,鲁金,从零开始学电子测量技术 M,北京:国防工业出版社,(2006):2-8附 录1.FET2、BJT的真值表与FET的真值表附表1-1 FET2的真值表设置X000111状态字Y011001Z101010NMOSX×××0X13ZYX×××0X23YZY×××0X0DZXY×××0X29XZZ×××0X0EYXZ×××0X19XYPMOSX×××0X32ZYX×××0X31YZY×××0X2CZXY×××0X25XZZ×××0X1CYXZ×××0X16XY附表1-2 BJT的真值表设置X000111状态字Y011001Z101010二极管X×××××0X20YY×××××0X10XX×××××0X2ZZ×××××0X1XY×××××0X8ZZ×××××0X4Y电阻X××××0X30YX××××0X03ZY××××0X0CZNPNX/Y××××0X18XY/ZX/Z××××0X22YZ/XX/Y××××0X5ZY/XPNPX/Z××××0X25YZ/XZ/Y××××0X1CXY/ZX/Y××××0X16ZY/X附表1-3 FET的真值表设置X000111状态字Y011001Z101010NJFETY×0X3dX/ZZ/XX×0X37Y/ZZ/YZ×0X3eX/YY/XP_JFETY×0X2fX/ZZ/XX×0X3bY/ZZ/YZ×0X1fX/YY/X2判断程序如下Code unsigned char DIODETABLE6=0x12,0x6,0x24,0x21,0x18,0x09; / 对应 X Y Z为 10Z 01Z Z10 Z01 1Z0 0Z1 Code unsigned char DIODEVOLTAGETABLE6=VY2,VX2,VZ2,VY2,VZ2,VX2; /该状态下需要读取的AD通道 state=0; for(i=0;i<12;i+) SetPortZ(i); /设置所有输出为高阻 /下面设置 X Y Z分别输出 0 1 Z(共6种组合),得到被测管状态,根据状态判断被测管是啥类型 引脚如何 for(i=0,state2=0x20;i<6;i+) vH=DIODETABLEi; SetPort(PZ1,vH&0x3); vH>>=2; SetPort(PY1,vH&0x3); vH>>=2; SetPort(PX1,vH&0x3); GetADC(DIODEVOLTAGETABLEi); vH=ADC_DATA; if (vH>0) state |=state2; / if vH>0 说明Vh已经大于20mV了,即已经导通了。 else SetPortZ(PX1); /但如果接的是很大阻值的电阻,那么470上的电压很低,也会少于20mV,以为没导通,所以撤换成R=120K再测量。 SetPortZ(PY1); SetPortZ(PZ1); vH=DIODETABLEi; SetPort(PZ2,vH&0x3); /切换到 120K vH>>=2; SetPort(PY2,vH&0x3); vH>>=2; SetPort(PX2,vH&0x3); GetADC(DIODEVOLTAGETABLEi);vH=ADC_DATA; if (vH>3) state |=state2; / if vH>3 mean vH more then 3*4*5mV=60mV SetPortZ(PX2);SetPortZ(PY2); SetPortZ(PZ2); state2>>=1; Switch (state) case 0x22: / NPN X=B NPN管 基极是X state2=1; if (TestBJT(1,PinX,PinY,PinZ,&VBE,&HFE,&IC) /尝试BCE 如果管子可以测出参数,则TestBJT返回1, 并测出参数写在VBE HFE IC返回参数中 Pin=1; Else if (TestBJT(1,PinX,PinZ,PinY,&VBE,&HFE,&IC) /再尝试 B E C排列并测出参数, Pin=2; /BEC else Pin=0; break; case 0x18: / NPN B=Y state2=1; if (TestBJT(1,PinY,PinX,PinZ,&VBE,&HFE,&IC) /CBE Pin=4; Else if (TestBJT(1,PinY,PinZ,PinX,&VBE,&HFE,&IC) /EBC Pin=5; else Pin=3; break; case 0x5: / NPN B=Z 3实物图附图1-1 实物图附图1-2 电路板