搜索
您的当前位置:首页正文

频率信号的测量与显示(定稿版01)

来源:六九路网
2013届湖北汽车工业学院科技学院毕业设计(论文)

摘 要

频率测量是电子学测量中最为基本的测量之一。等精度频率计主要是由信号输入和调理电路、单片机模块、门控电路及显示电路模块组成。AT89S52单片机是频率计的控制核心,来完成它待测信号的计数,译码,显示以及对分频比的控制。利用它内部的定时/计数器完成待测信号频率的测量。

在整个设计过程中,所制作的频率计采用外部分频,实现1Hz~1MHz的频率测量,而且可以实现高精度的测量结果。以AT89S52单片机为核心,通过单片机内部定时/计数器的门控时间,方便对频率计的测量。其待测频率值使用液晶屏1602显示,可以显示4位整数和5为小数,单位默认为Hz。本次采用单片机技术设计一种数字显示的频率计,具有测量准确度高,响应速度快,体积小等优点。

关键词:频率计;单片机;计数器

2013届湖北汽车工业学院科技学院毕业设计(论文)

Abstract

Frequency measurement is the most basic measurement in Electronic field. A simple frequency meter mainly by the signal input and amplifying circuit, micro-controller module, sub-frequency circuit module and display module. AT89S52 MCU is the control core frequency of dollars to complete its count of the signal under test, decoding, display and control of the frequency division ratio. Using its internal timer or counter to complete the signal of the under test cycle / frequency of measurement.

Throughout the design process, periodic measurement of the frequency meter application and the corresponding mathematical treatment to achieve 10Hz ~ 2MHz frequency measurements, and can automatically switch the flow to achieve scale. To the core of AT89S52 micro-controller, with the MCU internal timer / counter gate time, it can be easier for frequency measurement. The use of microcomputer technology to design a digital display of frequency meter, have a measurement of high accuracy, fast response, small size and so on.

Key words: Frequency meter; single chip; counter

2013届湖北汽车工业学院科技学院毕业设计(论文)

目 录

第一章 前 言 ............................................................. 1 1.1频率计概述 ........................................................... 1 1.2频率计发展与应用 ..................................................... 1 1.3频率计设计内容 ....................................................... 1 第二章 系统总体方案设计 .................................................. 3 2.1频率测量方法 ......................................................... 3 2.2等精度测频的原理 ..................................................... 4 2.3具体模块 ............................................................. 5 第三章 硬件电路具体设计 .................................................. 7 3.1 单片机最小系统 ...................................................... 7 3.1.1 MCS-51单片机概述 ................................................. 7 3.1.2 MCS-51单片机内部结构框图 ......................................... 8 3.1.3 MCS-51单片机引脚说明 ............................................. 9 3.1.4 MCS-51单片机存储器 .............................................. 11 3.1.5 MCS-51单片机中断系统 ............................................ 12 3.2 最小系统构成 ....................................................... 16 3.2.1 复位电路 ........................................................ 16 3.2.2 时钟电路 ........................................................ 17 3.2.3 引脚功能 ........................................................ 18 3.2.4 单片机引脚分配 .................................................. 20 3.3 电源模块 ........................................................... 21 3.3.1 直流稳压电源的基本原理 .......................................... 21 3.3.2 电源电路设计 .................................................... 23 3.4调理电路 ............................................................ 23 3.4.1 调理电路简介 .................................................... 23 3.4.2 调理电路原理 .................................................... 24 3.4.3 调理电路调理结果 ................................................ 25 3.5 门控模块 ........................................................... 26 3.5.1 74LS04芯片介绍 .................................................. 26

2013届湖北汽车工业学院科技学院毕业设计(论文)

3.6 显示模块 ........................................................... 27 3.6.1 LCD1602简介 ..................................................... 27 3.6.2 LCD1602接口应用 ................................................. 29 3.6.3 LCD的指令说明 ................................................... 29 3.6.4 1602显示电路 .................................................... 30 第四章 系统的软件设计 ................................................... 31 4.1 软件模块设计 ....................................................... 31 4.2门控电路软件设计 .................................................... 33 4.3 显示子程序 ......................................................... 34 4.4 应用软件简介 ....................................................... 36 4.4.1 Keil简介 ........................................................ 36 4.4.2 Protues简介 ..................................................... 37 第五章 等精度频率计的系统调试 ........................................... 39 5.1 硬件调试 ........................................................... 39 5.1.1 电源模块调试 .................................................... 39 5.1.2整形模块调试 ..................................................... 39 5.2软件调试 ............................................................ 39 5.2.1 Proteus软件调试 ................................................. 40 5.2.2 功能调试 ........................................................ 41 5.3系统调试 ............................................................ 42 5.3.1 系统软件调试 .................................................... 42 5.3.2 系统软硬件调试 .................................................. 43 5.4 误差分析 ........................................................... 43 第六章 总结 ............................................................. 45 致 谢 .................................................................. 46 参考文献 ................................................................ 47 附 录 ................................................................... 48

2013届湖北汽车工业学院科技学院毕业设计(论文)

第一章 前 言

频率测量是电子学测量中最为基本的测量之一。由于频率信号抗干扰性强,易于传输,因此可以获得较高的测量精度。随着数字电子技术的发展,频率测量成为一项越来越普遍的工作,测频原理和测频方法的研究正受到越来越多的关注。

1.1频率计概述

数字频率计是计算机、通讯设备、音频视频等科研生产领域不可缺少的测量仪器。它是一种用十进制数字显示被测信号频率的数字测量仪器。它的基本功能是测量正弦信号、方波信号及其他各种单位时间内变化的物理量。在进行模拟、数字电路的设计、安装、调试过程中,由于其使用十进制数显示,测量迅速,精确度高,显示直观,经常要用到频率计。传统的频率计采用测频法测量频率,通常由组合电路和时序电路等大量的硬件电路组成,产品不但体积大,运行速度慢而且测量低频信号不准确。本次采用单片机技术设计一种数字显示的频率计,测量准确度高,响应速度快,体积小。

1.2频率计发展与应用

在我国,单片机已不是一个陌生的名词,它的出现是近代计算机技术的里程碑事件。单片机作为最为典型的嵌入式系统,它的成功应用推动了嵌入式系统的发展。单片机已成为电子系统的中最普遍的应用。单片机作为微型计算机的一个重要分支,其应用范围很广,发展也很快,它已成为在现代电子技术、计算机应用、网络、通信、自动控制与计量测试、数据采集与信号处理等技术中日益普及的一项新兴技术,应用范围十分广泛。其中以AT89S52为内核的单片机系列目前在世界上生产量最大,派生产品最多,基本可以满足大多数用户的需要。

1.3频率计设计内容

利用电源、单片机、分频电路及数码管显示等模块,设计一个简易的频率计能够粗

1

2013届湖北汽车工业学院科技学院毕业设计(论文)

略的测量出被测信号的频率。 参数要求如下:

1.测量范围1HZ—1MHZ;

2.用液晶显示屏1602显示测量值; 3.能根据输入信号自动切换量程;

4.可以测量方波、三角波及正弦波等多种波形。

2

2013届湖北汽车工业学院科技学院毕业设计(论文)

第二章 系统总体方案设计

2.1频率测量方法

测频方法有“周期法”和“频率法”。用单片机电子计数法测量频率有测频率法和测周期法两种方法。测量频率主要是在单位定时时间里对被测信号脉冲进行计数。

其原理如图2.1所示:

图2.1 测量频率原理图

测量周期则是在被测信号一个周期时间里对某一基准时钟脉冲进行计数。电子计数器测频法主要是将被测频率信号加到计数器的计数输入端,然后让计数器在标准时间Ts1内进行计数,所得的计数值N1。而电子计数器测周法则是将标准频率信号fs2送到计数器的计数输入端,而让被测频率信号fx2控制计数器的计数时间,所得的计数值N2与fx2的关系如下:

fx2fs2N2 (2.1)

事实上,无论用哪种方法进行频率测量,其主要误差源都是由于计数器只能进行整数计数而引起的±1误差:

N1N (2.2)

对于测频法,有:

fs1N111 1N1N1Ts1fx1fx1对于测周法,则有:

(2.3)

fs2N21Ts2fx2 (2.4)

1N2N2fx2

3

2013届湖北汽车工业学院科技学院毕业设计(论文)

可见,在同样的Ts下,测频法fx1的低频端,误差远大于高频端而测周法;在fx2的高频端,其误差远大于低频端。理论研究表明,如进行n次重复测量然后取平均,则±1误差会减小n倍。如给定±1误差ε0,则要求ε≤ε0。对测频法要fx1≥

fx10,对测周

法则要求fx2≤ε0fs2。因此,对一给定频率信号fs进行测量时,用测频法fs1越低越好,用测周法则fs2越高越好。

