设计任务
设计并制作一个数字电容表,系统实现的功能及要求如下:
(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所示。
3 at89c205l简介
at89c2051是atmel公司生产的低电压、高性能cmos 8位单片机,片内含2 kb可反复擦写的只读程序存储器(eprom)和128 b的随机数据存储器。器件采用atmei公司的高密度、非易失性存储技术生产,兼容标准mcs51指令系统,片内置通用8位中央处理器和flash存储单元。at89c2051作为at89c51的简化版虽然去掉了p0,p2等端口,使i/o口减少了,但是却增加了一个电压比较器,因此其功能在某些方面反而有所增强。引脚图如图2所示。
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所示。
图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内部的电压比较器和电阻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所示。
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文件源程序如下:
LM3421:如何设计一款适合汽车应用的驱动电路
LED显示屏在酒店应用案例
中国联通积极落实国家提速降费政策推出了八项惠民措施
5G给基站射频 PA 的设计带来了哪些挑战?
iOS11.0.3升级体验:遭网友群嘲 “修复了太流畅的bug?”
采用AT89C2051单片机实现数字电容表的设计
新iPhone破发 苹果如何才能继续抬高产品的溢价
AI芯片助推华米科技穿戴产业升级
美国半导体领域优势正在萎缩,拥有全球近一半的市场份额
AT32讲堂021 | 如何使用AT32 MCU的SPIM作为外部存储器的扩展功能
2027年蜂窝物联网连接将增至 55 亿
通过park变换得到的Id、Iq有什么具体的物理含义?
真的18个月不卡,德国评测机构发现华为EMUI的秘诀!
揭开天线的面纱,剥开天线的外衣
HIFI智能手机价格集体跳水 便携音频设备未来出路在哪
基于Linux系统和ZigBee的智能家居系统方案
无线共享充电技术怎么就成了三星旗舰机的标配
华为任正非:我们要敢于吸收国内外人才,发挥创造才华
我国电动汽车已经进入产业化阶段,动力锂电池市场需求巨大
数字压力传感器在气象监测系统中的作用