实时检测电容值,包含电源电路、液晶显示电路、电容测量电路、按键电路、声光报警电路、单片机电路等。
/* 预处理区 */
#include /* 加载"reg52.h"头文件 */
#include /* 加载"math.h"头文件 */
/* 宏定义 */
#define unchar unsigned char /* 无符号字符型 */
#define unint unsigned int /* 无符号整型 */
#define N 10 /* 延时参数 */
/* 数组常量定义 */
unchar code row1[] = "==Capacitance=="; /* 液晶输出的第一行显示编码 */
unchar code row2[] = { "0123456789" }; /* 液晶的0~9编码 */
unchar code tip_1[] = "Please Lini Cap"; /* 液晶输出行 */
unchar code tip_2[] = "Then Pess start"; /* 液晶输出行 */
/* 位定义 */
sbit lcd_rs = P2 ^ 0; /* 液晶的数据命令选择端 */
sbit lcd_rw = P2 ^ 1; /* 液晶的读写选择端 */
sbit lcd_en = P2 ^ 2; /* 液晶的使能端 */
sbit show = P1 ^ 0; /* 开始按键 */
sbit clear = P1 ^ 1; /* 清屏按键 */
sbit led = P1 ^ 2; /* 电源灯 */
sbit alerm = P2 ^ 7;
/* 变量定义 */
unint flag = 0; /* 标志位 */
double count = 0; /* 计数 */
double final = 0; /* 高电平时间 */
double cx = 0; /* 电容数值 */
unint w1, w2, w3, w4, i, n1, n2, n3, n4, n5; /* 变量定义 百位,十位,个位,十分位,循环计数位。 */
float E0 = 8.854e-6; /* 电容单位uf,约掉e6 */
float H = 0.5;
float PI = 3.14;