单片机课设频率计数器_第1页
单片机课设频率计数器_第2页
单片机课设频率计数器_第3页
单片机课设频率计数器_第4页
单片机课设频率计数器_第5页
已阅读5页,还剩7页未读 继续免费阅读

下载本文档

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

文档简介

/等级等级:课程设计课程名称单片机原理及应用课题名称频率计数器专业电子信息工程班级1302学号201301030218姓名许聪指导老师寻大勇等2016年3月25日电气信息学院课程设计任务书课题名称频率计数器姓名许聪专业电子信息班级1302学号18指导老师寻大勇课程设计时间2016年3月14日-2016年3月25日教研室意见意见:审核人:一、任务及要求设计任务:本课题以单片机为核心.设计和制作一个频率计数器.来完成对输入的信号进行频率计数.计数的频率结果能够显示出来。要求能够对0-250KHz的信号频率进行准确计数.计数误差不超过±1HZ。设计要求:〔1确定系统设计方案;〔2进行系统的硬件设计;〔3完成应用程序设计;<4>应用系统的硬件和软件的调试。二、进度安排第一周:周一:集中布置课程设计任务和相关事宜.查资料确定系统总体方案。周二~周三:完成硬件设计和电路连接周四~周日:完成软件设计第二周:周一~周三:程序调试周四~周五:设计报告撰写。周五进行答辩和设计结果检查。三、参考资料1、王迎旭等.单片机原理及及应用.2版.机械工业出版社.20122、胡汉才.单片机原理及其接口技术.3版.清华大学出版社.2010.3、戴灿金.51单片机及其C语言程序设计开发实例.清华大学出版社.2010目录第1章设计任务及要求11.1设计任务11.2设计要求1第2章系统方案设计12.1基本设计原理12.2方案整体框图2第3章系统硬件电路设计23.1复位电路23.2晶振电路33.3LED数码管显示电路3第4章系统软件设计44.1主程序流程图44.2初始化模块54.3信号频率测量模块54.4数码管显示模块54.5程序中断模块64.6数码管扫描模块7第5章系统仿真及调试75.1C程序编译85.2Proteus仿真9心得体会9参考文献10附录A仿真总图12附录B程序清单13设计任务及要求1.1设计任务:本课题以单片机为核心.设计和制作一个频率计数器.来完成对输入的信号进行频率计数.计数的频率结果能够显示出来。要求能够对0-250KHz的信号频率进行准确计数.计数误差不超过±1HZ。1.2设计要求:〔1确定系统设计方案;〔2进行系统的硬件设计;〔3完成应用程序设计;<4>应用系统的硬件和软件的调试。第2章系统方案设计2.1基本设计原理基本设计原理是直接用十进制数字显示被测信号频率的一种测量装置。它以测量周期的方法对正弦波、方波、三角波的频率进行自动的测量。所谓"频率".就是周期性信号在单位时间〔1s内变化的次数。若在一定时间间隔T内测得这个周期性信号的重复变化次数N.则其频率可表示为f=N/T。其中脉冲形成电路的作用是将被测信号变成脉冲信号.其重复频率等于被测频率fx。时间基准信号发生器提供标准的时间脉冲信号.若其周期为1s.则门控电路的输出信号持续时间亦准确地等过闸门送到计数译码显示电路。秒信号结束时闸门关闭.计数器停止计数。由于计数器计得的脉冲数N是在1秒时间内的累计数.所以被测频率fx=NHz。AT89S51单片机内部具有2个16位的定时/计数器T0与T1.其工作方法可以通过编程来实现所需的定时/计数与产生计数溢出中断要求的功能。定时/计数器T0与T1的核心都是16位的加1计数器.TH0与TL0构成在构成定时/计数器T0加1计数器的高8位和低8位;TH1与TL1构成在构成定时/计数器T1加1计数器的高8位和低8位。加1计数器的初值可以通过程序设定.这样就可以获得不同的计数值或定时时间。当加1计数器用作定时器时.每个机器周期加1〔使用12MHz时钟时.每1us加1.这样以机器周期为基准可以用来测量时间间隔。当加1计数器用作计数器时.在相应的外部引脚发生从1到0的跳变时计数器加1.这样在计数闸门的控制下可以用来测量待测信号的频率。外部输入每个机器周期被采样一次.这样检测一次从1到0的跳变至少需要2个机器周期〔24个振荡周期.所以最大计数速率为时钟频率的1/24。AT89S51单片机的时钟频率可以在0Hz—33MHz范围内自动调节.当使用12MHz时钟时.最大计数速率为500KHz。定时/计数器的工作由相应的运行控制位TR控制.当TR置1时.定时/计数器开始计数;当TR置0时.停止计数。在本设计方案中.我通过程序设定T0工作在计数状态下.T1工作在计时状态下。T0计数器对输入的信号经行计数.其最大计数值为fOSC/24,当fOSC=12MHz时.T0的最大计数频率为250kHz。2.2方案整体框图AT89C51单片机显示电路输入信号复位电路晶振电路显示电路输入信号复位电路晶振电路图1系统总框图第3章系统硬件电路设计3.1复位电路复位是单片机的初始化操作。单片机系统在上电启动运行时.都需要先复位。其作用是使CPU和系统中其他部件都处于一个确定的初始状态.并从这个状态开始工作。而复位是一个很重要的操作方式.但单片机本身是不能自动经行复位的.必须配合相应的外部复位电路才能实现。本设计的复位电路采用上电复位加按键手动复位.其电路如下图所示:图2上电复位电路3.2晶振电路单片机工作是在统一的时钟脉冲控制下一拍一拍地进行的.这个脉冲是单片机控制器中的时序电路发出的。单片机的时序就是CPU在执行指令时所需控制信号的时间顺序。为了保证各部件的同步工作.单内部电路应在唯一的时钟信号下严格按时序进行工作。其电路原理图如下:图3晶振电路3.3LED数码管显示电路显示器是微机重要的输出设备。显示器有显示监控结果、提供用户操作界面等功能。在本次设计中采用了LED显示器.即数码管。数码管的每一个数码段是一只发光二极管。当发光二极管导通时.相应的一个点或者一个笔画发光.控制发光二极管发光组合.可以显示出所需字符。我采用了共阴极结构。在定义其显示字形的码段时.通过I/O口送出七段码。其段码表如下:表1共阴数码管段选码显示字形0123456789共阴段选码3FH06H5BH4FH66H6DH7DH07H7FH6FH数码管的电路图如下:图4数码管接线电路初始化T1定时T0计数判断是否到一秒数码管显示开始结束否是本设计采用了数码管的动态显示方式初始化T1定时T0计数判断是否到一秒数码管显示开始结束否是系统软件设计4.1主程序流程图图5程序流程图4.2初始化模块voidmain<void>{unsignedchari;TMOD=0x15;//定义定时器0为计数方式.定时器1为计时方式.均工作在方式1TH0=0;//定时器0初值高8位为0TL0=0;//定时器0初值低8为0TH1=<65536-5000>/256;//定时器1初值高8位TL1=<65536-5000>%256;//定时器初值低8位TR1=1;//启动定时器1TR0=1;//启动定时器0ET0=1;//开定时器0中断ET1=1;//开定时器1中断EA=1;//开总中断4.3信号频率测量模块while<1>{if<flag==1>//如果定时时间到了1s{flag=0;//标志位清零x=T0count*65536+TH0*256+TL0;//获得整形的频率值4.4数码管显示模块for<i=0;i<8;i++>{temp[i]=0;//赞存缓冲区清零}i=0;while<x/10>//将频率值的每一位分离出来.存进temp数组{temp[i]=x%10;x=x/10;i++;}temp[i]=x;for<i=0;i<6;i++>{dispbuf[i]=temp[i];//将暂存数组的数据赋给显示数组}timecount=0;//计时清零T0count=0;//计数清零TH0=0;//计时器0初值清零TL0=0;//计时器0初值清零TR0=1;//重新启动定时器04.5程序中断模块voidt0<void>interrupt1using0{T0count++;}voidt1<void>interrupt3using0{TH1=<65536-5000>/256;TL1=<65536-5000>%256;//重装初值timecount++;if<timecount==200>{TR0=0;//关闭定时器0.为了读出定时器0计数个数timecount=0;//timecount清零.重新计时flag=1;//置标志位通知主程序1s已到}4.6数码管扫描模块P2=0xff;//关闭所有数码管P0=dispcode[dispbuf[dispcount]];//先确定相应数码管的段码.送入段码P2=dispbit[dispcount];//送入位码dispcount++;//下一次扫描下一位数码管if<dispcount==8>//8位数码管{dispcount=0;//扫描完第7个.回头扫描第0个}系统仿真及调试5.1C程序编译图6程序编译图5.2Proteus仿真选取较小频率为10Hz时:图7较小频率显示图选取中间频率为12000Hz时:图8中间频率显示图选取较大频率为23000Hz时:图9较大频率显示图心得体会在单片机应用系统设计时.必须先确定该系统的技术要求.这是系统设计的依据和出发点.整个设计过程都必须围绕这个技术要求来工作。在设计时遵循从整体到局部也即自上而下的原则。把复杂的问题分解为若干个比较简单的、容易处理的问题.分别单个的加以解决。将总任务分解成可以独立表达的子任务.这些子任务再向下分.直到每个子任务足够简单.能够直接而容易的实现为止。在程序调试时应按各个功能模块分别调试。在程序设计时.正确合理的设计是非常重要的.正确的程序设计包括程序的结构是否合理.一些循环结构和循环指令的使用是否恰当.能否使用较少的循环次数或较快的指令.是否能把某些延迟等待的操作改为中断申请服务.能否把某些计算方法和查表技术适当简化等。另外程序的设计要具有可扩展性.程序的结构要标准化.便于阅读、修改和扩充。通过本次课程设计.我更加地了解和掌握单片机的基本知识和基本的编写程序.也更加深入地了解单片机这么课程.掌握汇编语言的设计和调试方法。对于认识到自己在知识方面存在的不足.明确今后的学习方向是非常有益的。参考文献《单片机原理与应用》王迎旭等编机械工业出版社《51系列单片机设计实例》楼然苗等编北京航空航天大学出版社《计算机硬件技术基础实验教程》黄勤等编XX大学出版社《微型计算机接口技术及应用》刘乐善主编华中科技大学出版社《单片微型计算机原理及接口技术》陈光东等华中科技大学出版社附录A仿真总图附录B程序清单#include<reg51.h>unsignedcharcodedispbit[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};//定义数码管位选码unsignedcharcodedispcode[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x00,0x40};unsignedchardispbuf[8]={0,0,0,0,0,0,10,10};//显示数码组unsignedchartemp[8];//暂存数组unsignedchardispcount;//扫描位的记录unsignedcharT0count;//计数次数unsignedchartimecount;//定时器中断次数bitflag;//定义标志位unsignedlongx;//定义变量用来存放频率值/*******初始化模块*******/voidmain<void>{unsignedchari;TMOD=0x15;//定义定时器0为计数方式.定时器1为计时方式.均工作在方式1TH0=0;//定时器0初值高8位为0TL0=0;//定时器0初值低8为0TH1=<65536-5000>/256;//定时器1初值高8位TL1=<65536-5000>%256;//定时器初值低8位TR1=1;//启动定时器1TR0=1;//启动定时器0ET0=1;//开定时器0中断ET1=1;//开定时器1中断EA=1;//开总中断/*******信号频率测量*******/while<1>{if<flag==1>//如果定时时间到了1s{flag=0;//标志位清零x=T0count*65536+TH0*256+TL0;//获得整形的频率值/*******数码管显示*******/for<i=0;i<8;i++>{temp[i]=0;//赞存缓冲区清零}i=0;while<x/10>//将频率值的每一位分离出来.存进temp数组{temp[i]=x%10;x=x/10;i++;}temp[i]=x;for<i=0;i<6;i++>{dispbuf[i]=temp[i];//将暂存数组的数据赋给显示数组}timecount=0;//计时清零T0count=0;//计数清零TH0=0;//计时器0初值清零TL0=0;//计时器0初值清零TR0=1;//重新启动定时器0}}}/*******程序中断*

温馨提示

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

评论

0/150

提交评论