代码在下方附件下载完整代码及电路图
单片机源程序如下:
- #include<reg51.h>
- sfr16 DPTR =0x82;
- unsigned char cnt_t0,cnt_t1,qian,bai,shi,ge,bb,wan,shiwan;
- unsigned long freq;
- unsigned char code table[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,
- 0x3c,0x39,0x5e,0x79,0x71};
- void delay_1ms(unsigned int z)
- {
- unsigned char i,j;
- for(i=0;i<z;i++)
- for(j=0;j<110;j++);
- }
- void init()
- {
- 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 display(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;
- P0=0xdf;
- P2=table[shiwan];
- delay_1ms(5);
- P0=0xef;
- P2=table[wan];
- delay_1ms(3);
- P0=0xf7;
- P2=table[qian];
- delay_1ms(3);
- P0=0xfb;
- P2=table[bai];
- delay_1ms(3);
- P0=0xfd;
- P2=table[shi];
- delay_1ms(3);
- P0=0xfe;
- P2=table[ge];
- delay_1ms(3);
- }
- main()
- {
- P0=0xff;
- init();
- while(1)
- {
- if(cnt_t1==19)
- {
- cnt_t1=0;
- TR1=0;
- delay_1ms(141);
- TR0=0;
- DPL=TL0;
- DPH=TH0;
- freq=cnt_t0*65535;
- freq=freq+DPTR;
- }
- display(freq);
- }
- }
- void t1_func() interrupt 3
- {
- TH1=0x3c;
- TL1=0xb0;
- cnt_t1++;
- }
- void t0_func() interrupt 1
- {
- cnt_t0++;
- }
复制代码
所有资料51hei提供下载:
频率计.zip
(95.29 KB, 下载次数: 57)
|