0
  • 聊天消息
  • 系统消息
  • 评论与回复
登录后你可以
  • 下载海量资料
  • 学习在线课程
  • 观看技术视频
  • 写文章/发帖/加入社区
会员中心
创作中心

完善资料让更多小伙伴认识你,还能领取20积分哦,立即完善>

3天内不再提示

采用AT89C2051单片机实现数字电容表的设计

电子设计 来源:郭婷 作者:电子设计 2019-01-08 08:58 次阅读

设计任务

设计并制作一个数字电容表,系统实现的功能及要求如下:

(1)设计的电容表可测量容量小于2μF的电容。

(2)设计的电容表采用3位半数字显示,最大显示值为1 999。

(3)设计的电容表读数单位统一采用nF,量程分4档,实际电容值为读数乘以相应的倍率。

2 方案论证

2.1 电路方案

(1)方案一:基本电路搭建

用基本电路来实现数字显示的电容表,电路结构复杂,故障系数大,不易调试,误差也较大。

(2)方案二:单片机编程

单片机设计电路,由于使用软硬件结合的方式,所以电路结构简单、调试也相对方便。与第一种方案比较优点是非常明显的。

2.2 显示方案

(1)方案一:静态显示

静态显示,显示驱动电路具有输出锁存功能,单片机将所要显示的数据送出后就不用再管,直到下一次显示数据需要更新时再传送一次数据。

此方案编程容易,管理简单,显示亮度高,显示数据稳定,占用很少的CPU时间。但是引线较多,线路复杂,硬件成本较高。

(2)方案二:动态显示

动态显示需要CPU时刻对显示器件进行数据刷新,显示数据会有闪烁感,占用的CPU时间多,但使用的硬件少,能节省线路板空间。

这两种显示方式各有利弊,静态显示虽然数据稳定,占用很少的CPU时间,但每个显示单元都需要单独的显示驱动电路,使用的硬件较多;动态显示虽然有闪烁感,占用的CPU时间多,但使用的硬件少,能节省线路板空间。

2.3 系统框图

根据上述分析,该系统以AT89C2051单片机为核心,系统框图如图1所示。

采用AT89C2051单片机实现数字电容表的设计

3 AT89C205l简介

AT89C2051是Atmel公司生产的低电压、高性能CMOS 8位单片机,片内含2 KB可反复擦写的只读程序存储器(EPROM)和128 B的随机数据存储器。器件采用AtmeI公司的高密度、非易失性存储技术生产,兼容标准MCS51指令系统,片内置通用8位中央处理器和FLASH存储单元。AT89C2051作为AT89C51的简化版虽然去掉了P0,P2等端口,使I/O口减少了,但是却增加了一个电压比较器,因此其功能在某些方面反而有所增强。引脚图如图2所示。

采用AT89C2051单片机实现数字电容表的设计

4 电路工作原理

该数字电容表以电容器的充电规律作为测量依据,测试原理见图3。电源电压E+经电阻R给被测电容CX充电,CX两端原电压随充电时间的增加而上升。当充电时间t等于RC时间常数τ时,CX两端电压约为电源电压的63.2%,即0.632E+。数字电容表就是以该电压作为测试基准电压,测量电容器充电达到该电压的时间,便能知道电容器的容量。例如,设电阻R的阻值为1 kΩ,CX两端电压上升到0.632E+所需的时间为1 ms,那么由公式τ=RC可知CX的容量为1微法。具体测量电路如图4所示。

采用AT89C2051单片机实现数字电容表的设计

图4中,A为AT89C2051内部构造的电压比较器,AT89C2051的P1.0和P1.1口除了作为I/O口外,还有一个功能是作为电压比较器的输入端,P1.0为同相输入端,P1.1为反相输入端,电压比较器的比较结果存入P3.6口对应的寄存器。电压比较器的基准电压设定为0.632E+,在CX两端电压从0升到0.632E+的过程中,P3.6口输出为0,当电池电压CX两端电压一旦超过0.632E+时,P3.6口输出变为1。以P3.6口的输出电平为依据,用AT89C2051内部的定时器T0对充电时间进行计数,再将计数结果显示出来即得出测量结果。

整机电路见图5。电路由单片机电路、电容充电测量电路和数码显示电路等部分组成。

