收藏 分销(赏)

简易频率计单片机课程设计.doc

上传人:精*** 文档编号:3326824 上传时间:2024-07-02 格式:DOC 页数:38 大小:453.54KB
下载 相关 举报
简易频率计单片机课程设计.doc_第1页
第1页 / 共38页
简易频率计单片机课程设计.doc_第2页
第2页 / 共38页
简易频率计单片机课程设计.doc_第3页
第3页 / 共38页
简易频率计单片机课程设计.doc_第4页
第4页 / 共38页
简易频率计单片机课程设计.doc_第5页
第5页 / 共38页
点击查看更多>>
资源描述

1、课程名称: 单片机应用课程设计设计题目: 简易频率计的设计 院 系: 电气工程 专 业: 年 级: 姓 名: 指导教师: 年 月 日课 程 设 计 任 务 书专 业 姓 名 学 号 开题日期: 年 月 日 完毕日期 年 月 日题 目 简易频率计的设计 一、设计的目的 频率计作为测量仪器的一种,它的基本功能是测量信号的频率和周期频率计的应用范围很广,但是目前,市场上有各种多功能、高精度、高频率的数字频率计,但价格不菲。为适应工作的需要,可以用一种较小规模和单片机(AT89C51)相结合的频率计的设计方案,不仅切实可行,并且体积小、设计简朴、成本低、精度高、可测频带宽,大大减少了设计成本和实现复杂

2、度。 二、设计的内容及规定 本设计以AT89C51单片机为控制核心,将外部的频率脉冲信号通过单片机计数端输入,由定期器/计数器T0负责定期,定期器/计数器T1负责对被测信号计数,该频率计的测量范围为1Hz65534Hz,被测脉冲信号的频率可以随时进行调整,通过LCD液晶显示模块对被测信号的频率进行实时显示。该系统涉及被测频率脉冲信号、单片机晶振电路、以AT89C51单片机为核心的频率测量模块、LCD液晶显示模块。 三、指导教师评语 四、成 绩 指导教师 (签章) 年 月 日摘 要在电子领域内,频率是一种最基本的参数,由于频率信号抗干扰能力强、易于传输,可以获得较高的测量精度。因此,频率的测量就

3、显得尤为重要,测频方法的研究越来越受到重视。频率计作为测量仪器的一种,常称为电子计数器,它的基本功能是测量信号的频率和周期频率计的应用范围很广,它不仅应用于一般的简朴仪器测量,目前,市场上有各种多功能、高精度、高频率的数字频率计,但价格不菲。为适应实际工作的需要,本次设计给出了一种设计方案,不仅切实可行,并且体积小、设计简朴、成本低、精度高、可测频带宽,大大减少了设计成本和实现复杂度。设计重要以AT89C51单片机为控制核心,将外部的频率脉冲信号通过单片机计数端输入,由定期器/计数器T0负责定期,定期器/计数器T1负责对被测信号计数,该频率计的测量范围为1Hz65534Hz,被测脉冲信号的频率

4、可以随时进行调整,通过LCD液晶显示模块对被测信号的频率进行实时显示。该系统涉及被测频率脉冲信号、单片机晶振电路、以AT89C51单片机为核心的频率测量模块、LCD液晶显示模块。关键词:单片机;AT89C51;脉冲信号;LCD显示模块目录摘 要2第1章 引言31.1研究的目的和意义31.2国内外研究现状3第2章 系统方案设计42.1基本原理42.1.1 测频原理42.1.2 频率计的基本原理52.2总体设计思绪62.3具体模块6第3章 硬件电路设计73.1 AT89C51主控制器模块73.1.1 重要特性83.1.2 管脚说明83.2 晶振电路103.3频率脉冲信号103.4 LCD液晶显示模

5、块11第4章 系统的软件设计114.1 频率测量模块114.2 液晶显示模块15第5章 频率计的系统调试与仿真195.1 KEIL中对程序的调试195.2 Protues中对系统的仿真19附录23总结28参考文献29第1章 引言1.1研究的目的和意义频率测量是电子学测量中最为基本的测量之一。由于频率信号抗干扰性强,易于传输,因此可以获得较高的测量精度。随着数字电子技术的发展,频率测量成为一项越来越普遍的工作,测频原理和测量方法的研究正受到越来越多的关注。频率计的重要功能是测量周期信号的频率。其基本原理就是用闸门计数的方式测量脉冲个数。频率计一方面必须获得相对稳定与准确的时间,同时将被测信号转换

