基于c语言单片机数字频率计课程设计

合集下载

基于单片机数字频率计设计

基于单片机数字频率计设计

<<基于单片机数字频率计设计>>课程设计报告题目:专业:年级:学号:学生姓名:联系电话:完成日期:年月日基于单片机数字频率计设计摘要本次课程设计的任务是设计一个基于单片机技术的数字频率计。

在电子技术中,频率是最基本的参数之一,并且与许多电参量的测量方案、测量结果都有十分密切的关系,因此频率的测量就显得更为重要。

本文从频率计的原理出发,介绍了基于单片机的频率计的设计方案,选择了实现系统的各种电路元器件,并对硬件电路进行了仿真。

关键词:单片机;频率计;测量ABSTRACTThe curriculum design of the task is to design a digital frequency meter based on single chip microcomputer technology. In the electronic technology, frequency is one of the most basic parameters, and with many electric parameter measurement scheme, the measured results have very close relationship, so frequency measurement is more important. Introduced in this paper, starting from the principle of frequency meter, frequency meter design scheme based on single chip microcomputer, chose the implementation system of all kinds of circuit components, and the hardware circuit are simulated.Key Words:Single chip microcomputer; Frequency meter. measurement目录摘要 (1)ABSTRACT (1)1 设计要求及方案选择 (3)1.1设计要求 (3)1.2方案选择 (3)2 理论分析与设计 (3)2.1 信号整形电路的分析及设计 (3)2.2 单片机电路的分析及设计 (5)3 电路设计 (7)3.1 硬件电路的设计 (7)3.2 软件的设计 (8)4 系统测试 (28)4.1调试所用的基本仪器清单 (28)4.2调试结果 (28)4.3 测试结果分析 (28)5 总结 (28)参考文献 (28)1 设计要求及方案选择1.1设计要求数字频率计是计算机、通讯设备、音频视频等科研生产领域不可缺少的测量仪器。

基于C51单片机数字频率计课程设计资料

基于C51单片机数字频率计课程设计资料

(华)课程设计(论文)目录摘要................................................. .....错误!未定义书签。

1 引言 (2)1.1数字频率计概述 (2)1.2频率测量仪的设计思路与频率的计算 (2)1.3 基本设计原理 (3)2 数字频率计(低频)的硬件结构设计 (4)2.1 系统硬件的构成 (4)2.2 系统工作原理图 (4)2.3 AT89C51单片机及其引脚说明 (5)2.4 信号调理及放大整形模块 (7)2.5 时基信号产生电路 (7)2.6显示模块 (9)3软件设计 (13)3.1量程转换 (13)3.2 BCD转换 (13)3.3 LCD显示的功能 (13)4模块电路仿真 (14)5 结束语 (16)参考文献 (17)附录汇编源程序代码 (18)1 引言本应用系统设计的目的是通过在“单片机原理及应用”课堂上学习的知识,以及查阅资料,培养一种自学的能力。

并且引导一种创新的思维,把学到的知识应用到日常生活当中。

在设计的过程中,不断的学习,思考和同学间的相互讨论,运用科学的分析问题的方法解决遇到的困难,掌握单片机系统一般的开发流程,学会对常见问题的处理方法,积累设计系统的经验,充分发挥教学与实践的结合。

全能提高个人系统开发的综合能力,开拓了思维,为今后能在相应工作岗位上的工作打下了坚实的基础。

1.1数字频率计概述数字频率计是计算机、通讯设备、音频视频等科研生产领域不可缺少的测量仪器。

它是一种用十进制数字显示被测信号频率的数字测量仪器。

它的基本功能是测量正弦信号,方波信号及其他各种单位时间内变化的物理量。

在进行模拟、数字电路的设计、安装、调试过程中,由于其使用十进制数显示,测量迅速,精确度高,显示直观,经常要用到频率计。

本数字频率计将采用定时、计数的方法测量频率,采用一个1602A LCD 显示器动态显示6位数。

测量范围从1Hz —10kHz 的正弦波、方波、三角波,时基宽度为1us ,10us ,100us ,1ms 。

基于单片机数字频率计课程设计报告

