标题:
51单片机频率计的实现
[打印本页]
作者:
Code_xzh
时间:
2019-6-3 18:55
标题:
51单片机频率计的实现
0.png
(94.7 KB, 下载次数: 20)
下载附件
2019-6-3 20:31 上传
代码在下方附件下载完整代码及电路图
单片机源程序如下:
#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)
2019-6-3 18:54 上传
点击文件名下载附件
附件代码
下载积分: 黑币 -5
作者:
yellows32
时间:
2020-3-2 00:52
兄弟 为什么你的误差这么大
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1