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

下载本文档

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

文档简介

1、课程设计报告课程名称: 单片机课程设计 题 目: 基于单片机的频率计数器设计 学 院: 环境与化学工程 系:过程装备与测控工程 专 业: 班 级: 学 号: 学生姓名: 起讫日期: 指导教师: 摘要数字频率计是计算机、通讯设备、音频视频等科研生产领域不可缺少的测量仪器。它是一种用十进制数字,显示被测信号频率的数字测量仪器。它的基本功能是测量正弦信号,方波信号以及其他各种单位时间内变化的物理量。本课程设计主要设计一个简易的频率计,来实现信号在0-9999HZ范围内周期变化的方波频率的测定。该文主要介绍了基于STC89C52 单片机频率计的设计方案和实现方法,该系统主要由硬件和软件两部分组成,其中

2、重点给出了具体硬件电路图和软件流程图以及具体工作原理。硬件部分通过洞洞板的布线设计帮助,可以确保焊接时尽量少的飞线和出错。软件通过keil µ vision编译及调试,其中在P1.7口编入了一个5500HZ的方波,用以仿真调试该频率计的软硬件功能是否能够实现输出频率的功能。另外,本设计多增加了一个按键功能,通过一个按键来控制定时计数器的开始和关闭。该频率计还带有3*3的矩阵键盘,可以作为扩展应用区,通过编程实现。本设计中用的是LED共阴数码管,输出频率时采用的事动态显示的方法。关键词:频率计;单片机;动态显示目录一、频率计数器的设计任务和要求11.1 频率计数器的设计任务11.2 设

3、计要求及发挥部分1二、方案的总体设计12.1 方案的设计12.2 方案的整体框图22.3 方案的说明2三、 硬件设计23.1 单片机的最小系统23.1.1 上电复位电路23.1.2 晶振电路33.2 LED数码管显示电路33.3 整体电路4四、 软件设计54.1 程序流程图54.2 初始化子函数54.3 延时子函数54.4 中断子函数5五、 系统的调试和说明65.1 C程序的说明65.2 C程序编译的结果65.3 实物图7六、 设计总结与心得体会86.1设计总结86.2 设计心得9七、 参考文献9附录1012一、频率计数器的设计任务和要求1.1 频率计数器的设计任务本课程设计任务主要是基于单片

4、机系统,通过软件、硬件的调试,完成一个具有计数功能的频率计数器。1.2 设计要求及发挥部分1.设计要求主要有:l 设计的方案合理、正确;l 完成系统硬件的设计及正确焊接;l 完成系统软件的设计与调试; 2.发挥部分:本课程设计的发挥部分较小,只再增加了一个按键来控制定时器,计数器的开始。 二、方案的总体设计2.1 方案的设计本课程设计的基于ATMEL公司STC89C52单片机的频率计数器,是利用该52单片机内部的定时计数器来完成待测信号频率的测量。STC89C52单片机内部具有2个16位的定定时计数器T0与T1,可以通过编程来实现所需要的功能。定时/计数器T0与T1的核心都是16位的加1计数器

5、,TH0与TL0构成 在构成定时器/计数器T0加1计数器的高8位和低8位;TH1与TL1构成在构成定/计数器T1加1计数器的高8位和低8位。加1计数器的初值可以通过程序设定,这样就可以获得不同的计数器初值或定时时间。加1计数器用作定时器时,每个机器周期加1,这样以机器周期为基准可以用来测量时间间隔。定时/计数器用作计数器时,在相应的外部方波从1到0的跳变时计数器加1,这样在计数闸门的控制下可以测量待测信号的频率。定时/计数器的工作由响应的运行控制位TR控制,当TR置1时,定时/计数器开始计数,当TR置零时停止计数。 在本设计方案中,我在程序中设定T0工作在计数状态,T1工作在计时状态下。T0计

