#基于PROTEUS仿真的频率计数器(顾加柱)改
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
南京大学金陵学院
毕业论文(设计)
作者: 顾加柱学号:2009020200014
系部: 信息工程学院
专业: 电子信息科学和技术
题目: 基于Proteus仿真的频率计数器
指导老师张益男(职称/学位):讲师
提交日期
摘要
传统的频率计数器由组合电路和时序电路等大量的硬件电路组成。
我们知道这种开发费时费力且成本高昂,所以本文以频率计数器为研究对象,利用Proteus强大的微机处理器仿真功能,结合Keil编译器,给出了简易且容易操作的频率计数器的设计方案并完成仿真测试。
本文设计了一种以单片机AT89C51为核心的数字频率计数器,其中硬件部分主要是由整形电路、单片机最小系统和显示单元组成的,软件设计是由一些功能模块来实现的,例如有初始化模块、晶振模块、数据显示模块以及复位模块等等。
这种方法很好地弥补了传统开发模式的各种缺点。
该频率计数器由6位数码管显示器和单片机AT89C51,以及信号时
钟发生器等构成,可测量频率范围为1Hz到100KHz之间。
关键词:频率计数器; PROTEUS仿真;单片机; 1~100kHz
ABSTRACT
Traditional frequency counter by combinational circuits and sequential circuits, etc.
A lot of hardware circuit. We know that this development laborious and costly, so based on the frequency counter as the research object, the use of Proteus powerful microcomputer processor simulation, combining with Keil compiler, presents a simple and easy to operate the frequency counter design and complete the simulation test. In this paper, we design a microcontroller AT89C51 as the core of the digital frequency counter, the hardware part mainly by shaping circuit, single chip microcomputer minimum system and display units, the software design is composed of some functional modules, such as initialization module, crystal vibration module, data display module as well as the reset module and so on. This method is good enough to make up the flaws of the traditional development mode. The frequency counter by the LCD display and a single chip microcomputer AT89C51, and clock signal generator, the measured frequency range between 1 HZ and 100 KHZ.
Key words:Frequency counter;PROTEUS simulation and single-chip microcomputer;1~ 100KHZ
目录
摘要 (1)
ABSTRACT .................................................................................................... 错误!未定义书签。
目录 ................................................................................................................ 错误!未定义书签。
第一章引言及目标. (3)
1.1引言 (3)
1.1.1简单介绍频率计数器 (3)
1.1.2研究意义 (5)
1.2要实现的目标 (6)
第二章工具介绍 (6)
2.1 PROTEUS仿真软件 (6)
2.1.1简介 (6)
2.1.2 功能特点 (7)
2.1.3 proteus的使用 (7)
2.2 keil uvision4软件 (8)
2.2 .1 keil uvision4软件的介绍 (8)
2.2.2 keil uvision4软件的使用 (9)
2.3 关于C语言 (9)
第三章硬件和软件设计 (10)
3.1硬件设计 (10)
3.1.1 AT89C51单片机 (10)
3.1.2 AT89C51的晶振接法 (11)
3.1.3单片机的复位 (12)
3.1.4显示电路 (13)
3.1.5系统总体电路图 (14)
3.2软件设计 (15)
3.2.1关于信号处理的介绍 (15)
3.2.2关于终端控制 (15)
3.2.3关于控制寄存器 (16)
第四章调试测试 (17)
4.1软件的编译调试 (17)
4.2载入单片机后的测试 (17)
4.3误差分析 (19)
致谢 (20)
参考文献 (20)
附录 (20)
第一章引言
1.1引言
1.1.1简单介绍频率计数器
我们经常需要测量频率、时间间隔、相位和对事件计数,精确的测量离不开频率计数器或它的同类产品,如电子计数器和时间间隔分析仪。
这些仪器为研发提供高精度和分析能力,为大批量生产提供高效率并为维修提供低成本和便携性。
信号频率、时间间隔、相位和脉冲计数等是常见的测量对象,对它们的测量离不开频率计数器或它的同类产品,如电子计数器和时间间隔分析仪等。
利用先进的PROTEUS仿真软件可以方便地研究频率计数器。
最早的电子计数器是为了对诸如原子现象之类的事情进行计数而设计出来的。
在发明计数器之前,频率的测量都是用频率计(一种精度很低的协调装置)
完成。
频率计数器是以数字方式对信号参数进行精密测量的首批仪器之一。
衡量频率计数器的主要指标是测量范围、测量功能、精度和稳定性,这些也是决定价格高低的主要依据。
随着电子测试技术的发展,频率计数器日趋成熟。
目前,频率计数器已经能轻松测量射频、微波频段信号。
除频率测量外,大多数频率计数器还综合了以下功能:频率比、时间间隔、周期、上升/下降时间、相位、占空比、正/负脉冲宽度、总和、峰值电压以及时间间隔平均等。
频率计功能延伸的最高境界就是综合了调制域分析仪的功能。
本文从频率计数器基本功能出发,对测量参数分别做出介绍,最后介绍频率计数器的一些数学统计功能。
频率计数器作用是根据其使用来设计的。
频率计数器最常见的使用是确定发射机和接收机的特性。
发射机的频率必须进行检验和校准,才能符合有关规章制度的要求。
频率计数器能对输出频率和一些关键的内部频率点(如本振)进行测量,是否满足技术指标。
频率计数器的另一些使用包括计算机领域,在此领域中的数据通信、微处理器和显示器中都使用了高性能时钟。
对性能要求不高的使用领域包括对机电产品进行测量。
频率计数器的早期使用之一是作为信号发生器的一部分。
在信号发生器信号输出之前,先通过频率计数器部件测量该信号,测量到的结果被转换为模拟信号用于反馈控制信号发生器的频率,直到达到所需要的数值,从而能得到稳定的信号输出。
目前,很多信号发生器中都集成了频率计数器的简单作用。
例如OI1842信号发生器也集成了测量范围为0.1Hz~50MHz的频率计数器作用。
在目前的电子技术中,频率是最基本的参数之一,并且和许多电参量的测量方案、测量结果都有十分密切的关系,因此频率的测量就显得更为重要。
频率计可以用纯硬件电路搭制。
本文设计了一种以单片机AT89C51为核心的数字频率计,其中硬件部分主要是由整形电路、单片机最小系统和显示单元组成的,软件设计是由一些功能模块来实现的,例如有初始化模块、数据显示模块等等。
此外,通过控制单片机的各项功能和运算操作能力进而来实现周期和频率间的计数和数据的保存。
通过这样的设计能测量频率1Hz-100kHz,这既达到了设计所要求的频率测量范围,又达到了较高的精确度。
测量时,将被测输入信号送给单片机,通过程序控制计数,结果送数码管显示频率值。
本设计中的频率计具有电路
结构简单、成本低、测量方便、精度较高等特点,适合测量低频信号,能基本满足一般情况下的需求,既保证了测频精度,又使系统具有较好的实时性,并且本频率计设计简洁,便于携带,扩展能力强,适用范围广。
另外,由于本设计采用了模块化的设计方法,提高了测量频率的范围,并且本次设计包括硬件画图和软件程序编写。
1.1.2研究意义
我们知道随着科学技术的发展,尤其是单片机技术和半导体技术的高速发展,频率计的研究及使用越来越受到广泛重视,这样对频率测量设备的要求也越来越高。
就目前来说,微处理器芯片发展迅速,不同领域的使用芯片在其中发展很快。
而51单片机是一门发展极快,使用方式极其灵活的使用技术。
它以灵活轻便的设计、微小可以忽略不计的功耗、低廉可观的成本,在数据采集方面、过程的控制当中、模糊控制、智能化仪表等领域得到广泛的使用,极大地提高了这些关键领域的技术水平和自动化程度,为现代工业注入了新的活力。
频率计数器是一种基础测量仪器,到目前为止已有30多年的发展历史。
我们所知道的传统的数字频率计数器,可以通过各种普通的硬件电路以及软件电路组合来实现,其中间的开发过程当中、以及调试过程十分复杂,而且由于电子元器件中减少相互干扰的程度,最后导致影响频率计的精度,同时由于电子器件体积不小,已经远远不能够适应当前电子行业的不断发展要求需要。
随着当前科学技术的高速发展,频率计数器也日益得到了发展和技术的提高。
目前已经有操作非常方便、量程宽阔、可靠性较高的频率计;也有较高的分辨率、高精度值、测量高稳定性、位移速度的频率计数器。
早期,设计师们追求的目标主要在于是扩展测量范围,再加上提高测量精度、高稳定度等,这些也是人们衡量频率计的技术水平,决定频率计数器价格高低的判断依据。
目前这些基本科学技术日臻完善和成熟,得到了长足的发展。
现代科技技术可以相当容易地将频率计数器的测频上限扩展到微波频段。
在我们测试通讯方面、微波器件或产品的研发的过程中,是需要测量其中的频率的。
在现代电子技术设计中,频率是其中最基本的参数,我们知道并且和许多电参量的测量方案、测量结果都有十分密切的关系,因此频率的测量就显得出更加的重要性。
51 单片机频率计数器以其可靠性高、体积小巧、价格低廉、功能俱全等优
点,广泛地适用于各种现代智能仪器和现代化工业体系中,这些的生活当中的智能仪器的操作在进行仪器校核以及测量过程的控制中,达到了自动化、智能化,传统仪器面板上的开关和旋钮被现实生活中键盘所代替利用,如今的测试员在测量时只需按需要的键,省掉很多繁复的人工调节,智能仪器通常能自动选择量程,能够具有自动校准功能。
有的还能自动调整测试点,如此一来方便了正常操作,也提高了测试精度,另外,在电子技术中,频率是最基本的参数之一,并且和许多电参量的测量方案、测量结果都有十分密切的关系,因此频率计在科教科研、仪器测量、工业控制、集成控制等方面都有较广泛的使用和推广。
并且在不断发展当中,我相信在不久的将来必将取得更大的发展。
1.2要实现的目标
利用AT89C51单片机的T0、T1的定时计数器功能,来完成对单片机内部定时器的输入信号进行频率计数,计数的频率结果通过LCD(1602)并口显示器动态显示出来。
要求能够对1HZ-100KHZ的信号频率进行准确计数。
在PROTEUS 仿真软件下进行电路设计、选择元器件、接插件、连接电路以及电路检测并最终获得实验结果。
最终使得改变时钟发生的频率,用6位数码管显示,比较误差值。
第二章工具介绍
2.1 PROTEUS仿真软件
2.1.1简介
Proteus软件是英国的Labcenter electronics公司出版的EDA工具软件。
它不仅具有我们所认识的其它EDA工具软件的仿真功能,此外还具备仿真单片机及外围部件。
就目前情况来看它是最好的仿真单片机及外围器件的工具之一,所以这次实验我们也将用到它。
Proteus是世界上著名的EDA工具,从电路原理图分布、调试代码到单片机和外围电路协同仿真,切换设置,真正的实现了从概念到产品的完整设计流畅。
他是目前世界上唯一将电路仿真、PCB和虚拟性质的模型仿真软件三项合一的设计平台规划,这种创新给这款软件带来了无和伦比的优势。
其中各种处理器模
型支持8051、及HC11、PIC10/12/16/18/24/30/DsPIC33、ARM、8086和MSP430等各种单片机,目前来看2011年又增加了比如Cortex和DSP等系列处理器的模块。
这些亮点导致他基本是独一无二的。
2.1.2 功能特点
主要特点
1、原理分布图的展现
2、自动或人工布线PCB
3、电路超级仿真模块SPICE
4、电路互动仿真模块
用户甚至可以实时采用诸如RAM,ROM,键盘,马达,LED,LCD,AD/DA,部分SPI器件,部分IIC器件。
5、仿真处理器及其外围电路
可以仿真51系列、AVR、PIC、ARM、等常用主流单片机。
还可以直接在基于原理图的虚拟原型。
人性化设计:
超过27000多种元器件,可以方便进行创建。
即使模糊的搜索也能找到相应的元器件。
智能化的连线结构,方便简单。
支持总线结构,让用户和读者能够明确分析线路结构。
还有很多方便快捷的运用方式,这里不再赘述。
2.1.3 proteus的使用
新建一个空白文档
打开元件库,并寻找自己所用的元件,例如AT89C51。
方式。
2.2 keil uvision4软件
2.2 .1 keil uvision4软件的介绍
2009年2月发布Keil uVision4,Keil uVision4引入了灵活的窗口管理系统窗口,使研究开发人员能够使用多台监视器进行监视,并提供了视觉上操作上的表面对窗口位置的完全控制的任何地方的数据。
新的用户界面可以较好地利用当前
屏幕范围内部的内容和更加真实有效地组织多个窗口进行编译,提供一个整洁,
美观大方、速效的环境来开发用户使用程序。
新版本支持了更多最新的最全面的ARM芯片,还添加了一些其他非常多的有趣的新功能和介绍。
最新的一款Keil uVision4 IDE,旨在提高开发人员的生产力,实现更加快速,更加有效的程序开发工作。
1、多显示器和灵活的窗口管理系统
2、系统浏览器窗口的显示设备外设寄存器信息
3、调试还原视图创建并保存多个调试窗口布局
4、多项目工作区简化和众多的项目
2.2.2 keil uvision4软件的使用
需要严格按照keil编译步骤来进行,否则会出现若干问题,比如程序不能定义,或者项目创建失败。
这是笔者在吃过非常多的亏之后总结的。
第一步,新建Project,点击New project出现,输入路径并创建文件名。
第二步,新建空白的程序文档,并立刻保存,如果要编写C语言则保存为.c 文件。
如果是要编写汇编语言则保存为.asm文件。
第三步,把第二步所建立的文件加载到工程当中,并右击工程名,选择Options for target,在OUTPUT选项卡中将创建.hex文件的选项打勾。
第四步,编译并修改程序语言,编译成功后会实现创建.hex文件。
2.3 关于C语言
由于本次实验是用C语言编写的所以有必要对C语言做简单介绍。
C 语言这种语言是美国的Dennis Ritchie在1972年设计发明的。
它由早期的编程语言BCPL( Basic Combined Programming Language) 发展演变而来。
C 语言之所以发展迅速,成为最受欢迎的语言之一,此外最近大幅度发展的C++编程软件也是在C的基础上演变而来的,主要因为它具有强大的功能,从而全世界有非常多的程序编写员特别崇拜C语言。
第三章 硬件和软件设计
3.1硬件设计
频率计数器是一个将被测频率显示出来的计数装置,它主要是由信号处理电路部分、单片机AT89C51控制部分、8位LED 数码管显示器部分等组成。
该系统的功能是将信号输入P3.4口,通过单片机程序控制,对LED 数码管显示器进行段控和位控,这些就是为了实现动态显示。
频率计数器是计算机、通讯设备、音频视频等科研生产领域不可缺少的测量仪器。
在进行有关电子技术的设计、安装、调试过程中,由于其使用十进制数显示,测量迅速,精确度高,显示直观,我们会被经常使用到。
本次实验的硬件设计相对简单易理解操作,就是输入信号,处理信号,然后再显示信号。
图3.1为频率计数器的硬件设计方框图。
图3.1频率计数器的硬件设计框图
3.1.1 AT89C51单片机
这是AT89C51的引脚图,图3.2。
时钟信号
输入端 AT89C51 单片机 6位LED 数码显示
图3.2A T89C51的引脚图
3.1.2 AT89C51的晶振接法
关于AT89C51的晶振接法如图3.3所示。
图3.3 AT89C51的晶振接法
晶振是一种能把电能和机械能相互转化的晶体在共振的状态下工作,以提供稳定、精确的单频振荡。
在通常情况下,晶振的精确度达到百万之五十。
我们需
要晶振提供时钟周期然后使得单片机能够执行代码。
晶振X1、电容C2/C4及片内和非门(作为反馈、放大元件)构成了电容三点式振荡器,振荡信号频率和晶振频率及电容C4、C2的容量有关,但主要由电路中晶振频率决定.。
我选用2.4MHz频率的晶体,电路允许输入的脉冲频率为10kHz。
电容的大小范围为一般为20pF~40pF,本次设计我们居中选用33pF电容。
电容的作用还在于能够容易起震并减少频率的温漂。
3.1.3单片机的复位
单片机的复位一般情况下都是靠外部电路链接来实现的,在时钟电路工作之后,仅仅需要在单片机的RST引脚上出现高于24个时钟振荡脉冲(相当于2个机器周期)以上的高电平,这样的单片机便能够实现初始化状态复位。
为了能够保证使用系统能够可靠正常的复位,在设计复位电路的时候,通常使RST引脚保持10ms以上的高电平的水平。
只要保持高电平的状态,那么单片机就能够实现循环复位;当RST从高电平顺利地转变为低电平以后,AT89C51单片机从0000H地址开始执行程序。
需知在复位有效期间,EA引脚输出高电平。
它的工作原理在于当电源接通,上电瞬间,电源对C1进行充电,此时复位引脚9即RST高电平有效,随着时间推移,RST电平下降,此时转为单片机正常工作。
一般情况下复位时间为3~5个的RC时间。
按键开关的使用是为了避免死机状态下能够正常复位。
而设置并联电容C3(这里也可以选择串联一个远小于R1的电阻可以达到一样的效果)是为了限制按下瞬间电容C1的电流,避免产生火花,以达到保护按键开关的目的。
RC复位电路的复位电路增加了二极管,在电源电压瞬间下降时使电容迅速放电,一定宽度的电源毛刺也可令系统可靠复位。
AT89C51上电复位电路图如图3.4所示:
图3.4复位电路
3.1.4显示电路
在一些单片机系统中,经常使用到的显示器有如下几种:液晶显示器,简称LCD;荧光管显示器而发光二极管。
显示的部分又分为固定部分的显示和可以拼装的字段其他显示,此外还有共阳极和共阴极之分等。
如图3.5所示。
图3.5显示所用LED显示器
本次实验采用7SEG-MPX8-CC-BLUE,里面有八个数码管的显示电路,这里只用到6个。
每个数码管都是一个小型电路图,如图3.6显示。
图3.6 数码管显示电路
我们知道共阴和共阳结构的LED显示器各笔划的段名和安排的位置是相同的。
当其中的二极管导通时,相应的笔划部分会发亮,由发亮的笔划段组合而显示的各种字符。
其中的8个笔划段a、b、c、d、e、f、g、dP对应于一个字节(8位)的D0、D1、D2、D3、D4、D5、D6、D7。
如下表1.1,用LED显示器显示十进制转换成十六进制数的字形代码
字形共阳极代码共阴极代码字形共阳极代码共阴极代码
0 C0H 3FH 9 90H 6FH
1 F9H 06H A 88H 77H
2 A4H 5BH B 83H 7CH
3 BOH 4FH C C6H 39H
4 99H 66H D A1H 5EH
5 92H 6DH E 86H 79H
6 82H 7DH F 8EH 71H
7 F8H 07H 灭FFH 00H
8 80H 7FH
3.1.5系统总体电路图
3.8系统总体电路图
3.2软件设计
3.2.1关于信号处理的介绍
在频率计数器开始工作,或者完成一次简单的频率测量,系统软件都进行测量初始化。
测量初始化模块设置堆栈指针(SP)、工作寄存器、中断控制和定时/计数器的工作方式。
首先定时/计数器的工作首先被设置为计数器的计数寄存器清0后,置运行控制位TR为1,启动对待测信号的计数。
计数闸门由软件延时程序实现,从计数闸门的最小值开始,也就是从测量频率的高量程开始。
利用计数闸门结束时TR清0,停止计数。
计数寄存器中的值通过16进制数道10进制数转换程序转换为10进制数。
对10进制数的最高位进行判别,我们发现若其中的该位不为0,一旦满足测量数据有效位数的要求,测量值和量程信息一起送到显示模块;若该位为0,将计数闸门的宽度不断加大,直到10倍,我们需要重新对待测信号的技术,直到满足测量数据有效位数的要求,达到预期的期望。
等到被测信号经预处理电路分频后变成较宽的方波信号,并加至单片机的P3.4引脚,为单片机测信号频率提供有效的输入信号。
单片机通过检测P3.4引脚来判断是否能够启动测周期程序。
当该引脚为高电平时则等待,知道该引脚出现低电平时才开始测周期。
首先我们要将零赋给TH0、TL0两个寄存器不断的输入,将定时器T0的运行控制位TR0置位,同时也将ET0置位以允许定时器T0终端,然后再判断P3.4引脚是否还为低电平,这个时候我们要当不是低电平时等待。
3.2.2关于终端控制
由于我们在程序设计中用到中断方式,所以我们在此对单片机中断系统中的中断控制作一下介绍。
其实中断是工业过程控制及智能化仪器用微型机或单片机使用最多的一种数据传送方式。
单片机的这一种工作过程称为中断方式。
在通常情况下,单片机执行主程序,只有当正常状态出现故障,或发出中断请求时,单片机才能够暂停执行主程序,转去执行或处理其他的中断服务程序,执行完中断服务程序的过程中,再返回到主程序继续运行。
我们在基于资源共享原则上的中断技术,在计算机中得到了广泛的使用。
中断技术能实现CPU和外部设备的并行工作,利用提高CPU的利用率的方式以及数据的输入/输出效率;我们的中断技术也能对计算机运行过程中突然发生的故障及时发现并进行自动处理如:硬件、运错误及程序等方面的故障;中断技术还能使我们通过键盘不断的发出请求命令,随时跟进对运行中的计算机进行干扰,而不用先停机处理,然后再重新开机等方式进行。
3.2.3关于控制寄存器
定时器控制下的寄存器
TCON寄存器既参和中断控制又参和定时控制。
现对其定时功能加以介绍。
其中有关定时的控制位共有4位:
F0和TF1——利用计数溢出标志位当计数器计数溢出(计满)时,该位置显示为“1”;当我们使用查询方式来查询时,此位作状态位供查询,但在选用中断方式的时候,此位作中断标志位,在转向中断服务程序时也应该由硬件自动清“0”。
R0和TR1——定时器运行控制位
TRO(TR1)=0 TRO(TR1)=1
工作方式下的控制寄存器(TMOD)
TMOD寄存器是一个专用寄存器,用于设定两个定时器/计数器的工作方式。
但TMOD寄存器不能位寻址,只能用字节传送指令设置其内容。
中断允许控制寄存器(IE)
EA——中断允许总控制位
ET0和ET1——定时/计数中断
定时器/计数器提供给用户使用的有:8位计数器TH和TL,以及有关的控制位。
这些内容只能以软件方法使用。
我们知道能够产生中断申请的部件被称为中断源。
51单片机提供了五个中断源:两个外部中断源和三个内部中断源。
每一个中断源都有一个中断申请标志位,但是串行口占有两个中断标志位。
一共有六个中断标志位才行。
定时器/计数器对输入信号的要求
另外定时器/计数器的两个作用是用来精确的确定某一段时间间隔(作定时器用)或累计外部输入的脉冲个数(作计数器用)。
当89C51内部的定时器/计数器被选择为定时器工作方式的时候,计数输入信号是内部时钟脉冲,每当机器周期迅速产生一个脉冲使计数器增一个。
由此看出,定时器/计数器的输入脉冲周期和机器周期其实是一样的,实际为振荡频率的1/12。
所以当我们采用1.2MHz频率的晶体时,实际计数器的频率可为100KHz,当输入时间脉冲的单位周期间隔为1μs。
我们知道由于定时的精度决定于脉冲的周期,因此,当单片机系统需要高精度的定时器时,尽量选择频率较高的晶体最为适宜,才能得到比较好的效果。
第四章调试测试4.1软件的编译调试
0错误0警告并生成了gujiazhu.hex的HEX文件4.2载入单片机后的测试
输入1HZ
0误差。
输入100Hz
输入1KHz
输入25KHz
输入100KHZ的时候
误差达到了近千分之九。
4.3误差分析
观察发现在不同区间段误差范围不同,这是由于晶振管的频率设置为
2.4MHZ限定了量程在2.4MHZ/24=100KHZ以下。
由观察测量得知频率,在1HZ~1KHZ
的时候基本没有误差,在1KHZ~10KHZ区间内部误差在千分之三左右,在10K~100K
之间的测量误差较小,控制在万分之四以内,而在100KHZ以后误差迅速加大,达
到了千分之九左右。