高频频率计课程设计.doc_第1页
高频频率计课程设计.doc_第2页
高频频率计课程设计.doc_第3页
高频频率计课程设计.doc_第4页
高频频率计课程设计.doc_第5页
已阅读5页,还剩13页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

单片机应用技术课程设计报告四川职业技术学院 单片机应用技术课程设计 题 目: 高频频率计的设计 系 别: 电子电气工程系 专 业: 应 用 电 子 技 术 班 级: 08 级 电 技 1 班 组 别: 第 12 组 姓 名: 周 翠 庞宇清 代安春 学 号: 34 25 29 指导教师: 成有才 刘 宸 完成时间: 2010 年 7 月 2 日 四川职业技术学院 课程设计任务书 电子电气系 系别 应用电子技术 专业 08级 级 1班 学生 周翠 庞宇清 代安春 学号 34 25 29 日期 2010年7月2日 课程设计题目: 高频频率计 课程设计内容与要求:一、 设计任务设计说明:利用分频器和单片机系统设计一个高频频率计。设计高频频率计的组成框图如下:分频器输入时钟脉冲51单片机二、 设计要求测量的频率范围为100KHz100MHz,精度:0.1% 指导教师: 成友才 刘 宸 课程设计成绩评定表课程设计评语: 指导教师: 时 间: 年 月 日课程设计成绩: 指导教师: 时 间: 年 月 日 目 录摘要 5一、概述 6 1.1引言 61.2 课题意义 61.3 系统主要功能 6二、系统方案设计 62.1 工作原理 62.2 总体框图 7三、硬件电路设计及描述 83.1 晶体振荡电路 83.2 数码管显示电路 83.3 分频器电路 9四、软件设计及描述 104.1 主程序 104.2 定时1s程序 104.3 输入脉冲计数程序 11五、源程序 12 5.1源程序 12 5.2调试结果 14六、课程设计心得体会 16参考文献 16 摘要在电子技术中,频率是最基本的参数之一,并且与许多电参量的测量方案、测量结果都有十分密切的关系,因此频率的测量就显得更为重要。为了实现智能化的计数测频,实现一个宽领域、高精度的频率计,一种有效的方法是将单片机用于频率计的设计当中。本此课程设计我们主要以AT89S51单片机作为核心器件,另外还包括信号输入,信号输出,两片74LS161构成的256 分频器,数据显示等功能的高频频率计,频率计的主程序(软件部分)是利用单品机编制的C程序,信号的分频(硬件部分)是利用分频器的分频来实现的。由于本此课程设计采用了模块化的设计方法,实现了频率为100KHz-100MHz的高频频率测量范围。关键词:测量;频率计;单片机;C语言;74LS161一、 概 述1.1 引言单片机就是在一块硅片上集成了中央处理器(CPU)、存储器(RAM、ROM、EFPROM、Flash Memory)和输入、输出接口(并行I/O、串行通信口)、振荡电路、计数器等电路的一块集成电路,这样的集成电路具有一台计算机的基本功能,因而被称为单片机微型计算机,简称单片机(MCU)。单片机的特点是体积小,重量轻,功能强,通用性好,也就是说集成度高,其内部的结构是普通的计算机系统的简化。在增加一些外围电路之后,就能成为一个完整的系统。在众多单片机中,AT89系列单片机具有系统结构完整,特殊功能寄存器规范化以及指令系统的控制功能强等特色,使起成为单片机中的主流机型。这一次实训我们选择的课题是:运用单片机系统和分频器实现高频频率计的设计。1.2 课题意义通过本课题的设计,了解单片机的具体硬件设施,熟悉Keil uVision2、ISIS、AVR_fighter等软件的应用。熟悉LED七段数码显示器的结构及工作原理;学会如何用单片机的定时功能进行定时,掌握单片机实现频率计的原理和方法;掌握单片机保存、查看数据的原理和方法。会正确连接单片机的端口与数字显示控制电路的连接线;会应用数组和下标变量;会熟练编写运用常见函数并且灵活调用函数,能熟练地对程序进行在线修改、编译和将程序下载到单片机。能根据设计要求与程序运行实验结果进行比较,分析和判断程序设计错误出现的位置,并能完成修改和优化程序设计。同时也更加熟悉了定时器的应用,对频率计也有了更深一步的认识,频率计的功能是测出1s内的输入信号的周期数,再用数字的方式显示出来,也就是说需要完成定时1S、对输入的脉冲计数和数字显示的硬件电路及相应的程序,在本次的课程设计中要求的是要我们实现100KHz100MHz的频率测试范围,这也就要求我们要用到分频器,并且对分频有着熟悉的认识及其连线有着熟练的操作,同时也为我们提供了一个复习以前学习的数字电路的相关知识的一次机会。1.3 系统主要功能 利用单片机AT89S51单片机的T0、T1的定时/计数功能,完成对输入信号的频率进行测量,测量的结果通过8位动态数码管显示出来。在此次的课程设计中要求的是实现对100KHz100MHz的信号频率进行准确测量,测量的精度为。对与如此高的频率需要利用分频器来进行分频,在这里我们选用的是74LS161 16进制计数器来进行16分频,并利用AT89S51输出频率。二、系统方案设计2.1工作原理 频率计的功能是测出1S内的输入信号的周期个数,在中断处理程序里对中断次数进行计数。1S到后,将中断次数和计数器里的计数值取出进行综合数据处理,处理后的数据再用数字的方式显示出来,也就是说要完成1S、对输入的脉冲计数和数字显示的硬件电路及相应的程序。 从此次的课程设计中我们可以得出,需定时1S这可以通过来单片机内部的定时器来完成,不需要额外的硬件电路,同样,对脉冲的计数也可以用单片机内部的定时计数器来完成,也不需要额外的硬件电路,只需要将外部的计数脉冲接到对应的引脚上,在本次的设计中选择的是T0作为计数器用,所以将计数脉冲连接到对应的的T0引脚(P3.4,第二功能),T1工作于定时状态下,所以将定时连接到对应的T1引脚(P3.5,第二功能)。显示频率的数字,可以采用各种显示器件,在此次的课程设计中我们选用前面学过的动态显示电路,而P0口接7段显示器的段码控制端,而P2口接7段显示器数码管的位码。实验时信号二来源可用计数器74LS161 16进制对其进行16分频,本次设计中考虑到测试的要求是100KHz100Mhz的高频频率范围以及所采用的分频器,在这里我们选用了两块74LS161组成256的分频器。具体的显示电路原理图如下图1所示图1频率计电路原理图2.2总体框图具体的程序出了框图如下图2所示:频率计算处理完毕毕取出各位送显示数组频率为原有数据的1/10YesNo三 硬件电路设计及描述3.1 晶体振荡电路 晶体振荡电路时让单片机活起来的心脏。AT89S51是内部具有振荡电路的单片机,只需在18脚和19脚之间接上石英晶体(如图1所示),给单片机加上工作所需直流电源,振荡器就开始振荡起来,振荡电路就为单片机工作提供了所需要的时钟脉冲信号,使单片机的内部电路、单片机内部程序(若有)开始工作。振荡电路不工作,整个单片机电路就不能正常工作。AT89S51常外接6MHz,12MHz的石英晶振,图1中接入的是11.0592MHz的石英晶体,最高可接33MHz石英晶体。18脚和19脚分别对地接了一个20pF的电容,目的是防止单片机自激。若从18脚输入外部时钟脉冲,则19脚接地。 图3 晶体振荡电路3.2 数码管显示电路实验电路中设计了一组数码管显示电路,电路如图2所示。八只数码管可以单只驱动,也可以动态驱动显示8只数码管。通过插接口J6接数码管7段显示段码输入端,通过插接口J10接每位数码管的的驱动信号。当单片机在输出7段显示码到J6时,又提供某一位数码管显示的控制信号也输到J10的某一引脚上,二者共同作用实现对应数码管显示出数字。 图4 数码管显示电路:3.3 分频电路 在本次设计中设计的频率计为高频频率计,测量范围为100KHz100MHz。由于单片机的工作频率=12MHz,工作在计数状态下的T,最大计数为,因此T能计数的脉冲的最大计数频率为=500KHz。对于大于此值的脉冲,需要在前面加上分频器,分频后在进行计数。由于在以前学过数字电子技术,里面涉及了部分分频电路知识,所以在本次设计中我们采用了大家都熟悉的由两片TTL系列的74LS161级联构成的1616=256分频的分频电路。高频时钟脉冲信号从一级分频器U的脉冲时钟信号输入端(CP端)输入,从输出端Q端口输出接到下一级分频器的脉冲信号输入端进行第二次分频。最终由第二级分频电路的Q输出分频后的脉冲信号,接单片机的P脚,为单片机提供脉冲信号输入。具体电路如图5所示: 图5 分频器电路 设计整机实物连接图如下: 四 软件设计及描述4.1 主程序主程序由多个子程序模块组成,各程序模块都要完成一个明确的任务,实现某个具体的功能,显示、延时、控制、计算和数据转换等,在具体需要时调用相应的模块即可。因为将定时1S和外部脉冲进行计数的任务都有定时器及中断服务程序完成,所以在主程序中,除了对定时/计数器及相关的变量初始化外,主要是将计数的结果进行显示,对于动态显示程序,P0口接7段数码管显示的段码,P2口接7段数码管显示的位码。主程序如下所示:void main() init(); /调用初始化函数 TMOD=0X15; /将T1设置为模式1定时方式,T0为模式1计数方式 TH1=(65536-5*120000/12)/256; /定时50ms的初始值 TL1=(65536-5*120000/12)%256; ET0=1; ET1=1; EA=1;T2MOD=2;RCAP2H=254;RCAP2L=212;/10KHZTR2=1; TR1=1; TR0=1; while(1) display(); /一直调用显示函数 4.2 定时1S程序由程序设计分析可得,T1工作在定时状态下,最大定时时间约为65ms,达不到1s的定时,所以采用定时50ms,共定时20次,即可完成1s的定时功能。因实验电路晶振fOSC12MHz,所以T1的初值的装入语句如下: TH1=(65536-5*120000/12)/256; TL1=(65536-5*120000/12)%256; 每定时1s时间到,就停止T0的计数,而从T0的计数单元中读取计数的数值,然后进行数据处理,送到数码管显示出来。具体的1S定时程序如下所述:void time1() interrupt 3 /定时器1的中断服务程序 TH1=(65536-5*110592/12)/256; /高八位的初始值 TL1=(65536-5*110592/12)%256; /低八位的初始值 if (T1count=19) /1s是否到了 calc(); /计算频率,并送显示 init(); /初始化 else T1count+;4.3 输入脉冲计数程序T0 是工作在计数状态下,对输入的频率信号进行计数,在本次的课程设计中,由于单片机的工作频率f=12MHz,工作在计数状态下的T0,最大计数值为/24,因此T0能计数的脉冲最大技术频率为12MHz/24=500KHz,对于频率大于此值的脉冲,需要在计数前面加上分频器,分频后再进行计数,由于本次的设计要求的就是高于此频率的脉冲故需在技术前面加上分频器。作为定时器T0,为了得到1s内的频率值,需要在定时1s之前将其初始值赋为0。同时,由于T0的最大计数值为65536,小于要求计数的频率的最大值,所以,在1s内,完全有可能产生溢出,对此,采用与定时1s的类似的方法,使用软件来记录计数器有几次溢出。若1S内有A次溢出,最后计数T0的计数值为B,则输出信号的频率为:=A*65536+B由于我们采用了256分频器分频,所以最终输出信号频率为: =256*(A*65536+B)将频率转换为显示所需的数据,可以采用循环除10,取模的方法得到各位数据。下面是定时器0的计数程序:void time0() interrupt 1 /定时器0的中断服务程序T0count+; / 计算T0在1s内中断了几次由于我们采用的是八位数码管显示数据,所以显示的最大数据为99999999Hz,所以当输入的脉冲信号为100MHz时,八位数码管就不能进行正确的显示,为此在本次设计中,当输入信号为100MHz时,就在数码管上显示high,下面是high的显示函数:void dispaly1() /显示high函数 uchar i,j=0x01,k; uchar code dispcode=0x74,0x06,0x6f,0x74; uchar dispaly_data4=0,0,0,0; for(i=4;i0;i-) P2=0; P0=dispcodedispaly_datai-1; P2=j; j=j0;k-); P2=0;五、源程序5.1主程序通过任务分析,要求单片机完成三个实时任务,分别是:对输入信号周期进行计数、1S定时、动态显示,以及频率计算及频率转换为显示数据。要求完成三个实时任务,只有使用中断的处理方式进行任务分割,可以用定时器T0、T1及其中断服务程序和主程序来分别完成每一个任务。因为将定时1S和对外部脉冲进行计数的任务都有定时器级中断服务程序完成,所以在主程序中,除了对定时/ 计数器及相关变量初始化外,主要就是将计数的结果进行显示。对于动态显示程序。P0口接7段数码管的断码输入端,P2口接7段数码管的位码控制端。下面的程序是本次课程设计的源程序:/*程序功能:完成对P3.4脚输入的脉冲频率计数并显示*/#include /包含头文件#define uchar unsigned char uchar disp8;ucharT0count,T1count; unt;void display() uchar i,j,k=0x80; uchar code dispcode=0x3F,0x06,0x5B,0x4F,0x66,0x6D,0x7D,0x07,0x7F,0x6F; for(i=0;i0;j-); /延迟 k=k1; P2=0; /闭显示关闭显示/*下面程序将频率转换为显示的数据*/void dispaly1() /显示high函数 uchar i,j=0x01,k; uchar code dispcode=0x74,0x06,0x6f,0x74; uchar dispaly_data4=0,0,0,0; for(i=4;i0;i-) P2=0; P0=dispcodedispaly_datai-1; P2=j; j=j0;k-); P2=0;void calc() uchar i; long frequency; /定义变量frequency为long型变量 frequency=256*(long)T0count*256+TH0)*256+TL0); /计算频率值/*下面的程序实现将频率转换到显示数组*/ if(frequency=100000000) dispaly1(); /当频率为100MHz时显示high else for(i=7;i0;i-) dispi=frequency%10; /取出个位数 frequency=frequency/10; disp0=frequency; /*下面的函数实现对变量的初始化*/void init() T0count=0; T1count=0; TH0=0; TL0=0;void main() init(); /调用初始化函数 TMOD=0X15; /将T1设置为模式1定时方式,T0为模式1计数方式 TH1=(65536-5*120000/12)/256; /定时50ms的初始值 TL1=(65536-5*120000/12)%256; ET0=1; ET1=1; EA=1;T2MOD=2;RCAP2H=254;RCAP2L=212;/10KHZTR2=1; TR1=1; TR0=1; while(1) display(); /一直调用显示函数 void time0()interrupt 1 /定时器0的中断服务程序 T0count+; /计算T0在1s内中断了几次void time1()interrupt 3 /定时器1的中断服务程序 TH1=(65536-5*120000/12)/256; /高八位的初始值 TL1=(65536-5*120000/12)%256; /低八位的初始值 if(T1count=19) /1s是否到了 calc(); /计算频率,并送显示 init(); /初始化 else T1count+;5.2调试结果如下(1)单片机的ALE/(30脚)为地址锁存允许端,它的输出脉冲用于锁存地址的地位字节,即使不访问外部数据存储器时,ALE端仍以不变的频率输出脉冲信号(此频率为晶体振荡器的1/6)。由于本次设计用的晶振频率为12MHz,所以ALE输出2MHz的脉冲信号,下图为本次测得的ALE脚上的频率:(2)单片机的18脚和19脚分别连接了晶振的输出和输入端,为此我们可以测得18脚(晶振的输出端)的频率如下图所示: (3)在源程序中定义了在P1.0引脚上形成了10KHz的脉冲信号,为此,当分频器脉冲信号输入端接在P1.0上时,输入脉冲信号就为10KHz,下图为测得的频率:由上面的调试结果可以看出:测量值与理论值之间有一定的误差。这是由于实际电路中由于各元器件的值和电路的连接存在着不可避免的系统误差,以及人为的一些操作误差,使得显示的结果与其真实值之间存在着差异,故显示的结果略小于真实值。在实际操作中,我们应当尽量避免人为因素造成的误差,使得测量值与理论值更接近。六、课程设计体会通过本次课程设计我们学会了C语言与单片机语言的异同,以及如何设计一些简单的程序,同时也学会了在设计过程中怎样去分析各个的单元程序,实现了由理论知识到实践的过渡,培养了我们的动手能力。这次课程设计使我们熟悉了Keil uvision2、AVR_fighter等软件的使用以及单片机AT89S51的一些最基本的应用,针对本次的课程设计就使得我们对于定时器的应用以及有关定时器的语句有了很大的提高,相信这对于那些以后也可能会遇到有关定时方面的设备打下了扎实的基础,不仅仅是定时对于单片机中的计数也有了更高一层次的认识,定时计数都是单片机应用的一个方面,我们应该弄清楚原理,同时将其用于特定的设计中,而通过这次的设计,我们也都明白了它的功能。这为以后学习实践打下了坚实的基础。在这次的单片机课程设计中因为要求实现的频率是100KHz100MHz的高频频率变化范围,超出了T能计数的脉冲最大计数频率,所以要用到以前说学习过的数字电子技术中的74LS161 16进制计数器进行分频,这也就要求我们要对此计数器有着很熟悉的认识,对于它的连线我们也应该明确,分频器的构成是利用74LS161 进行两级的级联,以此达到完成分频的作用,经过一级一级的分频达到高频率到较高频率的频率变化范围。通过这次的课程设计使得我们对于以往所学过的旧知识有了一次更为崭新的复习,对那些已经忘了的知识也有了更深一步的烙印,相信通过这次的实训我们的知识更丰富了,我们的眼界也更宽阔了,也为我们在以后的工作学习中打下了坚实的基础。此次设计不可或缺的也体现了团队合作的精神,在设计和写报告过程中一个人是很难完成的,这还需要三个人团结配合,遇到问题共同商量讨论,共同去思考这些问题,共同去解决问题。而对于有些知识超出了我们能力的范围,我们应该尽力去解决,学会查找资料,书本上的东西是有限的,对于众多的疑难还需要我们四处搜寻。参考文献单片机应用技术(C语言)朱永金、成友才跟我学用单片机肖洪兵单片机原理及应用技术李全利基于C语言编程MCS-51单片机原理与应用张培仁单

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论