基于52单片机数字频率计系统设计报告_第1页
基于52单片机数字频率计系统设计报告_第2页
基于52单片机数字频率计系统设计报告_第3页
基于52单片机数字频率计系统设计报告_第4页
基于52单片机数字频率计系统设计报告_第5页
已阅读5页,还剩28页未读 继续免费阅读

下载本文档

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

文档简介

1、. . . . I / 33课程设计报告课程设计报告基于 AT89C52 单片机数字频率计系统设计院 系 电子信息工程学院 专 业电气工程与其自动化班 级 ( 2 )姓 名 华 杰 学号:1108441096. . . . I / 33摘 要在电子技术中,频率是最基本的参数之一,同时也是一个非常重要的参数,并且与许多电参量的测量方案、测量结果都有十分密切的关系,因此,频率的测量就显得更为重要。数字频率计是计算机、通讯设备、音频视频等科研生产领域不可缺少的测量仪器。它是一种用十进制数字显示被测信号频率的数字测量仪器。频率测量是电子学测量中最为基本的测量之一。本文中详细介绍了频率计的仿真与设计过程

2、。本文设计了一种以单片机 STC89C52 为核心的数字频率计。介绍了单片机、放大整形模块、分频模块和 LCD1602 显示模块等各个模块的组成和工作原理。测量时,将被测输入信号送给单片机,通过程序控制计数,结果送LCD1602 显示频率值。本次设计是以单片机 STC89C52 为控制核心,利用它部的定时/计数器完成待测信号频率的测量。应用单片机的控制功能和数学运算能力,实现计数功能和频率的换算,最后显示测量的频率值。本次设计所制作的频率计外围电路简单,大部分功能都通过软件编程实现,利用单片机控制实现频率计的自动换挡功能;用单片机中断控制端口实现频率的测量功能;通过分频电路实现对频率档位的控制

3、。本次设计的频率计具有测量准确度高,响应速度快,体积小等优点。实现了 1Hz4MHz 围的频率测量,而且可以实现量程自动切换。关键词:AT89C52AT89C52;数字频率计;分频;放大电路;数字频率计;分频;放大电路. . . . II / 33目 录摘要 I目录 II1 引言 11.1 研究背景与意义 11.2 国外研究现状 12 总体方案设计 22.1 数字频率计设计容 22.2 总体思路 22.3 具体模块 23 硬件设计 43.1 电路设计的步骤 43.2 STC89C52 简介 43.2.1STC89C52RC 引脚功能说明 63.2.2 单片机引脚分配 83.3 信号调理与放大整

4、形模块 83.3.1 LM318 介绍 93.2.2 1N4733 与 74LS14 介绍 93.4 分频模块 93.4.1 74LS161 介绍 103.4.2 74LS153 介绍 113.5 LCD 显示和键盘 113.5.1 LCD1602 简介 113.5.2 1602LCD 的基本参数与引脚功能 123.5.3 1602LCD 的指令说明与时序 134 软件设计 144.1 主程序流程图设计 144.2 子程序流程图设计 144.3 程序编写与仿真图设计 16. . . . III / 335 系统调试与实验 186 总结 19参考文献 20附录 21. . . . 1 / 331

5、 引言1.1 研究背景与意义频率计是我们在电子电路实验中经常会用到的测量仪器之一,它能将频率用液晶显示器或者数码管直接显示出来,给测试带来很大的方便,使结果更加直接;且频率计还能对其他多种物理量进行测量,如声音的频率、机械振动的频率等,都可以先转变成电信号,然后用频率计来测量。研究频率计的设计与制作将会对我们的生活有很大意义。现代的频率计多是用 LED 数码管显示的,其结果不明确,表示也不直接,研究液晶显示的频率计的发展很有意义。数字频率计是一种用十进制数显示被测信号频率的数字测量仪器,被测信号可以是方波,三角波,正弦波或其它周期性信号。如果配上适当的传感器,还可以对多种物理量进行测量,比如转

