标题:
基于AT89C51的波形频率计数器Proteus仿真+代码
[打印本页]
作者:
wongj
时间:
2019-5-27 18:18
标题:
基于AT89C51的波形频率计数器Proteus仿真+代码
基于AT89C51的波形频率计数器仿真原理图如下(proteus仿真工程文件可到本帖附件中下载)
0.png
(14.75 KB, 下载次数: 52)
下载附件
2019-6-1 04:31 上传
单片机源程序如下:
#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++;
}
复制代码
所有资料51hei提供下载:
频率计数器.zip
(90.86 KB, 下载次数: 92)
2019-5-27 18:19 上传
点击文件名下载附件
下载积分: 黑币 -5
作者:
lyh1656717786
时间:
2019-6-11 20:50
那个图文件夹里面的文件怎么打开啊
作者:
wongj
时间:
2019-6-18 12:48
lyh1656717786 发表于 2019-6-11 20:50
那个图文件夹里面的文件怎么打开啊
DSN文件要用Proteus打开
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1