基于at89c2051单片机的数字电容表设计

上传人:kms****20 文档编号:39815716 上传时间:2018-05-20 格式:DOC 页数:7 大小:813KB
返回 下载 相关 举报
基于at89c2051单片机的数字电容表设计_第1页
第1页 / 共7页
基于at89c2051单片机的数字电容表设计_第2页
第2页 / 共7页
基于at89c2051单片机的数字电容表设计_第3页
第3页 / 共7页
基于at89c2051单片机的数字电容表设计_第4页
第4页 / 共7页
基于at89c2051单片机的数字电容表设计_第5页
第5页 / 共7页
点击查看更多>>
资源描述

《基于at89c2051单片机的数字电容表设计》由会员分享,可在线阅读,更多相关《基于at89c2051单片机的数字电容表设计(7页珍藏版)》请在金锄头文库上搜索。

1、基于基于 AT89C2051 单片机的数字电容表设计单片机的数字电容表设计时间:2009-11-16 09:49:15 来源:现代电子技术 作者:陈世夏 吴凌燕 丁国臣设计任务设计任务设计并制作一个数字电容表,系统实现的功能及要求如下:(1)设计的电容表可测量容量小于 2F 的电容。(2)设计的电容表采用 3 位半数字显示,最大显示值为 1 999。(3)设计的电容表读数单位统一采用 nF,量程分 4 档,实际电容值为读数乘以相应的倍率。2 方案论证方案论证21 电路方案电路方案(1)方案一:基本电路搭建用基本电路来实现数字显示的电容表,电路结构复杂,故障系数大,不易调试,误差也较大。(2)方

2、案二:单片机编程用单片机设计电路,由于使用软硬件结合的方式,所以电路结构简单、调试也相对方便。与第一种方案比较优点是非常明显的。22 显示方案显示方案(1)方案一:静态显示静态显示,显示驱动电路具有输出锁存功能,单片机将所要显示的数据送出后就不用再管,直到下一次显示数据需要更新时再传送一次数据。此方案编程容易,管理简单,显示亮度高,显示数据稳定,占用很少的 CPU 时间。但是引线较多,线路复杂,硬件成本较高。(2)方案二:动态显示动态显示需要 CPU 时刻对显示器件进行数据刷新,显示数据会有闪烁感,占用的CPU 时间多,但使用的硬件少,能节省线路板空间。这两种显示方式各有利弊,静态显示虽然数据

3、稳定,占用很少的 CPU 时间,但每个显示单元都需要单独的显示驱动电路,使用的硬件较多;动态显示虽然有闪烁感,占用的 CPU 时间多,但使用的硬件少,能节省线路板空间。23 系统框图系统框图根据上述分析,该系统以 AT89C2051 单片机为核心,系统框图如图 1 所示。3 AT89C205l 简介简介AT89C2051 是 Atmel 公司生产的低电压、高性能 CMOS 8 位单片机,片内含 2 KB可反复擦写的只读程序存储器(EPROM)和 128 B 的随机数据存储器。器件采用 AtmeI公司的高密度、非易失性存储技术生产,兼容标准 MCS51 指令系统,片内置通用 8 位中央处理器和

4、FLASH 存储单元。AT89C2051 作为 AT89C51 的简化版虽然去掉了P0,P2 等端口,使 IO 口减少了,但是却增加了一个电压比较器,因此其功能在某些方面反而有所增强。引脚图如图 2 所示。4 电路工作原理电路工作原理该数字电容表以电容器的充电规律作为测量依据,测试原理见图 3。电源电压 E+经电阻 R 给被测电容 CX 充电,CX 两端原电压随充电时间的增加而上升。当充电时间 t等于 RC 时间常数 时,CX 两端电压约为电源电压的 632,即 0632E+。数字电容表就是以该电压作为测试基准电压,测量电容器充电达到该电压的时间,便能知道电容器的容量。例如,设电阻 R 的阻值

5、为 1 k,CX 两端电压上升到 0632E+所需的时间为 1 ms,那么由公式 =RC 可知 CX 的容量为 1 微法。具体测量电路如图 4所示。图 4 中,A 为 AT89C2051 内部构造的电压比较器,AT89C2051 的 P10 和P11 口除了作为 IO 口外,还有一个功能是作为电压比较器的输入端,P10 为同相输入端,P11 为反相输入端,电压比较器的比较结果存入 P36 口对应的寄存器。电压比较器的基准电压设定为 0632E+,在 CX 两端电压从 0 升到 0632E+的过程中,P36 口输出为 0,当电池电压 CX 两端电压一旦超过 0632E+时,P36 口输出变为 1