6、速,声音频率,机械振动的频率以与产品的计件等等。因此,数字频率计是一种应用很广泛的仪器,它的基本功能是测量方波信号、三角波信号、正弦信号以与其它各种单位时间变化的物理量。它被广泛应用于航天、电子、测控等领域。1.2 国外研究现状纵观现在的数字频率计,其基本原理都是一样的,频率是单位时间(1s) 信号发生周期变化的次数,如果我们可以在给定的1s时间对信号波形进行计数,并将计数结果显示出来,就能读取被测信号的频率。数字频率计首先必须获得相对稳定与准确的时间,同时将被测信号转换成幅度与波形均能被数字电路识别的脉冲信号,然后通过计算这一段时间间隔的脉冲数,将其换算后显示出来。这就是数字频率计的基本原理

7、。但现在的频率计的显示部分都是LED数码管,显示容是BCD码,不直观,如果用LCD液晶来显示,会使输出结果更直接,更便于观察。正因如此,所以未来数字频率计的发展必定会向液晶显示方向发展。随着数字电子技术的发展,频率测量成为一项越来越普遍的工作,测频原理和测频方法的研究正受到越来越多的关注。. . . . 2 / 332 总体方案设计2.1 数字频率计设计容本题主要研究以单片机为核心辅以信号处理电路实现对输入信号的频率进行测量。通过对信号预处理电路,包括信号放大电路、信号变换电路、信号整形电路和分频电路相关的理论知识,以与单片机工作原理、接口技术和编程命令与方法等知识的深入学习理解,在多种方案中

8、选择并确定一种不论是硬件实现还是测量精度和测量围指标较合适的方案,实现基于单片机的数字频率计设计。该设备通过信号预处理电路,将各种输入信号进行处理,使信号变成高低电平形式的矩形波信号,再与单片机进行接口,再通过单片机的中断和各种程序进行运算,最后显示出计算结果,得到输入信号的频率值。通过本次课题设计,使学生更加巩固所学理论知识,并通过查阅、消化相关资料,自学相关设计硬件,完成设计方案的理论分析,并进一步设计、制作实际电路,从而达到理论与实践相结合的效果。培养分析问题、解决实际问题的能力,并具备一定的硬件电路设计、调试能力。参数要求如下:1、装置测量频率围在 1HZ-4MHZ 之间;2、测量误差

9、为 0.1%;3、用 LCD1602 液晶显示器显示结果;4、可以测量方波、三角波与正弦波等多种波形的周期信号。2.2 总体思路频率计是我们经常会用到的实验仪器之一,频率的测量实际上就是在单位时间对信号脉冲进行计数,计数值就是信号频率。本文介绍了一种基于单片机 STC89C52 的频率计的设计方法,所制作的频率计测量比较高的频率时采用外部分频,测量较低频率值时采用单片机直接计数,不进行外部分频。该频率计实现 100HZ-4MHZ 的频率测量,LCD1602 液晶显示器显示测量结果,可以测量正弦波、三角波与方波等各种波形的频率值。该设备通过信号预处理电路,将各种输入信号进行处理,使信号变成高低电

10、平形式的矩形波信号,通过分频模块,再与单片机进行接口,再通过单片机的中断和计数各种程序进行运算,最后显示出计算结果,得到输入信号的频率值。2.3 具体模块本次设计包含硬件设计与软件设计两部分。根据上述系统分析,数字频率计硬件系统设计共包括五大模块:放大整形模块、分频模块、单片机控制模块、键盘模块与显示模块。各模块作用如下:(1)放大整形模块:放大电路是对待测信号的放大,降低对待测信号幅度的要求。整形电路是对一些不是方波的待测信号转化成方波信号,便于测量。. . . . 3 / 33(2)分频模块:考虑单片机外部计数,使用 12 MHz 时钟时,最大计数速率为 500 kHz,由于本次设计要求测

