频率计设计(共28页).docx

上传人:飞****2 文档编号:13569833 上传时间:2022-04-30 格式:DOCX 页数:28 大小:414.24KB
返回 下载 相关 举报
频率计设计(共28页).docx_第1页
第1页 / 共28页
频率计设计(共28页).docx_第2页
第2页 / 共28页
点击查看更多>>
资源描述

《频率计设计(共28页).docx》由会员分享,可在线阅读,更多相关《频率计设计(共28页).docx(28页珍藏版)》请在得力文库 - 分享文档赚钱的网站上搜索。

1、精选优质文档-倾情为你奉上1 设计课题任务、功能要求说明及总体方案介绍1.1 课题设计任务设计一个能够测量矩形波信号的频率、周期、脉宽、占空比的频率计。该频率计上电或按键复位后能自动显示系统提示符“P.”, 进入测量准备状态。按频率测量键则测量频率;按周期测量键则测量周期;按脉宽测量键则测量脉宽;按占空比测量键则测量占空比。1.2 功能要求说明该数字频率计频率以单片机最小系统为基础,采用独立式键盘及动态显示结构组成。四个键(分别接于P1.0P1.3)控制测量,按K1键(接P1.0)测频率、按K2键(接P1.1)测周期,按K3键(接P1.2)测脉宽,按K4键(接P1.3)测占空比。1.3 设计课

2、题总体方案介绍及工作原理说明本设计通过单片机内部定时器0定时1秒,同时被测矩形波输入P3.5(T1)通过计数器1对其进行计数,定时时间一到即可测得矩形波的频率,通过计算频率的倒数即可得到周期。被测矩形波通过P3.5(T1)输入单片机后,P3.5(T1)为高电平开启定时器1,P3.5(T1)为低电平关闭定时器1,通过高电平持续时间即可测得矩形波的脉宽。最后通过周期和脉宽可得占空比,系统总体电路框图如图1.1所示: 图1.1 系统整体框图系统工作原理如下:此数字频率计是利用单片机的P3.5(T1)作为被测矩形波信号输入端,且单片机晶振采用12MHZ。当按K1键时测频率,被测矩形波信号从P3.5进入

3、单片机,此时同时启动定时器0和计数器1,定时器0一次定时50ms、定时20次,当定时1s一到立即停止定时计数器,因为晶振为12MHZ,所以此时计数器的计数值即为被测信号的频率;当按K2键时测周期,此时先测得被测信号的频率,然后通过T=1/F可求得被测信号的周期;当按K3键时,被测矩形波通过P3.5(T1)输入单片机后,P3.5为高电平开启定时器1,P3.5为低电平关闭定时器1,读出定时器的定时值,此值即为被测信号的脉宽;按K4键时,先测出被测矩形波信号的周期和脉宽,然后通过占空比等于脉宽比上周期即可得到信号的占空比。当按键测得相应的数据之后,先对数进行按位处理后再送数码管显示。2 设计课题硬件

4、系统的设计2.1 设计课题硬件系统各模块功能简要介绍 功能芯片:AT89S52 是一种带4K 字节闪烁可编程可擦除只读存储器的低电压,128字节内部RAM,32个I/O口线,2个16位定时/计数器,一个5向量两级中断结构,一个全双工串行通信口,片内振荡器及时钟电路,高性能CMOS8 位微处理器,俗称单片机。该器件采用ATMEL 高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89S51是一种高效微控制器,为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。AT89S52型单片机的主要性能参数如下

5、:1、与MCS-51产品指令系统完全兼容2、4k字节可重擦写Flash闪存存储器3、1000次擦写周期4、全静态操作:0Hz-24MHz5、三级加密程序存储器6、128*8字节内部RAM7、32个可编程I/O口线8、2个16位定时/计数器9、6个中断源10、可编程串行UART通道11、低功耗空闲和掉电模式 AT89C51芯片及管脚图。如图2.1所示。 图2.1 AT89S52引脚图复位电路:用于产生复位信号,通过RST引脚送入单片机,进行复位操作。复位电路的好坏直接影响单片机系统工作的可靠性,单片机的复位电路共有上电复位、按键复位和脉冲复位3种,在本次设计中采用按键复位电路,此电路即可实现按键