6、数器对输入信号进行计数,由于信号的频率就是每秒钟信号的脉冲个数,于是我让T1工作在定时状态下,定时时间为1秒。每定1秒钟到,就停止T0的计数,然后从T0的计数单元中读取计数的数值,即完成了信号的频率测量。最后通过四位数码显示出频率值。由于要尽可能的使用最少的元件,在满足设计要求的前提下,我将P1.7口与P3.4口(即T0)用导线连接,在设定程序时,利用T1定时的同时在P1.7口输出一个设定好的方波,以便直观的检测频率计数器的软件、硬件是否达到设计的基本功能。2.2 方案的整体框图 STC89C52单片机按键电路LED数码管显示电路上电复位电路晶振电路电源电路图1 系统总体框图2.3 方案的说明

7、本课程设计采用内部给定的方波来实现频率计数的功能,缺陷在于只能测得一个方波的频率,但是这个方波的输入意在便于检测设计的软、硬件的功能是否实现,若功能可以实现,则可用于测量外部输入的0-10000HZ之间的任意频率值。3、 硬件设计3.1 单片机的最小系统3.1.1 上电复位电路复位是单片机的初始化操作。单片机系统在上电启动运行时,都需要先复位。其作用是使CPU 和系统中其他部件都处于一个确定的初始状态,并从这个状态开始工作。而复位是一个很重要的操作方式,但单片机本身是不能自动经行复位的,必须配合相应的外部复位电路才能实现。本设计的复位电路采用上电复位加按键手动复位,其电路如下图所示:图2 上电

8、复位电路3.1.2 晶振电路单片机工作是在统一的时钟脉冲控制下一拍一拍地进行的,这个脉冲是单片机控制器中的时序电路发出的。单片机的时序就是 CPU 在执行指令时所需控制信号的时间顺序。为了保证各部件的同步工作,单内部电路应在唯一的时钟信号下严格按时序进行工作。其电路原理图如下:图3 晶振电路3.2 LED数码管显示电路显示器是微机重要的输出设备。显示器有显示监控结果、提供用户操作界面等功能。在本次设计中采用了 LED 显示器,即数码管。数码管的每一个数码段是一只发光二极管。当发光二极管导通时,相应的一个点或者一个笔画发光,控制发光二极管发光组合,可以显示出所需字符。我采用了共阴极结构。在定义其

9、显示字形的码段时,通过 I/O 口送出七段码 其段码表如下:表1 共阴数码管段选码显示字形0123456789共阴段选码3FH06H5BH4FH66H6DH7DH07H7FH6FH数码管的电路图如下: 图4数码管接线电路3.3 整体电路 图5 整体原理图4、 软件设计本课程设计包含了主函数、初始化子函数、中断子函数、按键扫描子函数和延时子函数等多个函数。开始4.1 程序流程图初始化中断程序频率输出图6 主流程图4.2 初始化子函数初始化子函数主要是:1.对T0、T1定时/计数器进行初始化;2.对单片机各管脚及按键赋初值,以便主程序的执行。4.3 延时子函数主要用于数码管动态显示的子程序中。vo

10、id delay(uchar z)uchar x,y;for(x=z;x>0;x-)for(y=113;y>0;y-);4.4 中断子函数流程图如下:图7 中断程序流程图5、 系统的调试和说明5.1 C程序的说明C 语言是一种通用的程序设计语言,其代码率高,数据类型及运算符丰富,位操作能力强,适用于各种应用的程序设计。使用 C 语言进行单片机应用系统开发,具有编程灵活、调试方便、目标代码编译效率高的特点。C 语言也是目前使用最广的单片机应用系统编程语言。由 C 语言编程的单片机应用程序,称为单片机 C 语言程序。MCS-51 系列单片机开发系统的编译软件可以对 51 单片机 C 语

11、言源程序进行编译,称为 C51 编译器。在 C51 编译软件中可进行 51 单片机C 语言程序的调试。5.2 C程序编译的结果在keil µ vision上编译的结果:图8 程序调试图5.3 实物图 图9 正面实物图 图10 反面实物图6、 设计总结与心得体会6.1设计总结为期一周的单片机课程设计已经接近尾声了,单片机课程设计的主要目的是让我们提高动手能力和综合运用能力。经过这一周的设计,我更加深刻的体会到“万事开头难”这话的含义了。这次单片机的课程设计,我选的课题是频率计数器。这个看似很简单的课题,要实现起来却是困难重重。首先是硬件的设计,通过在loch master上布线设计硬件