2.2等精度测频的原理

等精度频率计的测量原理如图2.2所示:

fx输入通道同部门控制主门1计数器1T0P0P1.2液晶显示时基信号f0主门2计数器2T1P1.1P1.0

图2.2 等精度频率计测量原理图

基于传统测频原理的频率计的测量精度将随被测信号频率的变化而变化。传统的直接测频法其测量精度将随被测信号频率的降低而降低,测周法的测量精度将随被测信号频率的升高而降低,在实用中有较大的局限性,而等精度频率计不但具有较高的测量精度,而且在整个频率区域能保持恒定的测试精度。

等精度频率的测量原理图2.2 所示。频率为fx 的被测信号经通道滤波、放大、整形后输入到同步门控制电路和主门1(闸门),晶体振荡器的输出信号作为标准信号(时基信号)输入到主门2。被测信号在同步控制门的作用下,产生一个与被测信号同步的闸门信号,被测信号与标准信号(时基信号)在同步门控制信号的控制下。在同步门打开时通过同步门分别输入到事件计数器和时间计数器的信号输入端,计数器开始计数。同步门关闭时信号不能通过主门,计数器停止计数,单片机发出命令读入计数器的数值,并进行数据处理,将处理后的结果送显示。

4

2013届湖北汽车工业学院科技学院毕业设计(论文)

等精度频率测量方法是采用多周期同步测量。如图2.2的测量原理图所示,由单片机发出预置门控信号GATE,GATE的时间宽度对测频精度影响较少,可以在较大的范围内选择,即在高频段时,闸门时间较短;低频时闸门时间较长。实现了全范围等精度测量,减少了低频测量的误差。

在同步门的控制下,一方面保证了被测信号和时基信号的同步测量;另一方面在同步门打开后计数器并不是马上计数,而是在被测信号的下一个上升沿开始计数,同步门关闭后计数器也不是马上停止计数,而是在被测信号的下一个上升沿停止计数。即在实际闸门时间计数,从而提高了测量精度。由于采用D触发器实现的同步门的同步作用,事件计数器所记录的Nx值已不存在误差的影响,但由于时钟信号与闸门的开和关无确定的相位关系,时间计数器所记录的N0的值仍存在±1误差的影响,只是由于时钟频率很高,误差的影响很小。所以在全频段的测量精度是均衡的,从而实现等精度频率测量。

2.3具体模块

根据上述系统分析,频率计系统设计共包括五大模块:单片机控制模块、电源模块、放大整形模块、分频模块及显示模块。各模块作用如下: 1、单片机控制模块

以AT89S52单片机为控制核心,来完成它待测信号的计数、译码,和显示以及对分频比的控制。利用其内部的定时/计数器完成待测信号周期/频率的测量。单片机AT89S52内部具有2个16位定时/计数器,定时/计数器的工作可以由编程来实现定时、计数和产生计数溢出时中断要求的功能。(因为AT89C51所需外围元件少,扩展性强,测试准确度高。) 2、电源模块

为整个系统提供合适又稳定的电源,主要为单片机、信号调理电路以及分频电路提供电源,电压要求稳定、噪声小及性价高的电源。 3、门控模块

通过门控电路,控制单片机的定时器硬件启动和停止,以达到准确的计时。 4、显示模块

显示电路采用液晶显示屏1602作为显示,可以显示数字、字符和符号等,显示丰富,可以达到理想的要求。

5

2013届湖北汽车工业学院科技学院毕业设计(论文)

综合以上频率计系统设计有单片机控制模块、电源模块、调理电路、门控模块及显示模块等组成,频率计的总体设计框图如图2.3所示:

调整电路门控电路单片机系统显示电路图2.3 频率计总体设计框图

6

电源

2013届湖北汽车工业学院科技学院毕业设计(论文)

第三章 硬件电路具体设计

根据系统设计的要求,频率计实际需要设计的硬件系统主要包括以下几个部分:AT89S52单片机最小系统模块、电源模块、调理电路、门控模块及显示模块,下面将分别给予介绍。

3.1 单片机最小系统

单片机是微型计算机的一个分支,由硬件系统和软件系统组成。单片机是将CPU、存储器(RAM和ROM)、定时器/计数器以及I/O接口等主要部件集成在一个芯片上的微型计算机。

3.1.1 MCS-51单片机概述

MCS-51单片机是对所有兼容Intel 8031指令系统的单片机的统称。该系列单片机的始祖是Intel的8031单片机,后来随着Flash rom技术的发展,8031单片机取得了长足的进展,成为应用最广泛的8位单片机之一,其代表型号是ATMEL公司的AT89系列,它广泛应用于工业测控系统之中。很多公司都有51系列的兼容机型推出,今后很长的一段时间内将占有大量市场。本系统使用的AT89C52是美国ATMEL公司生产的高性能CMOS8位,低电压的单片机。片内含256bytes的随机存储数据存储器(ROM)和8kbytes的可反复擦写的只读程序存储器(PEROM),器件采用ATMEL公司的非易失性存储,高密度技术进行生产,与8052产品引脚及标准MCS-51指令系统兼容,片内置Flash存储单元和通用8位中央处理器(CPU),在较为复杂的控制应用场合,功能强大的AT89C52单片机得到了广泛应用。

其结构、功能主要有以下特点: ● 1000次擦写周期; ● 全静态操作:0Hz-24MHz;

● 与MCS-51产品指令和引脚完全兼容; ● 8k字节可重复擦写Flash闪速存储器;

7

2013届湖北汽车工业学院科技学院毕业设计(论文)

● 32个可编程I/O口线; ● 可编程串行UART通道; ● 低功耗空闲和掉电模式; ● 3个16位定时/计数器; ● 6个中断源 。

3.1.2 MCS-51单片机内部结构框图

8051单片机52系列内部集成了中央处理器(CPU)、8KB程序存储器(ROM),256KB数据存储器(RAM),256B特殊功能寄存器(SFR)、3个16位的定时器/计数器(T0、T1和T2)、4个8位的并行I/O端口(P0、P1、P2、P3)、1个串口和6个外部中断等。它们是通过片内单一总线连接起来的。如下图3.1所示为8051单片机功能方框图。

图3.1 8051单片机功能方框图

为了进一步阐述各部分的功能及其关系,图3.2给出了8051单片机内部更详细的逻辑结构图。

8

2013届湖北汽车工业学院科技学院毕业设计(论文)

图3.2 8051单片机内部逻辑结构图

3.1.3 MCS-51单片机引脚说明

双列直插式封装(DIP)的8051单片机有40条引脚。除了DIP封装外,还有其它封装格式,如TQFP、PLCC等。

3.1.3.1 MCS-51引脚图

其引脚图及逻辑符号如图3.3所示:

9

2013届湖北汽车工业学院科技学院毕业设计(论文)

图3.3 8051单片机引脚图及逻辑符号

3.1.3.2 MCS-51引脚功能

40个引脚按引脚功能大致可分为4个种类:电源、时钟、控制和I/O引脚。 1.电源:

(1)VCC - 芯片电源,接+5V (2)VSS - 接地端

2.时钟:XTAL1、XTAL2 - 晶体振荡电路反相输入端和输出端 3.控制线:控制线共有4根

(1)ALE/PROG:地址锁存允许/片内EPROM编程脉冲 ① ALE功能:用来锁存P0口送出的低8位地址

② PROG功能:片内有EPROM的芯片,在EPROM编程期间,此引脚输入编程脉冲。 (2)PSEN:外ROM读选通信号 (3)RST/VPD:复位/备用电源

① RST(Reset)功能:复位信号输入端 ② VPD功能:在Vcc掉电情况下,接备用电源 (4)EA/Vpp:内外ROM选择/片内EPROM编程电源 ① EA功能:内外ROM选择端

10

2013届湖北汽车工业学院科技学院毕业设计(论文)

② Vpp功能:片内有EPROM的芯片,在EPROM编程期间,施加编程电源Vpp 4.I/O端口:80C51共有4个8位并行I/O端口:P0、P1、P2、P3口,共32个引脚。 (1)P0口有三个功能:

①外部扩展存储器时,当数据总线。 ②外部扩展存储器时,当地址总线。

不扩展时,可做一般的I/O使用,但内部没有上拉电阻,做为输入输出时应在外部接上上拉电阻。

(2)P1口只做I/0口使用,其内部有上拉电阻。 (3)P2口有两个功能:

① 扩展外部存储器时,当作地址总线使用。 ② 做一般I/O口使用时,其内部有上拉电阻。 (4)P3口也有两个功能:

①除了作为I/O使用外(其内部有上拉电阻),还有一些特殊功能,由特殊寄存器来设置。

②有内部EPROM的单片机芯片,为写入程序需提供专门的编程脉冲和编程电源,这些信号也是由信号引脚的形式提供的。

