当前位置:文档之家› 数字电容表课程设计报告

数字电容表课程设计报告

单片机课程设计题目: 数字电容表设计专业:电子信息工程班级:电信2班学号姓名:目录摘要 (2)实验设计目的 (3)1实验仪器与件 (3)2实验设计要求 (4)4 实验工作原理及实现 (4)4.1 硬件组成部分 (4)4.2 工作原理 (5)4.3系统实现 (5)5 电容测试系统设计 (6)6 程序设计 (7)7仿真调试结果 (9)8 实验实物焊接、调试 (10)9 结论 (11)10程序设计 (12)摘要近年来随着科技的飞速发展,单片机的应用正在不断地走向深入,同时带动传统控制检测日新月益更新。

单片机,是集CPU ,RAM ,ROM ,计数和多种接口于一体的微控制器。

自20世纪70年代问世以来,以其极高的性能价格比,受到人们的重视和关注。

它体积小、重量轻、抗干扰能力强、环境要求不高、价格低廉、可靠性高、灵活性好、开发较为容易,广泛应用于智能生产和工业自动化上。

在实时检测和自动控制的单片机应用系统中,单片机往往是作为一个核心部件来使用,仅单片机方面知识是不够的,还应根据具体硬件结构,以及针对具体应用对象特点的软件结合,以作完善。

本课题选用AT89C51单片机来设计数字电容表,数字电容表程序由用C语言编写,由主程序、定时中断服务子程序等模块组成。

调试工作主要是通过对RPl的调节来调整基准电压。

51单片机通过软件编程,通过对时间的换算而得到容值的大小;本文并详细介绍了AT89C51单片机的基本原理,分析了AT89C51各个管脚的功能及它在设计电路中的作用。

一、实验设计目的1、运用已基本掌握的具有不同功能的单元电路的设计、安装和调试方法,在单元电路设计的基础上,设计出具有各种不同用途和一定工程意义的电子装置。

2、深化所学理论知识,培养综合运用能力,增强独立分析与解决问题的能力。

3、训练培养严肃认真的工作作风和科学态度,为以后从事电子电路设计和研制电子产品打下初步基础。

二、实验仪器及器件(1)数码管1个(2)电容电阻若干(3)AT89C2051 一个(4)741 两个(5)SW—SPDT 一个(6)非门一个(7)滑动变阻器一个三、实验设计要求(1)利用给定的元器件设计一个能测量并显示电容容值大小的数字电容表;(2)用5位数码管显示;(3)测量围1nf-655nf,误差小于10% 。

(4)在计算机上用仿真软件仿真优化。

(5)在单片机板上安装、调试。

(6)写出设计总结报告。

四.电路工作原理及实现4.1系统的硬件组成部分该设计原理图由单片机电路、电容充电测量电路和数码显示电路等部分组成。

AT89C2051作为AT89C51的简化版虽然去掉了P0、P2等口,使I/O口减少了,但是却增加了一个电压比较器,因此其功能在某些方面反而有所增强,如能用来处理模拟量、进行简单的模数转换等。

本文利用这一功能设计了一个数字电容表,可测量容量小于655微法的电容器的容量,采用5位数码管显示,最大显示值为655,读数单位统一采用毫微法(nf). 4.2 电路工作原理:本数字电容表以电容器的充电规律作为测量依据,测试原理见图2.1。

图2.1测试原理图A为AT89C2051內部构造的电压比较器,AT89C2051的P1.0和P1.1口除了作I/O口外,还有一个功能是作为电压比较器的输入端,P1.0为同相输入端,P1.1为反相输入端,电压比较器的比较结果存入P3.6口对应的寄存器,P3.6口在AT89C2051外部无引脚。

电压比较器的基准电压设定为0.632E+,在CX两端电压从0升到0.632E+的过程中,P3.6口输出为0,当电池电压CX两端电压一旦超过0.632E+时,P3.6口输出变为1。

以P3.6口的输出电平为依据,用AT89C2051內部的计时器T0对充电时间进行计数,再将计数结果显示出来即得出测量结果。

4.3 系统实现AT89C2051部的电压比较器和电阻等组成测量电路,电压比较器的基准电压由5V电源电压经R9、RP1、R10分压后得到,调节RP1可调整基准电压。

当P1.2口在程序的控制下输出高电平时,电容CX即开始充电。

数码管采用动态扫描显示的方式,用软件对字形码译码。

P3.0-P3.5、P3.7口作数码显示七段笔划字形码的输出,P1.3-P1.7口作为5个数码管的动态扫描位驱动码输出。

这里采用了共阳数码管,由于AT89C2051的P1.3-P1.6口有25mA 的下拉电流能力,所以不用三极管就能驱动数码管。

用以驱动数码管的各字段,当P3的某一端口输出高电平时其对应的字段笔划不点亮,而当其输出低电平时,则对应的上拉电阻即能点亮相应的字段笔划五电容测试系统设计软件的总体设计程序由主程序、定时中断服务子程序等模块组成。

定时器T0作被测电容器充电时间的计数用。

定时器T1用于定时中断服务,定时时间为5ms,即5ms产生一次中断。

数组BitTab[5]用来存储位驱动码,DispTab[11]用来存储字形码,数组DispBuf[4]的4个元素分别用来存储从定时器T0读出的数据的万、个、十百千位的5位数字。

