频率计设计能力拓展训练Word下载.docx
《频率计设计能力拓展训练Word下载.docx》由会员分享,可在线阅读,更多相关《频率计设计能力拓展训练Word下载.docx(16页珍藏版)》请在冰豆网上搜索。
(5)调试记录及结果分析、
(6)总结
(7)参考资料5篇以上
(8)附录:
程序清单
时间安排:
6月27日-6月28日:
安排设计任务;
收集资料;
方案选择
6月29日-6月30日:
程序设计
7月1日:
实验室内调试程序并演示
7月2日-7月3日:
撰写报告
7月4日:
交能力拓展训练报告
指导教师签名:
孙晓明2014年7月4日
系主任(或责任教师)签名:
年月日
摘要
随着电子技术的飞速发展,由集成芯片和一些外围电路构成的各种自动控制、自动测量、自动显示电路遍及各种电子产品和设备已广泛应用于各个领域,更新换代速度可谓日新月异。
与传统的测量方式相比,数字频率计有着体积更小,运算速度更快,测量范围更宽和制作成本更低的优点。
由于传统的频率计中有许多功能是依靠硬件来实现的,而采用单片机测量频率之后,有许多以前需要用硬件才能实现的功能现在仅仅依靠软件编程就能实现,而且不同的软件编程代码能够实现不同的功能,从而大大降低了制作成本。
现如今,数字频率计已经不仅仅是测量信号频率的装置了,还可以测量方波的脉宽。
在人们的生产生活中数字频率计也发挥着越来越重要的作用,比如有数字频率计来监控生产过程,这样可以及时发现系统运行中的异常情况,以便给人们争取时间处理。
本文设计一种以单片机AT89C52为核心数字频率计,它由分频电路、单片机主控电路、显示电路以及声光报警电路等组成,应用单片机中的定时/计数器和中断系统等完成频率的测量。
由于频率计能够快速准确地捕捉到被测信号频率的变化,因此频率计拥有非常广泛的应用范围。
关键词:
数字频率计单片机定时器计数器
目录
1设计任务及要求分析1
1.1设计任务1
1.2任务要求分析1
2方案设计1
2.1频率计设计原理1
2.2频率检测实现方法2
2.3系统设计框图2
3频率计硬件电路设计3
3.1分频电路3
3.2单片机主控电路3
3.3显示电路设计4
3.4声光报警电路5
4频率计软件设计5
4.1软件思想5
4.2频率计软件流程图6
5仿真结果7
6心得体会9
参考文献10
附录11
1设计任务及要求分析
1.1设计任务
设计一个能测量方波信号的频率计,测量结果用十进制数显示,测量范围是1~100KHZ,分成两个频段,即1~999HZ,1~100KHZ,用三位数码管显示测量频率,分别用某位发光二级管用LED显示表示单位(亮绿灯表示HZ,亮红灯表示KHZ)。
1.2任务要求分析
根据任务要求,本次设计以单片机AT89C52为核心,来设计数字频率计。
其中,应用单片机中的定时/计数器和中断系统等完成频率的测量,而且单片机能直接识别方波信号,所以无需整形电路;
采用分频电路是可以测量更高频率的信号;
显示电路用可用4位7段数码管显示频率值。
2方案设计
2.1频率计设计原理
频率的测量实际上就是在1s时间内对信号进行计数,计数值就是信号频率。
用单片机设计频率计可采用单片机自带的计数器对输入脉冲进行计数,但这种方法的缺陷是受限于单片机计数的晶振频率,输入的时钟频率通常是单片机晶振频率的几分之一甚至是几十分之一,在本次设计使用的AT89C52单片机,由于检测一个由“1”到“0”的跳变需要两个机器周期,前一个机器周期测出“1”,后一个周期测出“0”。
故输入时钟信号的最高频率不得超过单片机晶振频率的二十四分之一。
本次设计中采用第一种方法,因此输入的时钟信号最高频率不得高于12MHz/24=500KHz。
2.2频率检测实现方法
(1)计数法测频率使用计数方法实现频率测量时,外部的待测信号为单片机定时/计数器0的计数源,利用定时/计数器1定时实现计数闸门。
频率计的工作过程为:
定时/计数器0的计数寄存器清0,运行控制位TR置1,启动定时/计数器工作;
同时运行定时/计数器1定时1s,定时/计数器0对外部的待测信号进行计数,定时/计数器1定时1s时间到TR清0,停止计数。
从计数寄存器0读出测量数据,测量数据在完成数据处理后,由显示电路显示量结果。
单片机外接晶振为12MHz,单片机指令周期为1μs,当被测频率信号过高时单片机不能测量。
(2)定时法测频率使用定时方法实现频率测量时,外部的待测信号通过频率计的分频器二分频变成宽度等于待测信号周期的方波,该方波加至定时/计数器1的输入脚,及外部中断INT1口,由INT1口高电平和软件置位TR1,同时控制启动定时/计数器1对单片机的机器周期的计数,并检测方波高电平是否结束;
当判定高电平结束时TR1清0,停止计数,然后从计数寄存器读出测量数据。
这时读出的数据反映的是待测信号的周期,通过数据处理把周期值变换成频率值,由显示电路显示测量结果。
2.3系统设计框图
本次设计以单片机为核心,设计一种数字频率计,应用单片机中的定时器/计数器和中断系统等完成频率的测量。
其中包括分频模块、单片机控制模块、显示模块、声光报警模块等。
其系统结构框图如图1所。
图1系统结构框图
3频率计硬件电路设计
根据系统设计的要求,频率计实际需要设计的硬件系统主要包括以下几个部分:
分频模块、单片机模块、显示模块及声光报警模块。
采用了AT89C52、74LS90、七段数码显示管等来实现。
下面将分别给予介绍。
3.1分频电路
由于单片机的计数个数是有限的,最大可以计到65536,而在实际工程测量中所测得频率很大,甚至能达到上百千赫兹,远远超出单片机所测量范围,采用分频电路,可以将待测信号成倍的缩放,然后进行测量。
分频器电路采用计数器构成分频电路。
74LS90计数器是一种中规模二进制五进制计数器。
在本设计中需要用设计一个千分频电路。
千分频电路如下图2所示:
图2分频电路图
如图所示,将5分频的输出端Q0接二进制计数器的脉冲输入端CKB即可构成十分频工作方式,将3片74LS90级联即可获得千分频的效果。
3.2单片机主控电路
以AT89C52单片机为控制核心,来完成对待测信号的计数、译码和显示以及对分频比的控制,利用其内部的定时/计数器完成待测信号频率的测量。
单片机AT89C52内部具有3个16位定时/计数器,定时/计数器的工作可以由编程来实现定时、计数和产生计数溢出时中断要求的功能。
(1)单片机主控电路如图3所示。
图3单片机主控电路
(2)单片机引脚分配表
根据系统设计及各模块的分析得出,单片机的引脚分配如表1所示。
表1单片机端口分配表
模块
端口
功能
显示模块
P2.0-P2.3、P0.0-P0.7
数码管频率值显示
P2.4-P2.5
LED单位显示
分频模块
P3.4-P3.5
通道选择
复位模块
RST、EA
复位
声光报警模块
P3.7、P2.6
超量程报警
3.3显示电路设计
显示模块由频率值显示电路和量程转换指示电路组成。
频率值显示电路采用四位共阳极数码管动态显示频率计被测数值,量程转换指示电路由绿、红两个LED分别指示Hz、KHz频率单位,使读数简单可观。
显示电路如图4所示:
图4显示电路
3.4声光报警电路
当所测频率超过100KHz的范围时,D3蓝色LED亮发出光报警,蜂鸣器发出声报警。
声光报警电路如图5所示:
图5声光报警电路
4频率计软件设计
4.1软件思想
数字频率计的系统软件设计采用模块化设计方法。
整个系统由初始化模块、定时器中断服务模块、信号周期测量模块和显示模块构成。
初始化模块主要是对进行初始定时器、计数器的初始化。
定时器中断服务模块是本次设计的重点。
T2设置为定时器方式,T0、T1设置为计数器方式,当待测信号到来,用单片机外部两个中断INT0和INT1来开始对定时/计数器T0和T1计数。
本次设计单片机采用内部时钟方式,接12MHz的晶振,定时/计数器T2工作在定时状态下,最大定时时间为65.536ms,达不到1秒的定时,所以采用定时62.5ms,共定时16次,即可完成1秒的定时功能。
对于频率的概念就是在一秒只数脉冲的个数,即为频率值。
所以T0和T1工作在计数状态下,每定时1秒中到,就停止T0和T1的计数,而从T1的计数单元中读取计数的数值,然后进行数据处理。
送到数码管显示出来。
4.2频率计软件流程图
流程图如图6所示。
图6频率计软件流程图
5仿真结果
当输入55Hz的方波信号时,绿色LED亮,4位7段数码显示“55”,仿真截图如图7所示。
图755Hz方波信号仿真截图
当输入55KHz的方波信号时,红色LED亮,4位7段数码显示“55”,仿真截图如图8所示。
图855KHz方波信号仿真截图
当输入150KHz的方波信号时,蓝色LED亮,蜂鸣器报警,4位7段数码显示“150”,仿真截图如图9所示。
图9150KHz方波信号仿真截图
6心得体会
通过这次能力拓展训练,我受益匪浅。
我不仅知道了频率计的设计方法,更重要的是培养了我们用自己的专业知识解决问题的能力,进一步了解了理论必须运用于实践的重要性。
数字频率计是计算机、通讯设备、音频视频等科研生产领域不可缺少的测量仪器。
它是一种用十进制数字,显示被测信号频率的数字测量仪器。
它的基本功能是测量正弦信号,方波信号以及其他各种单位时间内变化的物理量。
但我本次设计只涉及到测量方波信号,相对还是比较简单。
此次设计中,我熟练掌握了C语言的编写,仿真软件KEIL和Proteus软件的应用,了解了相关元件的基本知识,同时还熟练掌握了对文献资料等的收集、查阅、应用。
同时我也明白了,要设计一个完整的电路,必须要有耐心,要有毅力。
在整个电路的设计过程中,重要的是各个单元电路的连接及电路的细节设计上,如程序地址的正确,不然就会与原程序对应不上。
这就要求我们对硬件系统中各组件部分有充分透彻的理解和研究,并能对之灵活应用。
设计过程中,我不断发现错误,不断改正,不断领悟,不断获取。
最终的程序运行和仿真调试环节才顺利通过。
最后,还要在此感谢课程设计的指导老师,他们在整个过程中都给予了我充分的帮助与支持。
参考文献
[1]李学海著.标准80C51单片机基础教程.北京航空航天大学出版社,2006
[2]戴仙金主编.51单片机及其C语言程序开发实例.清华大学出版社,2008
[3]李诚人.高宏洋等.嵌入式系统及单片机应用,清华大学出版社,2005
[4]张洪润、刘秀英、张亚凡等.单片机应用设计200例.北京航空航天大学出版社,2006
[5]彭为、黄科、雷道仲等.单片机典型系统设计实例精讲.电子工业出版社,2006
[6]余发山,王福忠.单片机原理应用技术[M].徐州:
中国矿业大学出版社,2003.
附录
#include<
reg52.h>
unsignedlongfre;
unsignedchartime;
unsignedintcount;
unsignedintcount1;
unsignedtemp;
sbitseg_1=P2^0;
sbitseg_2=P2^1;
//第二个数码管的位选,选择显示的是第二个数码管
sbitseg_3=P2^2;
//第三个数码管的位选,选择显示的是第三个数码管
sbitseg_4=P2^3;
//第四个数码管的位选,选择显示的是第四个数码管
sbitLED_1=P2^4;
//低电平亮
sbitLED_2=P2^5;
sbitLED_3=P2^6;
sbitbeep=P3^7;
#definedatP0//数码管的段选,选择数码管显示什么
unsignedcharcodeseg_dat[]={//实测的数码管的显示,对应数字0~f
0xc0,0xf9,0xa4,0xb0,
0x99,0x92,0x82,0xf8,
0x80,0x90,0x88,0x83,
0xc6,0xa1,0x86,0x8e,0xff,
};
voidtimer_init();
//中断初始化函数
voiddelayms(unsignedintz);
//延时函数,z为多少就延时多少毫秒12M晶振下
voiddis_num(unsignedintdis_num);
//数码管显示数据,传入参数为4位数的
voiddelayms(unsignedintz)//延时函数,z为多少就延时多少毫秒12M晶振下
{
unsignedintx,y;
for(x=z;
x>
0;
x--)
for(y=110;
y>
y--);
}
voiddis_num(unsignedintdis_num)//数码管显示数据,传入参数为4位数的
unsignedcharge=0,shi=0,bai=0;
//将该四位数的个十百千位分离出来
bai=dis_num/100;
shi=dis_num/10%10;
ge=dis_num%10;
seg_2=1;
seg_3=0;
seg_4=0;
dat=seg_dat[bai];
delayms(5);
dat=seg_dat[16];
seg_2=0;
seg_3=1;
dat=seg_dat[shi];
seg_4=1;
dat=seg_dat[ge];
voidmain()
{seg_1=0;
timer_init();
//定时/计数器初始化
while
(1)
{
dis_num(fre);
//数码管显示
}
voidtimer_init(void)//定时/计数器初始化
TMOD=0x66;
//计数器0工作工作方式2,自动重装初值
TH0=0;
//计数器初值为0
TL0=0;
TR0=1;
//计数器开始计数
ET0=1;
//打开计数器0中断
TH1=0;
TL1=0;
TR1=1;
//计数器开始计数
ET1=1;
//打开计数器0中断
RCAP2H=(65536-62500)/256;
//在程序初始化的时候给RCAP2L和RCAP2H赋值,RCAP2L=(65536-62500)%256;
//TH2和TL2将会在中断产生时自动使TH2=RCAP2H,TL2=RCAP2L。
TH2=RCAP2H;
//12M晶振下每次中断62.5ms
TL2=RCAP2L;
ET2=1;
//打开定时器2中断
TR2=1;
//定时器2开始计时
EA=1;
//开总中断
}
voidtimer2(void)interrupt5//定时器2中断(62.5ms)
time++;
TF2=0;
//定时器2的中断标志位TF2不能够由硬件清零,所以要在中断服务程序中将其清零
if(time==16)//定时1s时间到
{
time=0;
//计时清0
EA=0;
//关中断
fre=(long)count1*256+TL1;
//count*256强制转换成long型,否则将不产生进位
LED_1=0;
LED_2=1;
LED_3=1;
beep=1;
temp=1;
if(fre<
1)
fre=(long)count*256+TL0;
LED_1=1;
LED_2=0;
temp=0;
}
if(fre>
99&
&
temp==1)
LED_3=0;
beep=0;
}TL0=0;
//清零计数器0计数
TH0=0;
TL1=0;
TH1=0;
count=0;
//清零计数器0计数
count1=0;
//开中断
voidtimer0(void)interrupt1//计数器0中断
count++;
voidtimer1(void)interrupt3//计数器1中断
{
count1++;
本科生能力拓展训练成绩评定表
性别
专业、班级
课程设计题目:
频率计设计
课程设计答辩或质疑记录:
成绩评定依据:
序号
1
选题合理,目的明确(10分)
2
设计方案正确,具有可行性、创新性(20分)
3
设计结果(例如:
硬件成果、软件程序)(25分)
4
态度认真、学习刻苦、遵守纪律(15分)
5
设计报告的规范化、参考文献充分(不少于5篇)(10分)
6
答辩(20分)
总分
最终评定成绩(以优、良、中、及格、不及格评定)
指导教师签字:
2014年月日