ImageVerifierCode 换一换
格式:DOCX , 页数:13 ,大小:110.81KB ,
资源ID:3681182      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/3681182.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(基于单片机的数字式频率检测.docx)为本站会员(b****3)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

基于单片机的数字式频率检测.docx

1、基于单片机的数字式频率检测实验名称:频率温度检测姓名: 万兴学号: 112207202125指导老师:徐天奇基于单片机的数字频率温度设计 本设计以AT89S52单片机为核心充分利用硬件资源设计的一种频率计,该频率计首先将被测信号放大整形处理,变成满足单片机I/O口接受的TTL/ CMOS 兼容信号从单片机的T1输入口输入直接累加脉冲数,将单片机内部定时器定时为1S,这时累加的脉冲数即为被测信号的频率。最后经单片机处理送至lcd液晶显示屏显示。1系统概述 1.1数字频率计概述 本数字频率计将采用定时、计数的方法测量频率,采用一个1602A LCD显示器动态显示6位数。测量范围从0Hz65535H

2、z(此测量范围为计数器的最大计数,可根据实际需要进行扩展。用单片机实现自动测量功能。1.2 基本设计原理 基本设计原理是直接用十进制数字显示被测信号频率的一种测量装置。它以测量频率的方法直接对正弦波、方波、三角波的频率进行自动的测量。所谓“频率”,就是周期性信号在单位时间(1s)内变化的次数。若在一定时间间隔T内测得这个周期性信号的重复变化次数N,则其频率可表示为f=N/T。其中脉冲形成电路的作用是将被测信号变成脉冲信号,其重复频率等于被测频率f。利用单片机的内部定时器作为定时时间周期,若其周期为1s,则输入的脉冲信号持续计数时间亦准确地等于1s,所计数的脉冲个数即为被测信号的频率。1本次设计

3、中 对外部脉冲的占空比无特殊要求。根据频率检测的原理,很容易想到利用51单片机的T0、T1两个定时/计数器,一个用来定时,另一个用来计数,两者均应该工作在中断方式,一个中断用于1s时间的中断处理,一个中断用于对频率脉冲的计数溢出处理,(对另一个计数单元加一),此方法可以弥补计数器最多只能计数65536(2的16次方)的不足。将计数中断弥补计数器最高计数65536的不足作为本设计的扩展,故本设计最终选择采用第一种方法并且只使用计数器的最多计数65536。2数字频率计(低频)的硬件结构设计2.1 系统硬件的构成 本频率计的数据采集系统主要元器件是单片机AT89S52,由它完成对待测信号频率的计数、

4、计数处理、结果显示等功能,外部还要有信号处理、LCD显示器等器件。具体可分为以下几个模块:放大整形模块、单片机系统、LCD显示模块。各模块关系图如图2所示: 图2 系统工作原理图2.2 AT89S52单片机及其引脚说明 AT89S52是一种高性能低功耗的采用CMOS工艺制造的8位微控制器,它提供下列标准特征:4K字节的程序存储器,128字节的RAM,32条I/O线,2个16位定时器/计数器, 一个5中断源两个优先级的中断结构,一个双工的串行口, 片上震荡器和时钟电路引脚说明:VCC:电源电压GND:地P0:P0口是一组8位漏极开路型双向I/O口,作为输出口用时,每个引脚能驱动8个TTL逻辑门电

5、路。当对0端口写入1时,可以作为高阻抗输入端使用。当P0口访问外部程序存储器或数据存储器时,它还可设定成地址数据总线复用的形式。在这种模式下,P0口具有内部上拉电阻。在EPROM编程时,P0口接收指令字节,同时输出指令字节在程序校验时。程序校验时需要外接上拉电阻。P1:P1口是一带有内部上拉电阻的8位双向I/O口。P1口的输出缓冲能接受或输出4个TTL逻辑门电路。当对P1口写1时,它们被内部的上拉电阻拉升为高电平,此时可以作为输入端使用。当作为输入端使用时,P1口因为内部存在上拉电阻,所以当外部被拉低时会输出一个低电流(IIL)。P2:P2是一带有内部上拉电阻的8位双向的I/O端口。P2口的输

6、出缓冲能驱动4个TTL逻辑门电路。当向P2口写1时,通过内部上拉电阻把端口拉到高电平,此时可以用作输入口。作为输入口,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出电流(IIL)。P3口:P3是一带有内部上拉电阻的8位双向的I/O端口。P3口的输出缓冲能驱动4个TTL逻辑门电路。当向P3口写1时,通过内部上拉电阻把端口拉到高电平,此时可以用作输入口。作为输入口,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出电流(IIL)。P3同时具有多种特殊功能,具体如下表1所示:端口引脚第二功能P3.0RXD (串行输入口)P3.1TXD(串行输出口)P3.2 (外部中断0)P3.3(外部中断1

7、)P3.4T0(定时器0)P3.5T1(定时器1)P3.6(外部数据存储器写选通)P3.7(外部数据存储器都选通) 表1 P3口的第二功能 RST:复位输入。当振荡器工作时,RST引脚出现两个机器周期的高电平将使单片机复位。ALE/ :当访问外部存储器时,地址锁存允许是一输出脉冲,用以锁存地址的低8位字节。当在Flash编程时还可以作为编程脉冲输出。一般情况下,ALE是以晶振频率的1/6输出,可以用作外部时钟或定时目的。但也要注意,每当访问外部数据存储器时将跳过一个ALE脉冲。 :程序存储允许时外部程序存储器的读选通信号。当AT89C52执行外部程序存储器的指令时,每个机器周期 两次有效,除了

8、当访问外部数据存储器时, 将跳过两个信号。 /VPP:外部访问允许。为了使单片机能够有效的传送外部数据存储器从0000H到FFFH单元的指令, 必须同GND相连接。需要主要的是,如果加密位1被编程,复位时EA端会自动内部锁存。当执行内部编程指令时, 应该接到VCC端。XTAL1:振荡器反相放大器以及内部时钟电路的输入端。XTAL2:振荡器反相放大器的输出端。2.3 信号调理及放大整形模块 2.3.1 工作原理 放大整形系统包括衰减器、跟随器、放大器、施密特触发器。它将正弦输入信号Vx整形成同频率方波Vo,幅值过大的被测信号经过分压器分压送入后级放大器,以避免波形失真。由运算放大器构成的射级跟随

9、器起阻抗变换作用,使输入阻抗提高。同相输入的运算放大器的放大倍数为(R3+R4)/R3,改变R3的大小可以改变放大倍数。系统的整形电路由施密特触发器组成,整形后的方波送至单片机以便计数。 由于输入的信号幅度是不确定、可能很大也有可能很小,这样对于输入信号的测量就不方便了,过大可能会把器件烧毁,过小可能器件检测不到,所以在设计中采用了这个信号调理电路对输入的波形进行阻抗变换、放大限幅和整形,信号调理部分电路具体实现电路原理图和参数如下图3所示:4 图3 信号处理图中D1D4为肖特基二极管(DIODE),本设计中选用IN4148。D5为稳压二极管,本设计选用的稳压二极管IN4625,其中R1、R2

10、、R5、R6为10K,R4为150K,R3为500K的电位器。52.3.4 LF353双运算放大器简介 集成电路运算放大器是一种高电压增益、高输入电阻和低输出电阻的多级直接耦合放大电路,它的类型很多,电路也不一样,但结构具有共同之处,图6表示集成运放的内部电路组成原理框图。图中输入级一般是由BJT、JFET或MOSFET组成的差分式放大电路,利用它的对称性可以提高整个电路的共模抑制比和其他方面的性能,它的两个输入端构成整个电路的反相输入端和同相输入端7。电压放大级一般由电压跟随器或互补电压跟随器所组成,以降低输出电阻,提高带负载能力。偏置电路是为各级提供合适的工作电流。此外还有一些辅助环节,如

11、电平移动电路、过载保护电路以及高频补偿环节等。 题中用到的LF353放大器属于用型集成运算放大,该运算放大器内部有偏移电压和FET输入装置(双向场效应管),有较大的反向击穿电压,因此,当大差动输入电压时,可以很容易容纳增加的输入电流。图7 典型接法图8内部结构2.4 显示模块 2.4.1 1602ALCD 与单片机的接法 单片机与1602ALCD的连接如图9所示图9 单片机与LCD接法 1602ALCD采用标准的16脚接口,本设计具体接法如下: 第1脚:VSS为地电源(图中未画出)。 第2脚:VDD接5V正电源(图中未画出)。第3脚:V0为液晶显示器对比度调整端,接正电源时对比度最弱,接地电源

12、时对比度最高,对比度过高时会产生“鬼影”,本设计使用时通过一个10K的电位器调整其对比度(图中未画出)。第4脚:RS为寄存器选择,高电平时选择数据寄存器、低电平时选择指令寄存器。第5脚:RW为读写信号线,高电平时进行读操作,低电平时进行写操作。当RS和RW共同为低电平时可以写入指令或者显示地址,当RS为低电平RW为高电平时可以读忙信号,当RS为高电平RW为低电平时可以写入数据。第6脚:E端为使能端,当E端由高电平跳变成低电平时,液晶模块执行命令。 第714脚:D0D7为8位双向数据线。 第1516脚:空脚(图中未画出)。由于AT89S52单片机的P0口内部没有上拉电阻故在单片机与1602ALC

13、D之间需加上上拉电阻(图中未标出),本设计中选用4.7K的电阻。频率与温度的转换频率0-10kHZ10-20K20-30K30-40K40=50K50-60K60-70K温度0123456T1的计数原理 设计中T1采用计数功能,需要注意的一个问题是,输入的待测时钟信号的频率最高可以达到460800Hz,但本设计的最高频率为计数器的最多计数65536次,显然当所输入的频率大于65536Hz的时候将无法显示,所以每当计数器T1溢出回零时产生中断,中断程序执行显示提示错误信息显示为00000Hz。其程序流程图如图12所示。 软件工作原理将整形后的波形送至单片机的T1计数器输入口,打开定时器0,初始化

14、定时器0,将单片机的内部定时器T0定时为1S,此时T1输入口在1s内所计数到的脉冲个数即为该信号的频率。将该计数脉冲个数经单片机处理送至LCD显示。附录程序:#include #include typedef unsigned char BYTE;typedef unsigned int WORD;typedef bit BOOL ;sbit rs = P10; /液晶模块接口sbit rw = P11;sbit ep = P12;delay(BYTE ms) / 延时子程序 BYTE i; while(ms-) for(i = 0; i 250; i+) _nop_(); _nop_();

15、_nop_(); _nop_(); BOOL lcd_bz() / 测试LCD忙碌状态 BOOL result; rs = 0; rw = 1; ep = 1; _nop_(); _nop_(); _nop_(); _nop_(); result = (BOOL)(P0 & 0x80); ep = 0; return result; lcd_wcmd(BYTE cmd) / 写入指令数据到LCD while(lcd_bz(); rs = 0; rw = 0; ep = 0; _nop_(); _nop_(); P0 = cmd; _nop_(); _nop_(); _nop_(); _nop_

16、(); ep = 1; _nop_(); _nop_(); _nop_(); _nop_(); ep = 0; extern void lcd_pos(BYTE pos) /设定显示位置 lcd_wcmd(pos | 0x80);extern void lcd_wdat(BYTE dat) /写入字符显示数据到LCD while(lcd_bz(); rs = 1; rw = 0; ep = 0; P0 = dat; _nop_(); _nop_(); _nop_(); _nop_(); ep = 1; _nop_(); _nop_(); _nop_(); _nop_(); ep = 0; ex

17、tern void lcd_init() /LCD初始化设定 lcd_wcmd(0x38); / 8位数据接口,2行显示,5*7 delay(1); lcd_wcmd(0x0c); / 显示开。关标关。闪烁关 delay(1); lcd_wcmd(0x06); / 数据读写AC加1。画面不移动 delay(1); lcd_wcmd(0x01); /清除LCD的显示内容 delay(1);#include /typedef unsigned char BYTE;typedef unsigned int WORD;typedef bit BOOL ;/extern void lcd_init();

18、extern void lcd_wdat(BYTE dat);extern void lcd_pos(BYTE pos);/void main() lcd_init(); P0=0XFF; P1=0XFF; TMOD=0X01; TH0=0X3C; TL0=0XB0; IE=0X82; TR0=1; while(1);/void time0(void) interrupt 1 static BYTE count=0; TH0=0X3C; TL0=0XB0; / if(count=19) count+; else BYTE GE,SHI,BAI,QIAN,WAN; WORD SHU; /读取数据

19、存放在shu中 SHU=P3; /P3高位 SHU=8; SHU+=P2;/P2低位 SHU&=0XFFF9; /关闭定时器 TR0=0; /输出shu到lcd中 GE=SHU%10; SHI=SHU/10%10; BAI=SHU/100%10; QIAN=SHU/1000%10; WAN=SHU/10000; lcd_pos(0x00); lcd_wdat(WAN+48); lcd_wdat(QIAN+48); lcd_wdat(BAI+48); lcd_wdat(SHI+48); lcd_wdat(GE+48); lcd_wdat( ); lcd_wdat(H); lcd_wdat(Z); /初始化 count=0; TH0=0X3C; TL0=0XB0; P1_3=1; /准备新一轮的计数 TR0=1; P1_3=0;

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1