程序显示每一位数码的时间为5ms,因此显示完整的4位数的周期为20ms (4次中断)。

每过500ms(100次中断)刷新一下数据,即每过240ms测一下电容量,测量时间小于2ms,由于这一时间小于中断的时间5ms,因此在测量过程中不会出现中断现象。

测量电容时P1.2口输出高电平,电容开始充电,与此同时定时器T0开始计数,当电容器充电达到基准电压时,P3.6口输出高电平,据此程序作出判断停止T0的计数,并读出数据送数码管显示。

如果被测电容器的容量超出测试档的量程,显示结果为万位数显示1,其它四位数不显示,这和数字万用表超过量程的显示模式相同。

这时可选择大一档的量程进行测试。

经仿真和电路测试,发现单片机判断P3.6口是否输出高电平要化3个机器周期,这会使显示值增加3,因此在程序中对此误差进行了修正,对计数值减去了3。

字形码的输出用了P3口的P3.0-P3.5、P3.7,P3.6为空,P3口输出的数据通过数组DispTab获得。

表3.1数据位和字形的对应关系六设计程序#include <REG2051.H>unsigned char i,j,n,t,DispBuf[5];unsigned int cap;unsigned char code BitTab[5]={0x7f,0xbf,0xdf,0xef,0xf7};//位驱动码unsigned char code DispTab[11]={0xfe,0x70,0xed,0xf9,0x73,0xdb,0xdf,0xf0,0xff,0xfb,0x40};//字形码sbit cfang=P1^2;sbit flag =P3^6;main() //主程序{ TMOD=0x11; //定时器T0、T1均工作于定时方式1TH1=0xec;TL1=0x78; //T1定时时间为5msEA=1; //开总中断ET1=1; //打开T1中断TR1=1; //开定时器T1cfang=0; //电容放电while(1); //无限循环,定时中断返回点}Timer1() interrupt 3 //定时中断服务程序{ TH1=0xec; //装初值TL1=0x78;t=BitTab[j]; //取位值P1=P1|0xf8; //P1.3~P1.7送1P1=P1&t; //P1.3-P1.7输出取出的位值if(j==0 && DispBuf[j]==0)t=DispTab[10]; //最高位为0时,取空格字形码else{t=DispBuf[j]; //取出待显示的数t=DispTab[t]; //取字形码}P3=t; //字型码由P3输出显示j++; //j作为数码管的计数器,取值0-5,显示程序通过它确认显示哪个数码管if(j==5)j=0;n++;if(n==100) //每过100个中断测一次电容量{n=0;TH0=0;TL0=0;cfang=1; //电容开始充电TR0=1; //开定时器T0while (flag == 0);TR0=0; //充电电压达到参考电压,关定时器T0cfang=0; //电容放电cap=TL0|(TH0<<8); //取定时器T0中的数if(cap>=50000){DispBuf[4]=10;DispBuf[3]=10;DispBuf[2]=10;DispBuf[1]=10;DispBuf[0]=1; //超量程,最高位显示1,其余各位不显示(灭)}if(cap<50000) //不超量程,取各位数值{DispBuf[4]=cap%10;//取个位数cap=cap/10;DispBuf[3]=cap%10;//取个位数cap=cap/10;DispBuf[2]=cap%10;//取十位数cap=cap/10;DispBuf[1]=cap%10;//取百位数cap=cap/10;//取千位数DispBuf[0]=cap%10;}七仿真调试结果C=50nf的仿真结果C=1nf的仿真结果误差为电容值超过量程时的仿真结果八实物焊接与调试8.1实验仪器烙铁、焊锡、稳压电源。

8.2焊接首先将要焊接的主要元件在板上排列,大致计划好各个单元电路所占的面积以及各个单元电路之间的连接关系(尽量使焊接简单,方便测试和检查错误)。

接下来开始固定单元电路主器件的管座。

然后对照电路图将各个分立元件焊到板上,并用导线参照电路图将管脚和分立元件连接起来,如果有短路的情况,则应立即更正。

8.3调试1.检查线路在细心安装焊接好电路完毕后,我们首应该检查线路接线是否正确,否存在虚焊、漏焊以及短路等情况。

2.通电检测将焊接完电路的最终输入输出端分别接上5V电压,检查数码管是否能够正常显示数字,手摸各元器件看是否发烫,如果出现异常,立即关掉电源,待故障排除后才可以重新通电。

然后再测量各个单元电路,各元器件电压,以保证元器件能正常工作,看最终是否能达到预期要求的效果。

3.调试先检查开关量程选择和电容检测电路,看所提供的电压是否为工作电压。

接通电源,先Cx不接电容,看数码管是否显示最大数值,然后把Cx之间的导线短接,看数码显示是否为0。

本电路采用逐步调试的方法。

在调试之前,对照原理图,检查装置中的各个元件和它们相互的连接关系是否正确,并确保装置中无漏焊或虚焊等错误现象。

5.调试过程总结当整体电路焊接完成并检查无误,插好芯片后,接通电源发现无任何反应。

首先检查各个芯片是否正常供电,发现2051并未得电,于是再次检查芯片的电源与接地端是否接触良好。

找出断路处重新焊接。

6.测试分析从测试结果来看,测量有误差,与仿真结果比较误差增大,主要原因如下:(1)在焊接的过程中,由于万用板的质量问题,造成许多焊盘脱落,因此会有一些管脚或者元件接触不良。

相关主题