找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 6568|回复: 4
打印 上一主题 下一主题
收起左侧

51单片机1602液晶显示的频率计设计论文

[复制链接]
跳转到指定楼层
楼主
ID:369002 发表于 2018-7-11 15:45 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式

在电子领域内,频率是一种最基本的参数,并与其他许多电参量的测量方案和测量结果都有着十分密切的关系。由于频率信号抗干扰能力强、易于传输,可以获得较高的测量精度。因此,频率的测量就显得尤为重要,测频方法的研究越来越受到重视。
频率计作为测量仪器的一种,常称为电子计数器,它的基本功能是测量信号的频率和周期频率计的应用范围很广,它不仅应用于一般的简单仪器测量,而且还广泛应用于教学、科研、高精度仪器测量、工业控制等其它领域。随着微电子技术和计算机技术的迅速发展,特别是单片机的出现和发展,使传统的电子侧量仪器在原理、功能、精度及自动化水平等方面都发生了巨大的变化,形成一种完全突破传统概念的新一代侧量仪器。频率计广泛采用了高速集成电路和大规模集成电路,使仪器在小型化、耗电、可靠性等方面都发生了重大的变化。目前,市场上有各种多功能、高精度、高频率的数字频率计,但价格不菲。

为适应实际工作的需要,本次设计给出了一种较小规模和单片机(AT89S52)相结合的频率计的设计方案,不但切实可行,而且体积小、保密性强、设计简单、成本低、精度高、可测频带宽,大大降低了设计成本和实现复杂度。频率计的硬件电路是用Protel绘图软件绘制而成,软件部分的单片机控制程序,是以KeilC做为开发工具用C语言编写而成,而频率计的实现则是选用Ptotues仿真软件来进行模拟和测试。


ABSTRACT

In the electronic field, frequency is a kind of most basic parameter, and all there are close relations in the measurement schemes of many other electric parameters and result of measuring. Because the signal anti-interference ability of frequency is strong, easy to transmit, can obtain higher measurement precision. So, the measurement of frequency seems particularly important, the research of the method is being paid attention to.
The Frequency meter, as one kind of the measuring instrument, often called the electronic counter, its basic function is that frequency and application of cycle Frequency meter of measuring the signal are in a very large range, it not only applies to general simple instrument measurement but also apply to other fields such as teaching, scientific research, high-accuracy instrument measuring, industrial control extensively. With the rapid development of microelectric technique and computer technology, especially appearance and development of the one-chip computer, the instruments have all changed enormously in such aspects as principle, function, precision and automatic level to enable the traditional electronic side amount, form a kind of side amount instrument of new generation that totally broke through the traditional concept. The Frequency meter has adopted the high-speed integrated circuit and large scale integrated circuit extensively, make the instrument change greatly in such aspects as miniaturize, power consumptive, dependability. At present, there are various digital Frequency meter of multi-function, high precision, high frequency on the market, but the price is high.
In order to meet the need of the real work, design and provide one this time The design plan of Frequency meter combining with one-chip computer (AT89S52) on a small scale, not only feasible, and small, of good security, design simply, with low costs, the precision is high, can examine the bandwidth frequently, have reduced the design cost and realized complexity greatly. The hardware circuit of the Frequency meter is drawing with Protel mapping software, the one-chip computer control procedure of the software part, regarded KeilC as the developing instrument to write in C language, but the realization of the Frequency meter was to select to carry on imitating and test with Protues artificial software.

目  录

1 绪 论

1.1 课题的引入

1.2 产生背景

1.3 国内外研究现状

1.4 单片机频率计设计的目的及意义

2 AT89S52单片机介绍及其发展概况

2.1 单片机的介绍

2.1.1 单片机概述

2.1.2 单片机的发展

2.1.3 单片机的特点及应用

2.2 AT89S52系列单片机

2.2.1 AT89系列单片机

2.2.2 AT89S52系列单片机的基本结构

3 频率计总体方案设计

3.1 频率计设计原理

3.1.1 频率检测实现方法

3.1.2 频率计测频原理

3.2 设计思路及方法

3.2.1 频率计方案概述

3.2.2 频率计的量程自动切换

4 系统的硬件设计

4.1 时钟信号发生器

4.2 AT89S52 控制寄存器

4.2.1 AT89S52中断控制系统

4.2.2 AT89S52定时/计数器的控制

4.3 LCD1602显示电路

4.3.1 LCD1602的主要技术参数及接口说明

4.3.2 控制器接口及时序

4.3.3 频率计硬件电路整体设计

5 系统的软件设计

5.1 Keil C简介

5.2 频率计程序的建立过程

5.3 软件功能模块设计

5.3.1 LCD初始化设置模块

5.3.2 浮点数到ASCII码转换模块

5.3.3 定时/计数器初始化模块

5.3.4 定时器中断服务模块子程序

6 系统的模拟及仿真

6.1 Proteus ISIS简介

6.1.1 Proteus ISIS的概况简介及特点

6.1.2 Proteus ISIS的运行概况

6.1.3 用Proteus 软件虚拟单片机实验的优点

6.2 系统的模拟与仿真过程

6.3 频率计系统仿真分析            

结束语

致谢

参考文献