11、量的最高频率是 4MHz,因此需要进行外部分频。分频电路用于扩展单片机频率测量围,并实现单片机频率测量使用统一信号,可使单片机测频更易于实现,同时也降低了系统的测频误差。(3)单片机控制模块:以 STC89C52 单片机为控制核心,用它来完成待测信号的计数和显示以与对分频的控制。利用其部的定时/计数器完成待测信号周期/频率的测量。单片机 STC89C52 部具有 2 个 16 位定时/计数器,定时/计数器的工作可以由编程来实现定时、计数和产生计数溢出时中断要求的功能。(因为 STC89C52 所需外围元件少,扩展性强,测试准确度高。(4)按键模块:包括三个按键,S1、S2 为频率/周期、闸门时

12、间加/减按键,还有一个是确定键,在测量较低频率时,可以改变闸门时间,提高测量精度,也可以选择频率或者周期来显示测量结果。(5)显示模块:显示电路采用 LCD1602 液晶显示器显示,使测量结果更直观的显示出来。综合以上分析,频率计硬件系统设计有单片机控制模块、放大整形模块、分频模块、键盘模块与显示模块等组成,频率计的硬件总体设计框图如图 2.2 所示。图 2.1 硬件总体框图 简单说来,本系统实际用 LM318 对待测信号进行放大,再用稳压二极管 1N4733 对信号进行限幅,然后经过 74LS14 反相器整形得到方波信号,接着送 74LS161 进行分频,最后送单片机 P3.5 部计数器进行

13、计数,单片机处理数据后送 LCD1602 显示。下面一章将介绍整个电路的设计过程。电路的基本功能是实现电子产品开发设计的技术和功能,使电路具有某种特定功能,必须进行电路的设计和制作。设计是使某一电路具有某种功能,制作则是设计过程的电路实物化。. . . . 4 / 333 硬件设计3.1 电路设计的步骤(1)课题分析根据本次设计的要求,先弄清楚即将设计的系统要实现的功能和原理,再确定电路的基本形式,根据设计的可行性做出估计和判断,确定设计的技术关键解决的问题。(2)设计方案论证选题不管哪种(除了调查研究之外)都要论证它的可行性。论证分为立论和驳论两种。(3)总体方案的选择根据任务书提出的任务、

14、要求和性能指标,用具有一定功能的单元电路组成一个整体,来实现各项功能,满足设计题目提出的要求和技术指标。(4)单元电路的设计与确定在确定总体方案、画出详细框图之后,便可进行单元电路设计。在电路结构简单,成本低,性能强的基础上,根据设计要求和总体方案的原理框图来确定各单元电路。设计每一个单元的电路图。根据相关资料确定单元电路的结构形式。根据设计要求,调整元件,估算参数来选择元器件。(5)总电路图画法总电路图的一般的绘制方法如下:根据信号的流向,从左到右或从上到下按信号流向依次画出各单元电路。尽量把总电路图画在一图样上电路中所有连线都要表示清楚,各元件间的绝大多数连线应在图样上直接画出。符号应标准

15、化。先画草图,调整好布局和连线后,再画出正式的总电路图。(6)审图由于有些问题考虑不周,各种计算可能出现错误,所以,在画出总电路图并计算全部参数之后,要进行全面审查。3.2 STC89C52 简介STC89C52RC 是一种带 8K 字节闪烁可编程可擦除只读存储器(FPEROM-Flash Programmable and Erasable Read Only Memory )的低电压,高性能 COMOS8 的微处理器,俗称单片机。该器件采用 ATMEL 搞密度非易失存储器制造技术制造,与工业标准的. . . . 5 / 33MCS-51 指令集和输出管脚相兼容。STC89C52RC 单片机是

16、宏晶科技推出的新一代高速/低功耗/超强抗干扰的单片机,指令代码完全兼容传统 8051 单片机,12 时钟/机器周期和 6 时钟/机器周期可以任意选择。图 3.1 STC89C52RC 引脚图3.2.1STC89C52RC 引脚功能说明VCC(40 引脚):电源输入,接5V 电源VSS(20 引脚):接地线P0 端口(P0.0P0.7,3932 引脚):P0 口是一个漏极开路的 8 位双向 I/O 口。作为输出端口,每个引脚能驱动 8 个 TTL 负载,对端口 P0 写入“1”时,可以作为高阻抗输入。在访问外部程序和数据存储器时,P0 口也可以提供低 8 位地址和 8 位数据的复用总线。此时,P

17、0 口部上拉电阻有效。在 Flash ROM 编程时,P0 端口接收指令字节;而在校验程序时,则输出指令字节。验证时,要求外接上拉电阻。P1 端口(P1.0P1.7,18 引脚):P1 口是一个带部上拉电阻的 8 位双向 I/O 口。P1 的输出缓冲器可驱动(吸收或者输出电流方式)4 个 TTL 输入。对端口写入 1 时,通过部的上拉电阻把端口拉到高电位,这是可用作输入口。P1 口作输入口使用时,因为有部上拉电阻,那些被外部拉低的引脚会输出一个电流(IIL)。STC89C52 主要功能如表 3.3 所示。表 3.3 STC89C52 主要功能主要功能特性兼容 MCS51 指令系统8K 可反复擦

18、写 Flash ROM32 个双向 I/O 口256x8bit 部 RAM. . . . 6 / 333 个 16 位可编程定时/计数器中断时钟频率 0-24MHz2 个串行中断可编程 UART 串行通道2 个外部中断源共 6 个中断源2 个读写中断口线3 级加密位低功耗空闲和掉电模式软件设置睡眠和唤醒功能3.2.2 单片机引脚分配根据本次系统设计与各模块的需要分析,单片机的引脚分配如表 3.4 所示。 表 3.4 单片机端口分配表模 块端口功能显示模块P0.0-P0.7LCD 频率值显示P3.1-P3.2通道选择分频模块P3.5被测信号输出按键P1.6-P1.7键盘设置3.3 信号调理与放大

19、整形模块 前置放大整形模块包括放大器 LM318、稳压管 1N4733A,施密特触发器 74LS14。反相输入的运算放大器的放大倍数为 RL2/RL1,系统的整形电路由施密特触发器组成,信号经过放大后,要进行稳压,防止烧坏后面的芯片,整形后的方波送到 74LS161 分频,然后送单片机以便计数。 由于输入的信号幅度是不确定、可能很大也有可能很小,这样对于输入信号的测量就不方便了,过大可能会把器件烧毁,过小可能器件检测不到,所以在设计中放大限幅和整形,信号调理部分电路具体实现电路原理图和参数如下图 3.5 所示:图 3.2 信号整形放大原理图. . . . 7 / 333.3.1 LM318 介

20、绍3.4 分频模块前面已经提过,由于测量频率围比较宽,而且最高测量值要求要达到 4MHz,为了达到测量要求以与提高测量精度,这里我用 74LS161 作为一个 4 分频和 16 分频电路。分频器可用来降低信号的频率,是数字系统中常用的电路。分频器的输入信号频率与fi输出信号频率之比称为分频比 N。N 进制计数器可实现 N 分频器。74HC161 与 74LS161fo功能兼容,是常用的四位二进制可预置的同步加法计数器,它可以灵活运用在各种数字电路,以与单片机系统中实现分频器等很多重要的功能。 74LS161 对整形后的方波信号进行分频,Q1 为四分频输出,Q3 为十六分频输出。未经分频、经过四

21、分频和经过十六分频的三路信号作为 74LS153 的一个 4 选 1 数据选择器的低三位输入,由单片机控制选择分频系数,然后再送单片机部计数器 T1,其原理图如图 3.6 所示:图 3.3 分频模块3.4.1 74LS161 介绍74LS161 是常用的四位二进制可预置的同步加法计数器,它可以灵活的运用在各种数字电路,以与单片机系统中实现分频器等很多重要的功能,时钟 CP 和四个数据输入端P0P3,清零/MR,使能 CEP,CET,置数 PE,数据输出端 Q0Q3,以与进位输出 TC (TC=Q0Q1Q2Q3CET)。表 3.5 为 74161 的功能表。表 3.5 74161 的功能表清零R

22、D预置LD使能EP ET时钟CP预置数据输入A B C D输出Q0 Q1 Q2 Q3LL L L LHL上升沿A B C DA B C DHHL 保 持HH L保 持HHH H上升沿计 数. . . . 8 / 33 其中其中 RDRD 是异步清零端,是异步清零端,LDLD 是预置数控制端,是预置数控制端,A A、B B、C C、D D 是预置数据输是预置数据输入端,入端,EPEP 和和 ETET 是计数使能端,是计数使能端,RCO(=ET.QA.QB.QC.QD)RCO(=ET.QA.QB.QC.QD)是进位输出端,它的是进位输出端,它的设置为多片集成计数器的级联提供了方便。计数过程中,首先

23、加入一清零信设置为多片集成计数器的级联提供了方便。计数过程中,首先加入一清零信号号 RDRD0 0,使各触发器的状态为,使各触发器的状态为 0 0,即计数器清零。,即计数器清零。RDRD 变为变为 1 1 后,加入一个后,加入一个置数信号置数信号 LDLD0 0,即信号需要维持到下一个时钟脉冲的正跳变到来后。在这,即信号需要维持到下一个时钟脉冲的正跳变到来后。在这个置数信号和时钟脉冲上升的共同作用下,各触发器的输出状态与预置的输个置数信号和时钟脉冲上升的共同作用下,各触发器的输出状态与预置的输入数据一样,这就是预置操作。接着入数据一样,这就是预置操作。接着 EP=ET=1,EP=ET=1,在此

24、期间在此期间 7416174161 一直处于计数一直处于计数状态。一直到状态。一直到 EP=0EP=0,ETET1 1,计数器计数状态结束。,计数器计数状态结束。从 74LS161 功能表功能表中可以知道,当清零端 CR=“0”,计数器输出Q3、Q2、Q1、Q0 立即为全“0”,这个时候为异步复位功能。当 CR=“1”且 LD=“0”时,在 CP 信号上升沿作用后,74LS161 输出端 Q3、Q2、Q1、Q0 的状态分别与并行数据输入端D3,D2,D1,D0 的状态一样,为同步置数功能。而只有当 CR=LD=EP=ET=“1”、CP 脉冲上升沿作用后,计数器加 1。74LS161 还有一个进

25、位输出端 CO,其逻辑关系是 CO= Q0Q1Q2Q3CET。合理应用计数器的清零功能和置数功能,一片 74LS161 可以组成16 进制以下的任意进制分频器。管脚图介绍:时钟 CP 和四个数据输入端 P0P3;清零/MR;使能 CEP,CET;置数PE;数据输出端 Q0Q3。其管脚图如图 3.7 所示。 图 3.4 74LS161 管脚图 图 3.5 74LS153 管脚图 3.4.2 74LS153 介绍 74LS153 是一个双 4 选 1 数据选择器,数据选择端(AB)为两组共用,按二进制译码,以供两组从各自的 4 个数据输入端(1C0-1C3,2C0-2C3)中分别选取一个所需数据,

26、只有在两组各自的选通端(1G、2G)为低电平时才可选择数据,1Y、2Y 分别为两个输出端。其管脚图如图 3.8 所示。3.5 LCD 显示和键盘 LCD1602 显示部分,通过调节变阻器调节 LCD 背光亮度,八位数据端口接单片机 P0口,读写控制端接 P2.0-P2.2。三个按键中,设置键接 P3.2 单片机按外部中断 0 接口,当按键按下后,置 P3.2 口低电平,单片机中断。S1、S2 为频率/周期、闸门时间加/减 选择按键,按键部分的工作原理是,根据按下设置键的时间长短,可以设置闸门时间或者选择测量结果的显示方式,闸门时间可以加也可以减,显示方式有频率和周期两种,. . . . 9 /

27、 33按键部分也是单片机控制,原理图如图 3.9 所示:图 3.6 显示与按键部分3.5.1 LCD1602 简介 字符型液晶显示模块是一种专门用于显示字母、数字、符号等点阵式 LCD,目前常用16*1,16*2,20*2 和 40*2 行等的模块。下面以太阳人电子的 1602 字符型液晶显示器为例,介绍其用法。一般 1602 字符型液晶显示器实物如图 3.10 所示:图 3.7 1602 字符型液晶显示器实物图3.5.2 1602LCD 的基本参数与引脚功能1、1602LCD 主要技术参数:显示容量:162 个字符芯片工作电压:4.55.5V工作电流:2.0mA(5.0V)模块最佳工作电压:

28、5.0V字符尺寸:2.954.35(WH)mm2、引脚功能说明:1602LCD 采用标准的 14 脚(无背光)或 16 脚(带背光)接口,各引脚接口说明如表3.6 所示:. . . . 10 / 33表 3.6 引脚接口说明表编号符号引脚说明编号符号引脚说明1VSS电源地9D2数据2VDD电源正极10D3数据3VL液晶显示偏压11D4数据4RS数据/命令选择12D5数据5R/W读/写选择13D6数据6E使能信号14D7数据7D0数据15BLA背光源正极8D1数据16BLK背光源负极3.5.3 1602LCD 的指令说明与时序 1602 液晶模块部的控制器共有 11 条控制指令,如表 3.7 所

29、示:表 3.7 1602 控制指令序号指令RSR/W D7D6D5D4D3D2D1D01清显示00000000012光标返回000000001*3置输入模式00000001I/DS4显示开/关控制0000001DCB5光标或字符移位000001S/C R/L*6置功能00001DLNF*7置字符发生存贮器地址0001字符发生存贮器地址8置数据存贮器地址001显示数据存贮器地址9读忙标志或地址01BF计数器地址10写数到 CGRAM 或 DDRAM)10要写的数据容11从 CGRAM 或 DDRAM 读数11读出的数据容. . . . 11 / 334 软件设计4.1 主程序流程图设计 根据本次

