简易频率计数器
时间:10-02
整理:3721RD
点击:
#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char
bit flag;
uchar dis_buff[]={0,0,0,0,0,0}; //一个空的缓冲数组
uint T0count;
uint a,b,x;
//数码管段显示
uchar code leddata[]={
0x3F, //"0"
0x06, //"1"
0x5B, //"2"
0x4F, //"3"
0x66, //"4"
0x6D, //"5"
0x7D, //"6"
0x07, //"7"
0x7F, //"8"
0x6F, //"9"
};
//位显示
uchar code table_1[]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe}; //从右至左显示,低位在最右边。
//延时函数
void delay(uint k)
{
uint i,j;
for(i=k;i>0;i--);
for(j=110;j>0;j--);
}
//初始化,T0为计数器,T1为定时器
void init()
{
TMOD=0X15;
TH0=0;
TL0=0;
TH1=(65536-50000)/256;
TL1=(65536-50000)%256;
EA=1;
ET0=1;
ET1=1;
TR0=1;
TR1=1;
}
void T0_inte() interrupt 1 //计数
{
T0count++;
}
void T1_inte() interrupt 3 //定时
{
TH1=(65536-50000)/256;
TL1=(65536-50000)%256;
a++;
if(a==20) //一秒的定时
{
TR0=TR1=0;
a=0;
flag=1;
}
}
void main()
{
init();
if(flag==1)
{
flag=0;
x=T0count*65536+TH0*256+TL0;
dis_buff[4]=x/10000; //拆分计数值
dis_buff[3]=(x%10000)/1000;
dis_buff[2]=(x%1000)/100;
dis_buff[1]=(x%100)/10;
dis_buff[0]=x%10;
TH0=0;
TL0=0;
}
for(b=0;b<5;b++)
{
P2=table_1[b];
P0=leddata[dis_buff[b]];
delay(1);
}
}
proteus制作的电路图已经上传了!
希望大神帮帮我,这个问题困扰我好久了!谢谢了!
#define uint unsigned int
#define uchar unsigned char
bit flag;
uchar dis_buff[]={0,0,0,0,0,0}; //一个空的缓冲数组
uint T0count;
uint a,b,x;
//数码管段显示
uchar code leddata[]={
0x3F, //"0"
0x06, //"1"
0x5B, //"2"
0x4F, //"3"
0x66, //"4"
0x6D, //"5"
0x7D, //"6"
0x07, //"7"
0x7F, //"8"
0x6F, //"9"
};
//位显示
uchar code table_1[]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe}; //从右至左显示,低位在最右边。
//延时函数
void delay(uint k)
{
uint i,j;
for(i=k;i>0;i--);
for(j=110;j>0;j--);
}
//初始化,T0为计数器,T1为定时器
void init()
{
TMOD=0X15;
TH0=0;
TL0=0;
TH1=(65536-50000)/256;
TL1=(65536-50000)%256;
EA=1;
ET0=1;
ET1=1;
TR0=1;
TR1=1;
}
void T0_inte() interrupt 1 //计数
{
T0count++;
}
void T1_inte() interrupt 3 //定时
{
TH1=(65536-50000)/256;
TL1=(65536-50000)%256;
a++;
if(a==20) //一秒的定时
{
TR0=TR1=0;
a=0;
flag=1;
}
}
void main()
{
init();
if(flag==1)
{
flag=0;
x=T0count*65536+TH0*256+TL0;
dis_buff[4]=x/10000; //拆分计数值
dis_buff[3]=(x%10000)/1000;
dis_buff[2]=(x%1000)/100;
dis_buff[1]=(x%100)/10;
dis_buff[0]=x%10;
TH0=0;
TL0=0;
}
for(b=0;b<5;b++)
{
P2=table_1[b];
P0=leddata[dis_buff[b]];
delay(1);
}
}
proteus制作的电路图已经上传了!
希望大神帮帮我,这个问题困扰我好久了!谢谢了!
不懂诶 大神帮帮他吧
这个好像不行吧,试过了,不显示呀
脉冲信号应该接到T0吧而你接到串口上。