基于单片机数字频率计课程设计报告
ቤተ መጻሕፍቲ ባይዱ关键字:单片机 功能模块 扩展电路 频率计数器
ABSTRACT
SCM is a semiconductor wafer on the integration of the central processing unit(CPU), memory (RAM/ROM), and all kinds of I/O interface, to study the typicalfunction module based on single chip microcomputer is the comprehensive use ofthe basic theory of scientific knowledge, the important link of practice, has an important influence on the learning skills of students, is to learn to in practice the important significance of excessive, the design of the. The completed design of the circuit of some typical MCU through conception, design, debug, modify theprogram.
第二章 89S51单片机扩展储存器的设计........................................................................... ......3
2.1 系统扩展结构............................................................................................................. .....3

单片机数字频率计课程设计

单片机数字频率计课程设计

单片机数字频率计课程设计一、课程目标知识目标:1. 让学生掌握单片机的基本原理,理解数字频率计的工作机制。

2. 使学生能够运用单片机编程实现数字频率计的功能,包括计时、计数和显示。

3. 让学生了解数字频率计在实际应用中的重要性,如信号处理、电子测量等领域。

技能目标:1. 培养学生运用单片机进行数字频率计设计和编程的能力。

2. 培养学生运用相关软件(如Keil、Proteus等)进行电路仿真和调试的能力。

3. 提高学生的动手实践能力,学会在实际操作中发现问题、解决问题。

情感态度价值观目标:1. 激发学生对电子技术和单片机编程的兴趣,培养其创新精神和实践能力。

2. 培养学生严谨的科学态度,注重实验数据的准确性和可靠性。

3. 增强学生的团队协作意识,学会在项目合作中相互支持、共同进步。

课程性质:本课程为实践性较强的课程,要求学生在掌握理论知识的基础上,进行实际操作和项目实践。

学生特点:学生具备一定的单片机基础知识,对编程和电路设计有一定了解,但实际操作能力有待提高。

教学要求:结合学生特点和课程性质,注重理论与实践相结合,以项目为导向,培养学生的动手实践能力和创新能力。

通过课程学习,使学生能够独立完成单片机数字频率计的设计和编程任务,达到课程目标所要求的具体学习成果。

二、教学内容1. 理论知识:- 单片机原理和结构:介绍单片机的内部组成、工作原理及性能特点。

- 数字频率计原理:讲解频率的概念、测量原理及其在电子测量中的应用。

- 编程语言:回顾C语言基础知识,重点掌握单片机编程相关语法。

2. 实践操作:- 电路设计:学习使用Proteus软件设计数字频率计电路,包括单片机、计数器、显示模块等。

- 程序编写:运用Keil软件编写数字频率计程序,实现计数、计时和显示功能。

- 仿真调试:在Proteus环境下进行电路仿真,调试程序,确保其正常运行。

3. 教学大纲:- 第一周:回顾单片机原理和结构,学习数字频率计原理。

单片机课程设计报告——智能数字频率计

单片机课程设计报告——智能数字频率计

单片机原理课程设计报告题目:智能数字频率计设计专业:信息工程班级:信息111学号:***姓名:***指导教师:***北京工商大学计算机与信息工程学院1、设计目的(1)了解和掌握一个完整的电子线路设计方法和概念;(2)通过电子线路设计、仿真、安装和调试,了解和掌握电子系统研发产品的一个基本流程。

(3)了解和掌握一些常见的单元电路设计方法和在电子系统中的应用:包括放大器、滤波器、比较器、计数和显示电路等。

(4)通过编写设计文档与报告,进一步提高学生撰写科技文档的能力。

2、设计要求(1)基本要求设计指标:1.频率测量:0~250KHz;2.周期测量:4mS~10S;3.闸门时间:0.1S,1S;4.测量分辨率:5位/0.1S,6位/1S;5.用图形液晶显示状态、单位等。

充分利用单片机软、硬件资源,在其控制和管理下,完成数据的采集、处理和显示等工作,实现频率、周期的等精度测量方案。

在方案设计中,要充分估计各种误差的影响,以获得较高的测量精度。

(2)扩展要求用语音装置来实现频率、周期报数。

(3)误差测试调试无误后,可用数字示波器与其进行比对,记录测量结果,进行误差分析。

(4)实际完成的要求及效果1.测量范围:0.1Hz~4MHz,周期、频率测量可调;2.闸门时间:0.05s~10s可调;3.测量分辨率:5位/0.01S,6位/0.1S;4.用图形液晶显示状态、单位(Hz/KHz/MHz)等。

