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

下载本文档

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

文档简介

1、等级: 课 程 设 计课程名称单片机原理及应用课题名称频率计数器专 业电子信息工程班 级1302学 号201301030218姓 名许聪指导老师寻大勇等2016年3月25日电气信息学院课程设计任务书课题名称频率计数器姓 名许聪 专业电子信息 班级1302 学号18 指导老师寻大勇课程设计时间2016年3月14日-2016年3月25日教研室意见意见: 审核人:一、任务及要求设计任务:本课题以单片机为核心,设计和制作一个频率计数器,来完成对输入的信号进行频率计数,计数的频率结果能够显示出来。要求能够对0250KHz的信号频率进行准确计数,计数误差不超过±1HZ。设计要求:(1)确定系统设

2、计方案;(2)进行系统的硬件设计;(3)完成应用程序设计; (4) 应用系统的硬件和软件的调试。二、进度安排第一周:周一:集中布置课程设计任务和相关事宜,查资料确定系统总体方案。周二周三:完成硬件设计和电路连接周四周日:完成软件设计第二周:周一周三:程序调试周四周五:设计报告撰写。周五进行答辩和设计结果检查。三、参考资料1、王迎旭等.单片机原理及及应用. 2版.机械工业出版社,20122、胡汉才.单片机原理及其接口技术.3版.清华大学出版社,2010.3、戴灿金.51单片机及其C语言程序设计开发实例.清华大学出版社,2010 目 录第1章 设计任务及要求11.1设计任务11.2设计要求1第2章

3、 系统方案设计12.1 基本设计原理12.2 方案整体框图2第3章 系统硬件电路设计2 3.1 复位电路.2 3.2晶振电路.3 3.3 LED数码管显示电路.3第4章 系统软件设计44.1 主程序流程图4 4.2 初始化模块5 4.3 信号频率测量模块.5 4.4 数码管显示模块.5 4.5 程序中断模块.6 4.6 数码管扫描模块.7第5章 系统仿真及调试7 5.1 C程序编译.8 5.2 Proteus仿真.9心得体会.9参考文献10附录A 仿真总图12附录B 程序清单13第1章 设计任务及要求1.1 设计任务: 本课题以单片机为核心,设计和制作一个频率计数器,来完成对输入的信号进行频率

4、计数,计数的频率结果能够显示出来。要求能够对0250KHz的信号频率进行准确计数,计数误差不超过±1HZ。1.2 设计要求:(1)确定系统设计方案;(2)进行系统的硬件设计;(3)完成应用程序设计; (4) 应用系统的硬件和软件的调试。第2章 系统方案设计2.1基本设计原理基本设计原理是直接用十进制数字显示被测信号频率的一种测量装置。它以测量周期的方法对正弦波、方波、三角波的频率进行自动的测量。所谓“频率”,就是周期性信号在单位时间(1s)内变化的次数。若在一定时间间隔T内测得这个周期性信号的重复变化次数N,则其频率可表示为f=N/T。其中脉冲形成电路的作用是将被测信号变成脉冲信号,

5、其重复频率等于被测频率fx。时间基准信号发生器提供标准的时间脉冲信号,若其周期为1s,则门控电路的输出信号持续时间亦准确地等过闸门送到计数译码显示电路。秒信号结束时闸门关闭,计数器停止计数。由于计数器计得的脉冲数N是在1秒时间内的累计数,所以被测频率fx=NHz。AT89S51 单片机内部具有 2 个 16 位的定时/计数器 T0 与 T1,其工作方法可以通过编程来实现所需的定时/计数与产生计数溢出中断要求的功能。定时/计数器 T0 与 T1 的核心都是 16 位的加 1 计数器, TH0 与 TL0构成在构成定时/计数器 T0 加 1 计数器的高 8 位和低 8 位; TH1 与 TL1构成