6、复位,还可以实现上电复位。其中上电复位是利用电容充放电来实现的,按键复位则是通过使复位端经电阻与Vcc电源接通来实现的。电路如图2.2所示。图2.2 复位电路振荡电路:单片机本身是一个复杂的同步时序系统,为了确保同步工作方式的实现,单片机必须有时钟信号,以使其系统在时钟信号的控制下按时序协调工作。晶振频率时单片机的一项重要技术指标,晶振频率越高,系统的时钟频率就越高,单片机的运行速度也就越快,本次设计所用的晶振频率为12MHZ。电路如图2.3所示。图2.3 振荡电路 按键电路:单片机的P1.0、P1.1、P1.2、P1.3、P1.4、P1.5、P1.6、P1.7分别接按键K1、K2、K3、K4

7、、K5、K6、K7、K8。分别用以实现测矩形波的频率、周期、脉宽、占空比,当没键按下时P1.0P1.7为高电平,有键按下时则为低电平。在实物制作时因为P1口内部已经集成了上拉电阻,所以下图中的四个电阻可以省略。电路如图2.4所示。 图2.4 按键电路显示电路:本次设计显示器采用四位一体数码管的动态显示方式,用以实现测量值的现实,用P0口控制数码管的段控线,用P2口控制数码管的位控线。动态显示通常采用动态扫描的方法进行显示,即循环点亮每一位数码管,由于人眼存在的视觉残留效应,每一位数码管显示时间足够短,最后给人以同时显示的效果。采用排阻是限流的作用,使二极管正工作。电路如图2.5所示。驱动电路:

8、用以驱动数码管。电路如图2.5所示。图2.5 数码管驱动及显示电路电源电路:本电源电路是通过5V电源或采用USB接口电路进行供电。电路如图2.6所示。图2.6 电源电路 信号源:设计中信号源采用函数发生器产生的方波。频率范围为1HZ-500KHZ。2.2 设计课题电路原理图、PCB图、元器件布局图 本设计的电路原理图、PCB图及元器件布局图分别如附录13所示。2.3 设计课题元器件清单 元器件清单如附录4所示。3 设计课题软件系统的设计3.1 设计课题使用单片机资源的情况 定时/计数器的使用:测矩形波频率时使用到了定时/计数器0和定时/计数器1,以及使了定时0中断和计数1中断。单片机I/O口的

9、使用:P0口作为数码管的段控码输入端使用;P1口的8位作为独立式键盘的输入端使用,低4位作为本次按键的输入端使用,K1K4键分别对应于P1.0P1.3口;P2口作为数码管的位控码输入端使用;P3.5作为被测矩形波信号的输入端使用。3.2 设计课题软件系统各模块功能简要介绍系统的软件模块框图如图3.1所示: 图3.1 系统软件模块框图各模块功能如下:1、主程序模块:启动显示“P.”,等键按下。2、显示模块1:显示“P.”。3、键功能模块:判断那一键按下,然后去执行相应的程序。4、测频程序模块:测矩形波信号的频率。 测频周期模块:测矩形波信号的频率后,间接测其周期。 测脉宽程序段:测矩形波信号的脉

10、宽。 测脉宽程序段:测矩形波信号的脉宽后,间接测信号的占空比。5、显示模块2:显示测得的频率脉宽值。 显示模块3:显示测得的周期。 显示模块4:显示测得的脉宽值。 显示模块5:显示占空比值。6、延时模块:用于各位显示间的延时。3.3 设计课题软件系统程序流程框图本次设计的几个主要程序流程图如图3.2、3.3、3.4、3.5、3.6、3.7、3.6所示:图3.2 测频子程序流程图 图3.3 测频中断程序流程图 图3.4 测脉宽程序流程图 图3.5 数码管显示程序流程图 图3.6 键处理程序流程图 图3.7 键扫描程序流程图图3.8 系统程序主程序流程图3.4 设计课题软件系统程序清单#inclu

11、dereg52.h#include/*共阳数码管字型码*/char code dis_code=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x0c, 0xff,0x8e,0x86,0xa1,0xc6; /*0,1,2,3,4,5,6,7,8,9,p.,灭,f,e,d,c*/char data find_code8=11,11,11,11,11,11,11,10; /*P.显示*/#define uchar unsigned char#define uint unsigned int#define ulong unsigned longu

