1、摘 要目前,随着电子工业的发展,电子元器件急剧增加,电子元器件的适用范围也逐渐广泛起来,在应用中我们常常要测定电容的大小。在电子产品的生产和维修中,电容测量这一环节至关重要,因此,设计可靠,安全,便捷的电容测试仪具有极大的现实必要性。本文提出了以 MCS-51 单片机为控制核心,结合多谐振荡器来实现电容测量的方法。并介绍了测量原理并给出了相应的电路及软件设计。关键词:电容测试仪;单片机;测量目录1 设计任务 .11.1 设计目的和意义 11.2 设计任务与要求 12 基于单片机电容测量硬件设计 12.1 设计方案 12.2 基于 AT89C51 电容测量系统硬件设计详细分析 22.2.1 AT
2、89C51 单片机工作电路 .22.2.2 基于 AT89C51 电容测量系统复位电路 .32.2.3 基于 AT89C51 电容测量系统时钟电路 .32.2.4 基于 AT89C51 电容测量系统按键电路 .42.2.5 基于 AT89C51 电容测量系统 555 芯片电路 .52.2.6 基于 AT89C51 电容测量系统显示电路 .62.3 各部分电路连接成整个电路图 92.4 系统所用元器件 113 软件流程及程序设计 113.1 软件系统总体设计方案 113.2 程序设计算法设计 123.3 软件设计流程 134 系统调试及仿真 135 总结 155.1 本系统存在的问题及改进措施
3、155.2 心得体会 15参考文献 16附录 1:源程序清单 .17附录 2:电路原理图 .22基于单片机的电容测试仪的设计11 设计任务1.1 设计目的和意义目前,随着电子工业的发展,电子元器件急剧增加,电子元器件的适用范围也逐渐广泛起来,在应用中我们常常要测定电容的大小。在电子产品的生产和维修中,电容测量这一环节至关重要,一个好的电子产品应具备一定规格年限的使用寿命。因此在生产这一环节中,对其产品的检测至关重要,而检测电子产品是否符合出产要求的关键在于检测其内部核心的电路,电路的好坏决定了电子产品的好与坏,而电容在基本的电子产品的集成电路部分有着其不可替代的作用。同样,在维修人员在对电子产
4、品的维修中,电路的检测是最基本的,有时需要检测电路中各个部件是否工作正常,电容器是否工作正常。因此,设计可靠,安全,便捷的电容测试仪具有极大的现实必要性。1.2 设计任务与要求(1)采用 MCS-51 系列单片机以及多谐振荡器进行电容测量仪设计(2)能测试 0.11UF、1050UF 两个档位的电容;两个档位精确度分别为0.1UF、1UF;(3)用 2 行 16 个字的 LCD1602 显示测量结果。2 基于单片机电容测量硬件设计2.1 设计方案本设计选择基于 AT89C51 单片机和 555 芯片构成的多谐振荡电路的电容测量方法。这种电容测量方法主要是通过一块 555 芯片来测量电容,让 5
5、55 芯片工作在直接反馈无稳态的状态下,555 芯片输出一定频率的方波,其频率的大小跟被测量的电容之间的关系是:f=0.772/(R*Cx),我们固定 R 的大小,其公式就可以写为:f=k/Cx ,只要我们能够测量出 555 芯片输出的频率,就可以计算出测量的电容。计算频率的方法可以利用单片机的计数器 T0 和中断 INT0,配合使用来测量,系统框图见图 1 所示。图中给出了整个系统设计的系统框图,系统主要由四个主要部分组成:单片机和晶振电路设计、555 芯片电路设计、显示电路设计、复位电路设计。基于单片机的电容测试仪的设计22.2 基于 AT89C51 电容测量系统硬件设计详细分析2.2.1
6、 AT89C51 单片机工作电路单片机电路是本设计的核心部分,本设计选用了常用的 AT89C51 单片机。AT89C51 是低功耗、高性能、经济的 8 位 CMOS 微处理器,工作频率为 024MHz,内置 4K 字节可编程只读闪存,128x8 位的内部 RAM,16 位可编程 IO 总线。AT89C51 工作的最简单的电路是其外围接一个晶振和一个复位电路,给单片机接上电源和地,单片机就可以工作了。其最简单的工作原理图如图 2所示。图 1 系统框图图 2 工作原理图基于单片机的电容测试仪的设计32.2.2 基于 AT89C51 电容测量系统复位电路MCS-51 的复位是由外部的复位电路来实现的
7、。MCS-51 单片机片内复位,复位引脚 RST 通过一个斯密特触发器用来抑制噪声,在每个机器周期的 S5P2,斯密特触发器的输出电平由复位电路采样一次,然后才能得到内部复位操作所需要的信号。本设计采用按键手动脉冲复位方式,按键脉冲复位是利用 RC 微分电路产生的正脉冲来实现的。复位电路如图 3 所示。一般的,单片机的复位速度比外围 I/O 快些。若 RC 上电复位电路接 MCS-51 单片机和外围电路复位端,则能使系统可靠地同步复位。为保证系统可靠复位,在初始化程序中应用到一定的复位延迟时间。复位电路软件程序或者硬件发生错误的时候产生一个复位信号,控制 MCS-51 单片机从 0000H 单
8、元开始执行程序,重新执行软件程序。此电路的输出端 RESET 接在单片机的复位引脚。2.2.3 基于 AT89C51 电容测量系统时钟电路时钟在单片机中非常重要,单片机各功能部件的运行都是以时钟频率为基准。时钟频率直接影响单片机的速度,时钟电路的质量也直接影响单片机系统的稳定性。常用的时钟电路有两种方式,一种是内部时钟方式,另一种为外部时钟方式。 本设计使用内部时钟方式,其内部时钟方式电路图如图 4 所示。图 3 复位电路基于单片机的电容测试仪的设计4MCS-51 单片机内部有一个用与构成振荡器的高增益反相放大器,该高增益反相放大器的输入端为芯片引脚 XTAL1,输出端为引脚 XTAL2。这两
9、个引脚接石英晶体振荡器和微调电容,就构成一个稳定的自激振荡器电路。电路中的电容 C1 和 C2 典型值通常选择为 30PF 左右。对外接电容的值虽然没有严格的要求,但是电容的大小会影响振荡器频率的高低、振荡器的稳定性和起振的快速性。晶体的振荡频率的范围通常是在 1.2MHz12MHz 之间。很设计中单片机选择12MHz 的石英晶体。2.2.4 基于 AT89C51 电容测量系统按键电路按键是实现人机对话的比较直观的接口,可以通过按键实现人们想让单片机做的不同的工作。键盘是一组按键的集合,键是一种常开型开关,平时按键的两个触点处于断开状态,按下键是它们闭合。图 5 就是一种比较典型的按键电路,在
10、按键没有按下的时候,输出的是高电平,当按键按下去的时候,输出的低电平。图 4 内部时钟方式电路图图 5 按键电路基于单片机的电容测试仪的设计52.2.5 基于 AT89C51 电容测量系统 555 芯片电路对于555电路等效看成一个带放电开关的RS触发器,这个特殊的触发器有两个输入端:阈值端TH可看成是置零端R,要求高电平,触发端R可看成置位端低电平有效。它只有一个输出端Vo,Vo可等效为触发器的Q端。放电端DIS 可看成由内部放电开关控制的一个接点,放电开关由触发器的端控制:Q=1时 DIS端接地;Q=0 时,DIS端悬空。此外,这个触发器还有复位端MR加上低电平(0;mm-)for(i=1
11、00;i0;i-);/*检查忙否*/void Checkstates()unsigned char dat;RS=0;RW=1;doEN=1;/下降沿_nop_();/保持一定间隔_nop_();dat=DATA;_nop_();基于单片机的电容测试仪的设计18_nop_();EN=0;while(dat/*LCD 写命令函数*/void wcomd(unsigned char cmd)Checkstates();RS=0;RW=0;DATA=cmd;EN=1;_nop_();_nop_(); _nop_();_nop_();EN=0;/*LCD 写数据函数*/void wdata(unsig
12、ned char dat)Checkstates();RS=1;RW=0;DATA=dat;EN=1;_nop_();_nop_();_nop_();_nop_();EN=0;/*初始化*/void LCDINIT()基于单片机的电容测试仪的设计19Delay1ms(15);wcomd(0x38);/功能设置Delay1ms(5);wcomd(0x38);/功能设置Delay1ms(5);wcomd(0x01);/清屏Delay1ms(5);wcomd(0x08);/关显示Delay1ms(5);wcomd(0x0c);/开显示,不开光标/*显示函数*/void Display(void) /
13、显示函数unsigned char i,j;unsigned char a12=0X4D,0X45,0X41,0X53,0X55,0X52,0X45,0X4D,0X45,0X4E,0X54,0X53;/显示measurementsLCDINIT();for(i=0;i5000) /设置最长等待时间 _reset=0; /最长等待时间到还没有中断,停止 555if(N5000) /如果计数值大于 5000,显示 LA,表示应换用大一点的量程b3=0X11;b2=0X1C;if(N=100 /计算电容的大小b3=0XFE;b4=N/100+1;b5=0X5E;基于单片机的电容测试仪的设计21b6=
14、0X5E;elseC=N/100; /计算电容的大小b2=C/10; /计算电容值的十位b3=(C-b2*10); /计算电容值的各位b4=0X5E;b5=0X5E;b6=0X5E; Display(); /显示电容的大小void int0(void) interrupt 0 /第一次中断开始计数,第二个中断停止计数 T_flag=!T_flag;if(T_flag=1)TR0=1; /开始计时if(T_flag=0) TR0=0; /停止计时EX0=0; /关闭中断_reset=0; /停止发出方波N=TH0*256+TL0; /计算计数器的值N=N*5/3;TH0=0x00; /恢复初值TL0=0x00;基于单片机的电容测试仪的设计22附录 2:电路原理图