30、设计要求,主程序主要包括单片机和 LCD1602 初始化,频率测量,量程自动转换以与显示几个方面,主程序流程图如图 4.1 所示:图 4.1 主程序流程图4.2 子程序流程图设计(1)显示程序LCD 显示程序设计流程图如下图所示:. . . . 12 / 33图 4.2 显示程序流程图(2)频率测量程序框图 频率测量程序整体架构如图所示: 图 4.3 频率测量框架图(3)中断服务流程图 这是按键部分的程序流程图,按键有三个,希望可以通过设置键可以选择闸门时间设置或者选择显示方式,工作过程如下,设置键按下的时间长短判断,长按就选择显示方式,如果按下时间短,则选择闸门时间设置,设置后再按下设置键退

31、出中断,返回测量结果显示。INT0 中断流程图如图所示: 频率测量程序89C52初始化加按键、减按键显示闸门时间延时子程序计数中断定时中断频率显示周期显示测试频率判断频率. . . . 13 / 33图 4.4 INT0 中断流程图(4)判断频率,选择分频流程图本次设计,分频系数有两个,100kHzf500kHz 时选择 16分频,分频数选择程序流程图如图 4.5 所示:图 4.5 分频数选择程序流程图. . . . 14 / 33由于本次设计要求测量的频率围是 100Hz4MHz,可见测量围比较宽,为提高精度以与测量达到最高测量要求 4MHz,因此要进行外部分频,分频系数有 1,4,16.即