12、的连接方式,这一步还是比较轻松,主要是布的线要尽可能的不交叉。之后就开始对着图焊板子,开始把元器件焊上去还是比较简单好看的。可是紧接着进入焊线阶段就难住我了,线拉不直,焊在板子上就很丑;另一方面,在焊的过程中就会发现有那么几根线是按照布线图来焊是实现不了的,于是,中途又会重新改布线图。硬件部分我花了一天的时间,反反复复的修改,焊接,终于初步完成了。板子焊好后就进入硬件调试阶段,硬件调试时,发现了线路的一些错误接法和元器件位置的错接等等,这样有花了半天时间调试修改,硬件就基本上算是完成了。接着马上又进入了编写软件及调试过程,这是让我最头疼的一部分。我自己边看视频边按着流程图慢慢的编写了一个,可是

13、输入硬件后不出意外的,无法实现其功能。于是就进入软件的调试阶段,这个过程持续了很长时间,最后是通过同学的帮助才能调试成功,实现它能实现的功能,当然还是有些微小误差的。总的来说,这一个星期里学到了很多的东西,更觉得自己需要不断的提高自己。6.2 设计心得通过一周的单片机课程设计,真的是感触颇多。这一个星期以来我们每天早上9点就到教室一直待到晚上9点才回去,每天和大家在一起焊板子,一起讨论问题,一起互相帮助的画面还历历在目。这其中有欢声笑语,也有苦有累。在评优答辩的时候,看到了很多很多优秀的课程设计,让我一边敬佩,又一边自惭形秽。每个优秀的人都有着不同常人的努力,而我还不够努力,所学的东西也很有限

14、。很多优秀的课程设计都是通过他们自己在课余时间自学而成的。相比之下,我需要更加努力的去学习更多的知识,不断的填充自己。7、 参考文献【1】张友德,单片微型机原理应用与实践(第四版),复旦大学出版社,2000【2】李朝青.单片机原理及接口技术(第三版). 北京航空航天大学出版社.2005.【3】丁明亮、唐前辉. 51单片机应用设计与仿真-基于Keil C与Proteus. 北京航空航天大学出版社,2009.【4】杨长兴、刘卫国.C+程序设计.中国铁道出版社.2010.附录1、 源程序#include<reg52.h>#define uint unsigned int#define u

15、char unsigned charuchar code table=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f;sbit D1=P10;sbit D2=P11;sbit D3=P12;sbit D4=P13;sbit D5=P17;sbit A1=P24;sbit A2=P25;uint m,i,t;uint A0,B0,C0,D0;void display(uint A0,uint B0,uint C0,uint D0);void init();void delay(uchar z);void main()init();A1=0; A

16、2=1;while(1) if(A2=0) A2=0; TR0=1; TR1=1; if(i<1000) A0=m/1000;B0=m%1000/100;C0=m%100/10;D0=m%10;display(A0,B0,C0,D0);if(i=1000) while(1)display(A0,B0,C0,D0);void init() i=0;m=0;t=0; D5=1;TMOD=0x16;TH1=(65536-20)/256;TL1=(65536-20)%256;EA=1;ET1=1;ET0=1;TH0=0xff;TL0=0xff;TR0=0; TR1=0;void delay(uchar z)uchar x,y;for(x=z;x>0;x-)for(y=113;y>0;y-);void timer0() interrupt 1 TR0=0;TH0=0xff;TL0=0xff;m=m+1;void timer1() interrupt 3TR1=0;TH1=(65536-20)/256;TL1=(65536-20)%256;i+;t+; if(t=15)D5=D5;t=0; TR1=1;void display(uint

温馨提示

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

评论

0/150

提交评论