6、成幅度与波形均能被数字电路辨认的脉冲信号,然后通过计数器计算这一段时间间隔内的脉冲个数,将其换算后显示出来。1.2国内外研究现状在电子测量领域中,频率测量的精确度是最高的,可达1010E-13数量级。由于大规模和超大规模数字集成电路技术、数据通信技术与单片机技术的结合,频率计发展进入了智能化和微型化的新阶段。其功能进一步扩大,除了测量频率、频率比、周期、时间、相位、相位差等基本功能外,还具有自捡、自校、自诊断、数理记录、计算方均根值、数据存储和数据通信等功能。此外,还能测量电压、电流、阻抗、功率和波形等。国际国内通用数字频率计的重要技术参数:1、足够宽的测量范围。随着现代电子技术的发展,特别是

7、高速芯片技术的发展,有些频率计数器可以直接测量。2、高精度和高分辨率。精度是指测量的准确限度,即仪器的读数接近实际信号频率的限度,精度越高测量越准确。3、晶体振荡器的频率稳定度。晶体振荡器的频率稳定度,是决定频率计测量误差的一个重要指标。4、输入灵敏度。输入灵敏度是指在侧频范围内能保证正常工作的最小输入电压第2章 系统方案设计2.1基本原理2.1.1 测频原理所谓“频率”就是周期性信号在单位时间(1s)内变化的次数,就是“在单位时间内对被测信号进行计数”。我们将被测的频率脉冲信号直接送到单片机的计数输入端,由定期器/计数器T0负责定期,定期器/计数器T1负责对被测信号计数,一旦T0定期时间到,

8、立刻终止T1的计数,此时T1的计数值便是单位时间内的脉冲个数。若在一定期间间隔T内测得这个周期性信号的反复变化次数N,则其频率可表达为f=N/T。我们将T0的定期时间设为1s,当T0定期满1s后,立即停止T1计数,此时T1的计数值即为被测信号的频率。定期 待测信号 丢失 T 丢失 图2-1 频率测量原理图 在计数时会出现图2-1所示的丢失脉冲的情况。第一个丢失的脉冲是由于开始检测时脉冲宽度已小于机器周期T;第二个丢失的脉冲的负跳变在定期之外。定期时间内出现脉冲丢失,将引起测量精度减少。脉冲频率越低,这种误差越大。显然对于较低频率的脉冲测量不适合采用测量频率法。而我们本次设计就是采用这种测量频率

9、法对被测脉冲信号进行频率测量,为解决图一中脉冲的丢失这个问题,我们在程序设计中实现了计数开始与脉冲上升沿的同步控制。2.1.2 频率计的基本原理频率计最基本的工作原理为:当被测信号在特定期间段T内的周期个数为N时,则被测信号的频率f=N/T。在一个测量周期过程中,被测周期信号在输入电路中通过放大、整形、微分操作之后形成特定周期的窄脉冲,送到主门的一个输入端。主门此外一个输入端为时基电路产生电路产生的闸门脉冲。在闸门脉冲启动主门的期间,特定周期的窄脉冲才干通过主门,从而进入计数器进行计数,计数器的显示电路则用来显示被测信号的频率值,内部控制电路则用来完毕各种测量功能之间的切换并实现测量设立.图2

10、-2 频率计原理图2.2总体设计思绪频率计是一种专门对被测信号频率进行测量的电子测量仪器,是我们经常会用到的实验仪器之一,频率的测量事实上就是在单位时间内对脉冲信号进行计数,计数值就是信号频率。本文介绍了一种基于单片机的电子频率计的设计方法,此电子频率以AT89C51单片机为控制核心,可将外部的频率脉冲信号通过单片机计数端输入,由定期器/计数器T0负责定期,定期器/计数器T1负责对被测信号计数,一旦T0定期时间到,立刻终止T1的计数,此时T1的计数值便是单位时间内的脉冲个数,我们将T0的定期时间设为1s,当T0定期满1s后,立即停止T1计数,此时T1的计数值即为被测信号的频率。该频率计的测量范

