电容、电感测量仪.docx
单片机技术课程设计说明书电容电感测量仪学院:电气与信息工程学院学生姓名:刘仁指导教师:凌云职称讲师专业:电气工程及其自动化班级:电气XXXX班学号:XXXXXXXXXXXX完成时间:2016年XX月近几年来,电子行业的开展速度相当快,电子行业方面的人才需求不断增多。为社会培养大量的电子行业的人才。做过电路设计的工作人员或者学生大多数使用万用表来测量一些元件参数或者电路中的电压电流。然而万用表有一定的局限性,它只能测量有限种类的元器件的参数,对于电容和电感等一些电抗元件就无能为力了。所以制作一种简便的电容电感测量仪显得尤为重要。本次做的电容、电感测量仪主要是由:单片机最小系统、供电模块、显示模块、外围测量电路四大块组成。单片机最小系统主要以AT89S52芯片为主,将电容、电感对应的振荡电路转化为频率实现各个参数的测量。供电模块由4个IN4007二极管和1.M7805稳压而得。显示模块以功耗小的1.CDI602液晶显示屏显示所测的数值。外围测量电路那么以1.M393芯片将所测的值整合出来。该设计完成的功能是将电容容值、电感感值的变化均转换成方波脉冲频率的变化,利用计数器测频后通过单片机做运算,最后计算出待测元件的各个参数并显示在1602液晶屏幕上。系统使用按键选择被测元件类型,使用1.CDI602液晶屏作为显示局部。测量时,只需将待测元件引脚放在测试仪的输入端,用按键操作需要测量的参数,便可以很快测出被测元器件的参数,简便易用。实验测试结果说明,本系统性能稳定,测量精度高。关键词:AT89S52;1.CD1602;1.M393;电容测量;电感测量1 绪论11.1 设计的背景及意义11.2 设计的主要工作12设计思想与方案32.1 设计的思想32.2 设计的方案33硬件系统的设计53.1 主要元器件的介绍53. 1.1AT89S52单片机54. 1.21.CD液晶显示屏55. 1.31.M393芯片的介绍66. 1.41.MN7805芯片的介绍87. 1.5自锁开关的介绍88. 1.69014、9015三极管的介绍83.2 硬件单元电路设计103.2.1时钟电路103.2.2下载电路103.2.3复位电路113.2.4液晶显示电路113.2.5电源电路123.2.6电容、电感测量电路124程序流程图设计144.1主程序流程图144.2中断程序流程图144.3液晶显示程序流程图154.4按键程序流程图165系统的调试与结果分析175.1 软件调试175.2 硬件调试175.3 调试结果及分析19结束语20参考文献21致谢22附录23附录APCB图23附录B元件清单24附录C实物图25附录D程序清单261绪论1.1 设计的背景及意义在现代化生产、学习、实验当中,往往需要对某个元器件的具体参数进行测量,在这之中万用表以其简单易用,功耗低等优点被大多数人所选择使用。然而万用表有一定的局限性,比方:不能够测量电感,而且容量稍大的电容也显得无能为力。所以制作一个简单易用的电抗元器件测量仪是很有必要的。现在国内外有很多仪器设备公司都致力于低功耗手持式电抗元器件测量仪的研究与制作,而且精度越来越高,低功耗越来越低,体积越来越小一直是他们不断努力的方向。该类仪器的根本工作原理是将电阻器阻值的变化量,电容器容值的变化量,电感器电感量的变化量通过一定的调理电路统统转换为电压的变化量或者频率的变化量等等,再通过高精度AD采集或者频率检测计算等方法来得到确定的数字量的值,进而确定相应元器件的具体参数。客观地说中国开发测试测量仪器还普遍比拟落后,影响中国测量仪器开展的因素有以下几点:(1)测试在整个产品流程中的地位偏低。(2)面向应用和现代市场营销模式还没有真正建立起来。(3)缺乏标准件的材料配套体系。然而近年来中国测试仪器有了很大的改观特别是通用电子测量设备研发方面,与国外先进产品的差距正在快速缩小,对国外电子仪器巨头的垄断造成了一定的冲击。随着模块化和虚拟技术的开展,为中国的测试测量仪器行业带来了新的契机,加上各级政府日益重视,以及中国自主应用标准研究的快速进展,都在为该产业提供前所未有的动力和机遇。从中国电子信息产业统计年鉴中可以看出,中国的测试测量仪器每年都以超过30%以上的速度在快速增长。在此快速增长的过程中,无疑催生出了许多测试行业新创企业,也催生出了批批可靠性和稳定性较高的产品。课程设计的意义在于培养学生学习、思考、动手的能力,让学生在整个过程中通过查询相关资料学习水位监控系统的有关理论知识,熟悉理论的同时要明白水位监控系统的工作原理,从而展开主要功能的实现。通过老师的指导,查询相关资料确定水位监控系统各个硬件模块的构建制作,以及完善软件系统和硬件系统。学生通过查询资料、设计方案、制作调试的过程,真正做到了理论实践相结合,这不仅对学生的学习能力、动手能力得到了相应的提高、更激发了学生自主学习、实践的兴趣。1.2 设计的主要工作电容、电感测量仪设计的主要任务是:电容、电感测量仪中硬件设计配合软件的设计,即电容、电感测量仪中的各个硬件模块设计配合软件设计,将硬件和软件结合起来,得出结果。(1)设计测量电容、电感的振荡电路;(2)设计测量的程序;(3)安装并进行实际测试,记录结果、分析;(4)总结。2设计思想与方案2.1 设计的思想电容、电感测量仪的设计,是为了能够准确的测量某一电容值或某一电感值的大小而设计的。要求设计的电容、电感测量仪使用简单、节约本钱、精确度高等特点。在设计中考虑到单片机具有物美价廉、功能强、使用方便灵活、可靠性高等特点,所以本次设计采用AT89S52单片机为核心实现电容、电感测量仪的控制。2.2 设计的方案随着现代科技进步与开展,电容、电电感测量仪设计有使用可编程逻辑控制器(P1.C)实现、有振荡电路与单片机结合来实现。两者都有各自特有的优点,P1.C具有功能强、容量大、工作可靠性高等优点;单片机具有使用方便、造价低、通用性好等特点。方案一:采用可编程逻辑控制器P1.C设计图1基于P1.C的系统框图方案二:基于单片机的设计图2基于单片机的系统框图本次设计采用以AT89S52单片机为核心的电容、电感测量仪设计。3硬件系统的设计3.1主要元器件的介绍3.1.1AT89S52单片机AT89S52是一种低功耗、高性能CMOS8位微控制器,具有8K可编程FIaSh存储器。使用Atmel公司高密度非易失性存储器技术制造,与工业80C51产品指令和引脚完全兼容。片上FIaSh允许程序存储器在系统可编程,亦适于常规编程器。在单芯片上,拥有灵巧的8位CPU和在系统可编程FlaSh,使得AT89S52在众多嵌入式控制应用系统提供高灵活、超有效的解决方案。另外,AT89S52可降至OHZ静态逻辑操作,支持2种软件可选择节电模式。空闲模式下,CPU停止工作,允许中断、RAM、串口、定时器/计数器工作。掉电保护模式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。AT89S52引脚图如图3所示。图3AT89S52引脚图3.1.21.CDI602液晶显示屏在日常生活中液晶显示器并不陌生。液晶显示模块已作为很多电子产品的通过器件,如在计算器、万用表、电子表及很多家用电子产品中都可以看到,显示的主要是数字、专用符号和图形。在单片机的人机交流界面中,一般的输出方式有以下几种:发光管、1.ED数码管、液晶显示器。发光管和1.ED数码管比拟常用在单片机系统中应用晶液显示器作为输出器件有以下几个优点:显示质量高、发光恒定、体积小、质量轻、功耗低、数字式接口、操作方便等。1.CD1602液晶显示屏实物图如图4所示。图4液晶显示屏实物图主要管脚描述如下:第1脚:VSS为地电源。第2脚:VDD接5V正电源。第3脚:Vo为液晶显示器比照度调整端,接正电源时比照度最弱,接地时比照度最高,比照度过高时会产生“鬼影”,使用时可以通过一个IOK的电位器调整比照度。第4脚:RS为存放器选择,高电平时选择数据存放器、低电平时选择指令存放器。第5脚:R/W为读写信号线,高电平时进行读操作,低电平时进行写操作。当RS和R/W共同为低电平时可以写入指令或者显示地址,当RS为低电平R/W为高电平时可以读忙信号,当RS为高电平R/W为低电平时可以写入数据。第6脚:E端为使能端,当E端由高电平跳变成低电平时,液晶模块执行命令。第714脚:D0D7为8位双向数据线。第15脚:A背光源正极。第16脚:K背光源负极。3.1.31.M393芯片的介绍1.M393,是双电压比拟器集成电路。1.M393是高增益,宽频带器件,像大多数比拟器一样,如果输出端到输入端有寄生电容而产生耦合,那么很容易产生振荡,这种现象仅仅出现在当比拟器改变状态时,输出电压过渡的间隙,电源加旁路滤波并不能解决这个问题,标准PC板的设计对减小输入一输出寄生电容耦合是有助的。减小输入电阻至小于IoK将减小反应信号,而且增加甚至很小的正反应量(滞回1.(TlOmV)能导致快速转换,使得不可能产生由于寄生电容引起的振荡,除非利用滞后,否那么直接插入IC(集成电路板integratedcircuit,缩写:IC)并在引脚上加上电阻将引起输入一输出在很短的转换周期内振荡,如果输入信号是脉冲波形,并且上升和下降时间相当快,那么滞回将不需要。比拟器的所有没有用的引脚必须接地。1.M393偏置网络确立了其静态电流与电源电压范围2.030V无关。1.M393实物图如图5所示。图51.M393芯片实物图1.M393引脚图及内部结构如图6所示。图61.M393引脚图及内部结构1.M393引脚功能排列表如表1所示。表11.M393引脚功能引出端序号功能符号引出端序号功能符号1输出端OUTl5正向输入端2IN+(2)2反向输入端IN-I6反向输入端2IN-(2)3正向输入端1IN+17输出端20UT24地GND8电源VCC3.1.41.M7805芯片的介绍1.M7805是最常用到的稳压芯片了,使用方便,用很简单的电路即可以输入一个直流稳压电源,它的输出电压恰好为5v,刚好是51系列单片机运行所需的电压,它有很多的系列如ka7805,ads7805,cw7805等,性能有微小的差异,用的最多的还是lm7805o1.M7805芯片如图7所示。图71.M7805芯片图其中1接整流器输出的+电压,2为公共地(也就是负极),3就是需要的正5V输出电压了。3.1.5自锁开关的介绍自锁开关一般指开关自带机械锁定功能,按下去,松开手后按键是不会跳起来的,处于锁定状态,需要再按一次,开关才会断开。在实际应用中很多时候都会碰到6脚自锁开关,所以在使用前必须明白6脚自锁开关的工作状态及方法。6脚自锁开关实物如图8所示。3.1.69014、9015三极管的介绍9014三极管是非常常见的晶体三极管,应用范围很广,比方:机、VCD.DVD、电动玩具等电子产品。主要用途,作为低频、低噪声前置放大。9014三极管(T0-92封装)管脚图(字符正对自己)1发射极,2基极,3集电极。9014三极管实物图如图9所示。图86脚自锁开关实物图图99014三极管实物图9015三极管是一种常用的普通三极管,它是一种小电压、小电流、小信号的PNP三极管。特性:集电极电流1.:Max-100mA;集电极-基极电压VCbO:-50V;工作温度:-55"CtO+150;和9014(NPN)相对5;开关应用,射频放大。9015三极管实物图如图10所示。图109015三极管实物图3.2硬件单元电路设计3.2.1时钟电路单片机的XTA1.l(19管脚)、XTA1.2(18管脚)接晶振Yl与电容片和C2,这种固定的结构与单片机内部的电路组成一个振荡器,产生单片机时钟脉冲信号。像这种由晶振配合产生的信号方式为内部时钟方式。晶振的频率决定了单片机的时钟频率。电容Cl和C2一般为2040pF,时钟电路如图11所示。图11时钟电路3.2.2下载电路下载电路通过下载口与单片机的6脚、7脚、8脚、9脚相连将程序下载到单片机的内部完成相应的工作,下载口电路如图12所示。图12下载口电路3.2.3复位电路复位电路一般有很多种方式,有手动复位、上电复位、积分型复位。也有很多种复位类型,有微分型复位电路、积分型复位电路、比拟器型复位电路和看门狗型复位电路。复位电路就是利用它把电路恢复到起始状态,确保电路稳定可靠的工作,复位电路如图13所示。图13复位电路3.2.4液晶显示电路本设计使用的1.CDI602液晶为5V电压驱动,带背光,可显示两行,每行16个字符,不能显示汉字,内置含128个字符的ASCH字符集字库,只有并行接口,无串行接口,液晶显示电路如图14所示。图14液晶显示电路3.2.5电源电路根据单片机电路需要可用1.M7805芯片和四个二极管通过整流、滤波等操作产生需要的直流电压大小。电源电路设计图如图15所示。图15电源电路设计图3.2.6电容、电感测量电路基于AT89S52单片机和1.M393芯片构成的1.C振荡电路电容、电感测量,这种测量方法主要是通过一块1.M393芯片来进行测量,主电路是一个1.M393组成的1.C振荡电路。由单片机测量1.C振荡电路的频率F,然后根据标准电容C,求出电容CX:cx=TT-1*cV2)其中,F是固有频率,F?是接入测试电容后的频率。对于电感,先有电容Cl求出电感1.1,从而得F:1.=G电容、电感测量电路图如图16所示。这种电容、电感测量方法简单,只要能够测出1.C振荡电路的频率,就可以测出相应的电容、电感值的大小。图16电容、电感测量电路图电解电容测量电路由比拟器U3B,放电晶体管QI、Q2等组成。通过测得的充电时间和充电电阻的大小可以计算出电容的大小,计算公式如下式(4)所示。C=-R电解电容测量图如图17所示。图17电解电容测量电路图4程序设计4.1主程序流程图主程序流程图主要进行一些初始化,有单片机时钟初始化、单片机端口初始化、定时器初始化、液晶显示屏初始化、开启总中断、进入低功耗模式。判断到底是进行测量电容的大小还是测量电感的大小。主程序流程图如图18所示。图18主程序流程图4.2中断程序流程图中断流程图为判断中断的选择,判断是否有键按下,首先插入被测元件,开关翻开后,按复位键,然后进行按键选择,选择被测元件的类型,判断插入的元件是电容或是电感。并将测量的值显示在液晶屏上。中断程序流程图如图19所zjO图19中断程序流程图4.3:位晶显TF程序流程图对于电容、电感测量采用1.CDI602液晶显示屏,显示所测电容值或电感值的数据,所以要对1.CDI602液晶显示屏进行初始化操作和读写操作,到达要求的目的。液晶显示流程图如图20所示。图20液晶显示流程图4.4按键程序流程图在本设计的模块中,模块是以单片机为核心,再通过按键控制测量的被测参数在液晶屏上显示,按键流程图首先是按键初始化,然后判断是否有键按下,键按下那么执行键功能,否那么等待按键操作。按键主流程图如图21所示。图21按键流程图5系统的调试与结果分析5.1 软件调试单片机开发中除必要的硬件外,同样离不开软件,汇编语言源程序要变为CPU可以执行的机器码有两种方法,一种是手工汇编,另一种是机器汇编,目前已极少使用手工汇编的方法了。机器汇编是通过汇编软件将源程序变为机器码,用于MCS-51单片机的汇编软件有早期的A51.随着单片机开发技术的不断开展,从普遍使用汇编语言到逐渐使用高级语言开发,单片机的开发软件也在不断开展,Keil软件是目前最流行开发MCS-51系列单片机的软件,这从近年来各仿真机厂商纷纷宣布全面支持KeiI即可看出。Keil提供了包括C编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境(UViSiOn)将这些部份组合在一起。运行Keil软件需要Pentium或以上的CPU,16MB或更多RAM、20M以上空闲的硬盘空间、WIN98>NT、WIN2000、WINXP等操作系统。5.2 硬件调试硬件电路通电后显示初始状态如图22所示。图22上电初始图接上电容显示如图23所示。图23电容测试接上电感显示如图24所示。图24电感测试5. 3测试结果及分析(1)电容测试数据如表2所示。表2电容测试数据读取示值(PF)振荡频率(Hz)标称值(PF)相对误差值(%)103316101051.010429962063.8220161995839.2(2)本次测试暂未对电感进行测试。13)测试分析:在实际测量中,由于测试环境,测试仪器,测试方法等都对测试值有一定的影响,都会导致测量结果或多或少地偏离被测量的真值。本测试修正值选取主要通过实验求取,对影响测量读数的各种影响因素,如温度、湿度、电源电压等变化引起的系统误差。通过对相同被测参数的屡次测量结果和不同被测参数的屡次测量选取平均值,最后确定被测参数公式的常数K值,从而到达减小本设计系统误差的目的。由于振荡电路外围器件由电容电阻分立元件搭接而成,所以由振荡电路产生的被测参数对应的频率有一定的误差,所以只能通过屡次实验测量,选取适宜的修正值来尽可能的减少本测试系统的误差。结束语通过对电容、电感测试仪的课题设计,了解了简易电容、电感测量仪的用途及工作原理,熟悉了其的设计步骤,锻炼了实际动手能力,增强了解决实际工程问题的能力,同时也提高查阅文献资料、设计标准以及电脑制图等其他专业能力水平。(1)本次课程设计主要由电容、电感测量仪的开展背景及意义而引出电容、电感测量仪的设计,要知道本次设计的思想与方案,本次设计方案选择以AT89S52单片机为核心的设计。(2)硬件系统的设计,首先介绍个元器件的功能、外形及用法;然后对各个模块电路进行设计,满足设计需要的要求;其次那么是将电路中的各个模块电路整合;最后利用AD软件画出电路原理图及PCB图。利用ViSio软件进行程序流程图设计,程序流程图主要包括中断程序流程图、主程序流程图、液晶显示流程图及按键流程图。利用软件编写电容、电感测量仪的C语言程序。(4)将程序烧到单片机内,进行系统的调试与结果分析。虽然本系统完成了设计要求,但其中仍然存在着很多需要改良的地方。比方作品实测中,测量电容值有一定的误差,未能做到准确测量电容和电感值的大小,测量范围较小,感到有点儿遗憾。并且本次设计是用1.M393比拟器做的振荡电路,亦可以选择555触发器来实现。希望下次的电容、电感测量仪能实现电阻、三极管等一些元器件的测量。参考文献1申忠如,申淼,谭亚丽.MCS-51单片机原理及系统设计M.西安交通大学出版设,20082申忠如,郭福田,丁晖.现代测试技术与系统设计M.西安:西安交通大学出版社,2006.3付家才.单片机控制工程实践技术M.北京:北京化学工业出版社,20044李桂安.电子技术实验及课程设计M.南京:东南大学出版社,20085吴友宇主编.模拟电子技术根底M.北京:清华大学出版社,20096郭天祥主编.51单片机C语言教程一入门、提高、开发、拓展全攻略M.北京:电子工业出版社,20097聂典,丁伟.MultisimlO计算机仿真一在电子电路设计中的应用M.北京:电子工业出版社,20098铃木雅臣.晶体管电路设计M.北京:科学出版社,20129付晓光.单片机原理与使用技术M.北京:清华大学出版社,200810杨欣,莱诺克斯,王玉凤,刘湘黔.电子设计从零开始M1.北京:侵华大学出版社,2013时光匆匆,转眼一学期已接近尾声,从单片机课课程设计的选课题到完成课程设计这两周时间内,我遇到好多困难,硬件设计中、软件设计中,都出现了好多问题,迷茫不知所措,最终我都克服了它。在此,非常感谢在课程设计中帮助过我的老师和同学!特别感谢我的指导老师,凌老师!她也是我们单片机任课老师,感谢她课堂上对我们的认真教导,以及在做课程设计时对我的指导与帮助。因此,我要非常感谢我的指导老师凌老师,以及在背后默默支持我和帮助我的同学和朋友!附录附录APCB图附录B元件清单元件型号位号数量排阻A103JJl1电位器IOKRlO1晶振12MXl1电阻2KR1,R2,R133瓷片电容104(0.IuF)C12,C132电阻IKR4,R8,R9,R11,R125电阻100KR5,R6,R73电阻IOKR17,R182电阻5.6KR151电阻100R141电阻47KR31瓷片电容105(IuF)C141电位器502R161电解电容50V,IOFC5,C6,C7,C84三极管9014(NPN型)Q21三极管9015(PNP型)Ql1瓷片电容22pCl,C22电解电容50V,470uFC3,C4,C93二极管1N4007Dl,D2,D4,D54电感100UH1.l1液晶显示屏1.CD1602J91比拟器1.M393U3A,U3B2自锁开关6脚3下载口JPI11.ED灯Sl1排针8万用板2附录C实物图附录D程序清单课题名称:电容、电感测量仪设计基于单片机AT89S52)刘仁指导老师:凌云完成时间:2015年6月*系统有关端口和函数头文件定义*include<reg52.h>include<intrins.h>defineucharunsignedchar#defineuintunsignedint/=1.CD16O2接口连接方法=/*DBO-PO.0DB4-PO.4RWP2.3nn_-DA111R二_-DACIDQ_-DOUdI1U1IUIKorZ4DB2-PO.2IDB6-PO.6EP2.2DB3-PO.3DB7-PO.7II*/=*/define1.CMDataPO/1.CD1602数据接口defineBusy0x80用于检测1.CM状态字中的Busy标识sbit1.CM_RW=P23;读写控制输入端,1.CDI602的第五脚sbit1.CM_RS=P2a4;存放器选择输入端,1.CDI602的第四脚sbit1.CM_E=P22;使能信号输入端,1.CD1602的第6脚sbitint-int=P32;sbitl_button-P2P;电感测量控制开关;sbitc_button=P2l;电容测量控制开关;sbitf_button=P26;频率测试控制开关;sbitmin_elect_JbUttOn=P2,;小电容测试控制开关sbitmax_elect_c_button=P36;小电容测试控制开关sbitfangdianbutton=P2八5;电解电容测量时放电控制脚/*函声明*voidWriteData1.CM(UCharWD1.CM);1.CD模块写数据voidWriteCommancl1.CM(ucharWC1.CM,BuysC);1.CD模块写指令ucharReadStatus1.CM(void);读1.CD模块的忙标voidDisplayOneChar(ucharX,ucharY,ucharASelI);在第X+1行的第Y+1位置显示一个字符void1.CMInit(Void);1.CD初始voiddelayms(uintms);IMS基准延时程序voidDisplay1.istChar(ucharX,ucharY,uchardelayms,ucharcode*DData);voidjudge_xianshi(void);显示处理程序voidlxdisplay();voidcx_displayO;voidfx_displayO;voidinit_tO();voidStriVefI();求取Flvoidstrive_f2();求取电感的大小voidStriVJCX();求取小电容1无极性电容)的大小voidStriVe_fX();测试外边频率voidstrive_min_c();小电容测试voidStriVe_max_c();大电容测试uchartcrycle=0;ucharf_crycle;ucharfIagl;/uchardisplayflag;uintfl,temp,f2;longryz;mainO(fangdianbutton=1;1.CMInitO;init_tO();StriVe_f1();求取FlDisplay1.istChar(0,0,0,“F1.CTester");while(l)(strive_f2();求取Flstrive_cx();strive_fx();strive_min_c();strive_max_c();judgexianshi();)voidjudgexianshi()lx_displayO;cx_display();fxdisplay();voidstrive_max_c()大电解电容测试max_elect_c_button=l;置为l,准备判断小电容测量开关的状态,上电时这个开关比拟弹起if(maxelect_c_button-0)f_crycle=0;fangdianbutton=0;delayms(250);fangdian_button=1;TMOD=OXl0;设定TO以工作方式1定时THl=O;T1.l=O;EA=I;ETl=1;允许定时器0中断TRl=I;intint=l;while(intO_int=l);TRl=O;ryz=0;ryz=f_crycle*50000;ryz+=THl*256+T1.l;DisplayOneChard,3,Display0neChar(1,4,DisplayOneChar(1,5,DisplayOneChard,6,DisplayOneChard,7,Display1.istChard,0,0,"Cx=");ryz1000000%10+0x30);ryz100000%10+0x30);ryz10000%10+0x30);ryz1000%10+0x30);ryz100%10+0x30);DisplayOneChar(1,8,'.');DisplayOneChard,9,ryz10%10÷0x30);DisplayOneChard,10,ryz%10+0x30);Display1.istChard,11,0,“UF);voidStriVC_min_c()小电容测试min_elect_JbUttOn=1;置为1,准备判断小电容测量开关的状态,上电时这个开关比拟弹起if(min_elect_c_button-0)f_crycle=O;fangdianbutton=0;delayms(250);fangdian_bu11on=1;TMoD=OXl0;设定TO以工作方式1定时THl=O;T1.l=O;EA=I;ETl=1;允许定时器O中断TRl=I;display.flag=4;显示标志,为4为测试小电解电容intO_int=l;while(intO_int=l);TRl=O;ryz=O;ryz+=50000*f_crycle;ryz+=THl*256+T1.l;ryz=20;DisplayOneChard,3,DisplayOneChard,4,DisplayOneChar(1,5,DisplayOneChard,6,DisplayOneChard,7,Display1.istChar(1,0,0,"Cx=");ryz1000000%10+0x30);ryz100000%10+0x30);ryz10000%10+0x30);ryz1000%10+0x30);ryz100%10+0x30);DisplayOneChard,8,'.');DisplayOneChard,9,ryz10%10÷0x30);DisplayOneChar(1,10,ryz%10+0x30);Display1.istChard,H,O,UF);display_flag=4;显示标志,为4为测试小电解电容)voidtimerl()interrupt3(THl=(65536-50000)/256;定时50毫秒T1.l=(65536-50000)%256;f_crycle+;)求取小电容1无极性电容)的大小voidstrive_fx()uchari;f_button;置为1,准备判断小电容测量开关的状态,上电时这个开关比拟弹起if(f_button=0)if(display_flag!=3)init_tO();display_flag=3;显示标志,为3为测试频率TRO=I;TRl=I;ryz=0;for(i=0;i<20;i+)f_crycle=0;whi1e(f_cryc1e<1);f_crycle=O;ryz+=temp;TRO=O;TRl=O;voidtimer()interrupt1f_crycle+;temp=THl*256+T1.l;/THl=O;THo=(65536-50000)/256;定时50毫秒T1.O=(65536-50000)%256;tcrycle=0;TRO=O;关闭定时0T1.l=O;TRO=I;)voidfx_displayO(if(displayf1ag=3)Display1.istChar(1,0,0,"Fx=");DisplayOneChar(1,3,DisplayOneChard,4,DisplayOneChar(1,5,DisplayOneChar(1,6,DisplayOneChard,7,DisplayOneChar(1,8,ryz1000000%10+0x30)ryz100000%10+0x30);ryz10000%10÷0x30);ryz1000%10+0x30);ryz100%10+0x30);ryz10%10+0x30);DisplayOneChar(1,9,ryz%10+0x30);Display1.istChard,10,0,HZ);voidcx_displayOif(displayflag-2)Display1.istChard,O,O,Cx=);DisplayOneChar(1,3,DisplayOneChar(1,4,DisplayOneChard,5,DisplayOneChar(1,6,DisplayOneChar(1,7,DisplayOneChard,8,DisplayOneChar(1,9,ryz1000000%10+0x30);ryz100000%10+0x30);ryz10000%10+0x30);ryz1000%10+0x30);ryz100%10+0x30);ryz10%10÷0x30);ryz%10+0x30);Display1.istChard,10,O,“pF);voidIxdisplay()if(display_flag=l)Display1.istChard,O,O,"1.x=");DisplayOneChar(1,3,DiSPlayoneChar(1,4,DisplayOneChard,5,DisplayOneChar(1,6,DisplayOneChar(1,7,DisplayOneChard,8,DisplayOneChar(1,9,ryz10000000%10+0x30);ryz1000000%10+0x30);ryz100000%10+0x30);ryz10000%10+0x30);ryz1000%10+0x30);ryz100%10+0x30);ryz10%10+0x30);DisplayOneChar(1,10,.,);DisplayOneChard,U,ryz%10+0x30);Display1.istChard,12,O,uH);TMoD=OX51;设定TO以工作方式1定时50毫秒,Tl为计数器,工作方式1THO=(65536-50000)/256;T1.O=(65536-50000)%256;EA=I;开总中断ETO=I;允许定时器0中断t0_crycle=0;定时器中断次数计数单元THl=O;T1.l=O;)求取小电容1无极性电容)的大小voidstrive_cx()JbUtton=1;置为1.准备判断小电容测量开关的状态,上电时这个开关比拟弹起if(jbutton=0)(if(display_flag!=2)initt();display_flag=2;显示标志,为1为测试小电容TRO=I;TRl=I;f_crycle=0;while(f_cry