6、。以 P36 口的输出电平为依据,用 AT89C2051 内部的定时器 T0 对充电时间进行计数,再将计数结果显示出来即得出测量结果。整机电路见图 5。电路由单片机电路、电容充电测量电路和数码显示电路等部分组成。AT89C2051 内部的电压比较器和电阻 R2R7 等组成测量电路。其中 R2R5为量程电阻,由波段开关 S1 选择使用,电压比较器的基准电压由 5 V 电源电压经R6,RP1,R7 分压后得到,调节 RP1 可调整基准电压。当 P12 口在程序的控制下输出高电平时,电容 Cx 即开始充电。量程电阻 R2R5 每档以 10 倍递减,故每档显示读数以 10 倍递增。由于单片机内部 P1

7、2 口的上拉电阻经实测约为 200 k,其输出电平不能作为充电电压用,故用 R5 兼作其上拉电阻,由于其他三个充电电阻和 R5是串联关系,因此 R2,R3,R4 应由标准值减去 1 k,分别为 999 k,99 k,9 k。由于 999 k 和 1 M 相对误差较小,所以 R2 还是取 1 M。数码管 DS1DS4、电阻 R8R14 等组成数码显示电路。本机采用动态扫描显示的方式,用软件对字形码译码。P30P35,P37 口作数码显示七段笔划字形码的输出,P13P16 口作四个数码管的动态扫描位驱动码输出。在此采用了共阴数码管,由于 AT89C2051 的 P13P16 口有 25 mA 的下

8、拉电流能力,所以不用三极管就能驱动数码管。R8R14 为 P30P35,P37 口的上拉电阻,用以驱动数码管的各字段,当 P3 的某一端口输出低电平时其对应的字段笔划不点亮,而当其输出高电平时,则对应的上拉电阻即能点亮相应的字段笔划。5 软件设计程序用 C 语言编写。软件部分由主程序、定时中断服务子程序等模块组成。定时器T0 作被测电容器充电时间的计数用。定时器 T1 用于定时中断服务,定时时间为 5 ins,即 5 ms 产生一次中断。数组 BitTab4用来存储位驱动码,DispTab11用来存储字形码,数组 DispBtlf4的 4 个元素分别用来存储从定时器 T0 读出的数据的个、十百

9、千位的 4 位数字。程序显示每一位数码的时间为 5 ms,因此显示完整的 4 位数的周期为 20 ms(4 次中断)。每过 240 ms(48 次中断)刷新一下数据,即每过 240 ms 测一次电容量,测量时间小于 2 ms,由于这一时间小于中断的时间 5 ms,因此在测量过程中不会出现中断现象。测量电容时 P12 口输出高电平,电容开始充电,与此同时定时器 T0 开始计数,当电容器充电达到基准电压时,P36 口输出高电平,据此程序做出判断停止 T0 的计数,并读出数据送数码管显示。如果被测电容器的容量超出测试档的量程,则计数值大于或等于 2 000,显示结果为千位数显示 1,其他三位数不显示

10、。经仿真和电路测试,发现单片机判断 P36 口是否输出高电平要花 3 个机器周期,这会使显示值增加 3,因此在程序中对此误差进行了修正,对计数值减去了 3。字形码的输出用了 P3 口的 P30P35,P37,P36 为空,P3 口输出的数据通过数组DispTab 获得。数据位和字形的对应关系如表 1 所示。 6 安装与调试安装与调试该设计用 AT89C2051 单片机集成电路,X1 用 12 MHz 的石英晶体,S1 选用 14 的波段开关,DS1DS4 选用共阴 LED 数码管。安装前先将 C 语言源程序用 KEIL 51 编译成目标文件即 HEX 文件,再用编程器将 HEX 文件写入 AT

11、89C2051 芯片。调试工作主要是通过对 RP1 的调节来调整基准电压,最好是通过对一个精度比较高的的电容器的测量来进行调节,而不是直接测量基准电压。具体方法是,选一个经确认容量比较准确的电容器,如 15 nF 的电容器,将 S1 置于 20 nF 档上,调节 RP1 是测量显示值为 1 500。选择的电容器容量至少要大于相应量程的 50,最好是接近满量程,才能调得比较准确。该档调试好后其他各档也就调试好了。如果发现某档精度有问题,可改变其相应充电电阻的阻值来进行调整。在使用过程中,当 S1 置于 2 nF 档时,在没有接人测试电容器时,有 10 pF 左右的显示值是正常的,因为这是电压比较器的输入电容和电路的分布电容。只要在测量读数时间去掉这一数值即可。因此在调试时不要选择该档,以免因分布电容影响调试得准确性。C 文件源程序如下:

展开阅读全文
相关资源
正为您匹配相似的精品文档
相关搜索

最新文档


当前位置:首页 > 生活休闲 > 科普知识

电脑版 |金锄头文库版权所有
经营许可证:蜀ICP备13022795号 | 川公网安备 51140202000112号