11、围为1Hz65534Hz,被测脉冲信号的频率可以随时进行调整,通过LCD液晶显示模块对被测信号的频率进行实时显示。2.3具体模块根据上述系统分析,该系统涉及被测频率脉冲信号、单片机晶振电路、以AT89C51单片机为核心的频率测量模块、LCD液晶显示模块。各模块作用如下:1.脉冲信号:就是被测信号,可以随时调整其频率,以便于单片机测量。2.单片机晶振电路:由于单片机的内部时钟方式是用芯片内部振荡电路,精度不高,温飘也较大,外部时钟,分RC振荡和石英晶振,RC精度不高,成本低,石英晶振,精度高,稳定性好,故我们采用单片机的晶振电路提供时钟信号。3.AT89C51频率测量模块:重要负责对脉冲信号的计

12、数,并且驱动LCD显示模块实时显示测量值。4.LCD液晶显示模块:对单片机测量的频率进行实时显示。综上所述频率计的系统设计由被测频率脉冲信号、单片机晶振电路、以AT89C51单片机为核心的频率测量模块、LCD液晶显示模块等组成,频率计的总体设计框图如图2-3所示。图2-3 频率计总体设计框图第3章 硬件电路设计3.1 AT89C51主控制器模块电子频率计以AT89C51单片机为控制核心,可将外部的频率脉冲信号通过单片机计数端输入,由定期器/计数器T0负责定期,定期器/计数器T1(P3.5)负责对被测信号计数,一旦T0定期时间到,立刻终止T1的计数,此时T1的计数值便是单位时间内的脉冲个数,我们

13、将T0的定期时间设为1s,当T0定期满1s后,立即停止T1计数,此时T1的计数值即为被测信号的频率。图 3-1 AT89C51主控模块3.1.1 重要特性AT89C51 提供以下标准功能:4k 字节Flash 闪速存储器,128字节内部RAM,32 个I/O 口线,两个16位定期/计数器,一个5向量两级中断结构,一个全双工串行通信口,片内振荡器及时钟电路。同时,AT89C51可降至0Hz的静态逻辑操作,并支持两种软件可选的节电工作模式。空闲方式停止CPU的工作,但允许RAM,定期/计数器,串行通信口及中断系统继续工作。掉电方式保存RAM中的内容,但振荡器停止工作并严禁其它所有部件工作直到下一个

14、硬件复位。3.1.2 管脚说明VCC:供电电压。 GND:接地。 P0口:P0口为一个8位的漏级开路双向I/O口,每脚可吸取8TTL门电流。当P0口的管脚第一次写1时,被定义为高阻输入。在FIASH编程时,P0 口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须接上拉电阻。 P1口:P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接受输出4TTL门电流。P2口:P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接受,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。P2口在FLASH编程和校验时接受高八位地址信号和控制

15、信号。 P3口:P3口管脚是8个带内部上拉电阻的双向I/O口,可接受输出4个TTL门电流。当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。 RST:复位输入。当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。 XTAL1:反向振荡放大器的输入及内部时钟工作电路的输入。 XTAL2:来自反向振荡器的输出。 振荡器特性: XTAL1和XTAL2分别为反向放大器的输入和输出。该反向放大器可以配置为片内振荡器。石晶振荡和陶瓷振荡均可采用。如采用外部时钟源驱动器件,XTAL2应不接。有余输入至内部时钟信号要

16、通过一个二分频触发器,因此对外部时钟信号的脉宽无任何规定,但必须保证脉冲的高低电平规定的宽度。3.2 晶振电路由于单片机的内部时钟方式是用芯片内部振荡电路,精度不高,温漂也较大,外部时钟,分RC振荡和石英晶振,RC精度不高,成本低,石英晶振,精度高,稳定性好,故我们采用单片机的晶振电路提供时钟信号。图3-2 晶振电路3.3频率脉冲信号频率脉冲信号就是被测信号,可以随时调整其频率,以便于单片机测量,直接在protues左侧工具条内的一个Generator Mode工具中选择DCLOCK放置频率脉冲信号(如图3-3)。图3-3 频率脉冲信号3.4 LCD液晶显示模块LCD液晶显示器是一种被动式的显