12、long l,mk,zk;sbit P3_5=P35; /*外部被测信号*/uchar a,m;/*/函数名: void DelayX1ms(uint count)/功能: 延时时间为1ms/调用函数:/输入参数:count,1ms计数/输出参数:/说明:总共延时时间为1ms乘以count,crystal=12Mhz/*/void DelayX1ms(uint count) uint j; while(count-!=0) for(j=0;j80;j+); /* 函数原型:disp();* 功 能:数码管显示。*/void disp() char i,j=0xfe; char k; for(i

13、=0;i8;i+) P2=j; k=find_codei; P0=dis_codek; DelayX1ms(1); j=_crol_(j,1); /* 函数原型:keychuli();* 功 能:处理与键盘相连的P1口的内容,作为键值。*/uchar keychuli() uchar k; k=P1; /P1口内容送K k=k; /取反 return(k); /返回键值 /* 函数原型:key();* 功 能:键盘扫描函数,函数返回值即键值。*/uchar key() uchar keyz,keyzi; /键盘按键键值临时存放 keyz=keychuli(); /调P1口处理函数 if(key

14、z!=0) /有键动作延时去抖动,否则函数返回 disp(); disp(); keyz=keychuli(); /再次调P1口处理函数 if(keyz!=0) /真正有键按下,取键值并暂存 keyzi=keyz; while(keyz!=0) /判按键是否释放,没有释放延时去抖动等待 释放 disp(); disp(); keyz=keychuli(); keyz=keyzi; /按键释放后恢复按键键值 return(keyz); /返回按键键值/*定时器0中断函数*/ void t0(void) interrupt 1 using 2 TH0=(65536-49999)/256; /定时5

15、0ms TL0=(65536-49999)%256; a+; if(a=20) TR0=0;TR1=0; /*计数器1中断函数*/void t1(void) interrupt 3 using 2 TH1=0; TL1=0; m+;/* 函数原型:cepinlv();* 功 能:测频率函数。*/uchar cepinlv() TMOD=0X51;/设定时器1计数,定时器0定时50ms方式1 TH0=(65536-49999)/256;/定时50ms TL0=(65536-49999)%256; TH1=0x00; TL1=0x00; EA=1; ET0=1; ET1=1; TR0=1; TR1

16、=1; while(TR0=1); l=(m*65536+TH1*256+TL1); TH1=0x00; TL1=0x00; m=0; a=0; return(l);/* 函数原型:display();* 功 能:频率显示处理。*/void display(void) find_code0=l%10;find_code1=(l/10)%10;find_code2=(l/100)%10;find_code3=(l/1000)%10;find_code4=(l/10000)%10;find_code5=(l/)%10;find_code6=(l/)%10;find_code7=12;disp();

17、/* 函数原型:cezhouqi();* 功 能:测周期函数与数据处理。*/ void cezhouqi(void)cepinlv();l=/l;find_code0=l%10;find_code1=(l/10)%10;find_code2=(l/100)%10;find_code3=(l/1000)%10;find_code4=(l/10000)%10;find_code5=(l/)%10;find_code6=(l/)%10;find_code7=13;disp();/* 函数原型:cemaikuan();* 功 能:测脉宽函数。*/ void cemaikuan() TMOD=0x10;

18、EA=1;IT1=1;ET1=1;TH1=0;TL1=0;m=0;while(P3_5=1);while(P3_5=0);TR1=1;while(P3_5=1);TR1=0;mk=m*65536+TH1*256+TL1;m=0;/* 函数原型:display1();* 功 能:测脉宽函数显示处理。*/ void display1(void) find_code0=mk%10;find_code1=(mk/10)%10;find_code2=(mk/100)%10;find_code3=(mk/1000)%10;find_code4=(mk/10000)%10;find_code5=(mk/)%

19、10;find_code6=(mk/)%10;find_code7=14;disp();/* 函数原型:cezhankongbi();* 功 能:测占空比函数显示处理。*/ void cezhankongbi(void)cepinlv();l=/l;cemaikuan();zk=mk*100/l;find_code0=zk%10;find_code1=(zk/10)%10;find_code2=(zk/100)%10;find_code3=(zk/1000)%10;find_code4=(zk/10000)%10;find_code5=(zk/)%10;find_code6=(zk/)%10;