1   绪 论
1.1  课题的引入
在电子技术中,频率是一种计算单位时间内的信号变化的数值的仪器,是最基本的参数之一,由于频率信号抗干扰能力强、易于传输,可以获得较高的测量精度,并且与许多电参量的测量方案、测量结果都有十分密切的关系。因此,频率的测量就显得更为重要。
随着微电子技术和计算机技术的迅速发展,特别是单片机的出现和发展,使传统的电子测量仪器在原理、功能、精度及自动化水平等方面都发生了巨大的变化,形成一种完全突破传统概念的新一代测量仪器。从80年代单片机引入我国至今,单片机已广泛地应用于电子设计中,使频率计智能化水平在广度和深度上产生了质的飞跃,数字化也成为了电子设计的必由之路。运用单片机设计频率计,并采用适当的算法取代传统电路,克服了传统频率计结构复杂、稳定性差、精度不高的弊端,其体积小、保密性强、设计简单、成本低,不仅大大降低了设计成本和实现复杂度,而且频率计性能也将大幅提高,可实现精度较高、等精度和宽范围频率计的要求。[15]
1.2  产生背景
频率计作为测量仪器的一种,常称为电子计数器,它的基本功能是测量信号的频率和周期频率计的应用范围很广,它不仅应用于一般的简单仪器测量,而且还广泛应用于教学、科研、高精度仪器测量、工业控制等其它领域。
20世纪70年代,微电子技术正处于发展阶段,集成电路属于中规模发展时期,各种新材料新工艺尚未成熟,美国仙童(Fairchild)公司研制出世界上第一台单片微型机F8。此时单片机仍处在初级的发展阶段,元件集成规模还比较小,功能比较简单,一般均把CPU、RAM有的还包括了一些简单的I/O口集成到芯片上,它还需配上外围的其他处理电路方才构成完整的计算系统。
问世以来,单片机开始迅速发展,其功能不断增强和完善,应用领域也越来越广泛,现已成为微型计算机的重要分支。目前,单片机发展具体体现在CPU功能增强内部资源增多引脚的多功能化和低电压低功耗等方面。
随着嵌入式系统式系统片上系统等概念的提出.普遍接受及应用,单片机的发展又进入了一个新的阶段,单片机的体积更小功能更齐全可靠性更高.由于起明显的优势,单片机在工业控制、数据采集、智能仪器仪表、家用电器、智能玩具、通信系统、机械加工等各个领域都获得了广泛的应用,极大的提高了这些领域的技术水平和自动化程度。单片机技术已成为现代电子技术应用领域十分重要的技术之一,是电子技术应用领域工程技术人员必备的知识和技能,它能够是我们设计的产品更具智能性和先进性。
从80年代单片机引入我国至今,单片机已广泛地应用于电子设计中,使频率计智能化水平在广度和深度上产生了质的飞跃,数字化也成为了电子设计的必由之路。运用51系列单片机和高速计数器的组合设计频率计,并采用适当的算法取代传统电路,不仅能克服传统频率计结构复杂、稳定性差、精度不高的弊端,而且频率计性能也将大幅提高,可实现精度较高、等精度和宽范围频率计的要求。
1.3  国内外研究现状
20世纪70年代,美国仙童(Fairchild)公司研制出世界上第一台单片微型机F8。单片机的问世和飞速发展掀起了计算机工程应用的一场新革命,使计算机技术冲破了实验室和机房的界限,广泛应用与工业控制系统数据采集系统自动测试系统只能仪表和接口以及各类功能模块等广阔的领域。随着嵌入式系统式系统片上系统等概念的提出.普遍接受及应用,单片机的发展又进入了一个新的阶段,单片机的体积更小功能更齐全可靠性更高。由于起明显的优势,单片机在工业控制、数据采集、智能仪器仪表、家用电器、智能玩具、通信系统、机械加工等各个领域都获得了广泛的应用,极大的提高了这些领域的技术水平和自动化程度。单片机技术已成为现代电子技术应用领域十分重要的技术之一,是电子技术应用领域工程技术人员必备的知识和技能,它能够是我们设计的产品更具智能性和先进性。51系列单片机是国内目前应用最广泛的一种8位单片机之一,随着嵌入式系统、片上系统等概念的提出和普遍接受及应用,51系列及其衍生单片机还会在继后很长一段时间占据嵌入式系统产品的低端市场。[5]
频率计也是一种应用较广泛的电子测量仪器。随着微电子技术和计算机技术的迅速发展,特别是单片微机的出现和发展,使传统的电子侧量仪器在原理、功能、精度及自动化水平等方面都发生了巨大的变化,形成一种完全突破传统概念的新一代测量仪器。频率计广泛采用了高速集成电路和大规模集成电路,使仪器在小型化、耗电、可靠性等方面都发生了重大的变化。
1.4  单片机频率计设计的目的及意义
在电子技术中,频率是一种计算单位时间内的信号变化的数值的仪器,是最基本的参数之一,并且与许多电参量的测量方案、测量结果都有十分密切的关系,因此,频率的测量就显得更为重要。频率计作为测量仪器的一种,常称为电子计数器,它的基本功能是测量信号的频率和周期频率计的应用范围很广,它不仅应用于一般的简单仪器测量,而且还广泛应用于教学、科研、高精度仪器测量、工业控制等其它领域。目前市场上的频率计产品很多,但基本上都是采用专用计数芯片和数字逻辑电路组成,由于这些芯片本身的工作频率不高,从而限制了产品工作频率的提高,远不能满足在一些特殊的场合需要测量很高的频率的要求,而且测量精度也受到芯片本身极大的限制。从80年代单片机引入我国至今,单片机已广泛地应用于电子设计中,使频率计智能化水平在广度和深度上产生了质的飞跃,数字化也成为了电子设计的必由之路。运用51系列单片机和高速计数器的组合设计频率计,并采用适当的算法取代传统电路,不仅能克服传统频率计结构复杂、稳定性差、精度不高的弊端,而且频率计性能也将大幅提高,可实现精度较高、等精度和宽范围频率计的要求。随着单片机技术的不断发展,单片机能实现更加灵活的逻辑控制功能,具有很强的数据处理能力,可以用单片机通过软件设计直接用十进制数字显示被测信号频率。频率计是电子测试、自动化控制等设备中不可或缺的重要模块。在电子工程、资源勘探、仪器仪表等相关应用中,频率计是工程技术人员必不可少的测量工具,频率测量也是电子测量技术中最基本最常见的测量之一。不少物理量的测量,如转速、振动频率等的测量都涉及到或可以转化为频率的测量。
目前,市场上有各种多功能、高精度、高频率的数字频率计,但价格不菲。为适应实际工作的需要,本次设计给出了一种较小规模和单片机(AT89S52)相结合的频率计的设计方案,不但切实可行,而且体积小、保密性强、设计简单、成本低、精度高、可测频带宽,大大降低了设计成本和实现复杂度。

