//--------QQ:1239300456------------------------------------------ #include <AT89X52.H> #include<lcm045a.h> #include<adc0832.h> #define uchar unsigned char #define uint unsigned int uchar adc0,adc1; uchar ad8; uint ad16; uchar keycount; sbit mode=P3^7;//模式 //--------------------------------------------------------------- void delay(uint k) { uint i,j; for(i=0;i<k;i++){ for(j=0;j<59;j++) {;}} } //--------------------------------------------------------------- void beep(void) { TR0=0; wrt_com(0x8c0); wrt_com(0x812); delay(20); wrt_com(0x810); TR0=1; } //--------------------------------------------------------------- void display(void) { if(keycount==0|keycount==1){ds0=10;ds1=ad8/100;ds2=ad8/10%10;ds3=ad8%10;} if(keycount==2){ds0=ad16/10000;ds1=ad16/1000%10;ds2=ad16/100%10;ds3=ad16/10%10;} wrt_s(ds0,ds1,ds2,ds3);//显示数字 } //--------------------------------------------------------------- void key(void) { if(mode==0){beep(); if(mode==0){keycount++; if(keycount>2)keycount=0; while(mode==0);delay(15);}} } //--------------------------------------------------------------- void main(void) { TMOD=0x01; TH0=0x9e; TL0=0x58; EA=1; ET0=1; TR0=1; keycount=2; set_lcm045(); while(1){ key(); }} //--------------------------------------------------------------- void Timer0Interrupt(void) interrupt 1 { uchar i; TH0=0x9e; TL0=0x58; i++; if(i==2){i=0; if(keycount==0){ad8=Adc0832(0);d0=d1=d2=d3=0;wrt_data(disbit[4]);}//电压 if(keycount==1){ad8=Adc0832(1);d0=d2=d3=0;d1=1;wrt_data(disbit[5]);}//电流 if(keycount==2){adc0=Adc0832(0);adc1=Adc0832(1);d0=d1=d3=0;d2=1;ad16=adc0*adc1;wrt_data(disbit[6]);}//功率 display();} } //---------------------------------------------------------------
|