资料介绍
#include
unsigned char t=0,yichu=0,fenpin;
sbit B153=P2^0;
sbit A153=P2^1;
sbit GATE=P2^6;
sbit CLR=P2^7;
sbit P33=P3^3;
void t0(void)interrupt 1
{t++;
yichu=2; //定时器0溢出,yichu=2
}
void t1(void)interrupt 3 //计数器1溢出,yichu=1
{TCON=0;
yichu=1;
TH1=0xff;
TL1=0xff;
}
void delay(void) //1s软件延时
{unsigned int i=500,j;
while(i)
{i--;
j=250;
while(j)
{j--;}
}
}
unsigned char table(unsigned char x) //软件查表输出
{unsigned char code n[10]={0xee,0x82,0xdc,0xd6,0xb2,0x76,0x7e,0xc2,0xfe,0xf6};
return(n[x]);
}
display(float f) //以测出的频率串行输出
{unsigned long x;
unsigned char a[5]={0,0,0,0,0},i=0,j;
if(f!=0){
if((f<10000)&&(f>1)) //正常显示
{if(f>1000)f=f-1; //软件修正频率偏差
while(f<1000)
{f=f*10;
i++;
}
x=f*10;
a[4]=x%10;
if(a[4]>=5)f=f+1;;
x=f;
a[1]=x%10;
a[2]=(x/10)%10;
a[3]=(x/100)%10;
a[4]=(x/1000)%10;
for(j=0;j<5;j++)
{a[j]=table(a[j]);}
a[i+1]++;
a[0]=0;
}
else if(f>=10000) //以科学计数法显示
{while(f>=1000)
{f=f/10;
i++;
}
x=f;
a[4]=(unsigned char)((float)((f-x))*10);
if(a[4]>=5)x++; //四舍五入
a[2]=x%10;
a[3]=(x/10)%10;
a[4]=(x/100)%10;
a[0]=i+2;
for(j=0;j<5;j++)
{a[j]=table(a[j]);}
a[4]++;
a[1]=0x7c;
}
else
{x=f*10000; //频率值小于1
if((x%10)>=5)x=x+10; //四舍五入
x=x/10;
a[1]=x%10;
a[2]=(x/10)%10;
a[3]=(x/100)%10;
a[4]=(x/1000)%10;
for(j=0;j<5;j++)
{a[j]=table(a[j]);}
a[4]++;
a[0]=0;
}
}
for(j=0;j<5;j++) //串行
{SBUF=a[j];
while(TI==0);}
}
cepin()
{unsigned char i;
float sj;
unsigned long js;//时间、计数的拼音首字母
float f; //f为频率
TMOD=0xd9;
t=0;
TH0=0;
TL0=0;
TH1=0;
TL1=0;
GATE=0;
TCON=0x50;
GATE=1;
delay();
GATE=0;
for(i=0;i<250;i++){} //延时1ms
sj=((float)(TH0*256+t*65536+TL0))/1000000.0;
js=(long)TH1*256+TL1+1;
f=(js/sj)*fenpin;
display(f);
}
panduan()
{float zhouqi;
B153=1;
A153=1;
TMOD=0x51;
TH0=0xce; //定时器0=12.8ms
TL0=0;
TH1=0xff; //计数器1=100个脉冲
TL1=0x9c;
TCON=0x50;
while(yichu==0);
TCON=0;
if(yichu==1) //计数器先溢出:在12.8ms内测得的脉冲过多,说明频率较高
{fenpin=128;//转为测128分频后的频率
cepin();}
else //计时器先溢出:100个脉冲的时间比较短,即频率较低,可以减少分频数
{yichu=0;
B153=1;
A153=0;
TH0=0xc1; //定时器0=16ms
TL0=0x80;
TH1=0xff; //计数器1=100个脉冲
TL1=0x9c;
TCON=0x50;
while(yichu==0);
TCON=0;
if(yichu==1) //计数器先溢出:在16ms内测得的脉冲过多,说明频率较高
{fenpin=16;//转为测16分频后的频率
cepin();}
else //计时器先溢出:100个脉冲的时间比较短,即频率较低,用2分频测周期
{B153=0; //以下是测周期部分
A153=0;
TH0=0;
TL0=0;
t=0;
TMOD=0x09;
TR0=1;
GATE=1;
while(P33==0);
GATE=0;
while(P33==1);
TR0=0;
zhouqi=(TH0*256+t*65536+TL0)/1000000.0;
if(zhouqi<0.001) //若周期太小,则转为测原频率
{fenpin=1;
B153=0;
A153=0;
cepin();}
else{display((1.0/zhouqi));}
}
}
}
main()
{
IE=0x8a;
while(1)
{
panduan(); //判断原频率属于哪个范围,并调用相应函数测其频率
delay();
}
}
- 基于单片机的频率计设计 单片机 仿真 频率计
- 基于51单片机的频率计源代码下载 158次下载
- 基于51单片机的频率计设计方案 15次下载
- 无线遥控频率计C语言源代码下载 37次下载
- 频率计的PCB原理图免费下载 66次下载
- 频率计设计与仿真 129次下载
- 频率计仿真 基于51单片机频率计protues仿真程序设计 频率 221次下载
- 数字频率计 57次下载
- 频率计英文文献 4次下载
- 基于Multisim的数字频率计的设计 134次下载
- 基于verilog语言的数字频率计设计 0次下载
- 数字频率计的制作 155次下载
- 超高频数字频率计的设计
- 简易频率计设计
- 基于FPGA的数字频率计的设计与实现
- 频率计的使用方法 613次阅读
- 频率计的工作原理和分类详解 1568次阅读
- 频率计的基本概念和组成部分 702次阅读
- 频率计的基本原理及分类 频率计的功能特点及应用场景 2511次阅读
- 频率计的使用方法和注意事项 1243次阅读
- 频率计有哪些作用 970次阅读
- 分享一个简单的模拟频率计电路 2387次阅读
- 频率计数器的工作原理和发展 1.2w次阅读
- 电子小信号数字频率计的设计与制作 5932次阅读
- 基于FPGA自适应数字频率计的设计 6500次阅读
- cpu时钟频率计算公式_CPU频率计算方法详解 3.3w次阅读
- 简易数字频率计电路图大全 6.5w次阅读
- 基于单片机简易数字频率计设计方案汇总 3.2w次阅读
- AT89C51单片机频率计的C源程序设计 5061次阅读
- 0.1-10Hz放大器噪声测量滤波器电路图 2443次阅读
下载排行
本周
- 1PC1013三合一快充数据线充电芯片介绍
- 1.03 MB | 5次下载 | 免费
- 2基于c51的时钟设计
- 0.56 MB | 3次下载 | 免费
- 3智能门锁原理图
- 0.39 MB | 3次下载 | 免费
- 4CC256x TI蓝牙协议栈基础HFGAGDemo应用
- 1006.09KB | 2次下载 | 免费
- 5通过C51单片机控制数码管显示
- 0.56 MB | 2次下载 | 免费
- 62024PMIC市场洞察
- 2.23 MB | 2次下载 | 免费
- 7CC256x TI Bluetooth Stack SPPLEDemo应用
- 1.48MB | 1次下载 | 免费
- 8电源拓扑快速参考指南
- 3.98MB | 1次下载 | 免费
本月
- 1XL4015+LM358恒压恒流电路图
- 0.38 MB | 146次下载 | 1 积分
- 2新概念模拟电路第四册信号处理电路电子书免费下载
- 10.69 MB | 65次下载 | 免费
- 3PCB布线和布局电路设计规则
- 0.40 MB | 23次下载 | 免费
- 4GB/T4706.1-2024 家用和类似用途电器的安全第1部分:通用要求
- 7.43 MB | 11次下载 | 1 积分
- 5JESD79-5C_v1.30-2024 内存技术规范
- 2.71 MB | 10次下载 | 免费
- 6elmo直线电机驱动调试细则
- 4.76 MB | 9次下载 | 6 积分
- 7串口工具UartAssist5.0.exe
- 0.60 MB | 8次下载 | 免费
- 8使用CR6850C设计并制作12V5A开关电源
- 1.53 MB | 6次下载 | 2 积分
总榜
- 1matlab软件下载入口
- 未知 | 935115次下载 | 10 积分
- 2开源硬件-PMP21529.1-4 开关降压/升压双向直流/直流转换器 PCB layout 设计
- 1.48MB | 420061次下载 | 10 积分
- 3Altium DXP2002下载入口
- 未知 | 233084次下载 | 10 积分
- 4电路仿真软件multisim 10.0免费下载
- 340992 | 191367次下载 | 10 积分
- 5十天学会AVR单片机与C语言视频教程 下载
- 158M | 183330次下载 | 10 积分
- 6labview8.5下载
- 未知 | 81581次下载 | 10 积分
- 7Keil工具MDK-Arm免费下载
- 0.02 MB | 73806次下载 | 10 积分
- 8LabVIEW 8.6下载
- 未知 | 65985次下载 | 10 积分
评论
查看更多