讀入一個(gè)頻率,判斷頻率范圍,在數(shù)碼管上顯示相應(yīng)頻率對(duì)應(yīng)的數(shù)碼,現(xiàn)在能判斷一次,然后數(shù)碼管顯示會(huì)卡在第一次頻率對(duì)應(yīng)的數(shù)值,讀入不了新的對(duì)應(yīng)數(shù)碼 #include <reg52.h>
sbit beep=P1^5; //定義蜂鳴器接口 sbitk1 = P3^0; //定義測(cè)量啟動(dòng)按鍵 sfr16DPTR = 0x80; //定義DPTR unsignedchar code LEDcode[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f}; unsigned char Count,f; inta,b;
void delay(unsigned char m) //延時(shí)函數(shù) { while(m--); }
void init() //定時(shí)計(jì)數(shù)器初始化 { f=0; a=0; b=0; TMOD = 0X15; TH0 = 0x00; //計(jì)數(shù)器0初始化,計(jì)數(shù)初值為0000H TL0 = 0x00; TR0 = 0;
TH1 = 0xd8; // 定時(shí)器1初始化,定時(shí)時(shí)間0.01秒 TL1 = 0xf0; TR1 = 0; IE=0X8A; } void int0()interrupt 1 //計(jì)數(shù)器T0計(jì)數(shù) { a++; // TH0=0X00; // TL0=0X00; TR0=1; } voidint1()interrupt 3 //定時(shí)器T1 {b++; // if(b==100) // {TR1=0;} // else TH1=0xd8; TL1=0Xf0; TR1=1; } voidduanlu() // { if(f<0) { beep=1; delay(500); beep=0; } }
voidmain() //主函數(shù) { init(); while(1) { // Count=0; // P0=LEDcode[Count/10]; //十位送數(shù)碼管十位顯示 // P2=LEDcode[Count%10]; //個(gè)位送數(shù)碼管個(gè)位顯示
if(k1==0) { f=0; TR0 = 1; TR1 = 1; if(b==100) { while(1) { TR0=0; TR1=0; DPH=TH0; DPL=TL0; f=(a*65535+DPTR); // P0=LEDcode[f%10000]; /* switch(f/1000) { case(5):P0=0x06;break; case(6):P0=0x5b;break; case(7):P0=0x4f;break; default:P0=0x66;break; } *****/ if(4.6<=f<5.0 ) {P0=0x06;} else if( 5.8<=f<6.0 ) {P0=0x5b;} else if( 6.7<=f<7.0 ) {P0=0x4f;} elseif( 7.5<=f<7.8 ) {P0=0x66;} elseif( 8.0<=f<8.6 ) {P0=0x6d;} elseif( 9.0<=f<9.4 ) {P0=0x7d;} elseif( 9.7<=f<10.0 ) {P0=0x07;} elseif( 10.2<=f<11.0 ) {P0=0x7f;} elseif( 11.3<=f<11.6 ) {P0=0x6f;} // if(9.8<=f<10.0 ) {P0=0x66;} // if(8.65<=f<8.67 ) {P0=0x6d;} // if(11.5<=f<12.0 ) {P0=0x7d;} // if(12<=f<12.5) {P0=0x07;} // if(8<=f<9 ) {P0=0x7f;} // if(9<=f<10 ) {P0=0x6f;}
beep=1; delay(500); beep=0; } } } } }
|