3.1.4 MCS-51单片机存储器

MCS-51单片机的存储器结构有两个重要特点:一是把数据存储器和程序存储器严格分开;二是存储器有内外之分,其地址空间、存取指令和控制信号均有区别。 1. 存储器物理结构

MCS-51单片机在物理结构上有四个存储空间: (1)片内程序存储器 (2)片外程序存储器 (3)片内数据存储器 (4)片外数据存储器 2. 存储器逻辑结构

MCS-51单片机在逻辑上,即从用户的角度上8051单片机有三个存储空间: (1)片内外统一编址的64K的程序存储器地址空间(MOVC)

11

2013届湖北汽车工业学院科技学院毕业设计(论文)

(2)256B的片内数据存储器的地址空间(MOV)

(3)以及64K片外数据存储器的地址空间(MOVX) 在访问三个不同的逻辑空间时,应采用不同形式的指令(具体我们在后面的指令系统学习时将会讲解),以产生不同的存储器空间的选通信号。 3. 程序内存ROM

寻址范围:0000H ~ FFFFH 容量64KB EA = 1,寻址内部ROM;EA = 0,寻址外部ROM 地址长度:16位 作用:存放程序及程序运行时所需的常数。

七个具有特殊含义的单元是: 0000H —— 系统复位,PC指向此处 0003H —— 外部中断0入口 000BH —— T0溢出中断入口 0013H —— 外中断1入口

001BH —— T1溢出中断入口0023H —— 串口中断入口 002BH —— T2溢出中断入口 4. 内部数据存储器RAM

物理上分为两大区:00H ~ 7FH即128B的RAM 空间和80H~FFH即128B的特殊功能寄存器( SFR)。两者连续不重叠。但为了加以区别,内部RAM通常指00H~7FH的是低128B空间。

51子系列单片机内RAM(00H~7FH)又可分为3个物理空间:工作寄存器区、位寻址区和数据缓冲区。

3.1.5 MCS-51单片机中断系统

中断系统是为使CPU具有对单片机内部或外部随机发生的事件进行实时处理而设置的。MCS-51单片机片内的中断系统能大大提高处理内部或外部突发事件的能力,化解快速的CPU和慢速的外设之间的矛盾。 1. 中断系统结构

MCS-51系列单片机中不同型号芯片的中断源数量是不同的,最基本的8051单片机有5个中断源,分别是INTO、INT1、TO、Tl和串口。中断源分为两个中断优先权级别,可以实现两级中断服务程序嵌套。每一个中断源可以编程为高优先权级别或低优先

12

2013届湖北汽车工业学院科技学院毕业设计(论文)

权级别中断,允许或禁止向CPU请求中断。其基本结构框图如图3.4所示:

自然优先级高级中断请求PCINT0IT0=0IT0=1T0IT1=0IT1=1T1TXRX1TCONIE0IEIPPX010PT010PX110PT110PS10EX0TF0EX0矢量地址INT1IE1EX1TF1TIRISCON中断标志≥1ET1ES源允许EA总允许优先级自然优先级矢量地址硬件查询低级中断请求PC

图3.4 MCS-51系列单片机中断系统内部结构图

2. 中断控制

由图3.4可知,所有的中断源都要产生相应的中断请求标志,这些标志分别放在特殊功能寄存器TCON和SCON的相关位。每一个中断源的请求信号需经过中断允许IE和中断优先权选择IP的控制才能够得到单片机的响应。

MCS-51系列单片机有5个中断源,它们是外部中断INTO(P3.2)、INTI(P3.3);定时器计数器T0、Tl溢出中断;串行口的发送(TXD)和接收(RXD)中断源(只占1个中断源)。外部中断的中断请求标志位和T0、Tl的溢出中断请求标志位锁存在定时器/计数器控制寄存器TCON中,而串行口对应的中断请求标志位锁存在串行口控制寄存器SCON中。 (1)中断控制位:在中断源与CPU之间有一级控制,类似开关,其中第一级为一个总开关,第二级为五个分开关,由IE控制。

EA:总控制位

ES: 串口控制位 ET1:T1中断控制位 EX1:INT1控制位 ET0:T0中断控制位 EX0:INT0控制位

(2)中断优先级:5个中断源分成高级低级两个级别,高级优先,由IP控制。

13

2013届湖北汽车工业学院科技学院毕业设计(论文)

以上各位与IE的低五位相对应,为“1”时为高级。初始化编程时,由软件确定。

对于同级中断源系统默认的优先级顺序如下:外部中断0>定时器/计数器0>外部中断1>定时器/计数器1>串行口中断

(3)中断请求标志:INT0、INT1、T0、T1中断请求标志放在TCON中,串行中断请求标志放在SCON中。TCON的结构、位名称、位地址和功能如下表3.1:

表3.1 TCON

TCON 位名称 位地址 功能

D7 TF1 8FH T中断

标志

D6 TR1 8EH T1启动位

D5 TF0 8DH T0中断标志

D4 TR0 8CH T0启动位

D3 IE1 8BH

D2 IT1 8AH

D1 IE0 89H

D0 IT0 88H

INT1中INT1触INT0中INT0触断标志 发方式 断标志 发标志

① TCON.7 TF1:定时器1的溢出中断标志。T1被启动计数后,从初值做加1计数,计满溢出后由硬件置位TF1,同时向CPU发出中断请求,此标志一直保持到CPU响应中断后才由硬件自动清0。也可由软件查询该标志,并由软件清0。 ②TCON.5 TF0:定时器0溢出中断标志。其操作功能与TF1相同。 ③TCON.3 IE1:中断标志。IE1 = 1,外部中断1向CPU申请中断。

④TCON.2 IT1:中断触发方式控制位。当IT1 = 0时,外部中断1控制为电平触发方式。在这种方式下,CPU在每个机器周期的S5P2期间对(P3.3)引脚采样,若为低电平,则认为有中断申请,随即使IE1标志置位;若为高电平,则认为无中断申请,或中断申请已撤除,随即使IE1标志复位。在电平触发方式中,CPU响应中断后不能由硬件自动清除IE1标志,也不能由软件清除IE1标志,所以,在中断返回之前必须撤消引脚上的低电平,否则将再次中断导致出错。

⑤TCON.1 IE0:中断标志。其操作功能与IE1相同。

⑥TCON.0 IT0:中断触发方式控制位。其操作功能与IT1相同。

(4)中断处理过程:中断处理过程大致可分为四步:中断请求、中断响应、中断服务、中断返回。其过程如图3.5所示:

14

2013届湖北汽车工业学院科技学院毕业设计(论文)

关中断中断源发终端申请保护现场中断响应条件满足YY中断受阻N把PC断点地址压入堆栈开中断中断服务关中断恢复现场开中断相应中断源的中端入口地址送入PC中断返回断点地址由堆栈弹入PC 图3.5 MCS-51单片机中断处理过程

(1)中断请求

中断源发出中断请求信号,相应的中断请求标志位(在中断允许控制寄存器IE中)置“1”。 (2)中断响应

CPU查询(检测)到某中断标志为“1”,在满足中断响应条件下,响应中断。中断响应条件:

① 该中断已经“开中”;

② CPU此时没有响应同级或更高级的中断; ③ 当前正处于所执行指令的最后一个机器周期;

④ 正在执行的指令不是RETI或者是访向IE、IP的指令,否则必须再另外执行一条指令后才能响应。

CPU响应中断后,进行下列操作: ① 保护断点地址;

② 撤除该中断源的中断请求标志; ③ 关闭同级中断;

④ 将相应中断的入口地址送入PC;

80C51五个中断入口地址: INT0:0003H; T0:000BH;

15

2013届湖北汽车工业学院科技学院毕业设计(论文)

INT1:0013H T1:001BH; 串行口:0023H (3)执行中断服务程序

中断服务程序应包含以下几部分: ① 保护现场

② 执行中断服务程序主体,完成相应操作 ③ 恢复现场 (4)中断返回

在中断服务程序最后,必须安排一条中断返回指令RETI,当CPU执行RETI指令后,自动完成下列操作:

① 恢复断点地址。

② 开放同级中断,以便允许同级中断源请求中断。

3.2 最小系统构成

3.2.1 复位电路

复位电路和时钟电路是维持单片机最小系统运行的基本模块。复位电路通常分为两种:上电复位(图3.6)和手动复位(图3.7)。

图3.6 上电复位 图3.7 手动复位

有时系统在运行过程中出现程序跑飞的情况,在程序开发过程中,经常需要手动复位。所以本次设计选用手动复位。

16

2013届湖北汽车工业学院科技学院毕业设计(论文)

3.2.2 时钟电路