2   AT89S52单片机介绍及其发展概况2.1  单片机的介绍2.1.1  单片机概述
单片机(Single-Chip-Microcomputer),又称单片微控器,是一种集成电路芯片,采用超大规模集成电路技术把具有数据处理能力(如算术运算、逻辑运算、数据传送、中断处理)的微处理器(CPU),随机存取数据存储器(RAM)、只读程序存储器(ROM)、输入/输出电路(I/O)、定时/计数器、中断系统、串行通讯口,可能还包括显示驱动电路、脉宽调制电路、模数转换等电路集成到一个半导体芯片上,构成一个最小而又完善的计算机系统。它们之间相互连接的结构框图如下图所示。这些电路能在软件的控制下准确、迅速、高效地完成程序设计者事先规定的任务。单片机结构上的设计,在硬件.指令系统及I/O能力等方面都有独到之处,具有较强而有效的控制功能。其结构图为2-1所示。
图2-1 单片机结构图
虽然单片机只是一个芯片,但无论从组成还是从其逻辑功能上看,都具有微机系统的含义。另一方面,单片机毕竟是一个芯片,只有外加所需的输入输出设备,才能构成实用的单片机应用系统。单片机有着微处理器所不具备的功能,它可单独完成现代工业控制所要求的智能化控制功能,这是单片机最大的特征。[8]
然而单片机又不同于单板机,芯片在没有开发前,它只具备功能极强的超大规模集成电路,如果赋于它特定的程序,它便是一个最小的、完整的微型计算机控制系统,它与单板机或个人电脑有着本质的区别。单片机的应用属于芯片级应用,需要用户了解单片机芯片的结构和指令系统,以及其它集成电路应用技术和系统设计所需要的理论与技术,用这样特定的芯片设计应用程序,从而使该芯片具备特定的功能。
单片机的应用极为广泛,它涉及智能仪器仪表、工业控制、计算机网络和通信以及医用设备等领域。它以无与伦比的高性能、低价位赢得了广大电子开发者的喜爱。
2.1.2  单片机的发展
1976年Intel公司推出了真正意义上的单片机MCS—48,它以体积小、功能全、价格低等自身魅力赢得了广泛的应用,为单片机的发展奠定了基础,成为单片机发展史上一个重要的里程碑。在MCS—48的带领下,许多半导体芯片在生产厂商竞相研制和发展自己的单片机系列。到80年代末,世界各地已相继研制出大约50个系列300多个品种的单片机产品,其中包括Motorola公司的6801,6802,Zilog公司的Z-8系列,Rockwell公司的6501,6502等。此外,日本的NEC公司,日立公司等也不甘落后,相继推出了各自的单片机品种如Zilog公司的Z80、Motorola公司的6801、6802系列等。[7]目前我国使用做多的是Intel公司在MCS-48的基础上于20世纪80年代初发展起来的 8位的单片机MCS-51,直到现在仍不失为单片机的主流系列。继8位单片机之后,又出现了16位单片机,1983年Intel公司推出的MCS-96系列单片机就是其中的典型代表。
51系列单片机是国内目前应用最广泛的一种8位单片机之一,随着嵌入式系统、片上系统等概念的提出和普遍接受及应用。51系列及其衍生单片机还会在继后很长一段时间占据嵌入式系统产品的低端市场。
纵观单片机近30年的发展历程,单片机今后将向多功能、高性能、高速度、低电压、低功耗、低价格、外围电路简单化以及片内存储器容量增加的方向发展。但其位数不一定会继续增加,尽管现在已经有了32位单片机,但使用的并不多。可以预言,今后的单片机将是功能更强,集成度和可靠性更高而功耗更低,以及使用更方便等特点。此外,专用化也是单片机的一个发展方向,针对单一用途的专用单片机将会越来越多。[12]
2.1.3  单片机的特点及应用
一块单片机芯片就是具有一定规模的微型计算机,在加上必要的外围器件,就可以构成完整的计算机硬件系统。由于单片机的这种特殊的结构形式,使其具有很多显著的优点,单片机在各个领域内的应用都得到迅猛的发展。
1) 单片机的应用特点
① 具有较高的性价比。高性能、低价格是单片机最显著的一个特点,其应用系统具有印制板小、接插件少、安装调试简单方便等特点,使单片机应用系统的性价比高于一般危机系统。
② 体积小、可靠性高。
③ 控制功能强。单片机采用面向控制的指令系统,实时控制功能特别强。
④ 使用方便、容易产品化。
单片机开发开发工具具有很强的软硬件调试功能,使研制单片机应用系统极为方便,加之现场运行环境的可靠性,因此使单片机能满足许多小型对象的嵌入式应用要求,可广泛用在仪器仪表、家用电器、智能玩具、控制系统等领域。
2) 单片机的应用领域
单片机由于其体积小、功耗低、价格低廉,而且具有逻辑判断、定时计数、程序控制等多种功能,广泛应用于工业控制、数据采集、智能仪器仪表、家用电器、智能玩具、通信系统、机械加工等领域。可以毫不夸张的说,凡是能想到的地方,单片机都可以用得上。
① 智能仪器
② 工业控制
③ 家用电器
④ 机电一体化
单片机除以上各方面应用外,还广泛应用于办公自动化领域、汽车电路、通信系统、计算机外围设备等,称为计算机发展和应用的一个重要方向。单片机从其问世和发展以来从工业测控对象环境接口特点出发,向着增强控制功能提高工业环境的可靠性灵活方便地构成应用计算机系统的界面接口的方向发展。
2.2  AT89S52系列单片机
ATMEL公司是美国20世纪80年代中期成立并发展起来的半导体公司。该公司的技术优势在于推出Flash存储器技术和高质量、高可靠性的生产技术,它率先将独特的Flash存储技术注入单片机产品中。其推出的AT89系列单片机,在世界电子技术行业中引起了极大的反响,在国内也受到广大用户欢迎。AT89S系列单片机时继AT89C系列之后推出的功能更强的新产品。
2.2.1  AT89系列单片机
AT89系列单片机是以8051为内核,结合自己的技术优势构成的,所以它和8051是兼容的。因此,AT89系列对于以8051为基础的应用系统而言,是十分容易进行取代和构成的。
1) AT89系列单片机具有以下优点:
① 和AT8051接插相兼容
AT89系列单片机的引脚和8051是一样的,其封装是按军工标准进行的,有很高的质量标准和产品稳定性。
② 以EEPROM电可擦除和Flash技术为主导的存储器
ATMEL公司把EEPROM和Flash技术巧妙相结合形成特殊的集成电路,从而使应用领域扩大。
③ 静态时钟方式
AT89系列单片机采用静态时钟方式,可以节省带电能。这对于降低便携类产品的功耗十分有用。
④ 可反复进行应用系统试验
采用AT89系列单片机设计的应用系统,可以反复进行系统试验。每次试验可以编制不同的程序,这样可以保证用户的系统设计达到最优。
⑤ 高标准的质量检测
ATMEL公司能够对各种集成电路进行严格且高标准的质量检测。其军品集成电路工作性能是完全符合军品标准的,在-55~125℃范围内其集成电路仍能实现正常的输出功能。因此,产品在航空航天仪器、雷达系统、导弹、智能自适应仪、机器人、各种武器电子系统、抗恶劣环境电子系统等领域都被广泛应用。
AT89S系列于AT89C系列相比,预算速度有了较大的提高,它的静态工作频率为0~33MHZ,片内集成有双数据指针DPTR、定时监视器、低功耗休闲状态及关电方式、关电方式下的中断恢复等诸多功能,极大地满足了各种不同的应用要求。AT89S52单片机是AT89S系列中增强型高档产品,它片内存储器容量是AT89S51的一倍,即片内8K的Flash程序存储器和256B的RAM。另外,它还增加了一个功能极强的、具有独特应用的16位定时/计数器2等多种功能。AT89S52系列单片机与MCS-51系列全兼容,它是在MCS-51的技术内核为主导的基础上倾注了ATMEL公司优良技术进行新的设计与开发,使之功能更强,更具特色,从而能够较快的学习和掌握,并具备广泛的开发环境,使开发应用更方便。[3]
2.2.2  AT89S52系列单片机的基本结构
AT89S52单片机是AT89S系列中增强型高档产品,它片内存储器容量是AT89S51的一倍,即片内8K的Flash程序存储器和256B的RAM。另外,它还增加了一个功能极强的、具有独特应用的16位定时/计数器2等多种功能。AT89S52系列单片机与MCS-51系列全兼容,它是在MCS-51的技术内核为主导的基础上倾注了ATMEL公司优良技术进行新的设计与开发,使之功能更强,更具特色,从而能够较快的学习和掌握,并具备广泛的开发环境,使开发应用更方便。
1) AT89S52单片机介绍及其硬件结构
AT89S52是一个低功耗、高性能,采用CMOS工艺制造的8位单片机,是Atmel公司AT89系列中的一款性能相当优异的高档型产品,兼容标准MCS—51指令系统及其引脚结构,与Atmel公司其它产品相比AT89S52的最大特点是:能在线编程,且编程连线极简单。AT89S52片内含8KB  ISP(In-system programmable)的可反复擦写1000次的Flash只读程序存储器。
AT89S52具有如下特征参数:40个引脚、8KB Flash片内程序存储器、256KB的RAM,4个可编程I/O口、5个带2级中断嵌套的中断、3个16位可编程定时计数器、1个全双工串行通讯口、看门狗(WDT)电路、片内时钟振荡器。
此外,AT89S52设计和配置了振荡频率可为0HZ并可通过软件设置省电模式。空闲掉电模式下,CPU暂停工作,而RAM、定时/计数器、串行口、外中断系统可继续工作;掉电模式下,“冻结”振荡器而保存RAM的数据,停止芯片其他功能直至外中断激活或硬件复位。
AT89S52单片机的主要功能:
8位字长CPU;
振荡器和时钟电路,全静态操作:0~33MHZ;
8KB系统内部可编程Flash存储器;
256KB内部RAM;
4个I/O共32位线;
3个16位定时/计数器;
全双工(UART)串行口通道;
ISP端口;
定时监视器(看门狗);
双数据指针(DPTR);
20多个特殊功能寄存器;
电源下降标志。
2) AT89S52单片机的几种封装形式
AT89S52其有效引脚为40条,具有PDIP、TQFP、PLCC三种封装形式,以适应不同产品的需求。
3) AT89S52单片机的引脚功能说明
① 主电源引脚
Vss(GND)(20脚):电源地电平
Vcc(40脚):电源供电电压4.0~5.0V
外接晶振或外部振荡器引脚
XTAL1(19脚):当外接晶振时,接外部晶振的一个引脚。
XTAL2(18脚):接外部晶振的另一个引脚
② 多功能I/O引脚
P0口(39~32脚):8位并行I/O口
P1口(1~8脚):内接上拉电阻的8位准双向I/O口,能负担4个TTL负载。它的第二功能如下:
P1.0(1脚):定时/计数器T2的外部计数输入
P1.1(2脚):定时/计数器T2捕获/再装入触发及方向控制
P1.5(6脚):MOSI(用于系统内部编程)
P1.6(7脚):MOSO(用于系统内部编程)
P1.7(8脚):SCK(用于系统内部编程)
P2口(21~28脚):内接上拉电阻的8位准双向I/O口,能接4个TTL负载
P3口(10~17脚):内接上拉电阻的8位准双向I/O口,能接4个TTL负载,其第二功能为:
P3.0(10脚):RXD(串行接收端口)
P3.1(11脚):TXD(串行发送端口)
P3.2(12脚):INT0(外部中断0请求端)
P3.3(13脚):INT1(外部中断1请求端)
P3.4(14脚):T0(定时/计数器0外部计数输入端)
P3.5(15脚):T1(定时/计数器1外部计数输入端)
P3.6(16脚):WR(外部数据写选通)
P3.7(17脚):RD(外部数据读选通)
③ 控制、选通和复位引脚
RST(9脚):复位信号输入端
ALE/PROG(30脚):ALE地址锁存使能端,PROG为Flash编程时输入编程脉冲
PSEN(29脚):访问外部程序存储器读选通信号
EA/Vpp(31脚):EA为访问内部或外部程序存储器选择信号,Vpp为Flash编程电压。