17、示器,与LED不同,液晶自身并不发光,而是运用液晶在电压作用下,能改变光线通过方向的特性而达成显示白底黑字或黑底白字的目的。液晶显示器具有微功耗、体积小、重量轻、超薄型等诸多其他显示器件所无法比拟的优点,在袖珍式仪表和低功耗系统中,得到越来越广泛的应用,目前市场上液晶显示器种类繁多,按排列形状可分为字段型、点阵字符型、点阵图形型,在单片机应用系统中,常使用点阵字符型LCD显示器。字符型液晶显示模块组件内部重要由LCD显示屏(LCD Panel)、控制器(Controller)、驱动器(Driver)、少量阻容原件、结构件等装配在PCB上构成。第4章 系统的软件设计4.1 频率测量模块将定期器T

18、0设立在定期方式2,定期时间为250us,满4000次中断正好是1s,定期器T1工作于计数方式1,计数初值为0。在启动定期器T0开始定期后,随即对送到T1(P3.5)引脚的被测脉冲进行计数,当T0定期满1s后,立即停止T1计数,关闭定期器T0,T1的计数值即为被测信号的频率,程序流程图如图4-1。图4-1 频率测量频率测量其中,中断服务子程序流程图如下:图4-2中断服务子程序频率测量主函数中,还进行了数据转换以及调用显示模块进行显示其程序流程框图如下:图4-3 频率测量主函数频率测量模块源程序: #include #include #define uchar unsigned char #de

19、fine uint unsigned int void init_lcd(void); void disp_str(uchar x,uchar y,uchar *p); sbit FS=P35; /被测信号FS输入端 bit RDY=0; /测量完毕标志 uint msn; /定期中断计数 uint count(void)/测量FS的频率 RDY=0; TMOD=0x52;/T0:定期方式2,T1:计数方式1 TH0=TL0=6;/T0定期时间为250us msn=4000;/4000次中断正好1sTH1=TL1=0x00; /T1工作于计数方式,初值为0ET0=1;/允许T0中断EA=1;/

20、开中断while(FS=1); /等待被测信号变低while(FS=0);/等待被测信号变高TR0=1;/T0开始定期TR1=1;/T1开始计数while(RDY=0);/等待1sTR1=0;/关闭T1、T0TR0=0;return(TH1*256+TL1); /返回计数值 void timer0(void) interrupt 1 using 1 msn-; if(msn=0)/假如1s已到 RDY=1;/设立测量完毕标志位 void main() uint f; uchar str9=f= Hz;uchar i;init_lcd(); /液晶屏初始化while(1) f=count();

21、/测量频率 _nop_(); for(i=6;i=2;i-)/测量结果转换为5位ASCII码 stri=f%10+0x30; f=f/10; disp_str(0,3,str); /显示测量结果 4.2 液晶显示模块液晶显示模块是一个显示的子程序,重要供频率测量模块调用,以便在液晶屏上显示出实时的频率测量值,它的编程比较固定,无非就是按照LCD液晶显示屏的参数规定的指令系统来编写程序,其程序流程图4-4。图4-4 液晶显示液晶显示模块源程序: #include #include #define uchar unsigned char #define uint unsigned int sbit

22、 RS=P20; /数据/命令寄存器选择控制端 sbit RW=P21; /读写控制端 sbit E=P22; /使能控制端 sfr LCD=0x90; /P1口作为总线端口 sbit BF=LCD7; /就绪线BF,低电平有效 void lcd_cmd(uchar cmd) LCD=cmd; RS=0;/选择命令寄存器 RW=0;/执行写数据操作 E=1; _nop_();/延时 E=0;/使能信号有效 while(1) LCD=0xff;/总线变高 RS=0;/选择命令寄存器 RW=1;/读操作 E=0; /使能信号有效 _nop_(); E=1; /撤消使能信号 if(BF=0)brea