单片机内部具有一个高增益反相放大器,用于构成振荡器通常在引脚XTALl和XTAL2跨接石英晶体和两个补偿电容构成自激振荡器,结构如图3.8中Y1,C16,C17。可以根据情况选择6MHz,2MHz或24MHz等频率的石英晶体,补偿电容通常选择30pF左右的瓷片电容。

图3.8 时钟电路

高频率的时钟有利于程序更快的运行,也有可以实现更高的信号采样率,从而实现更多的功能[6]。但是告诉对系统要求较高,而且功耗大,运行环境苛刻。考虑到单片机本身用在控制,并非高速信号采样处理,所以选取合适的频率即可。合适频率的晶振对于选频信号强度准确度都有好处,本次设计选取12.000M无源晶振接入XTAL1和XTAL2引脚,并联2个30pF陶瓷电容帮助起振。AT89S52单片机最小系统如图3.9所示:

17

2013届湖北汽车工业学院科技学院毕业设计(论文)

图3.9 单片机最小系统原理图

3.2.3 引脚功能

VCC:电源电压; GND:地;

P0口:P0口是一个8位漏极开路的双向I/O口。作为输出口,每位能驱动8个TTL逻辑电平。对P0端口写“1”时,引脚用作高阻抗输入。当访问外部程序和数据存储器时,P0口也被作为低8位地址/数据复用。在这种模式下,P0具有内部上拉电阻。在 flash编程时,P0口用来接收指令字节;在程序校验时,输出指令字节。程序校验时,需要外部上拉电阻[7]。

P1口:P1口是一个具有内部上拉电阻的8位双向I/O口,P1 输出缓冲器能驱动4个TTL 逻辑电平。对 P1 端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流。

此外,P1.0和P1.2分别作定时器/计数器2的外部计数输入和定时器/计数器2的触发输入,P1口功能具体如表1所示。在flash编程和校验时,P1口接收低8位地址字节。

18

2013届湖北汽车工业学院科技学院毕业设计(论文)

表3.2 P1口的第二种功能说明表

引脚号 P1.0 P1.1 P1.5 P1.6 P1.7

第二功能

T2(定时器/计数器T2的外部计数输入),时钟输出 T2EX(定时器/计数器T2的捕捉/重载触发信号和方向控制)

MOSI(在系统编程用) MISO(在系统编程用) SCK(在系统编程用)

P2口:P2口是一个具有内部上拉电阻的8位双向I/O口,P2输出缓冲器能驱动4 个TTL逻辑电平。对P2端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流。在访问外部程序存储器或用16位地址读取外部数据存储器时,P2口送出高八位地址。在这种应用中,P2口使用很强的内部上拉发送1。在使用8位地址访问外部数据存储器时,P2口输出P2锁存器的内容。在flash编程和校验时,P2口也接收高8位地址字节和一些控制信号。

P3口:P3口是一个具有内部上拉电阻的8位双向I/O口,P2输出缓冲器能驱动4个TTL逻辑电平。对P3端口写“1”时,内部上拉电阻把端口拉高,此时可以作为输入口使用。作为输入使用时,被外部拉低的引脚由于内部电阻的原因,将输出电流。P3口亦作为AT89C51特殊功能(第二功能)使用,P3口功能如表3.3所示。在flash编程和校验时,P3口也接收一些控制信号。

19

2013届湖北汽车工业学院科技学院毕业设计(论文)

表3.3 P3口的第二种功能说明表

引脚号 P3.0 P3.1 P3.2

第二功能 RXD(串行输入) TXD (串行输出)

INT0(外部中断0)

P3.3

(外部中断1)

P3.4 P3.5 P3.6

T0(定时器0外部输入) T1(定时器1外部输入)

WR(外部数据存储器写选通) RD(外部数据存储器写选通)

P3.7

RST:复位输入。晶振工作时,RST脚持续2个机器周期高电平将使单片机复位。看门狗计时完成后,RST 脚输出96个晶振周期的高电平。特殊寄存器 AUXR(地址8EH)上的DISRTO位可以使此功能无效。DISRTO默认状态下,复位高电平有效。

XTAL1:振荡器反相放大器和内部时钟发生电路的输入端。 XTAL2:振荡器反相放大器的输出端。

3.2.4 单片机引脚分配

根据系统设计及各模块的分析得出,单片机的引脚分配如表3.4所示:

20

2013届湖北汽车工业学院科技学院毕业设计(论文)

表 3.4 单片机端口分配表

模 块 端口 功能

P0.0-P0.7

显示模块

P1.0-P1.2 P1.3 P1.4

门控模块

P3.5

液晶显示数据端口

液晶显示控制位 触发器D端 触发器复位端 硬启动定时器

P3.2 触发中断/计数完成标志

3.3 电源模块

3.3.1 直流稳压电源的基本原理

直流稳压电源一般由电源变压器T、整流、滤波及稳压电路所组成[8],基本框图如图3.10所示:

图3.10 直流稳压电源框图及波形

1.电源变压器T的作用是将220V的交流电压变换成整流滤波电路所需要的交流电压Ui。变压器副边与原边的功率比为P2/P1=n,式中n是变压器的效率。

2.整流电路:整流电路将交流电压Ui变换成脉动的直流电压。再经滤波电路滤除较大的波纹成分,输出波纹较小的直流电压U1。常用的整流滤波电路有全波整流滤波、桥式整流滤波等。

21

2013届湖北汽车工业学院科技学院毕业设计(论文)

图3.11 整流电路

3.滤波电路:各滤波电路C满足RL-C=(3~5)T/2,式中T为输入交流信号周期,RL为整流滤波电路的等效负载电阻。

图3.12 滤波电路

4.稳压电路:常用的稳压电路有两种形式:一是稳压管稳压电路,二是串联型稳压电路。二者的工作原理有所不同。稳压管稳压电路其工作原理是利用稳压管两端的电压稍有变化,会引起其电流有较大变化这一特点,通过调节与稳压管串联的限流电阻上的压降来达到稳定输出电压的目的。它一般适用于负载电流变化较小的场合。串联型稳压电路是利用电压串联负反馈的原理来调节输出电压的。集成稳压电源事实上是串联稳压电源的集成化。

22

2013届湖北汽车工业学院科技学院毕业设计(论文)

3.3.2 电源电路设计

根据上述介绍设计,电源电路包括变压器、整流电路、滤波电路、稳压电路等模块组成,使用LED进行电源工作状态指示。LM78XX系列三端稳压IC来组成稳压电源所需的外围元件极少[9],电路内部还有过流、过热及调整管的保护电路,使用起来可靠、方便,而且价格便宜,因此使用LM7805稳压芯片进行5V的电源电路设计。具体的5V电源电路如下图3.13所示。

图3.13 5V直流电源电路

3.4调理电路

3.4.1 调理电路简介

由于输入的信号可以是正弦波,三角波。而后面的闸门或计数电路要求被测信号为矩形波,所以需要设计一个整形电路则在测量的时候,首先通过整形电路将正弦波或者三角波转化成矩形波,这里使用由门电路组成的信号调理电路。

施密特触发器是一种特殊的门电路,与普通的门电路不同,施密特触发器有两个阈值电压,分别称为正向阈值电压和负向阈值电压。

在输入信号从低电平上升到高电平的过程中使电路状态发生变化的输入电压称为正向阈值电压(Vt+)。