3   频率计总体方案设计3.1  频率计设计原理
频率的测量实际上就是在1s时间内对信号进行计数,计数值就是信号频率。用单片机设计频率计通常采用两种办法,第一种方法是使用单片机自带的计数器对输入脉冲进行计数;第二种方法是单片机外部使用计数器对脉冲信号进行计数,计数值再由单片机读取。第一种方法的好处是设计出的频率计系统结构和程序编写简单,成本低廉,不需要外部计数器,直接利用所给的单片机最小系统就可以实现。这种方法的缺陷是受限于单片机计数的晶振频率,输入的时钟频率通常是单片机晶振频率的几分之一甚至是几十分之一,在本次设计使用的AT89S52单片机,由于检测一个由“1”到“0”的跳变需要两个机器周期,前一个机器周期测出“1”,后一个周期测出“0”。故输入时钟信号的最高频率不得超过单片机晶振频率的二十四分之一。第二种方法的好处是输入的时钟信号频率可以不受单片机晶振频率的限制,可以对相对较高频率进行测量,但缺点是成本比第一种方法高,设计出来的系统结构和程序也比较复杂。由于成本有限,本次设计中采用第一种方法,因此输入的时钟信号最高频率不得高于12MHz/24=500KHz。对外部脉冲的占空比无特殊要求。
3.1.1  频率检测实现方法
1) 计数法测频率
使用计数方法实现频率测量时,外部的待测信号为单片机定时/计数器0的计数源,利用定时/计数器1定时实现计数闸门。频率计的工作过程为:定时/计数器0的计数寄存器清0,运行控制位TR置1,启动定时/计数器工作;同时运行定时/计数器1定时1s,定时/计数器0对外部的待测信号进行计数,定时/计数器1定时1s时间到TR清0,停止计数。从计数寄存器0读出测量数据,测量数据在完成数据处理后,由显示电路显示量结果。单片机外接晶振为12MHz,单片机指令周期为1μs,当被测频率信号过高时单片机不能测量。
2) 定时法测频率
使用定时方法实现频率测量时,外部的待测信号通过频率计的分频器二分频变成宽度等于待测信号周期的方波,该方波加至定时/计数器1的输入脚,及外部中断INT1口,由INT1口高电平和软件置位TR1,同时控制启动定时/计数器1对单片机的机器周期的计数,并检测方波高电平是否结束;当判定高电平结束时TR1清0,停止计数,然后从计数寄存器读出测量数据。这时读出的数据反映的是待测信号的周期,通过数据处理把周期值变换成频率值,由显示电路显示测量结果。
3.1.2  频率计测频原理
频率计开始工作或者完成一次频率测量,系统软件都进行测量初始化。首先定时/计数器的计数寄存器清0,运行控制位TR置1,启动对待测信号的计数。计数闸门由软件延时程序实现,从计数闸门的最小值(即测量频率的高量程)开始测量,计数闸门结束时TR清0,停止计数。计数寄存器中的数值经过数制转换程序从十六进制数转换为十进制数。判断该数的最高位,若该位不为0,满足测量数据有效位数的要求,测量值和量程信息一起送到显示模块;若该位为0,将计数闸门的宽度扩大10倍,重新对待测信号的计数,直到满足测量数据有效位数的要求。
当上述测量判断过程直到计数闸门宽度达到1s(对应的频率测量范围为100~999Hz)时测量结果仍不具有3位有效数字,频率计则使用定时方法测量待测信号的周期。定时/计数器的工作被设置为定时器方式,定时/计数器的计数寄存器清0,在判断待测信号的上跳沿到来后,运行控制位TR置为1,以单片机工作周期为单位进行计数,直至信号的下跳沿到来,运行控制位TR清0,停止计数。16位定时/计数器的最高计数值为65 535,当待测信号的频率较低时,定时/计数器将发生溢出。产生溢出时,程序进入定时器中断服务程序,对溢出次数进行计数。待测信号的周期由3个字节组成:定时/计数器溢出次数、定时/计数器的高8位和低8位。信号的频率f与信号的周期T之间的关系为:f=1/T。
完成信号的周期测量后,需要做一次倒数运算才能获得信号的频率。为提高运算精度,采用浮点数算术运算。浮点数由3个字节组成:第1字节最高位为数符,其余7位为阶码;第2字节为尾数的高字节;第3字节为尾数的低字节。待测信号周期的3个字节定点数通过截取高16位、设置数符和计算阶码转换为上述格式的浮点数。然后浮点数算术运算对其进行处理,获得用浮点数格式表达的信号频率值。再通过浮点数到ASCII码转换模块把用浮点数格式表达的信号频率值变换成本频率计的显示格式,送到显示模块显示待测信号的频率值。完成显示后,频率计都开始下一次信号的频率测量。
3.2  设计思路及方法
本频率计的结构主要包括时钟信号发生电路、分频电路、单片机控制电路和LCD显示电路组成。频率计的主要核心部件是采用AT89S52来产生定时和记录脉冲变化次数,运用AT89S52来构成计数器,突破了大部分运用数字电路模板来构成计数器。本设计主要采用AT89S52芯片和LCD数码管来实现,软件编程主要是采用C51语言来编程。其系统结构如下图所示:

图3-1 频率计系统结构图
3.2.1  频率计方案概述
本频率计的设计以AT89S52单片机为核心,利用他内部的定时/计数器完成待测信号周期/频率的测量。单片机AT89S52内部具有3个16位定时/计数器,定时/计数器的工作可以由编程来实现定时、计数和产生计数溢出时中断要求的功能。在定时器工作方式下,在被测时间间隔内,每来一个机器周期,计数器自动加1(使用12 MHz时钟时,每1μs加1),这样以机器周期为基准可以用来测量时间间隔。在计数器工作方式下,加至外部引脚的待测信号发生从1到0的跳变时计数器加1,这样在计数闸门的控制下可以用来测量待测信号的频率。外部输入在每个机器周期被采样一次,这样检测一次从1到0的跳变至少需要2个机器周期(24个振荡周期),所以最大计数速率为时钟频率的1/24(使用12MHz时钟时,最大计数速率为500 kHz)。定时/计数器的工作由运行控制位TR控制,当TR置1,定时/计数器开始计数;当TR清0,停止计数。
本设计综合考虑了频率测量精度和测量反应时间的要求。例如当要求频率测量结果为3位有效数字,这时如果待测信号的频率为1 Hz,则计数闸门宽度必须大于1000 s。为了兼顾频率测量精度和测量反应时间的要求,把测量工作分为两种方法:
① 当待测信号的频率>100Hz时,定时/计数器构成为计数器,以机器周期为基准,由软件产生计数闸门,计数闸门宽度>1s时,即可满足频率测量结果为3位有效数字;
② 当待测信号的频率<100Hz时,定时/计数器构成为定时器,由频率计的予处理电路把待测信号变成方波,方波宽度等于待测信号的周期。这时用方波作计数闸门,当待测信号的频率=100Hz,周期为10ms,使用12MHz时钟时的最小计数值为10000,完全满足测量精度的要求。
3.2.2  频率计的量程自动切换
使用计数方法实现频率测量时,外部的待测信号为单片机定时/计数器的计数源,利用软件延时程序实现计数闸门。频率计的工作过程为:定时/计数器的计数寄存器清0,运行控制位TR置1,启动定时/计数器工作;运行软件延时程序,同时定时/计数器对外部的待测信号进行计数,延时结束时TR清0,停止计数。从计数寄存器读出测量数据,测量数据在完成数据处理后,由显示电路显示测量结果。
使用定时方法实现频率测量时,外部的待测信号通过频率计的预处理电路变成宽度等于待测信号周期的方波,该方波同样加至定时/计数器的输入脚。工作高电平是否加至定时/计数器的输入脚;当判定高电平加至定时/计数器的输入脚,运行控制位TR置1,启动定时/计数器对单片机的机器周期的计数,同时检测方波高电平是否结束;当判定高电平结束时TR清0,停止计数,然后从计数寄存器读出测量数据。这时读出的数据反映的是待测信号的周期,通过数据处理把周期值变换成频率值,由显示电路显示测量结果。
测量结果的显示格式采用科学计数法,即有效数字乘以10为底的幂。这里设计的频率计用5位数码管显示测量结果:前3位为测量结果的有效数字;第4位为指数的符号;第5位为指数的值。采用这种显示格式既保证了测量结果的显示精度,又保证了测量结果的显示范围(0.100Hz~9.99MHz)。
频率计测量量程自动转换的过程由频率计测量量程的高端开始。由于只显示3位有效数字,测量量程的高端计数闸门不需要太宽,例如在进入计数器的信号频率范围在10.0~99.9kHz,计数闸门宽度为10ms即可。频率计开始工作时使用计数方法实现频率测量,并使计数闸门宽度为最窄,完成测量后判断测量结果是否具有3位有效数字,如果成立,将结果送去显示,完成测量工作;否则将计数闸门宽度扩大10倍,继续进行测量判断,直到计数闸门宽度达到1s,这时对应的进入单片机的待测信号频率范围为100~999Hz。如果测量结果仍不具有3位有效数字,频率计则使用定时方法实现频率测量。
定时方法测量的是待测信号的周期,这种方法只设一种量程,测量结果通过浮点数运算模块将信号周期转换成对应的频率值,再将结果送去显示。无论采用何种方式,只要完成一次测量,频率计自动开始下一个测量循环,因此该频率计具有连续测量的功能,同时实现量程的自动转换。

