基于51单片机的数字电容测量仪 联系客服

发布时间 : 星期三 文章基于51单片机的数字电容测量仪更新完毕开始阅读

. .

p++;

}

lcd_pos(0x40); for(i=0;i<16;i++) {

LCD_write_Data(' ');

}

}

unsigned char pro_data(unsigned char mda) 低位互换

{ unsigned char enddat; unsigned char i; enddat = 0; for(i=0;i<8;i++) { enddat = enddat << 1; if(mda & 0x01 == 1) { enddat = enddat | 0x01;

} else { enddat = enddat | 0x00; }

mda = mda >> 1;

}

return enddat;

}

(e)main.c程序清单:

word完美格式

//数据处理函数,将高位和 . .

#include #include \#include \

sbit vo = P3^2; // 用于检测P3.2口的值,计算时间。 计时器0的开与断 sbit tr = P3^7;

// 产生一个低电平脉冲

sbit ledclc = P2^7;

sbit con1 = P0^0; sbit con2 = P0^1; sbit con3 = P0^2;

sbit key1 = P0^3; sbit key2 = P0^4; sbit key3 = P0^5; sbit key4 = P0^6;

sbit led1 = P2^3; sbit led2 = P2^4; sbit led3 = P2^5; sbit led4 = P2^6;

unsigned int tw;

float ftemp;

unsigned long int c;

word完美格式

// 超量程提示灯

// 用于控制继电器,实现档位选择

// 独立按键部分,用于用户选择量程

// 量程提示灯

// 用于获取定时器的数值 // 用于计算电容值的中间变量

// 存放电容值

. .

unsigned char need; 结束置0

// 需要测量时置1,一次测量

unsigned char R; // 表示不同的档位 unsigned char flag; // 数据处理结束置1 unsigned char temp[8]; // 存放电容值的各个位 unsigned char zimu1[] = \ unsigned char zimu2[] = %unsigned char zimu3[] = %unsigned char zimu4[] = \ to measure %unsigned char zimu5[] = \void process(unsigned long int c); void keyscan();

// 数据处理函数

// 键盘扫描函数

// 量程指示灯函数 //量程太高

void ledlight(unsigned char R);

void init_timer0() // 定时器0 初始化 { 断

}

void init_INT1 () { }

EA = 1;

IT1 = 1; // 下降沿触发 EX1 = 1;

// 定时器0 初始化

TH0 = 0x00; TL0 = 0x00; EA = 1;

ET0 = 1; TR0 = 1; TMOD = 0x09;

// gate置1,方式1,16位计时,定时器由P3.2控制开

void main()

word完美格式

. .

{

ledclc = 1; need = 0;

// 超量程提示灯熄灭

// 一开始无需测量

con1 = con2 = con3 = 0;

flag = 0;

// 初始化

init_timer0(); 束

{

{

init_INT1(); LCD_init();

dispchar1(zimu3); dispchar2(zimu4); while(1) {

if(need == 1)

{

// 当需要测量时

if(vo == 0 ) //vo == 0时检测计数器的值可能还没开始计数,可能计数结

if(TH0 != 0x00 || TL0 != 0x00) // 是计数结束 若有读数,用tw 存

tw = TH0 << 8; tw = tw | TL0; TH0 = 0x00; TL0 = 0x00;

need = 0; // 需要再次测量时,need置1.避免tw的值

被更//改 即不需要测量时,一直保持 // 一次结束,计时器清零

}

EX1 = 1; // 开外部中断1

else // 反之,证明没有计数,无电容,默认值tw置0 {

word完美格式