32、不分频,4 分频和 16 分频。程序中设计的是先预测输入频率,若是频率围在 100KHz500KHz,选择 4分频,高于 500KHz 则选择 16 分频,小于 100KHz 则不用分频,直接测量。由此设计的程序流程图如图 4.5 所示。4.3 程序编写与仿真图设计根据前面的程序流程框图,分模块编写 C 语言程序,由于在用 C 语言编写程序方面学艺不精,此次程序的编写是在网上搜索相关资料然后在多位同学和老师的指导下完成,过程坎坷而且很揪心,相对后面的调试,这算是好的了。之前学过 Proteus,而且比较熟悉,所以仿真图设计是在 Proteus 完成,设计之前了解要用的元器件特性以与各个元器件之

33、间的连接方法,而且之前课程设计多次用过,所以在本次设计中,没遇到多大问题,相对顺利很多。总体仿真图如图 4.6 所示:图 4.6 频率计 Proteus 仿真图. . . . 15 / 335 系统调试与实验单片机软件调试主要是调试本次设计的主程序。根据系统设计要求,进行 Keil 和Proteus 系统仿真,不断调试程序,修改电路图,直到符合功能要求。本次设计 Proteus仿真结果如图 5.1 所示。图 5.1 部分仿真图. . . . 16 / 336 总结单片机因其功能独特和价格廉价在全球围得到了广泛的应用,本次我们利用了基于AT89C52单片机对数字频率计进行了系统的设计。在这次的小