6、在构成定时/计数器 T1 加 1 计数器的高 8 位和低 8 位。加 1 计数器的初值可以通过程序设定,这样就可以获得不同的计数值或定时时间。当加 1 计数器用作定时器时,每个机器周期加 1(使用 12MHz 时钟时,每 1us 加 1) ,这样以机器周期为基准可以用来测量时间间隔。当加 1 计数器用作计数器时,在相应的外部引脚发生从 1 到 0 的跳变时计数器加 1,这样在计数闸门的控制下可以用来测量待测信号的频率。外部输入每个机器周期被采样一次,这样检测一次从 1 到 0 的跳变至少需要 2 个机器周期(24个振荡周期),所以最大计数速率为时钟频率的 1/24。AT89S51 单片机的时钟

7、频率可以在0Hz33MHz 范围内自动调节,当使用 12MHz 时钟时,最大计数速率为 500KHz。定时/计数器的工作由相应的运行控制位 TR 控制,当 TR 置 1 时,定时/计数器开始计数;当 TR 置 0 时,停止计数。在本设计方案中,我通过程序设定 T0 工作在计数状态下,T1 工作在计时状态下。T0 计数器对输入的信号经行计数,其最大计数值为 fOSC/24,当 fOSC=12MHz 时,T0 的最大计数频率为250kHz。2.2 方案整体框图 AT89C51 单片机 显示电路 输入信号 复位电路 晶振电路 图1 系统总框图第3章 系统硬件电路设计3.1复位电路复位是单片机的初始化

8、操作。单片机系统在上电启动运行时,都需要先复位。其作用是使CPU 和系统中其他部件都处于一个确定的初始状态,并从这个状态开始工作。而复位是一个很重要的操作方式,但单片机本身是不能自动经行复位的,必须配合相应的外部复位电路才能实现。本设计的复位电路采用上电复位加按键手动复位,其电路如下图所示: 图2 上电复位电路 3.2 晶振电路单片机工作是在统一的时钟脉冲控制下一拍一拍地进行的,这个脉冲是单片机控制器中的时序电路发出的。单片机的时序就是 CPU 在执行指令时所需控制信号的时间顺序。为了保证各部件的同步工作,单内部电路应在唯一的时钟信号下严格按时序进行工作。其电路原理图如下:图3 晶振电路3.3

9、 LED数码管显示电路显示器是微机重要的输出设备。显示器有显示监控结果、提供用户操作界面等功能。在本次设计中采用了 LED 显示器,即数码管。数码管的每一个数码段是一只发光二极管。当发光二极管导通时,相应的一个点或者一个笔画发光,控制发光二极管发光组合,可以显示出所需字符。我采用了共阴极结构。在定义其显示字形的码段时,通过 I/O 口送出七段码 。其段码表如下:表1 共阴数码管段选码显示字形0123456789共阴段选码3FH06H5BH4FH66H6DH7DH07H7FH6FH数码管的电路图如下:图4数码管接线电路初始化T1定时T0计数判断是否到一秒数码管显示开始结束否是本设计采用了数码管的

10、动态显示方式,即轮流点亮各数码管,对数码管进行扫描。在任何时刻只給一个数码管通电,通电一定时间后再给下一个数码管通电。只要刷新频率足够高,动态显示方式同样可以实现稳定显示。这样就可以节约I/O口。第4章 系统软件设计4.1主程序流程图 图5 程序流程图4.2 初始化模块void main(void) unsigned char i; TMOD=0x15; /定义定时器0为计数方式,定时器1为计时方式,均工作在方式1 TH0=0; /定时器0初值高8位为0 TL0=0; /定时器0初值低8为0 TH1=(65536-5000)/256; /定时器1初值高8位 TL1=(65536-5000)%2

11、56; /定时器初值低8位 TR1=1; /启动定时器1 TR0=1; /启动定时器0 ET0=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+) tempi=0; /赞存缓冲区清零 i=0; while(x/10) /将频率值的每一位分离出来,存进temp数组 tempi=x%10; x=x/10; i+; temp