4   系统的硬件设计
本频率计的硬件电路主要由时钟信号发生器、频率计控制电路和LCD显示电路组成。频率计的主要核心部件是采用AT89S52的内部定时/计数器来产生定时和记录脉冲变化次数。主要用到的元器件有晶振器件、电阻、74LS04、74LS74、74LS00、AT89S52单片机、LCD1602等。其硬件系统框图如3-2所示:
图3-2 硬件系统框图
4.1  时钟信号发生器
时钟信号发生器是频率计的频率信号产生电路,它是由一个晶振、两个电阻、一个电容及两个非门74LS04构成的工作于串联谐振状态的TTL门电路振荡器。当电路频率为串联谐振频率时,晶体的等效电抗接近零(发生串联谐振),串联谐振频率信号最容易通过闭环回路,这个频率信号通过两级反相后形成反馈振荡,晶体同时也担任着选频作用,在工作于串联谐振状态的振荡电路,它的频率取决于晶体本身具有的频率参数。也就是说,石英晶体多谐多谐振荡器的振荡频率取决于石英晶体的固有谐振频率,与外接电阻、电容无关。图4-1为频率计的时钟信号发生电路的原理图:
图4-1 时钟信号发生原理图
4.2  AT89S52 控制寄存器4.2.1  AT89S52中断控制系统
AT89S52的中断系统共有8个中断源,6个中断矢量,两级中断优先级,可有软件设定实现两级嵌套,可通过软件来屏蔽或响应个对应的中断请求。
1) AT89S52中断源
AT89S52的中断系统有8个中断源,对应有6个中断矢量。其外部中断有两种触发中断的方式,即低电平触发和跳转触发。各种中断请求信号分别由定时/计数器控制寄存器TCON和串行通信控制寄存器SCON的相应位锁存,提供给主机查询和采样。
TCON控制寄存器是由定时计数器和中断请求两者合用,其格式如表4-1:
表4-1 TCON控制寄存器
TCON
TF1
TR1
TF0
TR0
IE1
IT1
IE0
IT0
位地址
8FH
8EH
8DH
8CH
8BH
8AH
89H
88H

各位含义如下:
TF1:定时/计数器1回0溢出中断请求标志位
TR1:定时/计数器1启/停控制位
TF0:定时/计数器0回0溢出中断请求标志位
TR0:定时/计数器0启/停控制位
IE1:外部中断(INT1)请求标志位
IE0:外部中断(INT0)请求标志位
IT1:用软件置位/复位IT1来选择外部中断INT1是跳变还是电平触发中断请求
IT0:用软件置位/复位IT1来选择外部中断INT1是跳变还是电平触发中断请求
2) 中断控制
AT89S52的中断是可编程的,即可通过软件来实现对中断系统功能进行设置和控制。
AT89S52的中断均属可屏蔽中断,即通过软件对特殊功能寄存器IE的设置,实现对各中断源的中断请求开放或屏蔽的控制。中断控制寄存器IE的格式及各位含义如表4-2所示:
表4-2 中断控制寄存器IE的格式
IE
EA
X
ET2
ES
ET1
EX1
ET0
EX0
位地址
AFH

ADH
ACH
ABH
AAH
A9H
A8H

EA(IE.7):全部中断允许/禁止位。
X(IE.6):保留位,无意义。
ET2(IE.5):定时/计数器2回0溢出或捕获中断响应控制。
ES(IE.4):串行通信接收/发送中断响应控制位。
ET1(IE.3):定时/计数器1回0溢出或捕获中断响应控制。
EX1(IE.2):外部中断INT1中断响应控制位。
ET0(IE.1):定时/计数器0回0溢出或捕获中断响应控制。
EX0(IE.0):外部中断INT0中断响应控制位。
从上可见AT89S52的中断响应为两级控制,EA为总的中断响应控制位,各对应的中断源还有中断响应控制位。
3) 中断优先级
AT89S52的中断设有两级优先级,每个中断源均可通过软件对中断优先级寄存器IP的对应位进行设置,变成为高优先级或低优先级,置1为高优先级,清0为低优先级。正在执行的低优先级中断服务程序可以被高优先级的中断请求所中断,但不能被同级或低优先级中断源中断请求所中断;正在执行的高优先级的中断服务程序不能被任何中断源中断请求所中断。两个或两个以上的中断源同时请求中断时,主机只响应优先级高的中断请求。为了实现上诉述规则,中断系统内部设有两个不可寻址的中断优先级状态触发器,其中一个用于指示正在服务于高优先级的中断,并阻止所有其他一切中断请求的响应,另外一个则用于指示正在服务于低高优先级的中断,除能被高优先级中断请求所终端外,阻止其他同级或低于它的中断请求所中断。
中断优先级控制器IP,其地址字节为B8H,具有位寻址功能,可通过软件设定各个中断源的中断优先级。IP控制寄存器的格式如表4-3所示:
表4-3 IP控制寄存器格式
IP
X
X
PT2
PS
PT1
PX1
PT0
PX0
位地址


BDH
BCH
BBH
BAH
B9H
B8H

各位含义如下:
X、X (IP.6、IP.7):保留位,无定意义。
PT2(IP.5):定时/计数器2的中断优先级设置位。
PS(IP.4):串行通信中断优先级设置位。
PT1(IP.3):定时/计数器1的中断优先级设置位。
PX1(IP.2):外部中断INT1中断优先级设置位
PT0(IP.1):定时/计数器0的中断优先级设置位。
PX0(IP.0)::外部中断INT0中断优先级设置位
复位后IP的内容为00H。
4.2.2  AT89S52定时/计数器的控制
AT89S52片内集成了3个16位定时/计数器,定时/计数器0和1是通用的定时计数器,定时计数器2集定时、计数和捕获三种功能于一体,功能更强。
组成定时/计数器的核心是一个16位的加1计数器。这个16位的计数器是两个8位的计数器(THx、TLx)组成。提供给计数器实现加1计数的信号有两个来源:一个是由外部提供的计数脉冲通过引脚Tx端口送加1计数器;另一个则由单片机内部的时钟脉冲经12分频后送加1计数器。因此,既可用于定时方式,又可用于对外部事件的计数方式,对于定时/计数器2还有“捕获”方式。工作方式是通过软件对特殊功能寄存器TMOD和T2CON的设置来进行选择。本次频率计的设计中只用到定时/计数器的定时和计数功能,应此只需用到定时计数器0、1。
AT89S52单片机为定时计数器设有特殊功能寄存器TMOD、TCON和T2CON,用于定义他们的工作方式及其控制功能的实现。当每执行一条改变上述特殊功能寄存器内容的指令时,其改变内容将锁存于寄存器中,并在该指令的下一条指令的第一个机器的S1P1开始生效。
定时/计数器0和1的的操作模式和工作方式由控制寄存器来定义的,其格式如下:
表4-4 定时/计数器工作方式寄存器
GATE
C/T
M1
M0
GATE
C/T
M1
M0

TMOD寄存器内容分为两部分,低4位用于定时/计时器0,高4位用于定时/计数器1。两部分的操作功能完全相同。各位具体功能如下:
M1、M2为工作方式选择位,其定义为:
表4-5 M1、M2工作方式选择位
M1  M0
工作方式
功能说明
0   0
方式0
13位定时计数器
0   1
方式1
16位定时计数器
1   0
方式2
自动再装入8位定时计数器
1   1
方式3
将定时/计数器0分为两个8位计数器