34、组协作完成中,我本人负责的部分是分频模块,开始还是有点力不从心的,学过的只是都已经忘记了差不多了,我又查阅了相关的资料,特别是数字逻辑电路,所以我们经过权衡在硬件方面采用了74LS161 和 74LS153 两个模块 74LS161 是常用的四位二进制可预置的同步加法计数器,它可以灵活的运用在各种数字电路,74LS153 是一个双 4 选 1 数据选择器,功耗较低。在仿真中 74LS161 对整形后的方波信号进行分频,Q1 为四分频输出,Q3 为十六分频输出。未经分频、经过四分频和经过十六分频的三路信号作为 74LS153 的一个 4 选 1 数据选择器的低三位输入,由单片机控制选择分频系数,

35、然后再送单片机部计数器 T1.在软件编程方面,分频编程程序是由三个人完成的,我也是主要负责检查出错状况,在之前还特意对C 语言方面的只是进行了补充学习,在一些细节方面特变死格式我还是检查了许多的错误状况,同时对于负责分频程序的两个人的编程能力我还是非常的佩服的。在这一次的合作小组工作中,大家分工明确,各自抽出时间下功夫,在协调合作方面虽然是出现了一些状况,但是还是很好地完成了,小组组长的分配和统筹能力很好,从硬件的设计步骤到信号的放大处理,到分频最后的 LED 显示和键盘都是组长统一协调,调试,使各个模块紧密的组合在一起,完成了我们的数字频率计的系统的设计。从这次的实践情况来看,我们的动手的能

