数字电容测量仪
附录
附录1 实物图
18
数字电容测量仪
附录2 元件清单
元器件
万能板 STC89C52芯片 单片机/555底座 12M晶振 按键开关 555芯片
10k排阻/200/10k/1k电阻 LCD1602 74HC08 5V电源 103可变电阻 开关
100/1k/10k/100k精密可调电阻 30PF瓷电容 10uf/35uf电解电容
数量 1 1 1 1 4 1 1 1 1 1 1 6 1 1 1
单位 块 个 个 个 个 个 个 个 个 个 个 个 个 个 个
19
数字电容测量仪
附录3 系统原理图
20
数字电容测量仪
附录4 程序清单
#include
#define DATA P0
sbit RW=P2^6; //1602写数据 sbit RS=P2^5; //1602写地址 sbit EN=P2^7; //1602工作使能 sbit b_test=P3^7; //开始测量电容的按键输入 sbit _reset=P3^6; //555时基芯片工作控制信号 unsigned int T_flag,N,C,i,Dis1,Dis0;
unsigned int b[6]={0X13,0X0D,0X00,0X00,0X25,0X16};
/***********延时1MS******************/ void Delay1ms(unsigned int mm) {unsigned int i; for(mm;mm>0;mm--) for(i=100;i>0;i--); }
/***************检查忙否*****************/ void Checkstates() {
unsigned char dat; RS=0; RW=1;
do{EN=1;//下降沿 _nop_();//保持一定间隔
_nop_();
dat=DATA;
21
//显示C=00UF 数字电容测量仪
_nop_();
_nop_();
EN=0;
}while((dat&0x80)==1); }
/**************LCD写命令函数*********/ void wcomd(unsigned char cmd) {
Checkstates(); 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_();
22