23、k; /假如就绪,返回 void lcd_dat(uchar dat) LCD=dat;/显示数据总线 RS=1;/选择数据寄存器 RW=0;/执行写数据操作 E=1; _nop_();/延时 E=0;/使能信号有效 while(1) LCD=0xff;/总线变高 RS=0;/选择命令寄存器 RW=1;/读操作 E=0; /使能信号有效 _nop_(); E=1; /撤消使能信号 if(BF=0)break; /假如就绪,返回dat=LCD; void init_lcd(void)/初始化液晶屏 lcd_cmd(0x01); /清屏幕lcd_cmd(0x3c); /设立双行显示,5*10点阵l

24、cd_cmd(0x0c); /开显示,关闭光标 void disp_str(uchar x,uchar y,uchar *p) /在x行、y列显示字符串p if(x=0) /假如在第一行显示 lcd_cmd(0x80+y); /设立写入地址else /假如在第二行显示 lcd_cmd(0xc0+y);/设立写入地址while(*p)/将字符依次发送到液晶屏 lcd_dat(*p+); 第5章 频率计的系统调试与仿真5.1 KEIL中对程序的调试德国的KEIL软件公司提供了一流的8051系列开发工具,将软件开发工具绑定到不同的套件或工具包中。KEIL 8051开发工具套件可用于编译C源程序、汇编

25、源程序,链接和定位目的文献及库,创建HEX文献以及调试目的程序,我们进入到KEIL中的集成开发环境,对所编写的程序进行了调试,使其生成了目的文献(HEX文献),如图5-1所示图5-1 程序的调试5.2 Protues中对系统的仿真我们采用Protues软件对系统进行仿真,将KEIL生成的HEX文献下载入单片机中,点击OK开始进行系统的仿真,如图5-2所示图 5-2 Protues中对hex文献的选择在Protues中双击被测频率脉冲信号t1,在Frequency中将其频率设定为6443,如图5-3所示:图 5-3 频率的设定点击OK,然后在Protues中点击Play开始进行系统仿真,仿真结果

26、如图5-4所示:图 5-4 仿真结果我们按照上面的方法,依次改变被测频率脉冲信号的频率,在Protues软件中进行反复的调试仿真,软件仿真结果如图5-5: 图5-5 多次仿真数据结果 从记录的数据可以看出,系统软件仿真误差很小,在信号频率范围内测量出来的频率基本上就是输入信号的频率,在超过这个范围后,才出现很小的误差。这也许是由于硬件电路信号传输延时,或者晶振电路产生的时钟信号误差导致的,也也许是由于软件中执行语句的延时导致的,在高频率下就会出现很小的误差,但是可以看出,误差在允许范围内,所设计的电路基本符合规定。 附录源程序:频率测量模块源程序 #include #include #defi

27、ne uchar unsigned char #define uint unsigned int void init_lcd(void); void disp_str(uchar x,uchar y,uchar *p); sbit FS=P35; /被测信号FS输入端 bit RDY=0; /测量完毕标志 uint msn; /定期中断计数 uint count(void)/测量FS的频率 RDY=0; TMOD=0x52;/T0:定期方式2,T1:计数方式1 TH0=TL0=6;/T0定期时间为250us msn=4000;/4000次中断正好1sTH1=TL1=0x00; /T1工作于计数

28、方式,初值为0ET0=1;/允许T0中断EA=1;/开中断while(FS=1); /等待被测信号变低while(FS=0);/等待被测信号变高TR0=1;/T0开始定期TR1=1;/T1开始计数while(RDY=0);/等待1sTR1=0;/关闭T1、T0TR0=0;return(TH1*256+TL1); /返回计数值 void timer0(void) interrupt 1 using 1 msn-; if(msn=0)/假如1s已到 RDY=1;/设立测量完毕标志位 void main() uint f; uchar str9=f= Hz;uchar i;init_lcd(); /

29、液晶屏初始化while(1) f=count(); /测量频率 _nop_(); for(i=6;i=2;i-)/测量结果转换为5位ASCII码 stri=f%10+0x30; f=f/10; disp_str(0,3,str); /显示测量结果 液晶显示模块源程序: #include #include #define uchar unsigned char #define uint unsigned int sbit RS=P20; /数据/命令寄存器选择控制端 sbit RW=P21; /读写控制端 sbit E=P22; /使能控制端 sfr LCD=0x90; /P1口作为总线端口 s