3、硬件电路设计(1)总体设计思路本次设计的智能数字频率计可测量矩形波、锯齿波、三角波、方波等信号的频率。

系统共设计包括五大模块: 主芯片控制模块、整形模块、分频模块、档位选择模块、和显示模块。

设计的总的思想是以AT89S52单片机为核心,将被测信号送到以LM324N为核心的过零比较器,被测信号转化为方波信号,然后方波经过由74LS161构成的分频模块进行分频,再由74LS153构成的四选一选择电路控制档位,各部分的控制信号以及频率的测量主要由单片机计数及控制,最终将测得的信号频率经LCD1602显示。

基于单片机的数字频率计的设计(毕业设计)

基于单片机的数字频率计的设计(毕业设计)
写作毕业论文是一次再系统学习的过程,毕业论文的完成, 同样也意味着新的学习生活的开始。我将铭记我曾是一名机电 学院的学子,在今后的工作中把机电学院的优良传统发扬光大。 感谢各位老师的批评指导。
1.2 设计思路
测频的原理归结成一句话,就是“在单位时间内对被测信号进行
计数”。常用的频率测量方法主要有两种:直接测频法和间接测频法 (即测周期法)。直接测频法在低频段的相对测量误差较大,故常用 于测量高频信号;测周期法在高频段的相对测量误差较大,更适合于 测量低频信号由于本次设计的实际测量范围为1Hz~200KHz左右,主 要是针对在低频段的测量,且由于单片机具有程序运算功能,频率为 周期的倒数,这样使得频率测量与周期测量可以互通,故此次设计采 用间接测量法(测周期法)。其原理图如下所示:
使用液晶显示器(LCD)进行数据显示
采用LED显示管只能显示0~9和一些简单的英文字母,这使得频率计的功能 受到极大的限制,而LCD显示管能够解决LED的不足,增强显示功能。LCD具有体 积小、低耗电量、无辐射危险,平面直角显示以及影像稳定不闪烁等优势,因 此广泛应用于各种仪表设备中去。LCD液晶显示器主要有字符型和点阵型两种。 字符型LCD能显示特定的字符,应用在特定的场合,可以代替常用的LED显示器 显示和进行其他特殊字符的显示;点阵型LCD则可以以点阵的形式显示字符、图 形和汉字,满足各种需要。
被测闸门信号
未知
高频基准信号
实际检出已知信号
1.3 电路设计

数字频率计系统设计共包括四大模块:单片机控制模块、电源模
块、放大整形模块及LED显示模块。 数字频率计设计总框图如下:
被测信 号
放大整形电 路
单片机
LED 显 示
电源电 路

数字频率计课程设计 单片机

数字频率计摘要:随着电子信息产业的不断发展,信号频率的测量在科技研究和实际应用中的作用日益重要。

传统的频率计通常是用很多的逻辑电路和时序电路来实现的,这种电路一般运行较慢,而且测量频率的范围较小。

考虑到上述问题,本论文设计一基于单片机设计频率计。

首先,我们把待测信号经过放大整形,然后把信号送入单片机的定时计数器里进行计数,获的频率值,最后把测得的频率数值送入显示电路里进行显示。

本文从频率计的原理出发,介绍了基于单片机的频率计的设计方案,选择了实现系统的各种电路元器件,并对硬件电路进行了仿真。

关键字:单片机;频率计;测量;脉冲定时测频法1.总体方案设计1.1 方案介绍方案1:本方案以单片机为核心,利用单片机的计数定时功能来实现频率的计数,利用数码动态扫描进行频率显示,其实现原理框图如1-1所示。

图1-1 方案1原理框图方案2:本方案主要以数字器件为核心,主要由时基电路、逻辑控制电路、放大整形电路、闸门电路、计数电路、锁存电路和译码显示电路七大部分组成。

其原理框图如图1-2所示。

11 1图1-2 方案2原理框设计思路:利用施密特触发器将边缘缓慢变化的周期性信号如正弦波、三角波或任意形状的模拟信号变换成同频率的矩形脉冲。

通过MCS-51系列单片机内部的两个十六位定时/计数器测量某段时间内的外加脉冲数,经过处理并通过数码管直接显示出所加信号的频率。

单片机内部的T0用来定时,T1用来计数(下降沿触发)。

当来一个计数脉冲则计数一次。