36、力还是有待加强的,毕竟理论和实践还是有相当大的差距的。我想如果一个人在这么短的时间里还是很难完成的。这次的设计还是很很多的不足和漏洞的,还是有很大的进步的空间的,希望在日后的学习和工作中更加的完善自己,做足功课,争取做到更好。. . . . 17 / 33. . . . 18 / 33参考文献1 王辛之等.AT89 系列单片机原理与接口技术M.:航天大学,2004.4 辛友顺.单片机应用系统设计与实现M.:科学技术,2005.5 鑫.单片机原理与应用M.:电子工业,2005.7 卢艳军.单片机基本原理与应用系统M.:机械工业,2004.8 毅刚.MCS-51单片机应用设计M. :工业大学,19

37、969西文,吴燕军.I/O 接口程序设计入门与应用M.:机械工业,1996.附录程序清单:#include #include #include #include float f; /频率float T; /周期float Tz; /闸门时间char idata buff20;char flag=0; /频率周期选择标志位char xs=0;/设置闸门时间结束后是否显示结果的标志位unsigned char m=0,n=0,yichu=0,fenpin; /m 定时中断次数 n 计数中断次数 yichu判断是定时器还是计数器溢出#define Key_Set P1#define K1 0 xbf

38、#define K2 0 x7f#define NO_Set 0 xff#define Fre 0#define Peri 1sbit B1=P26;sbit A=P25;sbit P17=P17;sbit P16=P16;sbit P35=P35;. . . . 19 / 33sbit Set=P32;unsigned char LCD_Wait(void);void LCD_Write(bit style, unsigned char input);void LCD_SetDisplay(unsigned char DisplayMode);void LCD_SetInput(unsign

39、ed char InputMode);void LCD_Initial();void GotoXY(unsigned char x, unsigned char y);void Print(unsigned char *str);void C52_Initial();void Delay(unsigned int t);void display(float f);void cep();void pand();void timedisplay(float Tz);void Time_Set1();void Time_Set2();void t0();void t1();/*引脚定义*/sbit

40、LcdRs= P20;sbit LcdRw= P21;sbit LcdEn= P22;sfr DBPort= 0 x80;/P0=0 x80,P1=0 x90,P2=0 xA0,P3=0 xB0.数据端口void lcm_delay(int x)int i;for(i=0;ix;i+)_nop_();/*部等待函数*/unsigned char LCD_Wait(void). . . . 20 / 33LcdRs=0; /寄存器选择输入端 1:数据 0:指令LcdRw=1; _nop_(); /RW:为 0:写状态;为 1:读状态;LcdEn=1; _nop_();/使能输入端,读状态,高电平

