|
基于AT89C51的波形頻率計(jì)數(shù)器仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)
0.png (14.75 KB, 下載次數(shù): 52)
下載附件
2019-6-1 04:31 上傳
單片機(jī)源程序如下:
- #include <reg51.h>
- #define uchar unsigned char
- #define uint unsigned int
- sfr16 DPTR=0x82;
- uchar cnt_t0,cnt_t1,shiwan,wan,qian,bai,shi,ge;
- unsigned long freq;
- uchar code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};
- void delay(uint j)
- {
- uint i;
- for(;j>0;j--)
- for(i=0;i<55;i++) ;
- }
-
- void init(void)
- {
- freq=0;
- cnt_t1=0;
- cnt_t0=0;
- IE=0x8a;
- TMOD=0x15;
-
- TH1=0x3c;
- TL1=0xb0;
- TR1=1;
-
- TH0 =0;
- TL0 =0;
- TR0=1;
- }
- void show(unsigned long freq_num)
- {
- shiwan =freq_num%1000000/100000;
- wan=freq_num%100000/10000;
- qian=freq_num%10000/1000;
- bai=freq_num%1000/100;
- shi=freq_num%100/10;
- ge=freq_num%10;
-
- P2=0xfe;
- P0=table[shiwan];
- delay(5);
- P2=0xfd;
- P0=table[wan];
- delay(3);
- P2=0xfb;
- P0=table[qian];
- delay(3);
- P2=0xf7;
- P0=table[bai];
- delay(3);
- P2=0xef;
- P0=table[shi];
- delay(3);
- P2=0xdf;
- P0=table[ge];
- delay(3);
- /*
- uint i;
- P2=0xfe;
- for(i=0;i<5;i++)
- {
- P0=table[freq_num%10];
- freq_num=freq_num/10;
- delay(3);
- P2=(P2<<1)+1;
- }
- delay(3); */
- }
- void main()
- {
- P0=0xff;
- init();
- while(1)
- {
- if(cnt_t1==19)
- {
- cnt_t1=0;
- TR1=0;
- delay(84);
- TR0=0;
- DPL=TL0;
- DPH=TH0;
- freq=cnt_t0*65536;
- freq=freq+DPTR;
- }
- show(freq);
- }
- }
- void t1_func(void) interrupt 3
- {
- TH1=0x3c;
- TL1=0xb0;
- cnt_t1++;
- }
- void t0_func(void) interrupt 1
- {
- cnt_t0++;
- }
復(fù)制代碼
所有資料51hei提供下載:
頻率計(jì)數(shù)器.zip
(90.86 KB, 下載次數(shù): 92)
2019-5-27 18:19 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
|
|