30、bit BF=LCD7; /就绪线BF,低电平有效 void lcd_cmd(uchar cmd) LCD=cmd; RS=0;/选择命令寄存器 RW=0;/执行写数据操作 E=1; _nop_();/延时 E=0;/使能信号有效 while(1) LCD=0xff;/总线变高 RS=0;/选择命令寄存器 RW=1;/读操作 E=0; /使能信号有效 _nop_(); E=1; /撤消使能信号 if(BF=0)break; /假如就绪,返回 void lcd_dat(uchar dat) LCD=dat;/显示数据总线 RS=1;/选择数据寄存器 RW=0;/执行写数据操作 E=1; _nop

31、_();/延时 E=0;/使能信号有效 while(1) LCD=0xff;/总线变高 RS=0;/选择命令寄存器 RW=1;/读操作 E=0; /使能信号有效 _nop_(); E=1; /撤消使能信号 if(BF=0)break; /假如就绪,返回dat=LCD; void init_lcd(void)/初始化液晶屏 lcd_cmd(0x01); /清屏幕lcd_cmd(0x3c); /设立双行显示,5*10点阵lcd_cmd(0x0c); /开显示,关闭光标 void disp_str(uchar x,uchar y,uchar *p) /在x行、y列显示字符串p if(x=0) /假如

32、在第一行显示 lcd_cmd(0x80+y); /设立写入地址else /假如在第二行显示 lcd_cmd(0xc0+y);/设立写入地址while(*p)/将字符依次发送到液晶屏 lcd_dat(*p+); 总结在当今高新技术产业迅猛发展的时期,频率计在计算机、通讯设备、音频视频等科研生产领域是不可缺少的测量仪器。频率测量又是电子学测量中最为基本的测量之一。由于频率信号抗干扰性强,易于传输,因此可以获得较高的测量精度。随着数字电子技术的发展,频率测量成为一项越来越普遍的工作,测频原理和测量方法的研究正受到越来越多的关注,本次设计以单片机为核心,测量迅速,精确度高,显示直观。在本次设计的过程中

33、,我深刻体会到了自己在专业知识的掌握上的局限性,特别是在程序编写上,碰到了许多问题,这使我不得不认真的去学习程序编写,去进一步了解程序编写的原理。由于本次设计涉及的知识面较广,需要经常通过网上查询资料,随时和老师、同学进行交流,受益菲浅,并在老师的指导下,填补了自己在许多知识面上的局限性。这次设计更让我结识到了查阅资料自学的重要性,在此后的学习中,应当多看一些专业方面的书籍,丰富自己的知识,提高自己的专业水平,相信这一定会对以后走上工作岗位的我有很大的帮助。参考文献1 马忠梅等.单片机的C语言应用程序设计(第四版). 北京:北京航空航天大学出版社,2023.2 张齐.单片机原理与应用系统设计. 北京:电子工业出版社,2023.3 曾一江.单片微机原理与接口技术. 北京:科学出版社,2023.4 吴飞青等.单片机原理与应用实践指导. 北京:机械工业出版社,2023.5 周雪.模拟电子技术(第二版). 西安:西安电子科技大学出版社,2023.6 黄维翼.单片机应用与实践项目. 北京:清华大学出版社,2023.7 江晓安.数字电路. 西安:西安电子科技大学出版社,2023.8 周润景等.PROTUES入门教程. 北京:机械工业出版社,2023.

展开阅读全文
相似文档                                   自信AI助手自信AI助手
猜你喜欢                                   自信AI导航自信AI导航
搜索标签

当前位置:首页 > 学术论文 > 其他

移动网页_全站_页脚广告1

关于我们      便捷服务       自信AI       AI导航        获赠5币

©2010-2024 宁波自信网络信息技术有限公司  版权所有

客服电话:4008-655-100  投诉/维权电话:4009-655-100

gongan.png浙公网安备33021202000488号   

icp.png浙ICP备2021020529号-1  |  浙B2-20240490  

关注我们 :gzh.png    weibo.png    LOFTER.png 

客服