C/T:选择定时计数其操作模式。1为计数模式,0位定时模式。
GATE:选通控制位。
TMOD的字节地址为89H,不能位寻址,复位后TMOD所有位均为0.因此,复位后定时/计数器0和1自动置为定时模式和工作方式0。
4.3  LCD1602显示电路
在频率计设计中,显示部分对整个系统来说是非常重要的。整个系统的设计最终结果都要通过显示器来反应出来。本次频率计系统的设计采用的显示器为LCD1602。图4-2为LCD1602的显示电路:
图4-2 LCD显示电路
其各引脚定义如下:
第1脚:VSS为地电源。
第2脚:VDD接5V正电源。
第3脚:V0为液晶显示器对比度调整端。
第4脚:RS为寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄存器。
第5脚:RW为读写信号线,高电平时进行读操作,低电平时进行写操作。当RS和RW共同为低电平时可以写入指令或者显示地址,当RS为低电平RW为高电平时可以读忙信号,当RS为高电平RW为低电平时可以写入数据。
第6脚:E端为使能端,当E端由高电平跳变成低电平时,液晶模块执行命令。
第7~14脚:D0~D7为8位双向数据线。
4.3.1  LCD1602的主要技术参数及接口说明
1) LCD的主要技术参数:
表4-6 LCD主要技术参数
显示容量:
16*2个字符
芯片工作电压:
4.5~5.5V
工作电流:
2.0mA(5.0V)
模块最佳工作电压:
5.0V
字符尺寸:
2.95*4.35(WXH)mm

2) 接口信号说明:
表4-7 LCD接口信号说明
编号
符号
引脚说明
编号
符号
引脚说明
1
VSS
电源地
9
D2
Data I/O
2
VDD
电源正极
10
D3
Data I/O
3
VL
液晶显示偏压信号
11
D4
Data I/O
4
RS
数据/命令选择端
12
D5
Data I/O
5
R/W
读/写选择端
13
D6
Data I/O
6
E
使能信号
14
D7
Data I/O
7
D0
Data I/O
15
BLA
背光源正极
8
D1
Data I/O
16
BLK
背光源负极

4.3.2  控制器接口及时序
1) 基本操作时序:
读状态:输入 RS=L,RW=H,E=H            输出  D0~D7=状态字
写指令:输入 RS=L,RW=L,D0~D7=指令码,E=高脉冲   输出  无
读数据:输入 RS=H,RW=H,E=H            输出  D0~D7=数据
写数据:输入 RS=H,RW=L, D0~D7=数据,E=高脉冲    输出  无
2) 状态字说明
表4-8 LCD状态字说明(1)
STA7
D7
STA6
D6
STA5
D5
STA4
D4
STA3
D3
STA2
D2
STA1
D1
ST0
D0
表4-8 LCD状态字说明(2)
STA0-6
当前数据地址指针的值

STA7
读写操作使能
1:禁止      0:允许

3) 指令说明:
显示模式设置:
表4-9 LCD显示模式设置
指令码
功能
0
0
1
1
1
0
0
0
设置16*2显示,5*7点阵,8位数据接口

显示开关及光标设置:
表4-10 LCD显示开关及光标设置
指令码
功能
0
0
0
0
1
D
C
B
D=1 开显示;   D=0 关显示
C=1 显示光标   C=0 不显示光标
B=1 光标闪烁   B=0光标不显示
0
0
0
0
0
1
N
S
N=1,当读写一个字符后地址指针加1,光标加1
N=0,当读写一个字符后地址指针减1,光标减1
S=1,当写一个字符,整屏显示左移或右移
S=0, 当写一个字符,整屏显示不移动

4.3.3  频率计硬件电路整体设计
整个频率计的硬件电路设计主要由包括时钟信号发产生器、LCD1602显示电路、频率计的控制电路这三大部分电路组成。图4-3为频率计的电路原理图:
图4-3 频率计电路原理图
在频率计的硬件设计当中主要用到了单片机的P0口、外部震荡器引脚XATL1和XTAL2以及P3.2和P3.5,其各引脚定义如下:
P0口(39~32脚):8位并行I/O口,作为输出口时,每个管脚可带8个TTL负载。在外扩存储器时,它定义为低8位地址/数据总线。当定义为I/O口时,为准双向I/O口,需外接上拉电阻,在写入“1”后就成为高阻抗输入口。在对片内Flash编程时P0口接收字节码,在程序校验时输出字节代码。程序校验期间应接上拉电阻。
XTAL1(19脚):外接晶振时,接外部晶振的一个引脚。片内振荡器由一个单级反相器组成,XTAL1为反相器的输入。当外部振荡器提供时钟信号时,则由XTAL1端输入。
XTAL2(18脚):接外部晶振的另一个引脚,片内为单级反向反相器的输出。当由外部时钟源提供时钟信号时,则本引脚浮空。
P3.4(14脚):T0(定时计数器0外部计数输入端)。
P3.5(15脚):T1(定时计数器1外部计数输入端)。
整个电路原理图的元件清单图4-4所示:
图4-4 频率计电路元件清单

5   系统的软件设计
在软件开发上我们采用KeilC做为开发工具,KeilC是WINDOWS平台下的单片机开发工具,同时支持C语言和汇编语言编程,考虑到在频率测量过程中有比较多的数学运算,所以在编程工具上我们采用了C语言,这样开发过程就变的更加轻松了。其整个程序流程如下图5-1所示:
图5-1 程序流程图
5.1  Keil C简介
51的编程语言常用的有二种,一种是汇编语言,一种是C语言。汇编语言的机器代码生成效率很高但可读性却并不强,复杂一点的程序就更是难读懂,而C 语言在大多数情况下其机器代码生成效率和汇编语言相当,但可读性和可移植性却远远超过汇编语言,而且C 语言还可以嵌入汇编来解决高时效性的代码编写问题。因此在频率计的程序设计过程中使用的C语言,使用C 语言肯定要使用到C 编译器,以便把写好的C 程序编译为机器码,这样单片机才能执行编写好的程序。KEIL uVISION2 是众多单片机应用开发软件中优秀的软件之一,它支持众多不同公司的MCS51 架构的芯片,它集编辑,编译,仿真等于一体,同时还支持,PLM,汇编和C 语言的程序设计,它的界面和常用的微软VC++的界面相似,界面友好,易学易用,在调试程序,软件仿真方面也有很强大的功能。
在使用Keil C软件之前当然要先进行安装,之后就可以在其环境下建立自己的C语言项目,并且我们还可以通过Keil软件仿真看到程序运行的结果。
5.2  频率计程序的建立过程
首先运行Keil C软件,打开之后首先出现如图5-2所示画面:
图5-2 Keil C运行界面
接着按下面的步骤建立项目:
⑴ 点击Project 菜单,选择下拉式菜单中的New Project,接着弹出一个标准Windows 文件对话窗口,在“文件名”中输入一个C 程序项目名称,这里我们用“plj”,“保存”后的文件扩展名为uv2,这是KEILuVision2 项目文件扩展名,以后我们可以直接点击此文件以打开先前做的项目。图5-3为建立程序项目界面:
图5-2  建立程序项目界面
⑵ 如图5-5所示,选择所要的单片机,这里我们选择所需要用的Ateml 公司的AT89S52,其功能、特点在右边有简单的介绍。完成上面步骤后,就可以进行程序的编写了。
图5-5 选择所需要的单片机类型
⑶ 首先我们要在项目中创建新的程序文件。如图5-6,通过菜单File-New 或快捷键Ctrl+N就会出现一个新的文字编辑窗口。然后在这个窗口中进行代码的编写。
图5-6 建立一个代码编辑窗口
⑷ 创建两个文字编辑窗口,并在其中编写如下两段代码,并分别将他们命名位LCD1602.h和main.c,保存在项目所在的目录中。这是Keil的C语法检查生效,单词呈现不同颜色。然后如图5-6,在屏幕左边的Source Group1 文件夹图标上右击弹出菜单,选则“ Add File to Group ‘SourceGroup 1’”弹出文件窗口,选择刚刚保存的文件,点击ADD 按钮,关闭文件窗,将编写好的两段程序添加到项目中去。
图5-6 将建立好的程序文件添加到项目中
⑸ 如图5-7和图5-8所示,在屏幕左边Target图标上右击弹出菜单中单击”Options for Target ‘Target 1’”,在弹出界面中选择“Output”选项卡将其中的”Creat HEX Fi”,确定之后选择Project-Build Target或快捷键进行编译并生成二进制的字节码文件。
图5-7 在输出选项中选择创建二进制代码文件
图5-8 将编写的程序文件进行编译链接
⑹ 编译成功后生成的所有文件如图5-9所示,其中以.hex结尾就是在后面进行软件仿真是所需要的二进制代码文件。
图5-9 运行Keil C编译成功后生成的所有文件
5.3  软件功能模块设计
系统软件设计主要包括9大模块,分别为测量初始化模块、显示模块、信号频率测量模块、量程自动转换模块、信号周期测量模块、定时器中断服务模块、浮点数格式化模块、浮点数算术运算模块、浮点数到BCD码转换模块。其系统软件框图如图5-10。