在输入信号从高电平下降到低电平的过程中使电路状态发生变化的输入电压称为负向阈值电压((Vt-)。正向阈值电压与负向阈值电压之差称为回差电压(ΔVt)。

23

2013届湖北汽车工业学院科技学院毕业设计(论文)

3.4.2 调理电路原理

普通门电路的电压传输特性曲线是单调的,施密特触发器的电压传输特性曲线则是滞回的,如图3.14所示:

图3.14 整形电路

因为CMOS门的输入电阻很高,所以Vth的输入端可以近似的看成开路。把叠加原理应用到R1和R2构成的串联电路上,我们可以推导出这个电路的正向阈值电压和负向阈值电压。

当Vi=0时,Vo=0。

当Vi从0逐渐上升到Vt+时,Vi`从0上升到Vth,电路的状态将发生变化。我们考虑电路状态即将发生变化那一时刻的情况。因为此时电路状态尚未发生变化,所以Vo仍然为0,Vi` = Vth = Vi * R2 /(R1+R2) = Vt+ * R2/(R1+R2),于是,Vt+ = (1+ R1/R2)。与此类似,当Vi = Vdd时,Vo = Vdd。

当Vi从Vdd逐渐下降到Vt-时,Vi`从Vdd下降到Vth,电路的状态将发生变化。我们考虑电路状态即将发生变化那一时刻的情况。因为此时电路状态尚未发生变化,所以Vo仍然为Vdd = 2Vth,Vi` = Vth = R2*Vi/(R1+R2)+Vo*R1/(R1+R2)= R2*Vt- /(R1+R2)+2Vth*R1/(R1+R2),于是,VT- = (1-R1/R2)Vth。

24

2013届湖北汽车工业学院科技学院毕业设计(论文)

通过调节R1或R2,可以调节正向阈值电压和反向阈值电压。不过,这个电路有一个约束条件,就是R1R2,那么,我们有Vt+ > 2Vth = vdd及Vt- <0,这说明,即使Vi上升到Vdd或下降到0,电路的状态也不会发生变化,电路处于“自锁状态”,不能正常工作。

3.4.3 调理电路调理结果

利用施密特触发器可以将非矩形波变换成矩形波:

图3.15

利用施密特触发器可以恢复波形:

图3.16

利用施密特触发器可以进行脉冲鉴幅:

25

2013届湖北汽车工业学院科技学院毕业设计(论文)

图3.17

3.5 门控模块

门控电路可以根据被测信号的频率调整计数时间宽度,使计数开始到结束这段时间一定是被测信号的整数个周期,提高了精度,实现单片机的等精度测频。其电路原理图如下图3.18所示:

图3.18 门控模块

3.5.1 74LS04芯片介绍

74LS04为带预置和清除端的两组D 型触发器,共有54/7474、54/74H74、54/74S74、54/74LS74 四种线路结构形式,它为双上升沿D触发器(有预置、清除端)

其主要电特性的典型值如下:

表3.5 74LS04电特性

型号 5474/7474

54H74/74H74 54S74/74S74 54LS74/74LS74

fmax 25MHZ 43MHZ 110MHZ 33MHZ

PD 85mW 150mw 150mW 20mW

引出端符号 1CP、2CP 时钟输入端

26

2013届湖北汽车工业学院科技学院毕业设计(论文)

1D、2D 数据输入端 1Q、2Q、1Q、2Q输出端

CLR1、CLR2 直接复位端(低电平有效) PR1、PR2 直接置位端(低电平有效) 逻辑图:

图3.19

3.6 显示模块

3.6.1 LCD1602简介

在日常生活中,我们对液晶显示器并不陌生。液晶显示模块已作为很多电子产品的通过器件,如在计算器、万用表、电子表及很多家用电子产品中都可以看到,显示的主要是数字、专用符号和图形。在单片机的人机交流界面中,一般的输出方式有以下几种:发光管、LED数码管、液晶显示器。如图3.20所示:

图3.20 LCD1602实物介绍图

液晶显示器的功能介绍: 1.液晶显示原理

27

2013届湖北汽车工业学院科技学院毕业设计(论文)

液晶显示的原理是利用液晶的物理特性,通过电压对其显示区域进行控制,有电就有显示,这样即可以显示出图形。液晶显示器具有厚度薄、适用于大规模集成电路直接驱动、易于实现全彩色显示的特点,目前已经被广泛应用在便携式电脑、数字摄像机、PDA移动通信工具等众多领域。 2.液晶显示器的分类

液晶显示的分类方法有很多种,通常可按其显示方式分为段式、字符式、点阵式等。除了黑白显示外,液晶显示器还有多灰度有彩色显示等。如果根据驱动方式来分,可以分为静态驱动(Static)、单纯矩阵驱动(Simple Matrix)和主动矩阵驱动(Active Matrix)三种。

3.液晶显示器各种图形的显示原理:

线段的显示:点阵图形式液晶由M×N个显示单元组成,假设LCD显示屏有64行,每行有128列,每8列对应1字节的8位,即每行由16字节,共16×8=128个点组成,屏上64×16个显示单元与显示RAM区1024字节相对应,每一字节的内容和显示屏上相应位置的亮暗对应。例如屏的第一行的亮暗由RAM区的000H——00FH的16字节的内容决定,当(000H)=FFH时,则屏幕的左上角显示一条短亮线,长度为8个点;当(3FFH)=FFH时,则屏幕的右下角显示一条短亮线;当(000H)=FFH,(001H)=00H,(002H)=00H,„„(00EH)=00H,(00FH)=00H时,则在屏幕的顶部显示一条由8段亮线和8条暗线组成的虚线。这就是LCD显示的基本原理。

字符的显示:用LCD显示一个字符时比较复杂,因为一个字符由6×8或8×8点阵组成,既要找到和显示屏幕上某几个位置对应的显示RAM区的8字节,还要使每字节的不同位为“1”,其它的为“0”,为“1”的点亮,为“0”的不亮。这样一来就组成某个字符。但由于内带字符发生器的控制器来说,显示字符就比较简单了,可以让控制器工作在文本方式,根据在LCD上开始显示的行列号及每行的列数找出显示RAM对应的地址,设立光标,在此送上该字符对应的代码即可。

汉字的显示:汉字的显示一般采用图形的方式,事先从微机中提取要显示的汉字的点阵码(一般用字模提取软件),每个汉字占32B,分左右两半,各占16B,左边为1、3、5„„右边为2、4、6„„根据在LCD上开始显示的行列号及每行的列数可找出显示RAM对应的地址,设立光标,送上要显示的汉字的第一字节,光标位置加1,送第二个字节,换行按列对齐,送第三个字节„„直到32B显示完就可以LCD上得到一个完整汉字。

28

2013届湖北汽车工业学院科技学院毕业设计(论文)

3.6.2 LCD1602接口应用

引脚说明:

第1脚:VSS为地电源。 第2脚:VDD接5V正电源。

第3脚:VL为液晶显示器对比度调整端,接正电源时对比度最弱,接地时对比度最高,对比度过高时会产生“鬼影”,使用时可以通过一个10K的电位器调整对比度。 第4脚:RS为寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄存器。 第5脚:R/W为读写信号线,高电平时进行读操作,低电平时进行写操作。当RS和R/W共同为低电平时可以写入指令或者显示地址,当RS为低电平R/W为高电平时可以读忙信号,当RS为高电平R/W为低电平时可以写入数据。

第6脚:E端为使能端,当E端由高电平跳变成低电平时,液晶模块执行命令。 第7~14脚:D0~D7为8位双向数据线。 第15脚:背光源正极。 第16脚:背光源负极。 管脚说明示意图如图3.21所示:

图3.21 液晶显示器1602管脚示意图

3.6.3 LCD的指令说明

1602液晶模块的读写操作、屏幕和光标的操作都是通过指令编程来实现的。(说明:1为高电平、0为低电平)

指令1:清显示,指令码01H,光标复位到地址00H位置。

29

2013届湖北汽车工业学院科技学院毕业设计(论文)

指令2:光标复位,光标返回到地址00H。

指令3:光标和显示模式设置 I/D:光标移动方向,高电平右移,低电平左移 S:屏幕上所有文字是否左移或者右移。高电平表示有效,低电平则无效。

指令4:显示开关控制。D:控制整体显示的开与关,高电平表示开显示,低电平表示关显示 C:控制光标的开与关,高电平表示有光标,低电平表示无光标 B:控制光标是否闪烁,高电平闪烁,低电平不闪烁。

指令5:光标或显示移位 S/C:高电平时移动显示的文字,低电平时移动光标。 指令6:功能设置命令 DL:高电平时为4位总线,低电平时为8位总线 N:低电平时为单行显示,高电平时双行显示 F: 低电平时显示5x7的点阵字符,高电平时显示5x10的点阵字符。

指令7:字符发生器RAM地址设置。 指令8:DDRAM地址设置。

指令9:读忙信号和光标地址 BF:为忙标志位,高电平表示忙,此时模块不能接收命令或者数据,如果为低电平表示不忙。 指令10:写数据。 指令11:读数据。

3.6.4 1602显示电路

显示电路由1602组成,其电路如图3.22所示。

图3.22 显示电路模块

30

2013届湖北汽车工业学院科技学院毕业设计(论文)

第四章 系统的软件设计

系统软件设计主要采用模块化设计,叙述了各个模块的程序流程图,并介绍了软件Keil和Proteus的使用方法和调试仿真。

系统软件的设计主要是和硬件电路相结合,正确地实现等精度测量。整个系统软件的设计采用了自顶向下的模块化的结构方式,将各个功能分成独立模块,由系统的程序统一管理执行。它主要完成各种功能,如测量、 数据运算、显示等。如图4.1所示为频率测量主程序流程图,在计数前对计数器清零。然后,发出命令打开闸门进入闸门时间,计数器在闸门时间内计数。延时子程序结束后,发出命令关闭闸门使计数器停止计数;单片机再依照程序读取计数器的值,并与单片机内部计数器所计的值合并在一起。由公式(1),即被测频率fx=f0×Nx/N0来进行运算,由于精度要求,Nx和N0都由24位二进制数来计数。因此,要在单片机内部进行多字节无符号二进制数的乘法和除法运算,并将运算结果转换成BCD码,显示运算结果。

4.1 软件模块设计

31

2013届湖北汽车工业学院科技学院毕业设计(论文)

初始化液晶显示开闸门脉冲上升沿?Y开始计数NN下一个脉冲上升沿Y停止计数数据计算 图4.1 系统软件流程总图

首先初始化,包括1602的初始化和触发器的复位以及定时器初始化,输出液晶显示的初始值,计数器设置为硬件启动此时由于闸门没有打开,顾就算是有上升沿的信号出现,也会被门控电路挡在外面,不会启动定时器,等一切都设置好后,打开闸门电路,当有信号上升沿出现的时候即可启动定时器开始计时,但出现下一个信号上升沿的时候计数器停止,计时完成,计时完成后通过计时的结果计算出被测信号的频率。

初始化部分源程序:

n=0; //n用于记录T0的溢出次数

TMOD=0x59; //设定89C51两个计数器的工作方式,T1工作于定时模式,T0工作于计数模式,均为方式1,T0的门控位置1

TH0=0; //两个计数器都置初值为0 TL0=0; TH1=0; TL1=0;

EA=1; //总中断允许

32

2013届湖北汽车工业学院科技学院毕业设计(论文)

4.2门控电路软件设计

门控电路流程图如下图4.2所示:

触发器复位D端为0计数完成延时1ms关闭计时器YTR0=1TR1=1上升沿?N复位端为1D端为1上升沿?Y开始计数ND端为0YT0中断溢出N

图4.2 门控电路流程图

首先触发器复位,将D端置0,延时1ms以完成以上操作,此时闸门关闭。然后让

复位端无效,开定时器,并将D端置1,打开闸门,等待上升沿信号的到来来应启动定时器。有上升沿信号到来启动定时器开始计时,定时器中断溢出后将D端置1,等待下一个上升沿到来后,闸门被关闭,定时器关闭,同时检测到T1引脚为低电平,判定计时已经完成,可以读取数据并完成后续处理。

门控电路源程序如下:

Reset=0; //将 74LS74 Q端置0,定时器T0不工作;同时 Q非 置1, 74LS02 关闭,T1不对被测信号计数

OnOff=0; //将 74LS74 D端置0,以使D和Q保持一致,这样,即使 74LS74 的CLK有效,也不改变Q的状态

delay(1,28); //延时约1 ms,以完成上面两个指令 Reset=1; //74LS74 的R端置1,清0无效

33

2013届湖北汽车工业学院科技学院毕业设计(论文)

TR0=1; //T0计时开 TR1=1; //T1计时开

OnOff=1; //将 74LS74 D端置1,使D和Q相异,一旦 74LS74 的CLK有效,Q即为1(T0定时开始),Q非 为0(T1计时开始)

while(flag==0); //从将 74LS74 D端置1,到 74LS74 的CLK第一次有效之间,flag即P3^2为0,定时未开始

while(flag==1); //74LS74 的CLK第一次有效之后,flag即P3^2为1(定时开始),直至定时结束

if(flag==0) //flag再次为0,表示本次测量已结束 {

TR0=0; //T0计时关(要注意,计数及定时的开与关直接由 被测信号 的上升沿决定,而不是这两个命令)

TR1=0; //T1计时关

4.3 显示子程序

计算后的频率值存放在一个变量中,并把要显示的字符放在数组里。液晶屏1602的显示流程图如下图4.3所示:

初始化写入地址写入数据结束

图4.3 显示子程序流程图

1602驱动源程序:

/以下为1602显示子程序

sbit DS1602_RS=P1^0; sbit DS1602_RW=P1^1; sbit DS1602_EN=P1^2;

34

2013届湖北汽车工业学院科技学院毕业设计(论文)

void Write1602_com(uchar com) { P0=com;

DS1602_RS=0; //RS为0,输入指令 DS1602_RW=0; //向LCD写入(指令或数据)

DS1602_EN=1; //以下3行,产生一个EN下降沿,以供1602执行指令 delay(1,5); //该延时不可省略,具体延时长短,可由调试确定 DS1602_EN=0; }

void Write1602_data(uchar dat) { P0=dat;

DS1602_RS=1; //RS为1,输入数据 DS1602_RW=0; //向LCD写入(指令或数据)

DS1602_EN=1; //以下3行,产生一个EN下降沿,以供1602执行输入 delay(1,5); //该延时不可省略,具体延时长短,可由调试确定 DS1602_EN=0; }

void init1602() //初始化1602 {

Write1602_com(0x38); //数据总线为8位,显示两行,5*7点阵 Write1602_com(0x0c); //显示功能开,无光标,不闪烁 Write1602_com(0x06); //写入新数据后,光标右移 Write1602_com(0x01); //清除液晶显示器 }

35

2013届湖北汽车工业学院科技学院毕业设计(论文)

4.4 应用软件简介

此设计需要在Keil软件平台上完成程序的调试,在Proteus软件平台上完成仿真显示。因此介绍如何使用Keil和Proteus进行软件的仿真。

4.4.1 Keil简介

Keil软件是目前最流行开发系列单片机的软件,Keil提供了包括C编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境(uVision)将这些部份组合在一起。而Proteus与其它单片机仿真软件不同的是,它不仅能仿真单片机CPU的工作情况,也能仿真单片机外围电路或没有单片机参与的其它电路的工作情况。因此在仿真和程序调试时,关心的不再是某些语句执行时单片机寄存器和存储器内容的改变,而是从工程的角度直接看程序运行和电路工作的过程和结果。对于这样的仿真实验,从某种意义上讲,是弥补了实验和工程应用间脱节的矛盾和现象[16]。 1.建立工程文件

点击“Project->New project”菜单,出现一个对话框,要求给将要建立的工程起一个名字,你可以在编缉框中输入一个名字,点击“保存”按钮,出现第二个对话框,按要求选择目标器件片。建立新文件并增加到组。分别设置“target1”中的“Target,output,debug”各项,使程序汇编后产生HEX文件。 2.汇编,调试系统程序

Keil 单片机模拟调试软件内集成了一个文本编辑器,用该文本编辑器可以编辑源程序。在集成开发环境中选择菜单“File → New...”、单击对应的工具按钮或者快捷键Ctrl +N 将打开一个新的文本编辑窗口,完成汇编语言源文件的输入,并且完成源程序向当前工程的添加。

然后在集成开发环境中选择菜单“File→Save As...”可以完成文件的第一次存储。注意,汇编语言源文件的扩展名应该是“ASM”,它应该与工程文件存储在同一文件夹之内。在完成文件的第一次存储以后,当对汇编语言源文件又进行了修改,再次存储文件则应该选择菜单“File→Save”、单击对应的工具按钮或者快捷键Ctrl +S 实现文件

36

2013届湖北汽车工业学院科技学院毕业设计(论文)

的保存。

接着的工作需要把汇编语言源文件加入工程之中。选择工程管理器窗口的子目“Source Group 1”,再单击鼠标右键打开快捷菜单。在快捷菜单中选择“Add File to Group ‘Source Group 1’”,加入文件对话框被打开。在这个对话框的“查找范围(I)”下拉列表框中选择存储汇编语言源文件的文件夹,在“文件类型(T)” 下拉列表框选择“Asm Source file(*.a*;*.src)”,这时存储的汇编语言源文件将显示出来。双击要加入的文件名或者选择要加入的文件名再单击“Add”按钮即可完成把汇编语言源文件加入工程。文件加入以后,加入文件对话框并不消失,更多的文件也可以利用它加入工程。如果不需要加入其它文件,单击“Close”按钮可以关闭加入文件对话框。这时工程管理窗口的文件选项卡中子目录“Source Group 1”下出现一个汇编语言源文件。 需要注意,当把汇编语言源文件加入工程但还没有关闭加入文件对话框,这时有可能被误认为文件没有成功地加入工程而再次进行加入操作,系统将显示所需的文件已经加入的提示。在这种情况下,单击提示框中的“确定”按钮,再单击“Close”按钮可以关闭加入文件对话框。

3.编译源程序,出现错误时,返回上一级对错误更改后重新编译,直到没有错误为止。

4.4.2 Protues简介

protues是Labcenter公司出品的电路分析、实物仿真系统,而KEIL是目前世界上最好的51单片机汇编和C语言的集成开发环境。他支持汇编和C的混合编程,同时具备强大的软件仿真和硬件仿真功能[17]。Protues能够很方便的和KEIL、Matlab IDE等编译模拟软件结合。Proteus提供了大量的元件库有RAM,ROM,键盘,马达,LED,LCD,AD/DA,部分SPI器件,部分IIC器件,它可以仿真单片机和周边设备,可以仿真51系列、AVR,PIC等常用的MCU,与keil和MPLAB不同的是它还提供了周边设备的仿真,只要给出电路图就可以仿真。

这里我将keil和 Protues两个软件的快速集成起来使用。 1.首先将keil和 Protues两个软件安装好。

2.然后在C:\\Program Files\\Labcenter Eletronics\\Protues 6

Professional\\MODELS(我的Protues是安装C盘里面的)目录下的VDM51.DLL 动态连接库文件复制到C:KEIL\\C51\\BIN 目录下面(我的keil 也安装在C盘)这个文件将在keil

37

2013届湖北汽车工业学院科技学院毕业设计(论文)

的debug设置时用到。

3.打开protues软件,新建一文件将硬件原理图绘入图中。

4.将KEIL生成的HEX文件下载入单片机中,点击“开始”进行仿真。

5.在keil中进行debug,同时在proteus中查看直观的结果(如LCD显示⋯⋯)。这样就可以像使用仿真器一样调试程序。利用Proteus与Keil整合进行实验,具有比较明显的优势,当然其存在的缺点也是有的。利用仿真实验可以做全部的软件实验和极大多数的硬件系统,虚拟仿真实验室,因极少硬件投入、所以经济优势明显,不仅可以弥补实验仪器和元器件缺乏带来的不足,而且排除了原材料消耗和仪器损坏等因素。

38

2013届湖北汽车工业学院科技学院毕业设计(论文)

第五章 等精度频率计的系统调试

频率计的系统调试包括系统软、硬件联合调试。硬件调试包括电源模块、整形模块、分频模块等模块,软件调试就是通过修改程序,使频率计功能完善,提高频率计的测量精度。使用软件仿真,调试仿真结果,同时使用数字万用表和示波器测试输出电压值和输出波形,调试出正确的软硬件电路。

5.1 硬件调试

5.1.1 电源模块调试

电源电路包括变压器、整流电路、滤波电路、稳压电路等模块组成,使用LED进行电源工作状态指示。搭建好硬件电路,检查线路连接正确,通电,LED灯亮,LM7805芯片不发烫,并用数字万用表测得电压为5.01V,证明电路基本正常工作。同时,使用数字示波器测量输出电压波形,看有无较大的纹波,经测量观察,基本上不存在纹波,没有太大的干扰,电压电路工作正常。

5.1.2整形模块调试

调理电路采用与非门74LS00构成施密特触发器,它对正弦波、三角波等各种波形信号进行整形,使之成为矩形脉冲。

5.2软件调试

软件调试与所选用的软件结构有关,如果采用模块程序设计技术,则逐个模块调好后再进行系统程序总调。如果采用实时多任务操作系统,一般是逐个任务进行调试。

对于模块结构程序.要一个个子程序分别调试。调试时,一定要符合入口条件和出口条件,调试可用单步运行和断点运行方式,通过检查用者系统的CPU现场情况。RAM的内容和I/O口的状态,检测程序执行结果是否符合设计要求,有无循环错误。有无机器

39

2013届湖北汽车工业学院科技学院毕业设计(论文)

码错误以及转移地址的错误,同时,还可以发现用者系统中存在的硬件设计错误和软件算法错误。

各程序模块通过后,则可以把相关功能块连在一起进行总调。这个阶段若有故障,可以考虑各子程序运行时是否破坏了现场,缓冲单元。工作寄存器是否发生冲突,标志位的建立和清除是否有误,堆栈区是否有溢出,输入设备的状态是否正常等等,若用者系统是在开发机的监控程序下运行时,还要考虑用者缓冲单元是否和监控程序的工作单元发生冲突。

整个系统包括硬件平台和软件功能实现两部分。硬件包括MCU核心系统和外围辅助电路。软件包括程序调试器软件、8051 IP核控制频率模块及显示。整个系统测试包括硬件平台测试和软件功能测试。在硬件验证时,FPGA采用ALTERA公司CYCLONE系列的EP2C5TP144C8,双时钟频率,测频模块的标准频率为40MHz,其它部分(含MC8051)逻辑工作时钟频率为12MHz,系统建立后实现了对MC8051定时器定时功能的验证。频率计模块进行测试。

5.2.1 Proteus软件调试

根据系统设计要求,进行Keil和Proteus系统仿真,不断调试程序,直到符合功能要求。Proteus总体仿真图5.1所示。

图5.1 频率计整体仿真图

40

2013届湖北汽车工业学院科技学院毕业设计(论文)

5.2.2 功能调试

当测量频率值小于1KHz以下时,液晶屏显示频率值与系统自带的测频仪比较。例如输入信号90Hz,仿真显示如图5.2所示:

图5.2 HZ档频率仿真

当测量频率值大于且等于1KHz并小于1MHz时液晶屏显示的值与系统自带的测频仪结果对比,。例如输入信号5000KHz,仿真显示如图5.3所示:

41

2013届湖北汽车工业学院科技学院毕业设计(论文)

图5.3 KHZ档频率仿真

经上述测试,基本功能都以实现,可以测出波形频率值,并可以自动切换量程单位,符合要求。

5.3系统调试

5.3.1 系统软件调试

经软件的调试—修改—再调试,如此反复,排除各种故障最终基本完成了设计所要求的任务。由单片机内部定时器/计数器构成基本测量电路,外加整形和分频电路,由系统软件设计可以测出1HZ-5MHZ的量程范围,可以实现量程档的自动转换,使用的动态显示测量时会出现闪烁现象,但显示数值准确,稳定时显示不闪烁。 软件仿真测量数据如表5.1-5.3所示。

42

2013届湖北汽车工业学院科技学院毕业设计(论文)

表5.1 HZ档的数据记录表

待测值(Hz) 测量值(Hz) 待测值(KHz) 测量值(KHz) 待测信(MHz) 测量值(MHz) 10 10 15000 15 1.123 1.122 50 300 50 300 55000 55 1.558 1.558 125000 125 1.789 1.788 450 450 225000 225 2.234 2.234 800 800 425000 425 3.345 3.346 888 888 825000 825 4.456 4.458 999 1000 925000 925 5.567 5.568 表5.2 KHZ档的数据记录表 表5.3 MHZ档的数据记录表

5.3.2 系统软硬件调试

软件系统测试只能测试方波信号,外加硬件整形电路,可以测试正弦波、三角波等各种波形的频率值,把各模块组合在一起,做成完整的频率计。经过不断的软硬件联合调试,修改程序和硬件,最终符合设计功能要求。

为了衡量这次设计的频率计的工作情况和测量精度,我们对系统进行了调试。用这次设计的频率计对信号进行了测量,使用函数发生器输出各种波形,由实物频率计测得频率,记录数据。实际测得频率范围没有仿真结果那么高,只能稍微超过2MHz。实际记录数据如表5.4-5.6所示。

表5.4 HZ档的数据记录表

待测值(Hz) 测量值(Hz)

10.3 10

28.9 29

268.7 269

324.8 325

490.6 491

678.3 678

978.8 979

表5.5 KHZ档的数据记录表

待测值(KHz) 测量值(KHz)

15.26 15.3

33.28 33.3

60.12 60.2

161.75 162.0

308.8 309.0

470.7 470.9

912.1 912.4

表5.6 MHZ档的数据记录表

待测信(MHz) 测量值(MHz)

1.123 1.123

1.318 1.318

1.727 1.728

1.805 1.806

1.956 1.957

2.012 2.013

2.889 测不出

5.4 误差分析

从记录的数据可以看出,系统软件仿真误差很小,在10Hz-1MHz范围内测量出来的频率基本上就是输入信号的频率,在超出这个范围后,才出现很小的误差。但是在硬件

43

2013届湖北汽车工业学院科技学院毕业设计(论文)

调试中,可能是由于标准元器件本身误差,如随着时间的延长,其值相比出厂时产生误差;造成测量结果没有软件仿真精确。同时手工焊接单片机最小系统、分频整形电路等也会带来一定的干扰,造成信号的失真,从而导致测量精度下降,测量范围有所缩小,但是可以看出,误差在允许范围内,所设计的电路基本符合要求。

44

2013届湖北汽车工业学院科技学院毕业设计(论文)

第六章 总结

毕业设计已经结束,通过这次设计,我受益匪浅。毕业设计是一次综合性的实践,它将各种知识结合到一起综合运用到实践上来扩展、弥补、串联所学的知识。通过本次毕业设计我得到了很多收获。首先,了解了单片机的基本知识和在控制领域的作用和地位。其次掌握了C语言的编写程序,学会了使用PROTUTES和KEIL的仿真来实现,同时掌握了如何收集、查阅、应用文献资料,如何根据实际需要有选择的阅读书籍和正确确定系统所要使用的元器件的类型。再次,在精神方面锻炼了思想、磨练了意志。面对存在的困难首先分析问题根据目的要求确定可实现的部分,定出那不准的方面找同学和老师讨论研究,再完善、再修改、再发现问题、再解决培养了自己的耐心、恒心及遇事不乱的精神。总之,我明白了理论和实践之间存在的距离只有靠不断的思考不断的动手才能将所学的知识真正运用到实践上来。在毕业设计中我的很多方面的能力都得到了提高,尤其在单片机软件编程方面让我感触颇深。我个人认为软件设计是个即灵活又细腻的工作,它要求耐心和细心去不断完善,同时还需要有良好的逻辑思维能力。通过这次毕业设计,我分析问题和解决问题的能力有所提高,也巩固了所学的知识,加深了对理论知识的理解,更重要的是锻炼自己的独立性,为我今后的工作和学习打下坚实的基础。

45

2013届湖北汽车工业学院科技学院毕业设计(论文)

致 谢

在论文完成之际,我的心情万分激动。从论文的选题、资料的收集到论文的撰写编排整个过程中,我得到了许多的热情帮助。

我首先要感谢程登良老师,本课题在选题及研究过程中得到程老师的悉心指导。程老师多次询问研究进程,并为我指点迷津,帮助我开拓研究思路,精心点拨、热忱鼓励。程老师花费了大量的时间和心血在我的论文上,才有我今天的定稿。同时也要感谢在我大学四悉心教导我的老师们,是你们教会我很多有用的知识,特别是教会了我解决问题思考问题的方式和习惯,我在做论文的时候才能有自己的思想和规划,论文工作才有了目标和方向。在此我向所有老师表示最诚挚的谢意。

最后,感谢各位评审老师在百忙中抽出时间对论文进行审稿、参加答辩,并对加答辩会的老师和同学表示谢意。

46

2013届湖北汽车工业学院科技学院毕业设计(论文)

参考文献

[1]邹大挺.频率计的设计[J]. 《电子产品世界》出版社. 2006. 第193期. 4-7. [2]雷玉堂.光电检测技术[M]. 中国计量出版社. 1995. [3]季建华. 智能仪表原理[M]. 山东教育出版社. 2004. [4]王永生. 电子测量学[M]. 西北工业大学出版社. 2003.

[5]李华.单片机实用接口技术[M]. 航空航天大学出版社. 2006.

[6]张鹏.王雪梅. 单片机原理与应用实例教程[M]. 海军出版社. 2007. [7]赫建国等. 单片机在电子电路设计中的应用[M]. 清华大学出版社. 2005. [8]康华光.电子技术基础(模拟部分)[M]. 高等教育出版社. 1998. [9]http://www.21icsearch.com/s_LM7805.html.LM7805英文参考手册[Z] [10]谢自美.电子线路设计与实验[M]. 华中科技大学出版社. 2006.

[11] http://www.21icsearch.com/s_74LS00. html.74LS00英文参考手册[Z]. [12]http://www.21icsearch.com/s_74LS161.html.74LS161英文参考手册[Z]. [13]http://www.21icsearch.com/s_74LS151.html.74LS151英文参考手册[Z]. [14]康华光.电子技术基础(数字部分)[M]. 高等教育出版社. 1998. [15]赖麒文. 8051单片机C语言软件设计的艺术[M]. 科学出版社. 2004.

[16]徐波. Keil的使用技巧[J]. 《电子产品世界》出版社. 2006. 第224期. 6-9. [17]吴清平. 单片机原理与应用实例教程[M]. 海军出版社. 2008.

47

2013届湖北汽车工业学院科技学院毕业设计(论文)

附 录

附件1:频率计系统总体原理图

附件2:等精度频率计源程序

#include

#define uchar unsigned char #define uint unsigned int

void delay(uchar i,uchar j) //延时子程序,延时时间为 i*(j*8+6)+10 us {

while(i--) while(j--);

48

2013届湖北汽车工业学院科技学院毕业设计(论文)

}

//以下为测频子程序

sbit OnOff=P1^3; //74LS74 的D端

sbit Reset=P1^4; //74LS74 的R端,异步置0

sbit flag=P3^2; //用flag作为一次测量数据完成与否的标志 uchar n;

uchar pinlv[11]={0,0,0,0,0,'.',0}; float N1,N0;

unsigned long Fx;

void cepin()//测频程序 {

n=0; //n用于记录T0的溢出次数

TMOD=0x59; //设定89C51两个计数器的工作方式,T1工作于定时模式,T0工作于计数模式,均为方式1,T0的门控位置1

TH0=0; //两个计数器都置初值为0 TL0=0; TH1=0; TL1=0;

EA=1; //总中断允许 ET0=1; //T0中断允许

Reset=0; //将 74LS74 Q端置0,定时器T0不工作;同时 Q非 置1, 74LS02 关闭,T1不对被测信号计数

OnOff=0; //将 74LS74 D端置0,以使D和Q保持一致,这样,即使 74LS74 的CLK有效,也不改变Q的状态

delay(1,28); //延时约1 ms,以完成上面两个指令 Reset=1; //74LS74 的R端置1,清0无效 TR0=1; //T0计时开 TR1=1; //T1计时开 OnOff=1; //将 74LS74 D端置1,使D和Q相异,一旦 74LS74 的CLK有效,Q即为1(T0定时开始),Q非 为0(T1计时开始)

while(flag==0); //从将 74LS74 D端置1,到 74LS74 的CLK第一次有效之间,flag即P3^2为0,定时未开始

while(flag==1); //74LS74 的CLK第一次有效之后,flag即P3^2为1(定时开始),直至定时结束 if(flag==0) //flag再次为0,表示本次测量已结束 {

TR0=0; //T0计时关(要注意,计数及定时的开与关直接由 被测信号 的上升沿决定,而不是这两个命令)

TR1=0; //T1计时关

N1=TH1*256+TL1; //取T1计数器中的值(注意N1,N0都为float型,这样计算结果准确度高)

N0=n*65536+TH0*256+TL0; //取T0计数的总值 } }

49

2013届湖北汽车工业学院科技学院毕业设计(论文)

void timer0() interrupt 1 using 1 //T0中断服务 {

n++; //T0记满65535之后,n加1,以确定一次测量中T0的总定时时间 OnOff=0; //将 74LS74 D端置0,待 74LS74 的CLK下次有效,Q非 为1(T1计时结束),Q即为0(T0定时结束) }

void PinlvtoStr() {

Fx=N1*1000000/N0*100000; //被测结果的实际值为N1*1000000/N0,但为了显示5位小数,故有 *100000

pinlv[0]=Fx/1000000000; Fx=Fx%1000000000;

pinlv[1]=Fx/100000000; Fx=Fx%100000000;

pinlv[2]=Fx/10000000; Fx=Fx%10000000;

pinlv[3]=Fx/1000000; Fx=Fx%1000000;

pinlv[4]=Fx/100000; Fx=Fx%100000; pinlv[5]=0x2e; pinlv[6]=Fx/10000; Fx=Fx%10000;

pinlv[7]=Fx/1000; Fx=Fx%1000;

pinlv[8]=Fx/100; Fx=Fx%100;

pinlv[9]=Fx/10; pinlv[10]=Fx%10; }

//以上为测频子程序

//以下为1602显示子程序 sbit DS1602_RS=P1^0; sbit DS1602_RW=P1^1; sbit DS1602_EN=P1^2;

void Write1602_com(uchar com) {

P0=com;

DS1602_RS=0; //RS为0,输入指令

DS1602_RW=0; //向LCD写入(指令或数据)

DS1602_EN=1; //以下3行,产生一个EN下降沿,以供1602执行指令 delay(1,5); //该延时不可省略,具体延时长短,可由调试确定 DS1602_EN=0;

50

2013届湖北汽车工业学院科技学院毕业设计(论文)

}

void Write1602_data(uchar dat) {

P0=dat;

DS1602_RS=1; //RS为1,输入数据

DS1602_RW=0; //向LCD写入(指令或数据)

DS1602_EN=1; //以下3行,产生一个EN下降沿,以供1602执行输入 delay(1,5); //该延时不可省略,具体延时长短,可由调试确定 DS1602_EN=0; }

void init1602() //初始化1602 {

Write1602_com(0x38); //数据总线为8位,显示两行,5*7点阵 Write1602_com(0x0c); //显示功能开,无光标,不闪烁 Write1602_com(0x06); //写入新数据后,光标右移 Write1602_com(0x01); //清除液晶显示器 }

void displaypinlv() //显示频率 {

uchar i;

Write1602_com(0x80); for(i=0;i<11;i++) {

if(i!=5)

Write1602_data(pinlv[i]+0x30); else

Write1602_data(pinlv[i]); } }

void main() {

init1602(); displaypinlv(); while(1) {

cepin();

PinlvtoStr(); displaypinlv();

delay(249,250); //共延时1s左右,即每秒更新一次数据 delay(249,250); } }

51

因篇幅问题不能全部显示,请点此查看更多更全内容

Top