在T0开始定时的同时,T1开始计数;T0定时1s时间到时,T1停止计数。

数字频率计系统设计共包括五大模块:放大整形模块、分频模块、多路数据选择模块、单片机控制模块、数码管显示模块电路设计:原理图:1.2 方案论证和选择方案1:本方案主要以单片机为核心,被测信号先进入信号放大电路进行放大,再被送到波形整形电路整形,把被测得正弦波或者三角波为方波。

利用单片机的计数器和定时器的功能对被测信号进行计数。

单片机频率计课程设计

单片机频率计课程设计一、课程目标知识目标:1. 学生能理解单片机的基本原理,掌握其内部结构和功能。

2. 学生能掌握频率计的设计原理,理解并运用相关电路知识。

3. 学生能了解并掌握编程语言在单片机应用中的基本使用方法。

技能目标:1. 学生能运用所学知识,设计并搭建一个简单的单片机频率计电路。

2. 学生能编写程序,实现对频率计的功能控制,进行基本的数据测量。

3. 学生能通过实验过程,培养动手操作能力、问题解决能力和团队协作能力。

情感态度价值观目标:1. 学生通过课程学习,培养对单片机及电子技术的兴趣,激发创新思维。

2. 学生能认识到单片机技术在现实生活中的应用价值,增强学以致用的意识。

3. 学生在课程实践过程中,培养严谨、细致的科学态度,提高对科学研究的尊重和热爱。

课程性质分析:本课程为实践性较强的电子技术课程,旨在通过单片机频率计的设计与实现,使学生在实践中掌握单片机技术的基本原理和应用。

学生特点分析:学生处于高年级阶段,已具备一定的电子技术基础知识,具有较强的学习能力和动手能力,对实际操作有较高的兴趣。

教学要求分析:根据课程性质和学生特点,要求课程目标具体、可衡量,注重理论与实践相结合,培养学生的实际操作能力和创新思维能力。

通过分解课程目标为具体学习成果,为后续教学设计和评估提供依据。

二、教学内容本课程教学内容围绕单片机频率计的设计与实现,结合以下章节进行组织:1. 单片机基础理论:介绍单片机的内部结构、工作原理和功能特点,重点讲解单片机的时钟系统、I/O口控制、中断系统等基础知识。

2. 频率计原理:讲解频率计的基本原理,包括信号发生器、计数器、时钟脉冲等组成部分,以及频率测量的基本方法。

3. 电路设计与搭建:指导学生运用所学知识,设计并搭建一个简单的单片机频率计电路,包括单片机选型、外围电路设计、元器件选型等。

4. 编程与调试:教授编程语言基础,如C语言、汇编语言等,指导学生编写单片机程序,实现对频率计的功能控制,并进行程序调试。

基于单片机的频率计的设计数字频率计

基于单片机的频率计的设计1绪论1.1研究背景及主要研究意义频率是电子技术领域永恒的话题,电子技术领域离不开频率,一旦离开频率,电子技术的发展是不可想象的,为了得到性能更好的电子系统,科研人员在不断的研究频率,CPU 就是用频率的高低来评价性能的好坏,可见,频率在电子系统中的重要性。

频率计乂称为频率计数器,是一种专门对被测信号频率进行测量的电子测量仪器,其最基本的工作原理为:当被测信号在特定的时间段T内的周期个数N时,则被测信号的频率£=1\!/「电子计数器是一种基础测量仪器,到目前为止已有三十多年的发展历史。

早期, 设计师们追求的目标主要是扩展测量范围,再加上提高测量精度、稳定度等,这些也是人们衡量电子计算机的技术水平,决定电子技术器价格高低的主要依据。

目前这些技术日臻完善,成熟。

应用现代技术可以轻松地将电子计数器的频率扩展到微波频段。

1.2数字频率计的发展现状随着科学技术的发展,用户对电子计数器也提出了新的要求。

对于低档产品要求使用操作方便,量程(足够)宽,可靠性高,价格低。

而对中高档产品,则要求有较高的分辨率,高精度,高稳定度,高测量速率;除通常通用计数器所具有的功能外,还要有数据处理功能,统计分析功能等等,或者包含电压测量等其他功能。

这些要求有的已经实现或者部分实现,但要真正地实现这些目标,对于生产厂家来说,还有许多工作要做,而不是表面看来似乎发展到头了。

