#include "reg52.h"
#include "1602.h"
#define uchar unsigned char
#define uint unsigned int
#define ulong unsigned long int
uchar display_HZ[16]={0};
uchar automatic_mode[]=" Automatic_Mode ";
uchar manual_mode_mf[]=" Manual_Mode_MF ";
uchar manual_mode_mt[]=" Manual_Mode_MT ";
ulong num,t1,temp; //temp是中断的次数
sbit beep=P1^5;
sbit k1=P3^1;
sbit k2=P3^0;
char mode=0,autoo=1; //mode模式,0测频法,1测周法,autoo表示手动调节还是自动调节
void delay1ms(uchar);
void display(ulong);
void init();
void liushui_LED(uchar a);
void key1(void);
void key2(void);
void main()
{
init();
LCD1602_init(); //初始化
while(1)
{
key1();
key2();
if(autoo==0) //手动模式
{
liushui_LED(1);
if(mode==0) //模式0,测频,开启定时器1
{
ET1=1;
TR1=1;
TH1=(65536-46080)/256; //设置高八位的初值
TL1=(65536-46080)%256; //设置低八位的初值
}
if(mode==1) //模式1,测周,关闭定时器1
{
ET1=0;
TR1=0;
}
}
else
liushui_LED(0);
display(num);
// while(num!=0&&(num<10||num>100000))//报警函数
// {
// delay1ms(1000);
// if(num!=0&&(num<10||num>100000))
// {
// beep=~beep;
// delay1ms(1);
// }
// }
}
}
void liushui_LED(uchar a)
{
char i;
if(a==1)
{
for(i=0;i<8;i++)
{
P2=~(0x01<<i); //将1右移i位,然后将结果赋值到P2口
delay1ms(500);
}
}
if(a==0)
{
P2=0xff;
}
}
void key1(void)
{
if(k1==0) //检测按键K1是否按下
{
delay1ms(10); //消抖
if(k1==0) //再次判断按键是否按下
{
autoo=!autoo;
}
while(!k1); //检测按键是否松开
delay1ms(10);
while(!k1);
}
}
void key2(void)
{
if(k2==0) //检测按键K2是否按下
{
delay1ms(5); //消抖动
if(k2==0) //再次判断按键是否按下
{
mode=!mode; //切换测频率模式
temp=0;
t1=0;
}
while(!k2); //检测按键是否松开
}
}
/*********初始化函数*********/
void init()
{
TMOD=0x10; //定时器1选择为模式1
EA=1; //开总中断
EX0=1;//开外部中断0
IT0=1;//下降沿触发
ET1=1;//开定时器1中断
TR1=1;//定时器1开始工作
TH1=(65536-46080)/256; //设置高八位的初值
TL1=(65536-46080)%256; //设置低八位的初值
P2=0xff;
}
/***********显示函数*************/
void display(ulong n)
{
uchar i,a;
uchar sw,wan,qian,bai,shi,ge; //分别表示千万位、百万位...
sw = n/100000%10;
wan = n/10000%10;
qian= n/1000%10;
bai = n/100%10;
shi = n/10%10;
ge = n%10;
if(mode==0) //测频显示
{
display_HZ[0]=' ';
display_HZ[1]=' ';
display_HZ[2]=' ';
display_HZ[3]='f';
display_HZ[4]=':';
display_HZ[5]=sw+'0';
display_HZ[6]=wan+'0';
display_HZ[7]=qian+'0';
display_HZ[8]=bai+'0';
display_HZ[9]=shi+'0';
display_HZ[10]=ge+'0';
display_HZ[11]='H';
display_HZ[12]='Z';
display_HZ[13]=' ';
display_HZ[14]=' ';
display_HZ[15]=' ';
}
if(mode==1) //测周显示
{
display_HZ[0]=' ';
display_HZ[1]=' ';
display_HZ[2]=' ';
display_HZ[3]='f';
display_HZ[4]=':';
display_HZ[5]=wan+'0';
display_HZ[6]=qian+'0';
display_HZ[7]=bai+'0';
display_HZ[8]='.';
display_HZ[9]=shi+'0';
display_HZ[10]=ge+'0';
display_HZ[11]='H';
display_HZ[12]='Z';
display_HZ[13]=' ';
display_HZ[14]=' ';
display_HZ[15]=' ';
}
if(n!=0)
{
for(i=5;i<11;i++)
{
if(display_HZ[i]=='0')
display_HZ[i]=' ';
else
break;
}
}
for(a=0;a<16;a++)
{
if(autoo==1)
{
LCD1602_writechar(a,0,automatic_mode[a]);
}
if(autoo==0)
{
if(mode==1)
LCD1602_writechar(a,0,manual_mode_mt[a]);
if(mode==0)
LCD1602_writechar(a,0,manual_mode_mf[a]);
}
}
for(a=0;a<16;a++)
{
LCD1602_writechar(a,1,display_HZ[a]);
}
}
/***********延时函数****************/
void delay1ms(uchar z)
{
uchar x,y;
for(x=0;x<z;x++) //延时约1ms
for(y=0;y<110;y++);
}
/*********外部中断0函数***********/
void exter0() interrupt 0
{
if(mode==1) //测周法
{
if(temp==1)
{
TH1=(65536-922)/256;
TL1=(65536-922)%256;
ET1=1; //开定时器1中断
TR1=1; //定时器开始工作
t1=0;
}
if(temp==5) //计数为4
{
num=400000/t1; //num为频率
temp=0;
ET1=0; //关闭定时器1中断
TR1=0; //停止定时器1
if(autoo==1) //可自动调节
{
if(num>=11000)
{
mode=0;
ET1=1; //开启定时器1中断
TR1=1; //定时器1开始工作
TH1=(65536-46080)/256; //设置高八位的初值
TL1=(65536-46080)%256; //设置低八位的初值
}
}
}
}
temp++;
}
/*************定时器1中断函数***********/
void t1time() interrupt 3
{
if(mode==1) //测周法
{
TH1=(65536-922)/256;
TL1=(65536-922)%256;
}
t1++;
if(mode==0) //测频法
{
TH1=(65536-46080)/256; //设置高八位的初值
TL1=(65536-46080)%256; //设置低八位的初值
if(t1==20) //定时1s
{
t1=0; //清零
num=temp; //得到频率
if(autoo==1) //自动调节模式
{
if(num<110) //频率小于110Hz,选用测周法
{
mode=1;
ET1=0; //关闭定时器1中断
TR1=0; //定时器1停止工作
}
}
temp=0; //计数清零
}
}
}
没有合适的资源?快使用搜索试试~ 我知道了~
基于51单片机的频率计设计方案.rar
共120个文件
zip:72个
log:11个
txt:6个
1.该资源内容由用户上传,如若侵权请联系客服进行举报
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
2.虚拟产品一经售出概不退款(资源遇到问题,请及时私信上传者)
版权申诉
5星 · 超过95%的资源 12 下载量 87 浏览量
2021-09-21
16:27:40
上传
评论 11
收藏 1.93MB RAR 举报
温馨提示
以普中A2开发板为硬件平台,采用测频法和测周法设计的频率计,可以实现低频测周法,高频测频法自动切换,误差控制在2%一下,量程在10-10k,以P32作为测量信号的输入端口,通过LCD1602进行显示,附带c语言和汇编两个版本,汇编性能更加优秀,量程更大
资源推荐
资源详情
资源评论
收起资源包目录
基于51单片机的频率计设计方案.rar (120个子文件)
Sheet1.$$$Preview 74KB
demo.uvgui.86131 135KB
demo.uvgui_86131.bak 136KB
demo_uvproj.bak 13KB
demo_uvopt.bak 6KB
demo.c 3KB
1602.c 2KB
demo 13KB
汇编.docx 17KB
1602.h 983B
demo.hex 5KB
demo.build_log.htm 202B
demo.lnp 53B
Sheet1 SCH ECO 2021-6-11 17-17-17.LOG 1KB
Sheet1 SCH ECO 2021-6-15 20-16-52.LOG 1KB
Sheet1 SCH ECO 2021-6-11 11-57-53.LOG 940B
Sheet2 SCH ECO 2021-6-14 21-20-43.LOG 863B
Sheet1 SCH ECO 2021-6-15 20-45-23.LOG 726B
Sheet2 SCH ECO 2021-6-15 12-03-29.LOG 462B
Sheet1 SCH ECO 2021-6-15 17-06-15.LOG 337B
Sheet2 SCH ECO 2021-6-14 21-37-50.LOG 66B
Sheet1 SCH ECO 2021-6-14 19-52-58.LOG 66B
Sheet1 SCH ECO 2021-6-14 19-58-27.LOG 66B
Sheet1 SCH ECO 2021-6-15 10-40-11.LOG 66B
demo.LST 7KB
1602.LST 3KB
demo.M51 17KB
demo.OBJ 10KB
1602.OBJ 6KB
Free Documents.OutJob 5KB
Sheet1.pdf 50KB
demo.plg 0B
frequency indicator.rar 47KB
Sheet1.SchDoc 236KB
Sheet2.SchDoc 54KB
Sheet1.SchDocPreview 58KB
Sheet2.SchDocPreview 18KB
SamacSys.SchLib 16KB
.SchLib 10KB
第二版.txt 5KB
第一版.txt 5KB
第四版.txt 4KB
第三版.txt 3KB
第五版.txt 3KB
第六版.txt 3KB
uln2003 238KB
demo.uvopt 6KB
demo.uvproj 14KB
Sheet1.~(22).SchDoc.Zip 39KB
Sheet1.~(6).SchDoc.Zip 38KB
Sheet1.~(8).SchDoc.Zip 38KB
Sheet1.~(7).SchDoc.Zip 38KB
Sheet1.~(5).SchDoc.Zip 38KB
Sheet1.~(25).SchDoc.Zip 37KB
Sheet1.~(27).SchDoc.Zip 37KB
Sheet1.~(23).SchDoc.Zip 37KB
Sheet1.~(24).SchDoc.Zip 37KB
Sheet1.~(29).SchDoc.Zip 37KB
Sheet1.~(28).SchDoc.Zip 37KB
Sheet1.~(26).SchDoc.Zip 37KB
Sheet1.~(9).SchDoc.Zip 37KB
Sheet1.~(31).SchDoc.Zip 37KB
Sheet1.~(32).SchDoc.Zip 37KB
Sheet1.~(30).SchDoc.Zip 37KB
Sheet1.~(18).SchDoc.Zip 37KB
Sheet1.~(17).SchDoc.Zip 37KB
Sheet1.~(42).SchDoc.Zip 36KB
Sheet1.~(40).SchDoc.Zip 36KB
Sheet1.~(38).SchDoc.Zip 36KB
Sheet1.~(41).SchDoc.Zip 36KB
Sheet1.~(39).SchDoc.Zip 36KB
Sheet1.~(43).SchDoc.Zip 36KB
Sheet1.~(33).SchDoc.Zip 34KB
Sheet1.~(37).SchDoc.Zip 34KB
Sheet1.~(35).SchDoc.Zip 34KB
Sheet1.~(36).SchDoc.Zip 34KB
Sheet1.~(34).SchDoc.Zip 34KB
Sheet1.~(21).SchDoc.Zip 33KB
Sheet1.~(20).SchDoc.Zip 33KB
Sheet1.~(19).SchDoc.Zip 33KB
Sheet1.~(4).SchDoc.Zip 31KB
Sheet1.~(45).SchDoc.Zip 30KB
Sheet1.~(46).SchDoc.Zip 30KB
Sheet1.~(47).SchDoc.Zip 30KB
Sheet1.~(44).SchDoc.Zip 30KB
Sheet1.~(48).SchDoc.Zip 30KB
Sheet1.~(3).SchDoc.Zip 22KB
Sheet1.~(2).SchDoc.Zip 13KB
Sheet2.~(1).SchDoc.Zip 10KB
Sheet2.~(3).SchDoc.Zip 10KB
Sheet2.~(4).SchDoc.Zip 10KB
Sheet2.~(2).SchDoc.Zip 10KB
Sheet2.~(8).SchDoc.Zip 8KB
Sheet2.~(6).SchDoc.Zip 8KB
Sheet2.~(7).SchDoc.Zip 8KB
Sheet2.~(5).SchDoc.Zip 8KB
Sheet2.~(9).SchDoc.Zip 8KB
Sheet2.~(10).SchDoc.Zip 8KB
Sheet2.~(12).SchDoc.Zip 8KB
Sheet2.~(13).SchDoc.Zip 8KB
共 120 条
- 1
- 2
下次一定毕业
- 粉丝: 182
- 资源: 3
上传资源 快速赚钱
- 我的内容管理 展开
- 我的资源 快来上传第一个资源
- 我的收益 登录查看自己的收益
- 我的积分 登录查看自己的积分
- 我的C币 登录后查看C币余额
- 我的收藏
- 我的下载
- 下载帮助
最新资源
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈
安全验证
文档复制为VIP权益,开通VIP直接复制
信息提交成功
- 1
- 2
- 3
前往页