采用AT89C2051单片机实现数字电容表的设计

AT89C2051内部的电压比较器和电阻R2~R7等组成测量电路。其中R2~R5为量程电阻,由波段开关S1选择使用,电压比较器的基准电压由5 V电源电压经R6,RP1,R7分压后得到,调节RP1可调整基准电压。当P1.2口在程序的控制下输出高电平时,电容Cx即开始充电。量程电阻R2~R5每档以10倍递减,故每档显示读数以10倍递增。由于单片机内部P1.2口的上拉电阻经实测约为200 kΩ,其输出电平不能作为充电电压用,故用R5兼作其上拉电阻,由于其他三个充电电阻和R5是串联关系,因此R2,R3,R4应由标准值减去1 kΩ,分别为999 kΩ,99 kΩ,9 kΩ。由于999 kΩ和1 MΩ相对误差较小,所以R2还是取1 MΩ。

数码管DS1~DS4、电阻R8~R14等组成数码显示电路。本机采用动态扫描显示的方式,用软件对字形码译码。P3.0~P3.5,P3.7口作数码显示七段笔划字形码的输出,P1.3~P1.6口作四个数码管的动态扫描位驱动码输出。在此采用了共阴数码管,由于AT89C2051的P1.3~P1.6口有25 mA的下拉电流能力,所以不用三极管就能驱动数码管。R8~R14为P3.0~P3.5,P3.7口的上拉电阻,用以驱动数码管的各字段,当P3的某一端口输出低电平时其对应的字段笔划不点亮,而当其输出高电平时,则对应的上拉电阻即能点亮相应的字段笔划。

5 软件设计

程序用C语言编写。软件部分由主程序、定时中断服务子程序等模块组成。定时器T0作被测电容器充电时间的计数用。定时器T1用于定时中断服务,定时时间为5 ins,即5 ms产生一次中断。数组BitTab[4]用来存储位驱动码,DispTab[11]用来存储字形码,数组DispBtlf[4]的4个元素分别用来存储从定时器T0读出的数据的个、十百千位的4位数字。程序显示每一位数码的时间为5 ms,因此显示完整的4位数的周期为20 ms(4次中断)。每过240 ms(48次中断)刷新一下数据,即每过240 ms测一次电容量,测量时间小于2 ms,由于这一时间小于中断的时间5 ms,因此在测量过程中不会出现中断现象。测量电容时P1.2口输出高电平,电容开始充电,与此同时定时器T0开始计数,当电容器充电达到基准电压时,P3.6口输出高电平,据此程序做出判断停止T0的计数,并读出数据送数码管显示。如果被测电容器的容量超出测试档的量程,则计数值大于或等于2 000,显示结果为千位数显示1,其他三位数不显示。经仿真和电路测试,发现单片机判断P3.6口是否输出高电平要花3个机器周期,这会使显示值增加3,因此在程序中对此误差进行了修正,对计数值减去了3。字形码的输出用了P3口的P3.0~P3.5,P3.7,P3.6为空,P3口输出的数据通过数组DispTab获得。数据位和字形的对应关系如表1所示。

采用AT89C2051单片机实现数字电容表的设计

6 安装与调试

该设计用AT89C2051单片机集成电路,X1用12 MHz的石英晶体,S1选用1×4的波段开关,DS1~DS4选用共阴LED数码管。安装前先将C语言源程序用KEIL 51编译成目标文件即HEX文件,再用编程器将HEX文件写入AT89C2051芯片。调试工作主要是通过对RP1的调节来调整基准电压,最好是通过对一个精度比较高的的电容器的测量来进行调节,而不是直接测量基准电压。具体方法是,选一个经确认容量比较准确的电容器,如15 nF的电容器,将S1置于20 nF档上,调节RP1是测量显示值为1 500。选择的电容器容量至少要大于相应量程的50%,最好是接近满量程,才能调得比较准确。该档调试好后其他各档也就调试好了。如果发现某档精度有问题,可改变其相应充电电阻的阻值来进行调整。在使用过程中,当S1置于2 nF档时,在没有接人测试电容器时,有10 pF左右的显示值是正常的,因为这是电压比较器的输入电容和电路的分布电容。