由于微电子技术和计算机技术的发展,频率计都在不断地进步着,灵敏度不断提高,频率范围不断扩大,功能不断增加。

在测试通讯、微波器件或产品时,通常都市较复杂的信号,如含有复杂频率成分、调制的含有未知频率分量的、频率固定的变化的、纯净的或叠加有干扰的等等。

为了能正确的测量不同类型的信号,必须了解待测信号特性和各种频率测量仪器的性能。

微波技术器一般使用类型频谱分析仪的分频或混频电路,另外还包含多个时间基准、合成器、中频放大器等。

虽然所有的微波计数器都是用来完成技术任务的, 但各自厂家都有各自的一套复杂计数器的设计、使得不同型号的技术其性能和价格会有所差别,比如说一些计数器可以测量脉冲参数,并提供类似与频率分析仪的屏幕显示,对这些功能具有不同功能不同规格的众多仪器,我们应该视测试需要正确的选择以达到最经济和最佳的应用效果。

基于单片机的数字频率计的设计课程设计

基于单片机的数字频率计的设计目录1频率计的概要和发展动态 (1)2 单片机介绍 (1)2.1单片机的简介和发展 (1)2.2 AT89C51的原理 (2)2.2.1主要特性 (3)2.2.2管脚说明 (3)2.2.3振荡器特性 (4)2.2.4芯片擦除 (4)3 仿真软件protuse的介绍 (5)4系统模块设计 (6)5硬件部分 (6)5.1整形电路 (6)5.2控制电路 (7)5.3显示电路 (8)5.3.1 LCD1602引脚 (8)5.3.2 LCD1602的指令介绍 (8)5.4总体电路图 (9)6仿真结果 (11)6.1仿真结果 (11)6.2结果分析 (11)7 结论 (11)8参考文献 (12)附录 (12)1 keil C51软件介绍 (12)2 程序流程图 (13)3系统源程序 (14)1频率计的概要和发展动态在电子技术中,频率作为基本的参数之一,它与许多电参量的测量方案、测量结果密切相关,因此,频率的测量十分的重要。

在许多情况下,要对信号的频率进行精确测量,就要用到数字频率计。

数字频率计作为一种基础测量仪器,它被用来测量信号(方波、正弦波、锯齿波等)频率,并且用十进制显示测量结果。

它具有测量精度高、测量省时、使用方便等特点。

随着微电子技术和计算机技术的不断发展,单片机被广泛应用到大规模集成电路中,使得设计具有很高的性价比和可靠性。

所以,以单片机为核心的简易数字频率计设计,改善了传统的频率计的不足,充分体现了新一代数字频率计的优越性。

2 单片机介绍2.1单片机的简介和发展单片机微型计算机是微型计算机的一个重要分支,也是颇具生命力的机种。

单片机微型计算机简称单片机,特别适用于控制领域,故又称为微控制器。

通常,单片机由单块集成电路芯片构成,内部包含有计算机的基本功能部件:中央处理器、存储器和I/O接口电路等。

因此,单片机只需要和适当的软件及外部设备相结合,便可成为一个单片机控制系统。

  1. 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
  2. 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
  3. 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。

课程设计报告课程名称:单片机课程设计报告题目:数字频率计学生姓名:所在学院:专业班级:学生学号:指导教师:2013 年12 月25 日课程设计任务书摘要以ATMEL单片机为核心,利用单片机的外部中断、定时器的计数模式和定时器的功能对信号发生器产生的脉冲频率进行计数。

且可以根据频率的不同,单片机控制选择测周法或者测频法对产生的脉冲波形进行计数,以进行更加精确的频率测量。

而且可以通过按键来进行频率测量方法的选择。

关键词:数字频率计;测频发;测周法;单片机目录一、概述 (1)二、方案论证 (1)1.总体方案 (1)2.测量方案选择 (2)三、硬件设计 (2)1.系统功能描述 (2)2.硬件电路设计方框 (3)3.单片机各部分电路 (3)四、软件设计 (4)1.测频发 (4)2.测周法 (4)3.主程序流程图设计 (5)4.程序设计 (14)五、课程与心得 (14)六、参考文献 (15)一、概述数字频率计是采用数字电路制成的实现对周期性变化信号的频率的测量。

数字频率计是计算机、通讯设备、音频视频等科研生产领域不可缺少的测量仪器。

