毕业设计论文基于单片机电容测量仪设计.doc

上传人:sccc 文档编号:4866165 上传时间:2023-05-20 格式:DOC 页数:24 大小:913.82KB
返回 下载 相关 举报
毕业设计论文基于单片机电容测量仪设计.doc_第1页
第1页 / 共24页
毕业设计论文基于单片机电容测量仪设计.doc_第2页
第2页 / 共24页
毕业设计论文基于单片机电容测量仪设计.doc_第3页
第3页 / 共24页
毕业设计论文基于单片机电容测量仪设计.doc_第4页
第4页 / 共24页
毕业设计论文基于单片机电容测量仪设计.doc_第5页
第5页 / 共24页
点击查看更多>>
资源描述

《毕业设计论文基于单片机电容测量仪设计.doc》由会员分享,可在线阅读,更多相关《毕业设计论文基于单片机电容测量仪设计.doc(24页珍藏版)》请在三一办公上搜索。

1、 基于单片机的电容测试仪的设计摘 要目前,随着电子工业的发展,电子元器件急剧增加,电子元器件的适用范围也逐渐广泛起来,在应用中我们常常要测定电容的大小。在电子产品的生产和维修中,电容测量这一环节至关重要,因此,设计可靠,安全,便捷的电容测试仪具有极大的现实必要性。本文提出了以MCS-51单片机为控制核心,结合多谐振荡器来实现电容测量的方法。并介绍了测量原理并给出了相应的电路及软件设计。关键词:电容测试仪;单片机;测量22目录1设计任务11.1 设计目的和意义11.2 设计任务与要求12 基于单片机电容测量硬件设计12.1 设计方案12.2 基于AT89C51电容测量系统硬件设计详细分析22.2

2、.1 AT89C51单片机工作电路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 本系统存在的问题及改进措施155.2 心得体会15参考文献16附录1:源程序清单17

3、附录2:电路原理图221设计任务 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芯片来测量电容,让555芯片工作在直接反馈无稳态的状态下,555芯片输出一定频率的方波,其频率的大小跟被测量的电容之间的关系是:f=0.772/(R*C

5、x),我们固定 R 的大小,其公式就可以写为:f=k/Cx,只要我们能够测量出555芯片输出的频率,就可以计算出测量的电容。计算频率的方法可以利用单片机的计数器T0和中断INT0,配合使用来测量,系统框图见图1所示。图中给出了整个系统设计的系统框图,系统主要由四个主要部分组成:单片机和晶振电路设计、555芯片电路设计、显示电路设计、复位电路设计。图1 系统框图 2.2 基于AT89C51电容测量系统硬件设计详细分析 2.2.1 AT89C51单片机工作电路图2 工作原理图单片机电路是本设计的核心部分,本设计选用了常用的AT89C51单片机。AT89C51是低功耗、高性能、经济的8位CMOS微处

6、理器,工作频率为024MHz,内置4K字节可编程只读闪存,128x8位的内部RAM,16位可编程IO总线。AT89C51工作的最简单的电路是其外围接一个晶振和一个复位电路,给单片机接上电源和地,单片机就可以工作了。其最简单的工作原理图如图2所示。 2.2.2 基于AT89C51电容测量系统复位电路MCS-51的复位是由外部的复位电路来实现的。MCS-51单片机片内复位,复位引脚RST通过一个斯密特触发器用来抑制噪声,在每个机器周期的S5P2,斯密特触发器的输出电平由复位电路采样一次,然后才能得到内部复位操作所需要的信号。 本设计采用按键手动脉冲复位方式,按键脉冲复位是利用RC微分电路产生的正脉

7、冲来实现的。复位电路如图3所示。图3 复位电路 一般的,单片机的复位速度比外围I/O快些。若RC上电复位电路接MCS-51单片机和外围电路复位端,则能使系统可靠地同步复位。为保证系统可靠复位,在初始化程序中应用到一定的复位延迟时间。复位电路软件程序或者硬件发生错误的时候产生一个复位信号,控制MCS-51单片机从0000H单元开始执行程序,重新执行软件程序。此电路的输出端RESET接在单片机的复位引脚。2.2.3 基于AT89C51电容测量系统时钟电路时钟在单片机中非常重要,单片机各功能部件的运行都是以时钟频率为基准。时钟频率直接影响单片机的速度,时钟电路的质量也直接影响单片机系统的稳定性。常用

8、的时钟电路有两种方式,一种是内部时钟方式,另一种为外部时钟方式。 本设计使用内部时钟方式,其内部时钟方式电路图如图4所示。图4 内部时钟方式电路图 MCS-51单片机内部有一个用与构成振荡器的高增益反相放大器,该高增益反相放大器的输入端为芯片引脚XTAL1,输出端为引脚XTAL2。这两个引脚接石英晶体振荡器和微调电容,就构成一个稳定的自激振荡器电路。电路中的电容C1和C2典型值通常选择为30PF左右。对外接电容的值虽然没有严格的要求,但是电容的大小会影响振荡器频率的高低、振荡器的稳定性和起振的快速性。晶体的振荡频率的范围通常是在1.2MHz12MHz之间。很设计中单片机选择12MHz的石英晶体

9、。 2.2.4 基于AT89C51电容测量系统按键电路按键是实现人机对话的比较直观的接口,可以通过按键实现人们想让单片机做的不同的工作。键盘是一组按键的集合,键是一种常开型开关,平时按键的两个触点处于断开状态,按下键是它们闭合。图5就是一种比较典型的按键电路,在按键没有按下的时候,输出的是高电平,当按键按下去的时候,输出的低电平。图5 按键电路2.2.5 基于AT89C51电容测量系统555芯片电路对于555电路等效看成一个带放电开关的RS触发器,这个特殊的触发器有两个输入端:阈值端TH可看成是置零端R,要求高电平,触发端R可看成置位端低电平有效。它只有一个输出端Vo,Vo可等效为触发器的Q端

10、。放电端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);/*LCD写命令函数*/void wcomd(unsigned char cmd) Checks

11、tates(); RS=0; RW=0; DATA=cmd; EN=1; _nop_(); _nop_(); _nop_(); _nop_(); EN=0;/*LCD写数据函数*/void wdata(unsigned char dat) 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)

12、; 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(0x80+i); Delay1ms(1); wdata(ai)

13、; Delay1ms(1); for(j=0;j5000) /设置最长等待时间 _reset=0; /最长等待时间到还没有中断,停止555 if(N5000) /如果计数值大于5000,显示LA,表示应换用大一点的量程 b3=0X11; b2=0X1C; if(N=100 & N=100&N=1000) b2=0X00; /计算电容的大小 b3=0XFE; b4=N/100+1; b5=0X5E; b6=0X5E; else C=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; 附录2:电路原理图

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 建筑/施工/环境 > 农业报告


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号