《电容数字测量仪设计总结报告.docx》由会员分享,可在线阅读,更多相关《电容数字测量仪设计总结报告.docx(26页珍藏版)》请在三一办公上搜索。
1、 自动化综合设计总结报告 题目:电容数字测量仪 二级学院 电子信息与自动化学院 专 业 自动化专业 班 级 自动化2班、3班 指导老师 刘 晓 东 组员 考核项目设计50分平时成绩20分答辩30分得分总分考核等级教师签名电容数字测量仪摘要本设计是基于555定时器构成多谐振荡器产生输入脉冲信号,然后通过AT89C51对方波脉冲中断计数而测量电容的。在多谐振荡器输出端加入一个74HC08对方波消除毛刺产生方波输入到单片机外部中断0,再通过单片机内部计数器对方波进行脉宽计数。555定时器中所涉及的电容,即是被测量的电容。信号的频率可以根据所选的电阻,电容的参数而调节,这样便可以定量的确定被测电容的容
2、值范围。最后通过LCD1602显示被测电容数值。关键词:电容,555定时器,AT89C51,LCD1602目录1、 引言 当前数字系统的设计正朝着快速以及大容量和便利的方向发展。现代电子产品几乎几乎应用到各个领域,有力推动了现代社会信息化的进展,这反过来也要求电子产品要以更快的速度节奏升级。 在日常的电路工程或者电路试验中,电容为一个最常见的电子元件,在实际电路中对电容的要求也愈加精确,传统的电容测量仪表现的不够直观、精确度不高以及便利。因此,这次,我们选择一个数字式电容测量仪,只要打开开关就可以直观的观察电容数量值大小。相比以前的更为方便、高精确度的有点,这也为本次选题带来了意义,同时也提高
3、了我们对设计的兴趣。2.1 设计要求1、设计电容数字测量仪电路,测量并显示电容大小2、测量电容范围为100pf50F3、系统工作满足电容测量一般要求。2.2 系统整体方案设计本设计是通过一块555芯片来测量电容,让555芯片工作在直接反馈无稳态的状态下,555芯片输出一定频率的方波,其频率的大小跟被测量的电容之间的关系是:,我们固定的大小,其公式就可以写为:,只要我们能够测量出555芯片输出的频率,就可以计算出测量的电容。计算频率的方法可以利用单片机的计数器和中断配合使用来测量,这种研究方法相当的简单。系统框图见下图。AT89C51 555晶振电路被测电容LCD1602显示复位电路测量按键 系
4、统框图图中给出了整个系统设计的系统框图,系统主要由四个主要部分组成,单片机和晶振电路设计,555芯片电路设计,LCD1602显示电路,复位电路设计。3、 硬件电路设计3.1单片机AT89C51简介MCS-51单片机是美国INTE公司于1980年推出的产品,与MCS-48单片机相比,它的结构更先进,功能更强,在原来的基础上增加了更多的电路单元和指令,指令数达111条,MCS-51单片机可以算是相当成功的产品,一直到现在,MCS-51系列或其兼容的单片机仍是应用的主流产品,各高校及专业学校的培训教材仍与MCS-51单片机作为代表进行理论基础学习。AT89C51是一个低电压,高性能CMOS 8位单片
5、机,片内含4k bytes的可反复擦写的Flash只读程序存储器和128 bytes的随机存取数据存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器和Flash存储单元,内置功能强大的微型计算机的AT89C51提供了高性价比的解决方案。AT89C51是一个低功耗高性能单片机,40个引脚,32个外部双向输入/输出(I/O)端口,同时内含2个外中断口,2个16位可编程定时计数器,2个全双工串行通信口,AT89C51可以按照常规方法进行编程,也可以在线编程。其将通用的微处理器和Flash存储器结合在一起,特别是可反复擦写的F
6、lash存储器可有效地降低开发成本。3.2.2单片机最小系统复位电路与1、从原理上,一般采用上电复位电路。这种复位电路的工作原理是:通电时,电容两端相当于短路,于是RST引脚上为高电平,然后电源通过电阻对电容充电,RST端电压慢慢下降到一定程序,即为低电平,单片机开始正常工作。该设计中复位电路采用按键复位方式。电路选用22uF的电容、200k欧姆的电阻、1000欧姆电阻和一个按键组成。2、内部时钟电路和晶振频率一般选择在4MHz12MHz之间(该设计选用12MHz),外接两个谐振电容。本系统采用内部时钟方式。3.2.3 按键控制电路 本设计采用3个按键来执行检测作用,因为根据测量范围要求该设计
7、制定了3个档位,每个按键对应555定时器上规定档位,该按键在软件程序用来控制程序是否往下面执行,如检测到按键按下,再对程序变量置位进而控制显示程序的执行;同时单片机上设定了开始测量电容输入的按键,单片机通过P3.7端口对按键进行检测;该四个按键如图所示: 3.2 555定时器多谐振荡器3.2.1 555定时器概述555芯片电路是一种将模拟功能与逻辑功能巧妙结合在同一硅片上的组合集成电路。它设计新颖,构思奇巧,用途广泛,备受电子专业设计人员和电子爱好者的青睐,人们将其戏称为伟大的小IC。1972年,美国西格尼蒂克斯公司(Signetics)研制出Tmer NE555双极型时基电路,设计原意是用来
8、取代体积大,定时精度差的热延迟继电器等机械式延迟器。但该器件投放市场后,人们发现这种电路的应用远远超出原设计的使用范围,用途之广几乎遍及电子应用的各个领域,需求量极大。美国各大公司相继仿制这种电路 1974年西格尼蒂克斯公司又在同一基片上将两个双极型555单元集成在一起,取名为NF556。1978年美国英特锡尔(Intelsil)研制成功CMOS型时基电路ICM555 ICM556,后来又推出将四个时基电路集成在一个芯片上的四时基电路558 由于采用CMOS型工艺和高度集成,使时基电路的应用从民用扩展到火箭、导弹、卫星、航天等高科技领域。在这期间,日本、西欧等各大公司和厂家也竞相仿制、生产。尽
9、管世界各大半导体或器件公司、厂家都在生产各自型号的555556时基电路,但其内部电路大同小异,且都具有相同的引出功能端。555电路,也称555芯片电路,是一种中规模集成电路。它具有功能强、使用灵活、适用范围宽的特点。通常只要外接少量几个元件,就可构成各种不同用途的脉冲电路以及许多实用电路,如多谐振荡器、单稳态电路及施密特触发器等等。从而能够实现振荡、定时、调光、调压、调速等。555集成电路有双极型和CMOS两种。CMOS型的优点是功耗低、电源电压低、输入阻抗高。对于初学者来说,可以把555电路等效看成一个带放电开关的RS触发器,这个特殊的触发器有两个输入端:阈值端TH可看成是置零端R,要求高电
10、平,触发端R可看成置位端低电平有效。它只有一个输出端Vo,Vo可等效为触发器的Q端。放电端DIS可看成由内部放电开关控制的一个接点,放电开关由触发器的端控制:Q=1时DIS端接地;Q=0时,DIS端悬空。此外,这个触发器还有复位端MR加上低电平(0;mm-) for(i=100;i0;i-);void Checkstates()/*检查忙否*/ unsigned char dat; RS=0; RW=1; doEN=1;/下降沿 _nop_();/保持一定间隔_nop_(); dat=DATA; _nop_();_nop_(); EN=0; while(dat&0x80)=1);void wc
11、omd(unsigned char cmd)/*LCD写命令函数*/ Checkstates(); RS=0; RW=0; DATA=cmd; EN=1; _nop_(); _nop_(); _nop_(); _nop_(); EN=0;void wdata(unsigned char dat)/*LCD写数据函数*/ Checkstates(); RS=1; RW=0; DATA=dat; EN=1; _nop_(); _nop_(); _nop_(); _nop_(); EN=0;void LCDINIT()/*初始化*/ Delay1ms(15); wcomd(0x38);/功能设置 D
12、elay1ms(5); wcomd(0x38);/功能设置 Delay1ms(5); wcomd(0x01);/清屏 Delay1ms(5); wcomd(0x08);/关显示 Delay1ms(5); wcomd(0x0c);/开显示,不开光标void Display(void) /显示函数unsigned char i,j; unsigned char a12=0X4D,0X45,0X41,0X53,0X55,0X52,0X45,0X4D,0X45,0X4E,0X54,0X53;/显示measurements LCDINIT(); for(i=0;i12;i+)/写显示第一行 wcomd(
13、0x80+i); Delay1ms(1); wdata(ai); Delay1ms(1); for(j=0;j5000) /设置最长等待时间 _reset=0; /最长等待时间到还没有中断,停止555 if(N10000) /如果计数值大于5000,显示LA,表示应换用大一点的量程 b2=0X1C; b3=0X11; b4=0x22; b5=0x17; b6=0x15; b7=0xF0; b8=0xF0; b9=0xF0; /* if(N=50)&(N=1000)&(N=100)&(N=50)&(N=50)&(N=1000)&(N=100)&(N50)&(N=50)&(N=1000)&(N=1
14、00)&(N=50)&(N=99) b2=N/10; b3=N%10; b4=0x40; b5=0X16; b6=0xF0; b7=0xF0; b8=0xF0; b8=0xF0; 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;