它是一种用十进制数字,显示被测信号频率的数字测量仪器。

它的基本功能是测量正弦信号,方波信号以及其他各种单位时间内变化的物理量。

在进行模拟、数字电路的设计、安装、调试过程中,由于其使用十进制数显示,测量迅速,精度高,显示直观,所以经常要用到数字频率。

二、方案论证1 总体方案本次设计包含硬件设计与软件设计两部分,根据设计任务要求,采用AT89S52单片机,配置时钟电路,复位电路构成单片机最小系统,配置前置放大电路,人机对话通道中的键盘,数码管显示,从而构成设计要求的单片机应用测频系统,其结构框图如下图1-1所示:图1结构框图2.测量方案选择方案一:直接测频法。

直接测频法是把被测频率信号经脉冲形成电路后加到闸门的一个输入端, 只有在闸门开通时间T ( 以秒计) 内, 被计数的脉冲被送到十进制计数器进行计数。

设计数器的值为N , 由频率定义式可以计算得到被测信号频率为: f = N / T 。

方案二:高精度恒误差测频法。

通过对传统测量方法的研究, 结合高精度恒误差测量原理, 设计一种测量精度与被测频率无关的硬件测频电路。

本方法立足于快速的宽位数高精度浮点数字运算。

方案三:倍频法。

直接测频法在高频段有着很高的精度。

可以把频率测量范围分成多个频段, 使用倍频技术, 根据频段设置倍频系数将经整形的低频信号进行倍频后再进行测量, 高频段则进行直接测量。

从编程难易及单片机资源利用情况和测量误差角度考虑,选择方案一,尽管在测量低频段时的相对测量误差较大。

但是可以通过增大 T 来提高测量精度。

三.硬件设计1.系统功能描述本次课程设计主要完成功能有:(1)按P3^4键可选择测量频率。

(2)按P3^5键可以选择测量周期。

(3)按P3^6键可以自动选择测频率与测周期。

2.硬件电路设计框架根据设计要求,数字频率计整个系统硬件框架图如下2-1图2整机硬件电路框图3.单片机各部分电路(1)P0口经上拉电阻数据管显示电路(2)P3^4-P3^6作为键盘设置端口(3)P3^3作为被测信号输入端口(4)P3^4被测信号接收端图3单片机最小系统4. 放大整形部分待测信号经过第一级放大后,进入第二级放大限幅电路。

LM318是高数运放,工作电压±5--±20V,输入带宽15MHZ,足够处理高频信号。

放大倍数:n=RL2/RL1(RL2用50K,RL1用10K)。

限幅原理:限幅电路的稳压管跨接在集成运放的输出端和反相输入端之间。

假设稳压管截止,则集成运放必然工作在开环状态,输出电压不是+UOM,就是-UOM。

这样,必将导致稳压管击穿而工作在稳压状态,DZ构成负反馈通路,使反相输入端为“虚地”,限流电阻上的电流iR等于稳压管的电流iZ,输出电压u O=±UZ。

图4放大电路四、软件设计1.测频发所谓“频率”,就是周期性信号在单位时间(1s)内变化的次数。

若在一定时间间隔T内测得这个周期性信号的重复变化次数N,则其频率可表示为f=N/T右图其中脉冲形成电路的作用是将被测信号变成脉冲信号,其重复频。

时间基准信号发生器率等于被测频率fx提供标准的时间脉冲信号,若其周期为1s,图 5测频原理则门控电路的输出信号持续时间亦准确地等于1s。

闸门电路由标准秒信号进行控制,当秒信号来到时,闸门开通,被测脉冲信号通过闸门送到计数译码显示电路。

秒信号结束时闸门关闭,计数器停止计数。

2.测周法主要是利用单片机的定时器计时,测量2个时间参数t1和t2,即如下所示:图6测周法计算信号的一个波形的周期 t=t1+t2 则可以求出频率f=1/t。