20、find_code7=15;disp();/* 函数原型:main();* 功 能:按键测得频率、周期、脉宽、占空比;并在数码管上显示。*/ void main()uchar k; while(1) k=key();disp(); switch(k) case 0x00:disp();break; /没按键 case 0x01:cepinlv();display();break; /测频率 case 0x02:cezhouqi();break; /测周期case 0x04:cemaikuan();display1();break; /测脉宽 case 0x08:cezhankongbi();b

21、reak; /测占空比 default:break; 4 设计结论、仿真结果、误差分析、教学建议4.1 设计课题的设计结论及使用说明本次设计的数字频率计达到了设计前的预期要求,即测量矩形波信号的频率、周期、脉宽和占空比。数字频率计功能如下:按下键K1(P1.0)可测得被测信号的频率。按下键K2(P1.1)可测得被测信号的周期。按下键K3(P1.2)可测得被测信号的脉宽。按下键K4(P1.3)可测得被测信号的占空比。4.2 设计课题的仿真结果启动仿真,数码管显示如图4.1所示。图4.1 数码管上电显示结果当测量1HZ频率的矩形波时:按下键K1测得频率如图4.2所示;按下键K2测得周期如图4.3所

22、示;按下键K3测得脉宽如图4.4所示;按下键K4测得占空比如图4.5所示。图4.2 测频显示结果图4.3 测周期显示结果图4.4 测带宽显示结果 图4.5 测占空比显示结果 当测量1KHZ频率的矩形波时: 按下键K1测得频率如图4.6所示; 按下键K2测得周期如图4.7所示; 按下键K3测得脉宽如图4.8所示;按下键K4测得占空比如图4.9所示。图4.6 测频显示结果图4.7 测周期显示结果图4.8 测带宽显示结果图4.9 测占空比显示结果当测量100KHZ频率的矩形波时:按下键K1测得频率如图4.10所示;按下键K2测得周期如图4.11所示;按下键K3测得脉宽如图4.12所示;按下键K4测得

23、占空比如图4.13所示。图4.10 测频显示结果图4.11 测周期显示结果图4.12 测带宽显示结果图4.13 测占空比显示结果4.3 设计课题的误差分析(1) 测频率数据如表4.1。 表4.1频率测量输入矩形波理论值测量值误差(%)1HZ1HZ1HZ01KHZ1000HZ1000HZ0100KHZHZHZ0.023(2)测周期数据如表4.2。表4.2周期测量输入矩形波理论值(us)测量值(us)误差(%)1HZ01KHZ10009990.1100KHZ10910(3) 测脉宽数据如表4.3。表4.3脉宽测量输入矩形波理论值(us)测量值(us)误差(%)1HZ0.0121KHZ5004990

24、.2100KHZ550(4)测占空比数据如表4.4。表4.4占空比测量输入矩形波理论值(%)测量值(%)误差(%)1HZ504921KHZ50492100KHZ505510在测试结果中可以看出,测量误差在10%内。本次设计的数字频率计的主要误差来自于:(1) :当启动定时计数器时,此时被测信号处于什么状态。当测频时,启动定时计数器时,若从T1(P3.5)输入的矩形波刚好为高电平,而当1s定时到时刚好为高电平到时,此时测得的频率值最准确。若启动定时计数器时,输入得矩形波刚好处于低电平,而当定时1s到时矩形波刚好要发生负跳变时,此时测得的频率误差最大。而且频率越大误差也越大。(2) 定时计数器的工

25、作方式选择与初值的赋予不一定精准,容易引起误差。要想避免以上的测量误差,方法是通过程序设计:定时计数器采用合适的工作方式选择与初值,并且多次测量再求平均值来避免。4.4 设计的重点与难点,问题的解决及不足之处,心得体会重点:理论与实践相结合的能力。Protel、proteus及keil软件的使用,进行电路的设计,实物的制作,程序的设计以及仿真结果分析。难点:制作的实物中,对硬件电路进行检测,程序的调试以及误差原因分析。问题的解决:在制作的实物中:1,程序下载不了,检查下载口电路,发现有短路线路。由于腐蚀不彻底造成,割断即可;2,数码管显示时,有的位不显示,检查发现位控线路出现断裂,没有信号给入

