51单片机频率计c语言程序,51单片机简易频率计源代码
//定時器0 設置定時時間1秒?? 定時器1 設置計數1秒內的脈沖數量
#include
#define uchar unsigned char
#define uint unsigned int
uint ff;?? //接受頻率值
uchar start=1;?? //定時器,計數模式啟動變量
code uchar seg[]={0x28,0x7e,0xa2,0x62,0x74,0x61,0x21,0x7a,0x20,0x60};
code uchar tab[]={0x7f,0xbf,0xdf,0xef,0xf7,0xfb,0xfd,0xfe};
void delay(uint k)? //延時函數
{
while(k--);
}
void show(uint k)? //數值顯示函數
{
static uchar i,j;
uint ss[5];
i=0;
do
{
ss[i]=k%10;
i++;
}while(k/=10);
for(j=0;j
{
P0=seg[ss[j]];
P2=tab[j];
delay(100);
P0=0xff;
P2=0xff;
}
}
void time0_init()
{
TMOD|=0x01;? //定時器0 定時模式 計數范圍65536
TH0=0x3c;???????? //定時初值50ms
TL0=0xb0;
TR0=0;???? //暫停定時器0
}
void time1_init()
{
TMOD|=0x50;???? //定時器1? 計數模式,計數范圍65536
TH1=0;????? //計數初值0
TL1=0;
TR1=0;????//暫停計數器
}
void str_init()??? //定時器中斷
{
EA=1;
ET0=1;
}
void time0_event() interrupt 1
{
static uchar i;
i++;
TH0=0x3c;???????? //定時初值50ms
TL0=0xb0;
if(i==20)
{
i=0;
TR1=0;??? //停止計數
TR0=0;????????? //停止定時
ff=(TH1*256+TL1);?? //求出頻率值?? 就是1秒內脈沖次數
TH1=0;????????? //計數值清零
TL1=0;
TH0=0x3c;???????? //定時初值50ms
TL0=0xb0;
start=1;?????????????? //啟動定時器開啟變量
}
}
void main()
{
time0_init();
time1_init();
str_init();
while(1)
{
if(start==1)
{
TR0=1;? //啟動定時器
TR1=1;? //啟動計數器
start=0;? //關閉啟動變量位 保證1秒時間
}
show(ff);
}
}
總結
以上是生活随笔為你收集整理的51单片机频率计c语言程序,51单片机简易频率计源代码的全部內容,希望文章能夠幫你解決所遇到的問題。
- 上一篇: ubuntu下mplayer 使用(3
- 下一篇: 缓冲机制