3.主程序流程图设计图7流程图4.程序设计#include <reg52.h>#include <intrins.h>sbit smgdl=P2^6;sbit smgwl=P2^7;bit LED = P3^3;sbit key1 = P3^4; //定义按键1sbit key2 = P3^5; //定义按键2sbit key3 = P3^6; //定义按键3sbit key4 = P3^7; //定义按键4unsigned char value,smg; //保存按键接口状态unsigned char lkey,key_time;unsigned char mode=0;unsigned int time=0;unsigned char num=0;unsigned char key=0;unsigned char time_key=0;unsigned int flag_f=0;unsigned int f_temp1=0;unsigned int f_temp2=0;unsigned int t_temp1=0;unsigned int t_temp2=0;unsigned char flag_int_0=0;/*********************************/unsigned char tablewe[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf};unsigned char tabledu[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77 ,0x7c,0x39,0x5e,0x79,0x71};unsigned char su[]={0,0,0,0,0,0,0,0};/*********************************//*************DIS_LED*************/void delay(unsigned int a) //延时函数{unsigned int b;unsigned char c;for(b=a;a>0;a--)for(c=100;c>0;c--);}void display_smg(unsigned char smg,unsigned char value) //显示函数{smgwl=1;P0=tablewe[smg];smgwl=0;smgdl=1;P0=tabledu[value];smgdl=0;delay(6);//延长显示时间避开视觉暂留看数码管显示过程}//**************按键功能*****************unsigned char ReadKey(void){if(key1 == 0){key_time++;if(key_time == 20){lkey = 1;mode=1;}if(key_time > 20)key_time = 100;}else if(key2 == 0){key_time++;if(key_time == 20){lkey = 2;mode=2;}if(key_time > 20)key_time = 100;}else if(key3 == 0){key_time++;if(key_time == 20){lkey = 3;mode=3;}if(key_time > 20)key_time = 100;}else{key_time = 0;}return lkey;}void main(){unsigned char k;TMOD = 0x01; //定时器初始化TH0 = (65536 - 2000) / 256;TL0 = (65536 - 2000) % 256;//EA = 1;ET0 = 1;TR0 = 1;//PT0 = 1;//EX0 = 1; //外部中断初始化IT0 = 1;EA = 1;while(1){display_smg(0,su[2]); //数码管显示display_smg(1,su[3]); //数码管显示display_smg(2,su[4]); //数码管显示display_smg(3,su[5]); //数码管显示display_smg(4,su[6]); //数码管显示display_smg(5,su[7]); //数码管显示k = ReadKey();LED = ~LED; //脉冲发生}}void time_1() interrupt 1{TH0 = (65536 - 1000) / 256; //定时器初始化TL0 = (65536 - 1000) % 256;time++;if(time == 500){time = 0;num++;if(num >= 10) num=0;}if(mode == 1) //测频法模式{EX0 = 1; //外部中断打开IT0 = 1;flag_f++;if(flag_f >= 600)//1S钟计时{flag_f = 0;mode = 0;EX0 = 0;su[2] = f_temp2;su[3] = f_temp1 / 10000;su[4] = f_temp1 / 1000 % 10;su[5] = f_temp1 / 100 % 10;su[6] = f_temp1 / 10 % 10;su[7] = f_temp1 % 10;;f_temp1 = f_temp2 = 0;}}if(mode == 2)//测周法模式{EX0 = 1; //外部中断打开IT0 = 0;PX0 = 1;if(flag_int_0 == 1){EX0 = 0;mode = 0;flag_int_0 = 0;TR1 = 0;t_temp1 = TL1;t_temp2 = TH1;t_temp2 = t_temp2 * 256;t_temp1 = t_temp1 + t_temp2;// su[2] = t_temp2 / 100;su[3] = t_temp1 / 10000;su[4] = t_temp1 / 1000 % 10;su[5] = t_temp1 / 100 % 10;su[6] = t_temp1 / 10 % 10;su[7] = t_temp1 % 10;TH1 = 0;TL1 = 0;}}if(mode == 3) //自动测频测周{EX0 = 1; //外部中断打开IT0 = 1;flag_f++;if(flag_f >= 600)//1S钟计时{flag_f = 0;EX0 = 0;if(f_temp1 > 110){mode = 2;}if(f_temp1 <= 110){mode = 1;}}}su[0] = mode;su[1] = num;}void INT_0() interrupt 0 //外部中断{if(mode == 1){EX0 = 0;f_temp1++;if(f_temp1 >= 50000){f_temp1 = 50000;f_temp2++;if(f_temp2 >= 5000){f_temp1 = f_temp2 = 0;}}EX0 = 1;}if(mode == 2){TR1 = 1;flag_int_0 = 1;}}五、结论与心得这次为期两周的课程设计让我受益匪浅。

相关文档
最新文档