欢迎来到三一办公! | 帮助中心 三一办公31ppt.com(应用文档模板下载平台)
三一办公
全部分类
  • 办公文档>
  • PPT模板>
  • 建筑/施工/环境>
  • 毕业设计>
  • 工程图纸>
  • 教育教学>
  • 素材源码>
  • 生活休闲>
  • 临时分类>
  • ImageVerifierCode 换一换
    首页 三一办公 > 资源分类 > DOCX文档下载  

    自动化综合设计总结 电容数字测量仪.docx

    • 资源ID:1675046       资源大小:738.73KB        全文页数:26页
    • 资源格式: DOCX        下载积分:16金币
    快捷下载 游客一键下载
    会员登录下载
    三方登录下载: 微信开放平台登录 QQ登录  
    下载资源需要16金币
    邮箱/手机:
    温馨提示:
    用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP免费专享
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

    自动化综合设计总结 电容数字测量仪.docx

    自动化综合设计总结报告 题目:电容数字测量仪 二级学院 电子信息与自动化学院 专 业 自动化专业 班 级 自动化2班、3班 指导老师 刘 晓 东 组员 考核项目设计50分平时成绩20分答辩30分得分总分考核等级教师签名电容数字测量仪摘要本设计是基于555定时器构成多谐振荡器产生输入脉冲信号,然后通过AT89C51对方波脉冲中断计数而测量电容的。在多谐振荡器输出端加入一个74HC08对方波消除毛刺产生方波输入到单片机外部中断0,再通过单片机内部计数器对方波进行脉宽计数。555定时器中所涉及的电容,即是被测量的电容。信号的频率可以根据所选的电阻,电容的参数而调节,这样便可以定量的确定被测电容的容值范围。最后通过LCD1602显示被测电容数值。关键词:电容,555定时器,AT89C51,LCD1602目录1、 引言 当前数字系统的设计正朝着快速以及大容量和便利的方向发展。现代电子产品几乎几乎应用到各个领域,有力推动了现代社会信息化的进展,这反过来也要求电子产品要以更快的速度节奏升级。 在日常的电路工程或者电路试验中,电容为一个最常见的电子元件,在实际电路中对电容的要求也愈加精确,传统的电容测量仪表现的不够直观、精确度不高以及便利。因此,这次,我们选择一个数字式电容测量仪,只要打开开关就可以直观的观察电容数量值大小。相比以前的更为方便、高精确度的有点,这也为本次选题带来了意义,同时也提高了我们对设计的兴趣。2.1 设计要求1、设计电容数字测量仪电路,测量并显示电容大小2、测量电容范围为100pf50F3、系统工作满足电容测量一般要求。2.2 系统整体方案设计本设计是通过一块555芯片来测量电容,让555芯片工作在直接反馈无稳态的状态下,555芯片输出一定频率的方波,其频率的大小跟被测量的电容之间的关系是:,我们固定的大小,其公式就可以写为:,只要我们能够测量出555芯片输出的频率,就可以计算出测量的电容。计算频率的方法可以利用单片机的计数器和中断配合使用来测量,这种研究方法相当的简单。系统框图见下图。AT89C51 555晶振电路被测电容LCD1602显示复位电路测量按键 系统框图图中给出了整个系统设计的系统框图,系统主要由四个主要部分组成,单片机和晶振电路设计,555芯片电路设计,LCD1602显示电路,复位电路设计。3、 硬件电路设计3.1单片机AT89C51简介MCS-51单片机是美国INTE公司于1980年推出的产品,与MCS-48单片机相比,它的结构更先进,功能更强,在原来的基础上增加了更多的电路单元和指令,指令数达111条,MCS-51单片机可以算是相当成功的产品,一直到现在,MCS-51系列或其兼容的单片机仍是应用的主流产品,各高校及专业学校的培训教材仍与MCS-51单片机作为代表进行理论基础学习。AT89C51是一个低电压,高性能CMOS 8位单片机,片内含4k bytes的可反复擦写的Flash只读程序存储器和128 bytes的随机存取数据存储器(RAM),器件采用ATMEL公司的高密度、非易失性存储技术生产,兼容标准MCS-51指令系统,片内置通用8位中央处理器和Flash存储单元,内置功能强大的微型计算机的AT89C51提供了高性价比的解决方案。    AT89C51是一个低功耗高性能单片机,40个引脚,32个外部双向输入/输出(I/O)端口,同时内含2个外中断口,2个16位可编程定时计数器,2个全双工串行通信口,AT89C51可以按照常规方法进行编程,也可以在线编程。其将通用的微处理器和Flash存储器结合在一起,特别是可反复擦写的Flash存储器可有效地降低开发成本。3.2.2单片机最小系统复位电路与1、从原理上,一般采用上电复位电路。这种复位电路的工作原理是:通电时,电容两端相当于短路,于是RST引脚上为高电平,然后电源通过电阻对电容充电,RST端电压慢慢下降到一定程序,即为低电平,单片机开始正常工作。该设计中复位电路采用按键复位方式。电路选用22uF的电容、200k欧姆的电阻、1000欧姆电阻和一个按键组成。2、内部时钟电路和晶振频率一般选择在4MHz12MHz之间(该设计选用12MHz),外接两个谐振电容。本系统采用内部时钟方式。3.2.3 按键控制电路 本设计采用3个按键来执行检测作用,因为根据测量范围要求该设计制定了3个档位,每个按键对应555定时器上规定档位,该按键在软件程序用来控制程序是否往下面执行,如检测到按键按下,再对程序变量置位进而控制显示程序的执行;同时单片机上设定了开始测量电容输入的按键,单片机通过P3.7端口对按键进行检测;该四个按键如图所示: 3.2 555定时器多谐振荡器3.2.1 555定时器概述555芯片电路是一种将模拟功能与逻辑功能巧妙结合在同一硅片上的组合集成电路。它设计新颖,构思奇巧,用途广泛,备受电子专业设计人员和电子爱好者的青睐,人们将其戏称为伟大的小IC。1972年,美国西格尼蒂克斯公司(Signetics)研制出Tmer NE555双极型时基电路,设计原意是用来取代体积大,定时精度差的热延迟继电器等机械式延迟器。但该器件投放市场后,人们发现这种电路的应用远远超出原设计的使用范围,用途之广几乎遍及电子应用的各个领域,需求量极大。美国各大公司相继仿制这种电路 1974年西格尼蒂克斯公司又在同一基片上将两个双极型555单元集成在一起,取名为NF556。1978年美国英特锡尔(Intelsil)研制成功CMOS型时基电路ICM555 ICM556,后来又推出将四个时基电路集成在一个芯片上的四时基电路558 由于采用CMOS型工艺和高度集成,使时基电路的应用从民用扩展到火箭、导弹、卫星、航天等高科技领域。在这期间,日本、西欧等各大公司和厂家也竞相仿制、生产。尽管世界各大半导体或器件公司、厂家都在生产各自型号的555556时基电路,但其内部电路大同小异,且都具有相同的引出功能端。555电路,也称555芯片电路,是一种中规模集成电路。它具有功能强、使用灵活、适用范围宽的特点。通常只要外接少量几个元件,就可构成各种不同用途的脉冲电路以及许多实用电路,如多谐振荡器、单稳态电路及施密特触发器等等。从而能够实现振荡、定时、调光、调压、调速等。555集成电路有双极型和CMOS两种。CMOS型的优点是功耗低、电源电压低、输入阻抗高。对于初学者来说,可以把555电路等效看成一个带放电开关的RS触发器,这个特殊的触发器有两个输入端:阈值端TH可看成是置零端R,要求高电平,触发端R可看成置位端低电平有效。它只有一个输出端Vo,Vo可等效为触发器的Q端。放电端DIS可看成由内部放电开关控制的一个接点,放电开关由触发器的端控制:Q=1时DIS端接地;Q=0时,DIS端悬空。此外,这个触发器还有复位端MR加上低电平(<03V)时可使输出为低电平。该特殊的RS触发器有两个输入端,这两个输入端的触发电平要求一高一低,其中置零端R即阈值端TH要求高电平,置位端即触发端则要求低电平,也就是使它们翻转的阈值电压值不同。当VK端不接控制电压时,对TH端(即R端)来讲,大于23VDD是高电平1,小于23VDD时是低电平0;而对TR端(即端)来讲,大于13VDD是高电平1,小于13VDD是低电平O。3.2.2 555定时器与AT89C51接口555定时器芯片电路的应用电路很多,在实际应用中,除了单一品种的电路外,还可组合出很多不同电路。本次设计中应用的电路是直接反馈型无稳类电路,外设按键控制三个档位,555定时器的4脚复位端有单片机P3.6端口来控制发出芯片发出方波的发生;另外多555谐振荡器7端口接入P3.2端口来进行单片机的中断控制,由于我们是进行方波脉宽计数,说以选择中断请求方式为边沿触发方式;3.2.3 555程序设计档位算法整个程序设计过程中遇到的最大的问题的如何根据测量到的方波的频率来计算所测量的电容的大小。在前面的介绍中我们知道:555时基芯片的输出频率跟所使用的电阻R和电容C的关系是:又因为,所以 即: 如果单片机采用12M的晶振,计数器T0的值增加1,时间就增加1S,我们采用中断的方式来启动和停止计数器T0,中断的触发方式为脉冲下降沿触发,第一次中断到来启动T0,计数器的值为,第二次中断到来停止T0,计数器器的值为,则测量方波的周期为,如何开始时刻计数器的值,则。简单时序图如下。T555输出的方波启动T0停止T0则: 单片机的计数器的值N=0-65535,为了测量的精度,N的取值一般在1005000,当电阻R越大,电容C的值就越小。我们取不同的电阻值,就得到不同的电容测量的量程。第一档: 150uF第二档: 0.15 uF第三档: 0.010.5 uF为了编写程序的方便,我们只计算,后面的单位可以根据使用的量程自行添加。测量范围的大小100pf50F。3.2.4 74H08对发出方波消刺在555芯片输出方波后,由于硬件的原因,输出的方波会有很多毛刺,为了去除这些毛刺本设计中使用了一个两输入与门(74HC08),让信号通过74HC08后会使输出的波形毛刺减少很多,使单片机的测量结果变得精确。黄线为没有加74HC08前555输出波形,蓝线为加入74HC08后输出波形图;下图为两种波形的对比图;3.3 基于AT89C51电容测量系统LCD1602显示电路LCD以其微功耗、体积小、显示内容丰富、超薄轻巧的诸多优点,在袖珍式仪表和低功耗应用系统中得到越来越广泛的应用。这里介绍的字符型液晶模块是一种用5x7点阵图形来显示字符的液晶显示器,根据显示的容量可以分为1行16个字、2行16个字、2行20个字等等,这里我们使用的是2行16个字的1602液晶模块。3.3.1 LCD1602显示器引脚介绍3.3.2 LCD1602内部储存器CGROM 1602液晶模块内部的字符发生存储器(CGROM)已经存储了160个不同的点阵字符图形,如表1所示,这些字符有:阿拉伯数字、英文字母的大小写、常用的符号、和日文假名等,每一个字符都有一个固定的代码,比如大写的英文字母“A”的代码是01000001B(41H),显示时模块把地址41H 中的点阵字符图形显示出来,我们就能看到字母“A”3.3.3 lcd1602显示自定义符步骤如下: 1.先将字符写入CGRAM2.再将CGRAM中的字符写入DDRAM,DDRAM为待显示字符的储存空间; 下图为CGROM和CGRAM中字符代码与字符图形对应关系4、 软件设计软件设计是一个创造性的过程,对一些设计者来说需要一定的资质,而最后设计通常都是由一些初步设计演变而来的。从书本上学不会设计,只能经过实践,通过对实际系统的研究和实践才能学会。对于高效的软件工程,良好的设计是关键,一个设计得好的软件系统应该是可直接实现和易于维护、易懂和可靠的。设计得不好的系统,尽管可以工作,但很可能维护起来费用昂贵、测试困难和不可靠,因此,设计阶段是软件开发过程中最重要的阶段。直到最近,软件设计在很大程度上仍是一个特定过程。一般用自然语言给定一个需求集,预先作非正式设计,常常用流程图的形式说明,接着开始编码,当系统实现时设计还需修改。当实现阶段完成后,设计往往已与起初形式相去甚远以至于设计的原始文档完全不适合对系统的描述。 软件设计主要是针对硬件设计里面的控制部分的,这里指AT89C51单片机,一般的单片机均可用汇编语言和C语言进行编程。C语言直观,相对比较的简单,但占用的程序存储器的内存比较大,汇编语言是针对硬件设计的语言,如果想用汇编语言设计的话必须要对硬件有很大的了解,相对C语言就比较的复杂,但是比较的精简,占用的程序存储器的空间比较的小。作为还在学生阶段的我们,用汇编语言进行编程对我们理解单片机的内部结构、资源都有很好的帮助,但是C语言编程在以后的实际工作中将会大大简化自己的工作。因此本论文的程序都是基于C语言的。要完成的任务是:初始化程序设计、按键程序设计、中断处理程序,计数器计数程序,显示程序设计等。4.1 主程序 在主程序中,通过检测按键是否按下来执行循环程序。通过单片机P3.7端口检测是否开始测量电容,然后通过端口P3.6端口对555定时器复位端进行方波输出控制。最后通过程序对外部中断0与定时器控制,计算出电容值得大小通过LCD1602进行显示。下图为该程序设计的流程图:T0,INT0初始化启动555有无中断有无按键有无中断启动计数器T0停止计数器T0计算电容的大小显示电容值有无按键NYnNYNYNY4.2软件调试软件调试主要是通过proteus和keil软件进行仿真实验。Proteus ISIS是英国Labcenter公司开发的电路分析与实物仿真软件。它运行于Windows操作系统上,可以仿真、分析(SPICE)各种模拟器件和集成电路。keil是德国Keil公司推出的Keil C51软件,它是一个基于32位Windows环境的应用程序,支持C语言和汇编语言编程,其6.0以上的版本将编译和仿真软件统一为Vision(通常称为V2)。通过proteus和keil的仿真实验,证明了我们的设计在理论是可行的。设计仿真图见附件一。4.3 硬件调试硬件调试,即通过连接实物的方式进行验证方案的可行性。经过实践操作,也同样证明了我们设计方案的正确性。5. 结果分析 通过仿真得到如下数据表格被测电容值80.16PF25uF10uF5uF测量值81PF25uF10uF5uF通过表中的数据可以看出仿真的数据还是比较准确的,但是在实际的操作中,测量值可能没有这么准确,因为在实际的电路中,555芯片输出的方波可能不会如仿真时的那么标准平滑,即使加上一些去除毛刺和去干扰的电路例如加上一个两输入与门或者加上一个过零比较器或者泻回比较器波形还是不会那么理想,再加上单片机的测量也会存在一些误差,所以综合以上的一些考虑,真实中的测量结果肯定要比仿真中的结果误差大。所以本次的方案算然说不能过非常精确的测出结果来,但是相比较一些能够测出比较精确结果的电路来,本电路是实现起来很容易,测量结果也比较准确,实际操作中比较有保障的一种电路。6.总结 本次试验设计通过proteus和keil的仿真结合,基本上完成了试验要求,能精确的测量电容值大小,并准确通过lcd1602显示器显现出来。 过这次计算机课程设计,我们拓宽了知识面,对电子电路的设计进一步加强了,锻炼了能力,综合素质得到较大提高。通过理论与实际的结合进一步提高自身,尤其是观察、分析和解决问题的实际工作能力得到了加强。 但是,在做课程设计的过程当中,我们仍发现了一些设计过程中自己暴露的一些问题,对单片机的掌握还应进一步加强,同时对电子元器件的应用还用改更加熟练,这对以后的设计有较大的帮助。7.参考文献1 康华光主编,电子技术基础(数字部分),北京:高等教育出版社,2000.62 万文略主编,单片机原理及应用,重庆大学出版社,2004.33 江世明主编,基于Proteus的单片机用用技术,北京:电子工业出版社,2009.64 边春元主编,C51单片机典型模块设计与应用,机械工业出版社育出版社,2008.65李海清,黄志遥主编,电容传感器新型微弱电容测量电路,北京:传感技术学报,2002.58. 附件 附件1 仿真整体电路图 附件2 C语言程序#include "reg51.h"#include"intrins.h"#define DATA P0sbit RW=P21;/1602写数据sbit RS=P20;/1602写地址sbit EN=P22; /1602工作使能sbit b_test=P37; /开始测量电容的按键输入sbit _reset=P36; /555时基芯片工作控制信号sbit l_key=P23;sbit zh_key=P24;sbit h_key=P25;unsigned int T_flag,N,C,i,Dis1,Dis0;unsigned int b10=0X13,0X0D,0X00,0X00,0X00,0X00,0X00,0X00,0x45,0x16; /显示C=00UFbit low_disable;bit zhig_disable;bit hig_disable;void Delay1ms(unsigned int mm)/*延时1MS*/unsigned int i; for(mm;mm>0;mm-) for(i=100;i>0;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 wcomd(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);/功能设置 Delay1ms(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;i<12;i+)/写显示第一行 wcomd(0x80+i); Delay1ms(1); wdata(ai); Delay1ms(1); for(j=0;j<10;j+)/写显示第二行 wcomd(0xc0+j); Delay1ms(1); wdata(0x30+bj); Delay1ms(1); Delay1ms(150); void main() IE=0x81; /打开全部的中断控制,并开启外部中断允许 TMOD=0x09; /T0为16位计数工作方式1 IT0=1; /设置外部中断的触发的方式为脉冲触发 TH0=0x00; TL0=0x00; T_flag=0; _reset=0; while(1) if(l_key=0) low_disable=1; if(zh_key=0) zhig_disable=1; if(h_key=0) hig_disable=1; while(!b_test) /如果有测量按键输入就往下执行 i=0; _reset=1; /启动555时基芯片 EX0=1; /开启中断0 while(_reset) /超出等待时间,中断还没有过来,就退出 i+; if(i>5000) /设置最长等待时间 _reset=0; /最长等待时间到还没有中断,停止555 if(N>10000) /如果计数值大于5000,显示LA,表示应换用大一点的量程 b2=0X1C; b3=0X11; b4=0x22; b5=0x17; b6=0x15; b7=0xF0; b8=0xF0; b9=0xF0; /* if(N<50) b2=0X23; b3=0X1D; b4=0x11; b5=0x1C; b6=0x1C; b7=0xF0; b8=0xF0; b9=0xF0; */ if(N>=50)&&(N<=5000) if(hig_disable=1) if(N>=1000)&&(N<=5000) b2=N/1000; b3=N%1000/100; b4=0XFE; /计算电容的大小 b5=N%100/10; /计算电容值的十位 b6=N%10; /计算电容值的各位 b7=0x45; b8=0x16; b9=0xF0; if(N>=100)&&(N<=999) b2=N/100; b3=0xFE; b4=N%100/10; b5=N%10; b6=0x45; b7=0x16; b8=0xF0; b9=0xF0; if(N>=50)&&(N<=99) b2=0x00; b3=0XFE; b4=N/10; b5=N%10; b6=0x45; b7=0x16; b8=0xF0; b9=0xF0; if(N>=50)&&(N<=5000) if(zhig_disable=1) if(N>=1000)&&(N<=5000) b2=0x00; b3=0xFE; b4=N/1000; b5=N%1000/100; b6=N%100/10; b7=N%10; /计算电容值的十位 b8=0x45; b9=0x16; /计算电容值的各位 if(N>=100)&&(N<=999) b2=0x00; b3=0xFE; b4=0x00; b5=N/100; b6=N%100/10; b7=N%10; b8=0x45; b9=0x16; if(N>50)&&(N<=99) b2=0x00; b3=0XFE; b4=0x00; b5=0x00; b6=N/10; b7=N%10; b8=0x45; b9=0x16; if(N>=50)&&(N<=5000) if(low_disable=1) if(N>=1000)&&(N<=5000) b2=N/1000; b3=N%1000/100; b4=N%100/10; /计算电容的大小 b5=N%10; /计算电容值的十位 b6=0X40; b7=0x16; b8=0xF0; b9=0xF0; if(N>=100)&&(N<=999) b2=N/100; b3=N%100/10; b4=N%10; b5=0x40; b6=0X16; b7=0xF0; b8=0xF0; b9=0xF0; if(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;

    注意事项

    本文(自动化综合设计总结 电容数字测量仪.docx)为本站会员(小飞机)主动上传,三一办公仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知三一办公(点击联系客服),我们立即给予删除!

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    备案号:宁ICP备20000045号-2

    经营许可证:宁B2-20210002

    宁公网安备 64010402000987号

    三一办公
    收起
    展开