数字频率计课程设计说明书Word文档格式.docx
《数字频率计课程设计说明书Word文档格式.docx》由会员分享,可在线阅读,更多相关《数字频率计课程设计说明书Word文档格式.docx(27页珍藏版)》请在冰点文库上搜索。
设计一个具有特定功能的抢答器。
该抢答器上电或按键复位后能自动显示系统提示符“P.”,进入准备工作状态。
主持人按下开始按钮后,抢答开始并限定时间30S;
10S内无人抢答,蜂鸣器发出音响;
主持人按下开始按钮之前有人按下抢答器,抢答违规,显示器显示违规台号,违规指示灯亮,其它按钮不起作用;
正常抢答,显示器显示台号,蜂鸣器发出音响,其它抢答按钮无效;
正常抢答下,从按下抢答按钮开始30S内,答完按钮没按下,则作超时处理,超时处理时,违规指示灯亮,显示器显示违规台号。
蜂鸣器发出音响;
各台数字显示的消除,蜂鸣器音响及违规指示灯的关断,都要通过主持人按复位按钮。
6、密码锁
设计一个具有特定功能的密码锁。
该密码锁上电或按键复位后能自动显示系统提示符“P.”,进入准备工作状态。
该密码锁具有系统原始密码888888,用户可以设定并存储用户密码,密码输入时应处于保密显示状态,密码输入正确时应显示密码输入正确提示信息,否则,显示密码输入错误提示信息。
7、波形发生器
设计一个具有特定功能的波形发生器。
该波形发生器上电或按键复位后能自动显示系统提示符“P.”,进入准备工作状态。
该波形发生器可以分别产生幅值0~5V、频率100Hz~100KHz范围内的三角波、锯齿波、方波、梯形波和正弦波。
8、数字温度计
设计一个具有特定功能的数字温度计。
该数字温度计上电或按键复位后能自动显示系统提示符“P.”,进入准备工作状态。
测量温度范围0℃~99℃,测量精度小数点后两位,可以通过开始和结束键控制数字温度计的工作状态。
9、计算器
设计一个具有特定功能的计算器。
该计算器上电或按键复位后能自动显示系统提示符“P.”,进入准备工作状态。
能实现
(1)基本的加、减、乘、除、平方、开方;
(2)三角函数运算;
(3)十进制、十六进制转换运算;
(4)其他功能。
10、数字式秒表
设计一个具有特定功能的数字式秒表。
该数字式秒表上电或按键复位后能自动显示系统提示符“P.”,进入准备工作状态。
该数字式秒表应具有开始、暂停、连续、清零和停止功能。
设计要求
1、以上课题可以任选其一或多选,学生也可以自拟课题;
2、编程语言:
汇编或C51;
3、计算机打印《单片机技术》课程设计说明书一份;
4、设计时间:
一周;
5、实物制作;
6、人员分组:
一人一组一实物。
六、《单片机技术》课程设计说明书正文主要内容
参照“《单片机技术》课程设计说明书正文主要内容”文件。
七、《单片机技术》课程设计说明书书写规范格式
参照“《单片机技术》课程设计说明书书写规范格式”文件。
八、参考资料
1、马忠梅,单片机的C语言Windows环境编程宝典[M],北京:
北京航空航天大学出版社,2003.6;
2、李光飞,单片机C程序设计指导[M],北京:
北京航空航天大学出版社,2003.01;
3、李光飞,单片机课程设计实例指导[M],北京:
北京航空航天大学出版社,2004.9。
电气自动化教研室
2014s年2月20日
摘要
随着电子信息产业的不断发展,信号频率的测量在科技研究和实际应用中的作用日益重要。
科技的日新月异的高速发展,传统的频率计通常是用很多的逻辑电路和时序电路来实现的,这种电路一般运行较慢,而且测量频率的范围较小。
现在的客户对电子频率的测量也提出了新的要求,对于低档产品要求使用操作方便,量宽,可靠性高,价格低。
本方案以单片机为核心,被测信号先进入信号放大电路进行放大,再被送到波形整形电路整形为方波。
利用单片机的计数器和定时器的功能对被测信号进行计数。
编写相应的程序可以使单片机自动调节测量的量程,并把测出的频率数据送到显示电路显示。
本设计以AT89S52单片机为核心,应用单片机的算术运算和控制功能并采用数码显示管将所测频率显示出来。
系统简单可靠、操作简易,能基本满足一般情况下的需要。
既保证了系统的测频精度,又使系统具有较好的实时性。
本频率计设计简洁,便于携带,扩展能力强,适用范围广。
关键字:
数字频率计;
单片机;
计数器;
数码显示管
ABSTRACT
Withthedevelopmentoftheelectronicinformationindustry,thesignalfrequencymeasurementinscienceandtechnologyresearchandpracticalapplicationisincreasinglyimportant.Rapiddevelopmentofscienceandtechnologyofthehighspeeddevelopment,thetraditionalfrequencyisusuallyalotofprogramlogiccircuitandthesequentialcircuitstoimplementation,thiscircuit,generallyrunslower,andmeasurementofthefrequencyofthesmallareas.Nowthecustomersontheelectronicfrequencymeasurementhasalsoputforwardnewrequirements,lowproductrequirementstouseconvenientoperation,quantitywide,highreliabilityandlowprice.ThisprojectistotheSingle-Chip-MicroControllerasthecenter.Themeasuredsignalfirstlyentryintotheamplifiercircuittobeamplified,thentobesenttowaveformplasticcircuittobeplasticassquarewave.MakeuseoftheperformanceofcounterandtimeroftheSingle-Chip-MicroControllertocountthemeasuredsignal.MakecorrespondingprogramcanmaketheSingle-Chip-MicroControllerautomaticadjusttherangethatcounted.Andsendthecountedfrequencydatatotheshowcircuittoshow.
ThedesignforAT89S52corechip,thearithmeticandcontrolfunctionandtheuseofthedigitaldisplaytubeofthemeasuredfrequencydisplay.Thesystemissimpleandreliable,easytooperate,canbasicallymeettheneedofgeneralsituation.Itnotonlymakesthesystemfrequencymeasuringaccuracy,butalsomakesthesystemhasgoodrealtime.Thefrequencymeterdesignissimple,easytocarry,expansioncapability,wideapplicationrange.
Keywords:
digitalfrequencymeter;
singlechipmicrocomputer;
timer;
thedigitaldisplaytube
目录
1设计任务、功能要求说明及总体方案介绍1
1.1设计任务1
1.2功能要求说明1
1.3设计课题总体方案介绍及工作原理说明1
2课题设计硬件系统的设计3
2.1硬件系统各模块功能的介绍3
3课题设计软件系统的设计4
3.1软件系统各模块功能介绍4
3.2系统程序流程框图6
4设计误差分析及总结9
4.1数字频率计的仿真9
4.2数字频率计误差分析10
4.3设计总结10
参考文献10
附录APCB图11
附录BCAD图12
附录C软件系统程序清单19
1设计课题任务、功能要求说明及总体方案介绍
1.1设计任务
1.2功能要求说明
该数字频率计频率以单片机最小系统为基础,采用独立式键盘及动态显示结构组成。
四个键(分别接于P1.0~P1.3)控制测量,按S2键(接P1.0)测频率、按S4键(接P1.1)测周期,按S6键(接P1.2)测脉宽,按S8键(接P1.3)测占空比。
1.3设计课题总体方案介绍及工作原理说明
本次设计主要分成两大方面:
硬件电路的设计和软件程序的设计。
硬件电路方面,采用单片机最小系统,便可实现课题要求。
程序的设计方面,本人采用C语言编写程序。
其整体框图如图1所示。
频率计工作原理:
此数字频率计是利用单片机的P3.5(T1)引脚作为被测矩形波信号输入端,且单片机晶振FOSC=12MHZ,当S2键被按下时,此时测的是频率,被测矩形波信号从P3.5进入单片机,同时启动定时器T0和计数器T1,T1是工作在计数状态下,对输入的频率信号进行计数,工作在计数状态下的T1的最大计数值为FOSC/24,由于FOSC=12MHz,则:
T1的最大计数频率为500KHz,T0是工作在定时状态下,每定时1秒,就停止T1的计数,而从T1的计数单元中读取的计数值在进行数据处理后,送到LCD数码显示管显示出来,因为T0工作在定时状态下的最大定时时间为65ms,达不到1秒的定时,所以采用50ms,共定时20次。
当S4键被按下时,此时测的是周期;
当被测矩形波信号输入到P3.5口为高电平时,启动T0对其计数测出为高电平时的一个计数值,记录计数值,当被测矩形波信号输入到P3.5口为低电平时,启动T0对其计数测出为低电平时的一个计数值,记录计数值。
两个计数值的和则为被测信号的周期;
当S6键被按下时,此时测的是脉宽,被测矩形波信号输入到P3.5后,测量电路在检测到脉冲的上升沿时打开定时器,在下降沿时关掉定时器,当P3.5由高电平变为低电平,定时器停止,读出定时器的值,这样通过对单片机自身的周期的计数,便得到了脉宽;
当S8键被按下时,此时测的是占空比,可直接用测量得到的脉宽U比上周期T,即H=U/T,便得到了占空比。
图1单片机整体框图
2设计课题硬件系统的设计
2.1硬件系统各模块功能简要介绍
AT89S52单片机:
硬件系统的核心处理器,是一种低功耗、高性能CMOS8位微控制器,具有8K在系统可编程Flash存储器,这也使得其为众多嵌入式控制应用系统提供高灵活、超有效的解决方案。
振荡电路:
AT89S52内部含有一个振荡器,可以作为CPU的时钟源,也可以由外部振荡器输入时钟信号,作为CPU的时钟源。
高频率的时钟有利于程序更快的运行,也可以实现更高的信号采样率,从而实现更多的功能。
但是对系统要求较高,而且功耗大,运行环境苛刻。
考虑到单片机本身用在控制,并非高速信号采样处理,所以选取合适的频率即可。
合适的频率的晶振对于选频信号强度准确度都有好处,这里采用大便是晶振频率FOSC=12MHz.
按键电路:
单片机的P1.0、P1.1、P1.2、P1.3分别接按键S2、S4、S6、S8,用来分别测量输入信号的频率、周期、脉宽、占空比。
当没按下键时,端口输入为高电平,当按下键时,端口输入为低电平。
复位电路:
复位电路时单片机的硬件初始化操作。
经复位操作后,单片机才能开始正常工作。
它通过RST引脚送入单片机,进行复位操作,产生复位信号。
复位电路的好坏直接影响单片机系统工作的可靠性,而单片机的复位电路共有上电复位、按键复位和脉冲复位3种,在本次设计中采用按键复位,按键复位则是通过使复位端经电阻与Vcc电源接通来实现的。
数码管显示电路:
可以通过数码管的显示直截了当看到想要测得数据,本次设计显示器采用动态显示方式。
下载电路:
通过USB下载口把程序下载到单片机内部。
电源电路:
用于接通+5V电源。
3课题设计软件系统的设计
3.1软件系统各模块功能简要介绍
系统的软件模块框图如图2所示:
图2系统软件模块框图
各模块功能如下:
(1)主程序模块:
启动显示“P.”,等键按下。
(2)P.显示模块:
显示“P.”。
(3)键扫描模块:
判断按键是否按下且是哪一个键,然后执行相关程序。
(4)测周期程序模块:
测量被测矩形波信号的周期。
(5)测占空比程序模块:
测量被测矩形波信号的占空比。
(6)测脉宽程序模块:
测量被测矩形波信号的脉宽。
(7)测频率程序模块:
测量被测矩形波信号的频率。
(8)周期显示模块:
显示测得的周期。
(9)占空比显示模块:
显示测得的占空比。
(10)脉宽显示模块:
显示测得的脉宽。
(11)频率显示模块:
显示测得的频率。
(12)延时模块:
用于各位显示间的延时。
3.2软件系统程序流程框图
(1)系统主程序流程图如图3所示。
图3主程序流程图
(2)测频率子程序和测周期子程序流程图如图4和如图5所示。
图4测频率子程序流程图图5测周期子程序流程图
(3)测脉宽子程序和键扫描子程序流程图如图6和如图7所示。
图6测脉宽子程序流程图图7键盘扫描子程序流程框图
4设计误差分析及总结
4.1数字频率计的仿真
(1)当没有键按下时,运行仿真,数码管显示结果为:
图8数码管显示P.
(2)当输入信号频率为10Hz时,运行仿真,按下S2键,数码管显示结果为:
图9数码管显示频率
(3)当输入信号频率为10Hz时,运行仿真,按下S4键,数码管显示结果为:
图10数码管显示周期
(4)当输入信号频率为10Hz时,运行仿真,按下S6键,数码管显示结果为:
图11数码管显示占空比
(4)当输入信号频率为10Hz时,运行仿真,按下S8键,数码管显示结果为:
图12数码管显示脉宽
4.2数字频率计的误差分析
当被测矩形波的频率为1Hz时,所测得的频率为1Hz,误差为0;
所测得的周期为999986us,误差为0.0014%;
所测得的脉宽为499993um,误差为0.0014%;
所测得的占空比为50%,误差为0。
当被测矩形波的频率为10Hz时,所测得的频率为10Hz,误差为0;
所测得的周期为100008us,误差为0.008%;
所测得的脉宽为50004um,误差为0.008%;
当被测矩形波的频率为100Hz时,所测得的频率为100Hz,误差为0;
所测得的周期为10000us,误差为0;
所测得的脉宽为5001um,误差为0.0002%;
所测得的占空比为50.01%,误差为0.02%。
当被测矩形波的频率为1kHz时,所测得的频率为1001Hz,误差为0.1%;
所测得的周期为1000us,误差为0;
所测得的脉宽为499um,误差为0.2%;
所测得的占空比为49.9%,误差为0.2%。
当被测矩形波的频率为50kHz时,所测得的频率为50009Hz,误差为0.018%;
所测得的周期为20us,误差为0;
所测得的脉宽为11um,误差为10%;
所测得的占空比为55%,误差为10%。
当被测矩形波的频率为100kHz时,所测得的频率为100017Hz,误差为0.017%;
所测得的周期为10us,误差为0;
所测得的脉宽为5um,误差为0;
所测得的占空比为50%,误差为0。
当被测矩形波的频率为500kHz时,所测得的频率为500065Hz,误差为0.0130%;
所测得的周期为6us,误差为80%;
所测得的脉宽为3um,误差为80%;
此数字频率计由于晶振系统与定时器中断程序的原因,使它们在周期中占了一部分,从而产生了误差,可以用调节延时程序的初值来减小误差,但总的来说,所测频率越大,误差也会越大。
4.3设计总结
在单片机应用系统设计时,必须先确定该系统的技术要求,这是系统设计的依据和出发点,整个设计过程都必须围绕这个技术要求来工作。
在设计时遵循从整体到局部也即自上而下的原则。
把复杂的问题分解为若干个比较简单的、容易处理的问题,分别单个的加以解决。
将总任务分解成可以独立表达的子任务,这些子任务再向下分,直到每个子任务足够简单,能够直接而容易的实现为止。
在程序调试时应按各个功能模块分别调试。
在程序设计时,正确合理的设计是非常重要的,正确的程序设计包括程序的结构是否合理,一些循环结构和循环指令的使用是否恰当,能否使用较少的循环次数或较快的指令,是否能把某些延迟等待的操作改为中断申请服务,能否把某些计算方法和查表技术适当简化等。
程序设计是相当有可拓展性的,不过每个程序的结构也必须严格按照标准来做,好让自己熟悉程序设计。
通过本次课程设计,我更加地了解和掌握单片机的基本知识和基本的编写程序,也更加深入地了解单片机这么课程,掌握C语言的设计和调试方法。
对于认识到自己在知识方面存在的不足,明确今后的学习方向是非常有益的。
在设计过程中,得到了我的指导老师的悉心指导与帮助,在此一并表示衷心的感谢。
参考文献
[1]李广弟,朱月秀,冷祖祁.单片机基础(第3版).北京:
北京航天大学出版社,2007年6月.
[2]清源计算机工作室.Protel99SE原理图与PCB及仿真.北京:
机械工业出版社出版,2007年8月.
[3]马忠梅,籍顺心,张凯,马岩(第4版).北京:
北京航天大学出版社,2007年2月。
[4]黄正瑾编著.CPLD系统设计技术入门与应用.北京:
电子工业出版社,2002
[5]谢自美编著.电子线路设计²
实验²
测试.华中理工大学出版社,2002
[6]陈永甫编著.电子电路智能化设计.实例与应用.北京:
电子工业出版,2002.8
[7]康华光主编.电子技术基础(第四版).北京:
高等教育出版社,1999
附录A:
PCB图
底层图
顶层图
附录B:
CAD图
附录C软件系统程序清单
/********************************************************************
程序名:
频率计程序
编写者:
彭文俊
指导老师:
王韧
时间:
2014.6.01
班级:
电气本1102班
功能:
频率计测试频率,周期,脉宽,占空比
型号:
AT89S52使用晶振为12MHz
*******************************************************************/
#include"
reg52.h"
#include<
intrins.h>
charcodedis_code[]={0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,
0x90,0x0c,0xff,0xbf};
chardatafind_code[8]={11,11,11,11,11,11,11,10};
#defineucharunsignedchar
#defineuintunsignedint
sbiton=P3^5;
ucharcepl();
uchara,m;
unsignedlongrate,zhqi1,zhqi2,zhqi,maikuan,zhkbi,zhkbi1,zhkbi2,b;
voidDelayX1ms(uintcount)
{
uintj;
while(count--!
=0)
for(j=0;
j<
120;
j++);
}
voiddisp()
chari,j=0x01;
chark;
for(i=0;
i<
8;
i++)
P2=j;
k=find_code[i];
P0=dis_code[k];
DelayX1ms
(1);
j=_crol_(j,1);
}
ucharkeycl()
uchark;
k=P1;
k=~k;
return(k);
ucharkey()
ucharkeyz,