图5-10 频率计系统软件框图
5.3.1  LCD初始化设置模块
LCD初始化主要进行显示器显示模式设置和显示开关及光标设置,在本次设计中定义其显示模式为:8位数据端口,5*7矩阵,16*2显示,并且开启显示无光标。具体实现代码为:
void LCD_Initial()
{
LcdEn=0;
LCD_Write(LCD_COMMAND,0x38);          //8位数据端口,2行显示,5*7点阵
LCD_SetDisplay(LCD_SHOW|LCD_NO_CURSOR);    //开启显示, 无光标
LCD_Write(LCD_COMMAND,LCD_CLEAR_SCREEN);   //清屏
LCD_SetInput(LCD_AC_UP|LCD_NO_MOVE);       //AC递增, 画面不动
}
5.3.2  浮点数到ASCII码转换模块
在LCD1602的显示中,数据是以ASCII码的形式在屏幕上显示出来的,而通过系统测量出的频率值为浮点数形式,因此必须将浮点数形式的数据转化为ASCII码的形式才能显示出来。将浮点数转换为ASCII码的代码为:
void IntToStr(unsigned int t, unsigned char *str, unsigned char n)
{
unsigned char a[5]; char i, j;                                             
a[0]=(t/10000)%10;              //取得整数值到数组                     
a[1]=(t/1000)%10;                                                  
a[2]=(t/100)%10;                                                   
a[3]=(t/10)%10;                                                   
a[4]=(t/1)%10;                                                     
for(i=0; i<5; i++)               //转成ASCII码                           
a=a+'0';                                                
for(i=0; a=='0' && i<=3; i++);                                 
for(j=5-n; j<i; j++)            //填充空格                              
{ *str=' ';  str++; }                                          
for(; i<5; i++)                                                   
{ *str=a; str++; }              //加入有效的数字                        
*str='\0';
}
5.3.3  定时/计数器初始化模块
在系统测频之前,首先要进行定时/计数器0和1的初始化,这一部分主要是进行定时/计数器0和1的工作方式和中断优先级的设置,在实验中通过设置定时/计数器 0和1的工作方式控制寄存器TMOD的操作模式和工作方式,我们设置定时器1为16位定时器方式,定时器0为16位计数器方式,并通过中断优先级控制寄存器IP设定定时器1为高优先级中断。其具体代码为:
void Time01_Init(void)
{
EA=0;                                            //关总中断
TR0=0;                                            //关定时器0
TR1=0;                                            //关定时器1
IE=0x0A;                              //允许TF1/TF0标志位(TCON7/TCON5)的中断请求                                          TMOD=0x15;    //定时器1是16位定时器方式,定时器0是16为计数器方式
IP=0x08;                            //定时器1是高优先级中断
TH1=0x3C;            
TL1=0xB0;
}
5.3.4  定时器中断服务模块子程序
在频率测量过程中,我们使用单片机的定式计数器来实现频率的测量。当计数器0工作一段时间后,我们要读取计数值进行频率计算时,首先要关闭定时器1来切断外部信号,然后读取计数器中的数值来进行计算。其相应功能代码即定时器T1中断服务子程序为:
void TIMER1_ISR (void) interrupt 3 using 1
{   
EA=0;                                                 //关总中断
TR0=0;                                                 //关定时器0
TR1=0;                                                 //关定时器1
flag=!flag;
TH1=0x3c;            
TL1=0xB0;
frequence=(TH0*0x100+TL0)/200;
if(flag)
P3=P3|1<<5;
else
P3=P3&(~(1<<5));
TH0=0x00;            
TL0=0x00;
TR1=1;                                                                      // 开定时器1
TR0=1;                                                                      // 开定时器0
EA=1;                                                                      // 开总中断
}

6   系统的模拟及仿真
本次基于单片机的频率计设计是通过Proteus ISIS软件来进行模拟和仿真的。Proteus是目前最好的模拟单片机外围器件的工具,可以仿真51系列、AVR、PIC等常用的MCU及其外围电路(如LCD、RAM、键盘、马达、LED、AD/DA等)。
6.1  Proteus ISIS简介6.1.1  Proteus ISIS的概况简介及特点
Proteus ISIS 是英国Labcenter 公司开发的电路分析与实物仿真软件。它运行于Windows 操作系统上,可以仿真、分析(SPICE)各种模拟器件和集成电路。Proteus 与其它单片机仿真软件不同的是,它不仅能仿真单片机CPU 的工作情况,也能仿真单片机外围电路或没有单片机参与的其它电路的工作情况。因此在仿真和程序调试时,关心的不再是某些语句执行时单片机寄存器和存储器内容的改变,而是从工程的角度直接看程序运行和电路工作的过程和结果。
该软件的特点是:
① 实现了单片机仿真和SPICE 电路仿真相结合。具有模拟电路仿真、数字电路仿真、单片机及其外围电路组成的系统的仿真、RS232 动态仿真、I2C 调试器、SPI 调试器、键盘和LCD 系统仿真的功能;有各种虚拟仪器,如示波器、逻辑分析仪、信号发生器等。
② 支持主流单片机系统的仿真。目前支持的单片机类型有:68000 系列、8051 系列、AVR 系列、PIC12 系列、PIC16 系列、PIC18 系列、Z80 系列、HC11系列以及各种外围芯片。
③ 提供软件调试功能。在硬件仿真系统中具有全速、单步、设置断点等调试功能,同时可以观察各个变量、寄存器等的当前状态,因此在该软件仿真系统中,也必须具有这些功能;同时支持第三方的软件编译和调试环境,如Keil C51 uVision2 等软件。
④ 具有强大的原理图绘制功能。总之,该软件是一款集单片机和SPICE 分析于一身的仿真软件,功能极其强大。
6.1.2  Proteus ISIS的运行概况
1) proteus的工作过程
运行proteus 的ISIS 程序后,进入该仿真软件的主界面。在工作前,要设置view 菜单下的捕捉对齐和system下的颜色、图形界面大小等项目。通过工具栏中的p(从库中选择元件命令)命令,在pick devices 窗口中选择电路所需的元件,放置元件并调整其相对位置,元件参数设置,元器件间连线,编写程序;在source 菜单的Definecode generation tools 菜单命令下,选择程序编译的工具、路径、扩展名等项目;在source 菜单的Add/removesource files 命令下,加入单片机硬件电路的对应程序;通过debug 菜单的相应命令仿真程序和电路的运行情况。
2) Proteus软件所提供的各种资源
Proteus 软件所提供了30 多个元件库,数千种元件。元件涉及到数字和模拟、交流和直流等。
对于一个仿真软件或实验室,测试的仪器仪表的数量、类型和质量,是衡量实验室是否合格的一个关键因素。在Proteus 软件包中,不存在同类仪表使用数量的问题。
Proteus 还提供了一个图形显示功能,可以将线路上变化的信号,以图形的方式实时地显示出来,其作用与示波器相似但功能更多。
Proteus 提供了比较丰富的测试信号用于电路的测试。这些测试信号包括模拟信号和数字信号。
对于单片机硬件电路和软件的调试,Proteus提供了两种方法:一种是系统总体执行效果,一种是对软件的分步调试以看具体的执行情况。
对于总体执行效果的调试方法,只需要执行debug 菜单下的execute 菜单项或F12 快捷键启动执行,用debug菜单下的pause animation 菜单项或pause 键暂停系统的运行;或用debug 菜单下的stop animation菜单项或shift-break 组合键停止系统的运行。其运行方式也可以选择工具栏中的相应工具进行。
对于软件的分步调试,应先执行debug 菜单下的start/restart debugging 菜单项命令,此时可以选择stepover、step into和step out命令执行程序(可以用快捷键F10、F11 和ctrl+F11),执行的效果是单句执行、进入子程序执行和跳出子程序执行。在执行了start / restart debuging命令后,在debug菜单的下面要出现仿真中所涉及到的软件列表和单片机的系统资源等,可供调试时分析和查看。
6.1.3  用Proteus 软件虚拟单片机实验的优点
采用Proteus 仿真软件进行虚拟单片机实验,具有比较明显的优势,其实验实习内容全面、硬件投入少、可自行实验、实验过程中损耗小、与工程实践最为接近等。当然其存在的缺点也是有的。其有点有以下几点:
① 内容全面
② 硬件投入少,经济优势明显
③ 学可自行实验,锻炼解决实际工程问题的能力
④ 实验过程中损耗小,基本没有元器件的损耗问题
⑤ 与工程实践最为接近,可以了解实际问题的解决过程
⑥ 大量的范例,可供参考处理
⑦ 协作能力的培养和锻炼
Proteus不仅可以作为学校单片机(电子等)实验的模拟仿真,也可以作为个人工作室的仿真实验。作为电子技术或控制类相关专业的学生和工程技术人员,在学习了该软件后,可以充分地利用它所提供的资源,帮助自己提高工程应用能力。
6.2  系统的模拟与仿真过程
1) 进入Proteus ISIS
双击桌面上的ISIS 6 Professional 图标或者单击屏幕左下方的“开始”→“程序”→“Proteus 6 Professional” →“ISIS 6 Professional”,出现如图6-1所示屏幕,表明进入Proteus ISIS 集成环境。
图 6-1 运行Proteus ISIS的开始界面
2) 工作界面
Proteus ISIS的工作界面是一种标准的Windows界面,如图6-2所示。包括:标题栏、主菜单、标准工具栏、绘图工具栏、状态栏、对象选择按钮、预览对象方位控制按钮、仿真进程控制按钮、预览窗口、对象选择器窗口、图形编辑窗口。
图6-2 Proteus ISIS的工作界面
3) 在Proteus中进行仿真图的设计和运行
如图6-3,首先单击工作界面右边的对象选择按钮“P”,在弹出的窗口中通过关键字“Keywords”选择仿真图所需要的的器件将其添加到对象选择窗口中。
图6-3 在器件选择窗口中选择所需要的元器件
然后,选择对象选择窗口中已经添加的元器件,将其放到图形编辑窗口中,并进行单片机仿真图的设计。如图6-4和6-5所示,仿真图的核心器件有:AT89S52单片机、74LS00、74LS74、LM016L(LCD) 。
图6-4 在图形编辑窗口中添加元件
图6-5 系统仿真图
其次,在仿真图中双击单片机芯片,在弹出的如图6-6的窗口“Edit Component”中为“Prograom File”选择二进制文件“plj-s52.hex”,该文件为软件设计中由Keil C编译程序所生成的二进制文件。
图6-6 为单片机加载二进制代码
最后,在单片机的属性窗口中为其添加系统时钟频率为3MHZ,则对应的机器周期为250ms。并为信号发生器选择适当的频率为4KHZ,并点击左下角的“Play”按钮进行频率计的软件模拟与仿真。其仿真结果为图6-7所示:
图6-7 频率计的仿真结果
6.3  频率计系统仿真分析
在频率计的软件仿真中为了观察频率计的工作状况和测试系统的工作状态,在频率计的仿真图中添加一个示波器来观察几个重要节点的波形状况。其频率计的仿真测试如图6-8所示。
图6-8 频率计仿真测试图
示波器有四个通道,从上至下依次为通道A、B、C、D。A通道测试系统所测试的频率信号,D通道测试单片机对外围电路的同步信号,C通道测试经过外围电路同步后的测频信号。我们设置频率信号为10KHZ,选择单片机系统时钟信号频率为3MHZ,运行后所得到的测频结果如图6-9所示。
图6-9 频率计测频结果
所测试节点的信号的波形图如图6-10和图6-11所示。
图6-10 所测节点信号的波形图(1)
图6-11所测节点信号的波形图(2)
由波形图中可以看出,当定时器1给出一个信号后,频率信号和定时器信号通过外围同步电路将选通信号送入单片机的定时计数器中进行计数,从而测出所给的频率值。由于所用到的示波器是由软件模拟的,所得到的波形可能和实际波形有很大的误差,这是由于其软件本身缺陷造成的。
图6-11 系统仿真图元件清单
在整个系统的仿真中所用到元件清单如图6-12所示,在频率计仿真图中主要用到了五种元件。其中U1.U2.U2为集成电路元件:U1为单片机AT89S52,U2为3个与非门74LS00,U3为一个锁存器74LS74。还有一个16引脚值为LM016L的液晶显示器LCD用于显示频率值,一个阻值为10K的上拉电阻。其中U2和U3组成仿真图的控制电路,来实现频率信号与单片机测频信号的同步。

