ImageVerifierCode 换一换
格式:DOCX , 页数:14 ,大小:339.44KB ,
资源ID:4336509      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/4336509.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(单片机频率计数器课程设计讲解.docx)为本站会员(b****6)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

单片机频率计数器课程设计讲解.docx

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

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

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

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

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

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

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

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

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

10、C 语言程序的调试。5.2 C程序编译的结果在keil vision上编译的结果:图8 程序调试图5.3 实物图 图9 正面实物图 图10 反面实物图6、设计总结与心得体会6.1设计总结为期一周的单片机课程设计已经接近尾声了,单片机课程设计的主要目的是让我们提高动手能力和综合运用能力。经过这一周的设计,我更加深刻的体会到“万事开头难”这话的含义了。这次单片机的课程设计,我选的课题是频率计数器。这个看似很简单的课题,要实现起来却是困难重重。首先是硬件的设计,通过在loch master上布线设计硬件的连接方式,这一步还是比较轻松,主要是布的线要尽可能的不交叉。之后就开始对着图焊板子,开始把元器件

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

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

13、识,不断的填充自己。7、参考文献【1】张友德,单片微型机原理应用与实践(第四版),复旦大学出版社,2000【2】李朝青.单片机原理及接口技术(第三版). 北京航空航天大学出版社.2005.【3】丁明亮、唐前辉. 51单片机应用设计与仿真-基于Keil C与Proteus. 北京航空航天大学出版社,2009.【4】杨长兴、刘卫国.C+程序设计.中国铁道出版社.2010.附录1、源程序#include#define uint unsigned int#define uchar unsigned charuchar code table=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0

14、x7d,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; A2=1; while(1) if(A2=0) A2=0; TR0=1; TR1=1; if(i0;x-) for(y=113;y

15、0;y-);void timer0() interrupt 1 TR0=0; TH0=0xff; TL0=0xff; m=m+1;void timer1() interrupt 3 TR1=0; TH1=(65536-20)/256; TL1=(65536-20)%256; i+; t+; if(t=15) D5=D5; t=0; TR1=1;void display(uint A0,uint B0,uint C0,uint D0) D4=1; D1=1; P0=tableA0; D1=0; delay(1); D1=1; D2=1; P0=tableB0; D2=0; delay(1); D2=1; D3=1; P0=tableC0; D3=0; delay(1); D3=1; D4=1; P0=tableD0; D4=0; delay(1);2、硬件名称列表序号名称数量1STC89C52单片机12排阻13LED数码管14按键105220电阻161K电阻27USB接口1830pf电容2910f电容11012M晶振1

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1