26、,有焊锡连上即可。程序设计中:选择无符号字符型的数据类型,数据较大时,数码管结果显示乱码,调整数据类型为长整型后就可以了。不足之处:制作实物中,转印与腐蚀需要掌握技巧,以免转印不彻底,腐蚀不完全或过度;软件的使用中还不够熟悉,如用keil调试时,进行分析能力需要加强;程序运行后,在仿真结果中存在误差,在测量较高频率时,其脉宽,周期,占空比误差较大,数据的处理在高频率中欠佳,需要改进;心得体会:通过本次课程设计-数字频率计的设计,进一步巩固了单片机软硬件的基础知识,在设计中真正的体会到了用汇编语言和C语言编程各自的优缺点,其中汇编语言编程变量存放地址清晰,条理清晰,但是程序设计起来较为繁琐,大型

27、,往往简单的一个逻辑关系要用几条语句才能表达清楚。而C语言程序设计的话程序设计起来较为简单,逻辑关系比较清晰,但是变量存放的地方不知道,而且变量的类型也需要自己设定,往往再设计中会因为变量定义错误而得不出结果。同时在绘制PCB图时特别要注意各个参数的设置,如电线的大小、焊盘和过孔的大小,这些参数的好坏会直接影响电路板的成功率。同时也要注意转印纸的印制和电路板的泡制。通过本次课程设计掌握了较为复杂的系统的C语言程序的编写,同时也使自己在文档处理能力和电路板的制作技术上更加的成熟和完美。4.5 教学建议在这儿提一点关于单片机这门课程教学建议:我认为老师在讲单片机的基础知识的同时应该多讲一点单片机程

28、序实例,这样的话同学们学起来也会更加的有动力,有时候仅仅只讲一些程序的编程思路即可,然后让同学们自己课后思考后作为作业交上来。在硬件方面的话:我认为也应该适当的布置一些电路图的绘制,必要的话把电路板也制作出来,这样的话能大大加强同学们的动手能力。另外老师课后可以和我们多做交流,我们的学习情况的信息反馈到您那里,最后可以在不足的地方加强学习。不仅是学习上的老师,也能成为我们生活中的好朋友。参考文献1 李广弟,朱月秀,冷祖祁.单片机基础(第3版).北京:北京航天大学出版社,2007年6月.2 清源计算机工作室.Protel 99 SE原理图与PCB及仿真.北京:机械工业出版社出版,2007年8月.3 马忠梅,籍顺心,张凯,马岩(第4版).北京:北京航天大学出版社,2007年2月.鸣 谢 首先感谢假期学习中王韧老师的指导,让初步了解单片机的应用,以及c语言编程的方法;在PCB板制作中,感谢王小虎老师的指导,初步掌握PROTEL软件的使用及制作实物中注意的问题;接着在本学期的学习中,感谢吴乐老师富有活力的教学,在实验中严格要求,掌握单片机学习中的基础知识和基本应用;最后感谢在课后学习中帮助我的同学孙伟等。附录1: 电路原理图附录2: 元器件布局图附录3: PCB图附录4: 元器件清单专心-专注-专业

展开阅读全文
相关资源
相关搜索

当前位置:首页 > 教育专区 > 教案示例

本站为文档C TO C交易模式,本站只提供存储空间、用户上传的文档直接被用户下载,本站只是中间服务平台,本站所有文档下载所得的收益归上传人(含作者)所有。本站仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。若文档所含内容侵犯了您的版权或隐私,请立即通知得利文库网,我们立即给予删除!客服QQ:136780468 微信:18945177775 电话:18904686070

工信部备案号:黑ICP备15003705号-8 |  经营许可证:黑B2-20190332号 |   黑公网安备:91230400333293403D

© 2020-2023 www.deliwenku.com 得利文库. All Rights Reserved 黑龙江转换宝科技有限公司 

黑龙江省互联网违法和不良信息举报
举报电话:0468-3380021 邮箱:hgswwxb@163.com