12、i=x; for(i=0;i<6;i+) dispbufi=tempi;/将暂存数组的数据赋给显示数组 timecount=0; /计时清零 T0count=0; /计数清零 TH0=0; /计时器0初值清零 TL0=0; /计时器0初值清零 TR0=1; /重新启动定时器04.5程序中断模块void t0(void) interrupt 1 using 0 T0count+; void t1(void) interrupt 3 using 0 TH1=(65536-5000)/256; TL1=(65536-5000)%256; /重装初值 timecount+; if(timecou

13、nt=200) TR0=0; /关闭定时器0,为了读出定时器0计数个数 timecount=0; /timecount清零,重新计时 flag=1; /置标志位通知主程序1s已到 4.6数码管扫描模块P2=0xff; /关闭所有数码管 P0=dispcodedispbufdispcount; /先确定相应数码管的段码,送入段码 P2=dispbitdispcount; /送入位码 dispcount+; /下一次扫描下一位数码管 if(dispcount=8) /8位数码管 dispcount=0; /扫描完第7个,回头扫描第0个 第5章 系统仿真及调试5.1 C程序编译 图6 程序编译图5.

14、2 Proteus仿真选取较小频率为10Hz时: 图7 较小频率显示图选取中间频率为12000Hz时: 图8 中间频率显示图选取较大频率为23000Hz时: 图9 较大频率显示图心得体会在单片机应用系统设计时,必须先确定该系统的技术要求,这是系统设计的依据和出发点,整个设计过程都必须围绕这个技术要求来工作。在设计时遵循从整体到局部也即自上而下的原则。把复杂的问题分解为若干个比较简单的、容易处理的问题,分别单个的加以解决。将总任务分解成可以独立表达的子任务,这些子任务再向下分,直到每个子任务足够简单,能够直接而容易的实现为止。在程序调试时应按各个功能模块分别调试。在程序设计时,正确合理的设计是非

15、常重要的,正确的程序设计包括程序的结构是否合理,一些循环结构和循环指令的使用是否恰当,能否使用较少的循环次数或较快的指令,是否能把某些延迟等待的操作改为中断申请服务,能否把某些计算方法和查表技术适当简化等。另外程序的设计要具有可扩展性,程序的结构要标准化,便于阅读、修改和扩充。通过本次课程设计,我更加地了解和掌握单片机的基本知识和基本的编写程序,也更加深入地了解单片机这么课程,掌握汇编语言的设计和调试方法。对于认识到自己在知识方面存在的不足,明确今后的学习方向是非常有益的。参考文献单片机原理与应用 王迎旭等编 机械工业出版社51系列单片机设计实例 楼然苗等编 北京航空航天大学出版社计算机硬件技

16、术基础实验教程 黄勤等编 重庆大学出版社微型计算机接口技术及应用 刘乐善主编 华中科技大学出版社单片微型计算机原理及接口技术陈光东等 华中科技大学出版社附录A 仿真总图附录B 程序清单#include <reg51.h> unsigned char code dispbit=0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f; /定义数码管位选码unsigned char code dispcode=0x3f,0x06,0x5b,0x4f,0x66, 0x6d,0x7d,0x07,0x7f,0x6f,0x00,0x40; unsigned char di

17、spbuf8=0,0,0,0,0,0,10,10; /显示数码组unsigned char temp8; /暂存数组unsigned char dispcount; /扫描位的记录unsigned char T0count; /计数次数 unsigned char timecount;/定时器中断次数bit flag; / 定义标志位 unsigned long x; /定义变量用来存放频率值 /*初始化模块*/ void main(void) unsigned char i; TMOD=0x15; /定义定时器0为计数方式,定时器1为计时方式,均工作在方式1 TH0=0; /定时器0初值高8

18、位为0 TL0=0; /定时器0初值低8为0 TH1=(65536-5000)/256; /定时器1初值高8位 TL1=(65536-5000)%256; /定时器初值低8位 TR1=1; /启动定时器1 TR0=1; /启动定时器0 ET0=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+) tempi=0; /赞存缓冲区清零 i=0; while(x/10) /将频率值的每一位分离出来,存进temp数组 tempi=x%10; x=x/10; i+; tempi=x; for(i=0;i<6;i+) dispbufi=tempi;/将暂存数组的数据赋给显示数组 timecount=0; /计时清零 T0count=0; /计数清零 TH0=0; /计时器0初值清零 TL0=0; /计时器0初值清零 TR0=1; /重新启动定时器0 /*程序中断*/ void t0(vo

温馨提示

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

评论

0/150

提交评论