频率计的设计.docx
- 文档编号:7943127
- 上传时间:2023-01-27
- 格式:DOCX
- 页数:20
- 大小:145.96KB
频率计的设计.docx
《频率计的设计.docx》由会员分享,可在线阅读,更多相关《频率计的设计.docx(20页珍藏版)》请在冰豆网上搜索。
频率计的设计
频
率
计
的
设
计
学院:
电子信息学院
专业:
应用电子技术
班级:
电子201002班
学号:
201003041206
姓名:
周晓畅
基于单片机的频率计的设计
摘要
本系统采用单片机AT89C51为控制中心,实现频率计基本控制功能。
系统的硬件部分包括单片机的控制部分和显示部分。
显示部分采用了LCD(LM016L)液晶显示输出频率的值。
本文主要研究了频率计所涉及的硬件方面的问题及单片机、显示模块的选择和对系统出现的误差和电路设计中出现的问题进行分析和讨论。
关键字:
单片机、频率、显示
目录
摘要2
第一章前言4
1.1选题的背景及要求4
1.1.1本课题的研究现状5
1.2设计的任务及要求5
1.2.1设计的基本要求5
1.2.2本文结构安排6
第二章频率计的系统设计6
2.1主控制模块的选择6
2.2系统总体框图9
第三章系统硬件电路的设计10
3.1频率计的工作电路原理10
3.2单片机最小系统10
第四章系统软件设计方案12
4.1系统软件设计方案12
4.2系统软件的设计流程13
4.2.1主程序流程图13
4.2.2LCD显示模块的设计14
第五章系统调试与测试16
5.1调试16
5.2测试16
5.3数据分析16
第六章总结18
附录19
附录一系统软件部分源程序19
附录二系统原理图22
参考文献23
第一章前言
1.1选题的背景及要求
频率计数器是测量信号频率的装置,通常频率以数字形式直接显示出来,简便易读,即所谓的数字频率计。
频率测量对生产过程监控有很重要的作用可以发现系统运行中的异常情况,以便迅速做出处理。
传统的频率计采用测频法测量频率,通常由组合电路和时序电路等大量的硬件电路构成,产品不但体积较大、运行速度慢、而且测量低频信号时不宜直接采用。
本文基于单片机技术,设计出一种数字式频率计数器,该频率计具有操作简单方便、响应速度快、体积小等一系列优点,可以及时准确地测量信号的频率。
1.1.1本课题的研究现状
随着电子技术的飞速发展,各类分立电子元件及其所构成的相关功能单元,已逐步被功能更强大、性能更稳定、使用更方便的集成芯片所取代。
由集成芯片和一些外围电路构成的各种自动控制、自动测量、自动显示电路遍及各种电子产品和设备。
数字系统和数字设备已广泛应用于各个领域,更新换代速度可谓日新月异。
在电子系统非常广泛的应用领域内,到处可见到处理离散信息的数字电路。
供消费用的微波炉和电视、先进的工业控制系统、空间通讯系统、交通控制雷达系统、医院急救系统等在设计过程中无一不用到数字技术。
数字电路制造工业的进步,使得系统设计人员能在更小的空间内实现更多的功能,从而提高系统可靠性和速度。
数字频率计是现代通信测量设备系统中不可缺少的测量仪器,不但要求电路产生频率准确的和稳定度高的信号,而且能方便的改变频率。
数字频率计主要实现方法有直接式、锁相式、直接数字式和混合式四种。
直接式的优点是速度快、相位噪声低,但结构复杂、杂散多,一般只应用在地面雷达中。
锁相式的优点是相位同步的自动控制,制作频率高,功耗低,容易实现系列化、小型化、模块化和工程化。
直接数字式的优点是电路稳定、精度高、容易实现系列化、小型化、模块化和工程化。
随着单片锁相式数字频率计的发展,锁相式和数字式容易实现系列化、小型化、模块化和工程化,性能也越来越好,已逐步成为两种最为典型,用处最为广泛的数字频率计。
数字频率计是计算机、通讯设备、音频视频等科研生产领域不可缺少的测量仪器,并且与许多电参量的测量方案、测量结果都有十分密切的关系,因此,频率的测量就显得更为重要。
在数字电路中,频率计属于时序电路,它主要由具有记忆功能的触发器构成。
在计算机及各种数字仪表中,都得到了广泛的应用。
在CMOS电路系列产品中,频率计是用量最大、品种很多的产品。
1.2设计的任务及要求
本设计采用AT89C51及其外围扩展系统,软件方面主要是应用C语言设计程序。
系统以AT89C51单片机为核心,配置相应的外设及接口电路,用C语言开发,组成一个频率计测量系统。
该系统的软件可运行于WindowsXP环境下。
1.2.1设计的基本要求
1.被测信号的频率测量范围为1-9993Hz频率。
2.当被测信号的频率超出测量范围(>9993Hz)时,报警。
3.显示方式:
LM016L液晶显示。
1.2.2本文结构安排
全文共分为6章,第1章前言(介绍设计的研究现状、选题意义及设计的任务与要求);第2章系统总体的设计原理;第3章系统的硬件设计;第4章系统的软件设计;第5章系统的调试与测试;第6章总结
第二章频率计的系统设计
2.1主控制模块的选择
利用单片机内部的定时/计数器T0进行中断定时,配合软件延时实现基准定时。
定时/计数器T1对矩形方波信号周期计数,到达基准定时周期便将计数器计数值写入显示缓冲区进行显示。
该方案节省硬件成本,且能使设计者对单片机的指令系统能有更深入的了解,从而掌握单片机应用技术MCS-51汇编语言程序设计方法,而由于ATMEL公司的AT89C51单片机是低功耗的具有4KB在线可编程Flash存储器的单片机。
它与通用80C51系列单片机的指令系和引脚兼容。
片内的Flash可允许在线重新编程,也可使用通用非易失性存储器编程。
它将通用CPU和在线可编程Flash集成在一个芯片上,形成了功能强大、使用灵活和具有较高性能价格比的微控制器。
它的功能强大,而且也较容易购买,故本设计中所选的单片机为AT89C51单片机。
AT89C51简介
AT89C51是一种带4K字节FLASH存储器(FPEROM—FlashProgrammableandErasableReadOnlyMemory)的低电压、高性能CMOS8位微处理器,俗称单片机。
AT89C2051是一种带2K字节闪存可编程可擦除只读存储器的单片机。
单片机的可擦除只读存储器可以反复擦除1000次。
该器件采用ATMEL高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。
由于将多功能8位CPU和闪烁存储器组合在单个芯片中,ATMEL的AT89C51是一种高效微控制器,AT89C2051是它的一种精简版本。
AT89C51单片机为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。
引脚排列如图所示
·与MCS-51兼容
·4K字节可编程FLASH存储器
·寿命:
1000写/擦循环
·数据保留时间:
10年
·全静态工作:
0Hz-24MHz
·三级程序存储器锁定
·128×8位内部RAM
·32可编程I/O线
·两个16位定时器/计数器
·5个中断源
·可编程串行通道
·低功耗的闲置和掉电模式
·片内振荡器和时钟电路
特性概述:
AT89C51提供以下标准功能:
4k字节Flash闪速存储器,128字节内部RAM,32个I/O口线,两个16位定时/计数器,一个5向量两级中断结构,一个全双工串行通信口,片内振荡器及时钟电路。
同时,AT89C51可降至0Hz的静态逻辑操作,并支持两种软件可选的节电工作模式。
空闲方式停止CPU的工作,但允许RAM,定时/计数器,串行通信口及中断系统继续工作。
掉电方式保存RAM中的内容,但振荡器停止工作并禁止其它所有部件工作直到下一个硬件复位。
编辑本段管脚说明:
VCC:
供电电压。
GND:
接地。
P0口:
P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。
当P0口的管脚第一次写1时,被定义为高阻输入。
P0能够用于外部程序数据存储器,它可以被定义为数据/地址的低八位。
在FIASH编程时,P0口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须接上拉电阻。
P1口:
P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。
P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。
在FLASH编程和校验时,P1口作为低八位地址接收。
P2口:
P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。
并因此作为输入时,P2口的管脚被外部拉低,将输出电流。
这是由于内部上拉的缘故。
当P2口用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。
在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。
P2口在FLASH编程和校验时接收高八位地址信号和控制信号。
P3口:
P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。
当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。
作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。
P3口也可作为AT89C51的一些特殊功能口,如下表所示:
口管脚备选功能
P3.0RXD(串行输入口)
P3.1TXD(串行输出口)
P3.2/INT0(外部中断0)
P3.3/INT1(外部中断1)
P3.4T0(记时器0外部输入)
P3.5T1(记时器1外部输入)
P3.6/WR(外部数据存储器写选通)
P3.7/RD(外部数据存储器读选通)
P3口同时为闪烁编程和编程校验接收一些控制信号。
RST:
复位输入。
当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。
ALE/PROG:
当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的低位字节。
在FLASH编程期间,此引脚用于输入编程脉冲。
在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。
因此它可用作对外部输出的脉冲或用于定时目的。
然而要注意的是:
每当用作外部数据存储器时,将跳过一个ALE脉冲。
如想禁止ALE的输出可在SFR8EH地址上置0。
此时,ALE只有在执行MOVX,MOVC指令是ALE才起作用。
另外,该引脚被略微拉高。
如果微处理器在外部执行状态ALE禁止,置位无效。
/PSEN:
外部程序存储器的选通信号。
在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。
但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。
/EA/VPP:
当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。
注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。
在FLASH编程期间,此引脚也用于施加12V编程电源(VPP)。
XTAL1:
反向振荡放大器的输入及内部时钟工作电路的输入。
XTAL2:
来自反向振荡器的输出。
2.2系统总体框图
本课题设计一个1HZ—9993HZ的数字频率计,并将所需得到的频率通过液晶屏显示出来。
数字频率计主要由四部分组成:
复位电路、时钟电路、逻辑控制电路以及显示电路。
原理框图如下图所示:
第三章系统硬件电路的设计
3.1频率计的工作电路原理
以单片机为控制核心开发数字频率计,外围电路简单明了。
被测信号送至单片机定时/计数器T1口,经单片机控制处理将信号频率送至液晶LM016L上显示。
3.2单片机最小系统
单片机最小系统如下图所示:
单片机最小系统图
对单片机最小系统说明如下:
(1)单片机晶振电路
单片机外围的晶振电路是通过单片机的第18(XTAL1),19(XTAL2)引脚接入,XTAL1:
振荡器反相放大器和内部时钟发生电路的输入端。
XTAL2:
振荡器反相放大器的输出端。
对于STC11CF01一般的晶振频率可以在12MHz—35MHz之间选择,这时电容C可以对应的选择10pF—30pF。
对于本设计的电容C用30pF,晶振选用35MHz。
晶振电路解法图3-1,一条引脚接在XTAL1,另一条接在XTAL2。
(2)单片机的复位电路
RST:
复位输入。
晶振工作时,RST脚将持续2个机器周期高电平将使单片机复位。
看门狗计时完成后,RST脚输出96个晶振周期的高电平。
特殊寄存器AUXR(地址8EH)上的DISRTO位可以使此功能无效。
DISRTO默认状态下,复位高电平有效。
为了防止程序执行过程中失步或运行紊乱,此处我们采用了上电复位及手动复位电路。
(3)
/VPP:
访问外部程序存储器控制信号。
为使能从0000H到FFFFH的外部程序存储器读取指令,
必须接GND。
为了执行内部程序指令,
应该接VCC。
在flash编程期间,
也接收12伏VPP电压。
(4)ALE/
:
地址锁存控制信号(ALE)是访问外部程序存储器时,锁存低8位地址的输出脉冲。
在flash编程时,此引脚(
)也用作编程输入脉冲。
在一般情况下,ALE以晶振六分之一的固定频率输出脉冲,可以用来作为外部定时器或时钟使用。
然而,特别强调,在每次访问外部数据存储器时,ALE脉冲将会跳过。
如果需要,通过将地址为8EH的SFR的第0位置“1”,ALE操作将无效。
这一位置“1”,ALE仅在执行MOVX或MOVC指令时有效。
否则,ALE将被微弱拉高。
这个ALE使能标志位(地址为8EH的SFR的第0位)的设置对微控制器处于外部执行模式下无效。
第四章系统软件设计方案
4.1系统软件设计方案
51单片机系列的编程语言常用的有两种,一种是汇编语言,一种是C语言。
汇编语言,是一种功能很强的程序设计语言,也是利用计算机所有硬件特性并能直接控制硬件的语言。
汇编语言直接同计算机的底层软件甚至硬件进行交互,它具有如下一些优点:
(1)能够直接访问与硬件相关的存储器或I/O端口;
(2)能够不受编译器的限制,对生成的二进制代码进行完全的控制;(3)能够对关键代码进行更准确的控制,避免因线程共同访问或者硬件设备共享引起的死锁;(4)能够根据特定的应用对代码做最佳的优化,提高运行速度;(5)能够最大限度地发挥硬件的功能。
同时还应该认识到,汇编语言是一种层次非常低的语言,它仅仅高于直接手工编写二进制的机器指令码,因此不可避免地存在一些缺点:
(1)编写的代码非常难懂,不好维护;
(2)很容易产生bug,难于调试;(3)只能针对特定的体系结构和处理器进行优化;(4)开发效率很低,时间长且单调。
C语言,是一种计算机程序设计语言。
它既具有高级语言的特点,又具有汇编语言的特点。
它可以作为工作系统设计语言,编写系统应用程序,也可以作为应用程序设计语言,编写不依赖计算机硬件的应用程序。
因此,它的应用范围广泛,不仅仅是在软件开发上,而且各类科研都需要用到C语言,具体应用比如单片机以及嵌入式系统开发。
它具有如下优点:
(1)简洁紧凑、灵活方便;
(2)运算符丰富;(3)数据结构丰富;(4)C是结构式语言;(5)C语法限制不太严格,程序设计自由度大;(6)C语言允许直接访问物理地址,可以直接对硬件进行操作;(7)生成目标代码质量高,程序执行效率高;(8)C语言适用范围大,可移植性好。
汇编语言的机器代码生成效率很高但可读性却并不强,复杂一点的程序就更是难读懂,而C语言在大多数情况下其机器代码生成效率和汇编语言相当,但可读性和可移植性却远远超过汇编语言,而且C语言还可以嵌入汇编来解决高时效性的代码编写问题。
对于开发周期来说,中大型的软件编写用C语言的开发周期通常要小于汇编语言很多。
综合以上C语言的优点,函数发生器系统的软件部分由C语言设计编程实现。
4.2系统软件的设计流程
系统软件是由若干子程序构成,包括主程序、显示子程序、各模式子程序等等。
主程序的流程图如图所示
4.2.1主程序流程图
4.2.2LCD显示模块的设计
用LCD屏是一个内部的显示窗口,通过它我们可以随时观察到输出通道的内部工作温度,我们通过单片机对端口输出电压进行实时的A/D采样然后将采样结果反映在液晶屏上,在实体电路的设计中我们将LCD的数据接口接在P2口,RS接P1.0,R/W接P1.1,E接在P1.2,具体电路详见附录。
LCD显示模块系统软件设计流程图
窗体顶端
第五章系统调试与测试
5.1调试
简单系统硬件的调试通常采用载入测试程序并运行,在Protues软件中观察仿真结果。
频率在测量范围内:
例如1Hz时的测量效果如下图所示
频率超出测量范围内:
例如9999Hz时的测量效果如下图所示
5.2测试
测试的方法:
在测试本系统时采用的是将设置的数值与液晶显示的所测试值进行对比,进而可以知道本系统的性能。
5.3数据分析
频率计显示(测量)的实际上是单位时间内对信号脉冲的计数值。
频率误差分析:
被测信号的测量误差:
1Hz-1000Hz时,误差为1Hz。
1000Hz-2000Hz时,误差为1-2Hz。
2000Hz-5000Hz时,误差为2-3Hz。
5000Hz-7000Hz时,误差为3-4Hz。
7000Hz-9993Hz时,误差为5-6Hz。
综上所述,由上述数据可以看出,频率计有一定的误差。
其误差产生主要来自以下方面:
1、基准时间的误差,所谓单位时间的计数,需要一个时间基准,这个基准是频率计自己发生的,也可以外部引入,但无论如何都会有一个误差存在;
2、计数误差,所谓单位时间的计数,只要计数结束时没有接到下一个脉冲,计数值就不会上升,例如频率只要大于2小于3,计数值就只能是2,频率计是通过增加计数时间来减少这方面误差的,但误差总会存在。
3、指示误差,从误差理论上讲,仪表的最小分度应该大于等于最大允许的2倍,但由于数字显示的特性和计量值的传递问题,实际上数字显示仪表的最大允许误差达到小于正负两个字。
4、测量过程中引入的外部干扰,这一点在测量频率低于工频周波时较为突出,原因也较多。
第六章总结
数字频率计是计算机、通讯设备、音频视频等科研生产领域不可缺少的测量仪器。
在进行模拟、数字电路的设计、安装、调试过程中,由于其使用十进制数显示,测量迅速,精确度高,显示直观,会被经常使用到。
在这几周做这个项目中,从最开始的确定项目,到查找资料,再到设计原理图,到设计程序,做文档。
在调试程序的过程中,调试了很久,效果却不佳,不免烦躁起来,但心里烦躁是做不好事情的
通过本次课程的设计,不但加深我对在课程上所学到的单片机理论知识的认识和理解,重新让自己认识到了这门学科的在应用方面的广阔前景,并且通过知识与应用于实践的结合更加丰富了自己的知识。
扩展了知识面,不但掌握了本专业的相关知识,而且较系统的掌握单片机应用系统的开发过程,因而自身的综合素质有了全面的提高。
经过这次一个较完整的产品设计和制作过程,对于认识到自己在知识方面存在的不足,明确今后的学习方向是非常有益的,为将来的的就业提前打了下坚实的基础。
在设计过程中,得到了我的指导老师的悉心指导与帮助,还有同学的大力支持和协助,在此一并表示衷心的感谢。
附录
附录一系统软件部分源程序
/*频率计的设计(液晶显示)*/
/*测量范围1~9993Hz,误差1Hz-1000Hz时,误差为1Hz。
1000Hz-2000Hz时,误差为1-2Hz。
2000Hz-5000Hz时,误差为2-3Hz。
5000Hz-7000Hz时,误差为3-4Hz。
7000Hz-9993Hz时,误差为5-6Hz。
*/
/*当频率大于9993Hz时,报警器报警*/
#include
voiddelay(unsignedintz);/*延时*/
voidwrite_com(unsignedcharc);/*写指令*/
voidwrite_dat(unsignedchardat);/*写数据*/
sbitRS=P1^0;
sbitRW=P1^1;
sbitE=P1^2;
sbitSPK=P1^7;/*定义扬声器*/
unsignedcharcount=0;
unsignedints=0;
voidwrite_com(unsignedcharc)/*写指令*/
{
RS=0;/*指令*/
RW=0;/*写*/
E=1;
P2=c;/*P2>>DB0~7*/
delay(5);
E=0;/*E为下降沿*/
}
voidwrite_dat(unsignedchardat)/*写数据*/
{
RS=1;/*数据*/
RW=0;/*写*/
E=1;
P2=dat;/*P2>>DB0~7*/
delay(5);
E=0;/*E为下降沿*/
}
voiddelay(unsignedintz)/*延时函数*/
{
unsignedintx,y;
for(x=0;x for(y=0;y<110;y++); } voidlcd_init() { E=0; write_com(0x38);/*显示模式设置*/ write_com(0x0c);/*开显示,无光标*/ write_com(0x06);/*地址指针自动+1且光标+1,写字符屏幕不会移动*/ write_com(0X01);/*清屏*/ write_com(0X80+0x1);/*初始化指针在显示屏外*/ write_dat('P'); write_dat('I'); write_dat('N'); write_dat('L'); write_dat('V'); write_dat(': '); } /*主函数*/ voidmain() { lcd_init(); TMOD=0x51; TH0=(65536-50000)/256;/*计数器初值高8位*/ TL0=(65536-50000)%256;/*计数器初值低8位*/ TH1=0;/*设置定时初值*/ TL1=0;/*设置定时初值*/ EA=1;/*打开总中断*/ ET0=1;/*打开定时器T0中断*/ TR0=1;/*启动定时器T0*/ TR1=1;/*启动定时器T1*/ while (1) { write_com(0X80+7); write_dat(0x30+s/1000); write_dat(0x30+(s%1000)/100); write_dat(0x30+(s%100)/10); write_dat(0x30+s%10); } } voidtimer0(void)interrupt1/*定时器T0中断*/ { TR0=0; count++; TH0=(65536-50000)/256; TL0=(65536-50000)%256; if(count==20) { count=0; s=TH1*256+TL1; if(s>=9993)/*频率大于9993,扬声器报警*/ {
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 频率计 设计