只要在测量读数时间去掉这一数值即可。因此在调试时不要选择该档,以免因分布电容影响调试得准确性。

C文件源程序如下:

采用AT89C2051单片机实现数字电容表的设计

采用AT89C2051单片机实现数字电容表的设计

采用AT89C2051单片机实现数字电容表的设计

声明:本文内容及配图由入驻作者撰写或者入驻合作网站授权转载。文章观点仅代表作者本人,不代表电子发烧友网立场。文章及其配图仅供工程师学习之用,如有内容侵权或者其他违规问题,请联系本站处理。 举报投诉
  • 单片机
    +关注

    关注

    6032

    文章

    44525

    浏览量

    633258
  • cpu
    cpu
    +关注

    关注

    68

    文章

    10829

    浏览量

    211186
  • 电容表
    +关注

    关注

    0

    文章

    38

    浏览量

    16317
收藏 人收藏

    评论

    相关推荐

    AT89C2051单片机做节日彩灯控制电路程序

    AT89C2051单片机做节日彩灯控制电路程序 ;***************************************************;*   
    发表于 10-14 17:17 125次下载

    AT89C2051单片机制作的数字电容

    AT89C2051单片机制作的数字电容AT89C2051作为AT
    发表于 06-09 14:18 139次下载

    基于AT89C2051单片机数字电容设计

    基于AT89C2051单片机数字电容设计:AT89C2051
    发表于 09-13 16:52 145次下载

    AT89C2051单片机在步进电机控制中的应用

    介绍了一种采用AT89C2051单片机控制步进电机的实用电路。详细介绍了步进电机的隔离、放大驱动电路、系统控制电路以及相应的程序流程图。实验结果表明,采用
    发表于 11-12 11:53 116次下载

    AT89C2051单片机对显示驱动芯片MC14499的IC级

    介绍了采用AT89C2051单片机实现对显示驱动芯片MC14499的IC级代换的思路和具体实现方法。
    发表于 11-12 11:56 32次下载

    AT89C2051单片机引脚图,引脚说明

    AT89C2051高性能8位单片机AT89C2051引脚图)  
    发表于 04-29 22:06 1.6w次阅读
    <b class='flag-5'>AT89C2051</b><b class='flag-5'>单片机</b>引脚图,引脚说明

    单片机AT89C2051控制的充电器电路

    单片机AT89C2051控制的充电器电路
    发表于 07-16 21:56 1489次阅读
    用<b class='flag-5'>单片机</b><b class='flag-5'>AT89C2051</b>控制的充电器电路

    AT89C2051单片机的比较器的应用

    AT89C2051单片机的比较器的应用 AT89C2051的一个特殊应用,用它的比较器做一个光强调节器,应用
    发表于 09-13 16:28 2608次阅读

    AT89c2051单片机介绍

    AT89c2051单片机是ATMEL公司出产的低电压,高性能COMS八位单片机。本文为您提供了 AT89c2051 单片机的主要性能参数,功
    发表于 08-11 15:26 381次下载
    <b class='flag-5'>AT89c2051</b><b class='flag-5'>单片机</b>介绍

    基于AT89C2051单片机的RF卡门禁系统设计

    基于AT89C2051单片机的RF卡门禁系统设计。
    发表于 11-09 17:38 61次下载

    基于AT89C2051单片机的防盗自动报警电子密码锁系统的设计

    基于AT89C2051单片机的防盗自动报警电子密码锁系统的设计。
    发表于 02-17 16:50 27次下载

    AT89C2051单片机制作的数字电容

    AT89C2051单片机制作的数字电容
    发表于 01-04 14:16 19次下载

    基于AT89C2051单片机的GPS时钟系统

    基于AT89C2051单片机的GPS时钟系统
    发表于 02-07 16:14 34次下载

    如何使用AT89C2051单片机实现节日彩灯控制电路的程序

    本文档的主要内容详细介绍的是如何使用AT89C2051单片机实现节日彩灯控制电路的程序免费下载。
    发表于 03-16 16:57 34次下载

    使用AT89C2051单片机实现模转数换的程序免费下载

    本文档的主要内容详细介绍的是使用AT89C2051单片机实现模转数换的程序免费下载。
    发表于 03-25 11:36 27次下载