结束语
在现代电子技术中频率计作为测量仪器的一种,常称为电子计数器,它的基本功能是测量信号的频率和周期频率计的应用范围很广,它不仅应用于一般的简单仪器测量,而且还广泛应用于教学、科研、高精度仪器测量、工业控制等其它领域。
随着微电子技术和计算机技术的迅速发展,特别是单片机的出现和发展,使传统的电子侧量仪器在原理、功能、精度及自动化水平等方面都发生了巨大的变化,形成一种完全突破传统概念的新一代侧量仪器。频率计广泛采用了高速集成电路和大规模集成电路,使仪器在小型化、耗电、可靠性等方面都发生了重大的变化。单片机是20世纪中期发展起来的一种面向控制的大规模集成电路模块,具有功能强、体积小、可靠性高、价格低廉等特点,在工业控制、数据采集、智能仪表、机电一体化、家用电器等领域得到了广泛的应用,极大的提高了这些领域的技术水平和自动化程度。目前,市场上有各种多功能、高精度、高频率的数字频率计,但价格不菲。为适应实际工作的需要,本次设计给出了一种较小规模和单片机(AT89S52)相结合的频率计的设计方案,不但切实可行,而且体积小、保密性强、设计简单、成本低、精度高、可测频带宽,大大降低了设计成本和实现复杂度。
归纳起来,在整个论文的设计中,首先介绍了频率计的产生背景以及国内外的发展现状,并针对其优缺点提出了进行基于单片机的频率计设计的目的及意义。然后介绍了AT89S52单片机的功能及特点,并针对其特性给出了频率计的设计原理、思路及方法。最后具介绍了进行系统硬件和软件设计以及系统模拟与仿真的具体实现过程。通过系统实现和论文设计的过程,是我对基于单片机的频率计的原理及应用有了更进一步的认识,并且熟练掌握了进行计算机硬件系统设计的一般原理及方法。
通过几个月的努力,即将完成论文,当然由于本人精力和时间有限,本论文中或多或少会存在一些缺点,所设计的软件难免存在一些不足,还恳请各位老师和同学给与批评和指正。

致  谢
光阴似箭、日月如梭,四年的本科学习很快就要过去了,在论文即将完成之际,我衷心的感谢所有指导、关心和帮助我的老师、同学和朋友。
首先感谢我的导师张坤鳌教授!本文的研究工作是在付老师的悉心指导和严格要求下完成的。在课题的研究和论文的写作过程中,张坤鳌老师给了我很多耐心的指导和启发。张老师渊博的学识、严谨的治学态度、敬业的精神和平易近人的态度,给我留下了深刻的印象,在付老师的教导下,我在学习生活方面都得到了很多的进步!他既是良师又是益友,不仅让我学到了专业知识,还让我学到了很多做人的道理,会不断激励着我奋发学习、努力进步。这些都将使我的一生受益匪浅!老师的谆谆教诲将令我终身难忘。在此,请允许我表示我深深的敬意和衷心的感谢。
于此同时,我还要感谢计算机学院的各位老师给我们提供了一次锻炼和学习的机会,感谢我的同学和室友,他们在我的学习和生活中给了我很大的帮助。
最后,我要感谢所有在我论文完成过程中给予了帮助和关心的朋友。
完整的Word格式文档51黑下载地址(含程序):
51单片机1602液晶显示频率计.doc (1.06 MB, 下载次数: 80)



分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏1 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:446009 发表于 2018-12-13 22:09 | 只看该作者
课程设计有需要用的地方
回复

使用道具 举报

板凳
ID:342942 发表于 2019-5-21 08:23 来自手机 | 只看该作者
有没有完整的仿真和程序啊
回复

使用道具 举报

地板
ID:785393 发表于 2020-6-20 22:15 | 只看该作者
利用单片机完成频率发生和频率测定功能,使用数码管显示发生的频率,和使用1602显示测定的频率啊。
回复

使用道具 举报

5#
ID:783473 发表于 2020-6-20 23:58 | 只看该作者
楼主很棒,谢谢楼主!!!!!!
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表