41、有效;写状态,下降沿有效LcdEn=0;return DBPort;/*向 LCD 写入命令或数据*/#define LCD_COMMAND 0 / Command#define LCD_DATA 1 / Data#define LCD_CLEAR_SCREEN 0 x01 / 清屏#define LCD_HOMING 0 x02 / 光标返回原点void LCD_Write(bit style, unsigned char input)LcdEn=0;LcdRs=style; LcdRw=0; lcm_delay(100);DBPort=input; lcm_delay(100);/注意顺序

42、LcdEn=1; lcm_delay(100);/注意顺序LcdEn=0; lcm_delay(100);LCD_Wait();/*设置显示模式*/#define LCD_SHOW0 x04 /显示开#define LCD_HIDE0 x00 /显示关 #define LCD_CURSOR0 x02 /显示光标#define LCD_NO_CURSOR0 x00 /无光标 #define LCD_FLASH0 x01 /光标闪动#define LCD_NO_FLASH0 x00 /光标不闪动void LCD_SetDisplay(unsigned char DisplayMode) /显示模式

43、设定LCD_Write(LCD_COMMAND, 0 x08|DisplayMode);. . . . 21 / 33/*设置输入模式*/#define LCD_AC_UP 0 x02 /读入一个字符后地址指针加一#define LCD_AC_DOWN0 x00 /读入一个字符后地址指针减一#define LCD_MOVE 0 x01 /写一个字符后左移#define LCD_NO_MOVE0 x00 /写一个字符后不移动void LCD_SetInput(unsigned char InputMode)LCD_Write(LCD_COMMAND, 0 x04|InputMode);/*初始化

44、 LCD*/void LCD_Initial()LcdEn=0;LCD_Write(LCD_COMMAND,0 x38); /8 位数据端口,2 行显示,5*7 点阵LCD_Write(LCD_COMMAND,0 x38);LCD_SetDisplay(LCD_SHOW|LCD_NO_CURSOR); /开启显示, 无光标LCD_Write(LCD_COMMAND,LCD_CLEAR_SCREEN); /清屏LCD_SetInput(LCD_AC_UP|LCD_NO_MOVE); /AC 递增, 画面不动/*void GotoXY(unsigned char x, unsigned char

45、y)if(y=0) LCD_Write(LCD_COMMAND,0 x80|x);if(y=1) LCD_Write(LCD_COMMAND,0 x80|(x-0 x40);void Print(unsigned char *str)while(*str!=0)LCD_Write(LCD_DATA,*str);str+;. . . . 22 / 33/*89c52 初始化*/ void C52_Initial() Tz=1000000.00; Key_Set=0 xff; TMOD=0 x51; / 01010001 T1 为计数器,T0 为定时器 EA=1; /开中断 ET0=1; /允许定

46、时器 0 中断 ET1=1; /允许计数器 0 中断 EX0=1; /允许外部中断 0 中断 PX0=1; /外部中断 0 设置为高优先级 IT0=0; /电平触发方式/*ms 延时子程序*/void Delay(unsigned int t) /t 随着数值越大,误差趋于平衡.unsigned char i; while(t-) for(i=0;i999900.00) if(f1000.00) sprintf(buff, Fre :%3.2fkHz ,(f/1000.00); else if(f0.08) sprintf(buff, Fre :%3.3fHz ,f); GotoXY(0,1)

47、; Print(buff);/*周期显示*/void Tdisplay(float T) if(T999800.00) if(T9950.00) sprintf(buff, Cycle:%3.3fms ,(T/1000.00); else if(T0.248) sprintf(buff, Cycle:%3.4fus ,T);else sprintf(buff,error(Time or F),T); GotoXY(0,1); Print(buff); /*测试频率*/void cep()unsigned char b;unsigned long js;m=0;n=0;TMOD=0 x51;TH0=0 x3c; /定时 50msTL0=0 xb0;TH1=0;TL1=0;b=Tz/50000.00;TCON=0 x50; /启动定时器和计数器while(m!=b); TCON=0;js=TH1*256+TL1+n*65536;f=(js/(Tz/1000000.00)*fenpin;. . . . 25 / 33T=Tz/(Tz*fenpin);if(xs=0) /设置结束后第一次不显示结果if(flag=Fre) Fdisplay(f);else Tdisplay(T);/*判断频率*/void pand()xs=0; /设置结束后第二次循环显示结果B1=1; /选择

温馨提示

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

评论

0/150

提交评论