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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

基于51单片机的数字频率计设计Word下载.docx

1、波形:方波输入信号电压:5V二、数字频率计的硬件构造设计2.1 系统硬件的构成本频率计的数据采集系统主要元器件是单片机AT89C51,由它完成对待测信号频率的计数和结果显示等功能,外部还要有电源电路、复位电路、显示器,报警电路等器件,如下列图所示:图一数字频率计功能模块2.2 AT89C51单片机引脚说明在本次设计中,采用89C51作为CPU处理器,充分利用其硬件资源,结合数码管,发光二极管,按键开关构成控制及显示模块。在试验中选用P1.2,P1.3,P1.4端口分别控制数据和时钟信号的输入实现频率的动态显示。P口引脚外接发光二极管作为报警电路。P3.5引脚作为被测信号的输入引脚。2.3 数码

2、管显示电路本实验使用四位共阳极数码管,使用两片74HC595作为数码管驱动通过P1.2,P1.3,P1.4端口分别控制数据和时钟信号的输入实现频率的动态显示。三、实验原理图图二数码管电路图三数码管驱动电路图五超量程报警电路图六单片机及复位电路四、实验记录1程序设计调试过程记录本次实验的程序框架都在实验的预习和准备中完成,其中包括延时函数编写,显示函数编写,定时器0初值计算,频率值的计算,定时器计数器的初始化和中断效劳程序的编写。但是由于预习和设计时针对的数码管硬件连接方式不同,在预习时针对的数码管为74HC245和74HC138两个芯片控制一组四位共阳极数码管的动态显示,其中74HC245控制

3、数码管显示的数值,74HC138控制数码管显示位数,这种硬件连接方式的驱动程序编写较为简单,但缺点是需要占用单片机两组I/O口,使得单片机利用率降低。而实验所用的开发板也带有两组四位共阳极数码管,但他们是由两块74HC595控制,只需要用三个I/O口即可实现8位数码管的显示控制,大大提高了单片机端口的利用率,但程序编写较为复杂,且需要进展时序控制,逻辑也较为复杂。在这次试验中,该显示程序的编写和调试占用了很多时间。在进展定时器模块设计时,由于定时时间较长,所以采用了方式116位计数器,将一次循环时间定为50ms,循环20次即为1s的时间。由于定时器0的工作方式一需要重装初值,因此在屡次循环后会

4、导致定时时间不准确,这会使最后计算得到的频率值产生误差,且频率越高误差越大实验记录数据会在后边给出。2实验数据记录输入波形:方波; 输入信号幅值:5V;序号输入频率/Hz测量频率/Hz绝对误差/Hz相对误差11025031001100.14200220205300330306400440407500550860066060970077070800880801190099090121000110013150016501501420002200152500275025016300033001750005500188000880019900099003误差分析经过测量,发现测量频率与输入频率之间有较

5、为明显的误差,且随着测量信号频率的升高绝对误差随之增大但相对误差根本不变,且由于误差的产生,频率只能测量到9K左右并不能到达预计量程。经过对程序的分析发现误差的主要来源为定时器定时不准确造成的。在实验设计时考虑到定时时间较长,所以选择了定时器0的工作方式1,其最大定时时间为65ms,故实验中选择一次定时50ms,循环20次以到达1s的准确定时,但由于屡次重装初值,使实际定时时间大于1s。但是由于定时时间已经确定所以设实际定时时间为T0,输入信号频率为f0,那么绝对误差为E有E=f0*(T0-1)Hz相对误差为ErEr=E/f0=(T0-1)由于T0为定值,所以相对误差Er为一定值,且由上边记录

6、数据可算出实际定时是时间T0为1.1s4解决方法方法一:通过调整定时器0初值,屡次测量校准可以到达1s的准确定时,从而提高频率测量精度。方法二:改变定时器工作方式,有方式1改为方式2自动重装初值,方式二由于可以自动重装初值可以减少方式1中重装初值所附加的时间,实现更加准确地定时。五、修改后的程序框图六、总结通过这次实验我加深了对51单片机的了解,对单片机的定时器,计数器,中断系统,I/O口等有了更加直观的认识。最初选题时对数字频率计还不是很了解,但通过查找相关资料及和同学讨论逐渐清楚了频率计的工作原理,也对各个组成局部的电路有了大致的了解,最终确定了选题完成了预习报告的撰写。虽然事先准备的比拟

7、充分,但实验过程中仍然遇到了很多问题,例如不同芯片驱动的数码管驱动程序需要重新编写,还要添加按键,发光二极管等外部设备。但最终通过查找资料及与同学交流顺利解决了这些问题最终顺利完成了本次实验。通过这次完整的实验设计和具体实践,让我学会了从系统的高度来考虑设计电路的各个模块,对电路的设计研究有了更加深刻的体会;同时我也感受到了用软件进展电路设计和仿真对实际电路设计有很重要的指导意义和参考价值。在这次试验中不仅要对单片机的功能,性能,引脚定义和内部构造也有较为详细的了解;此外对电路板中所用到的电源转换芯片,数字电路的各种驱动芯片的引脚和功能,可编程器件的驱动程序等有很好地认识;在程序设计过程中要注

8、意进展模块化的程序设计,逐个模块进展调试不仅会使程序逻辑更加清晰,也会加快程序调试进程。以上是我对这次实验的感受。七、附件#include /-/ 函数原形定义#define uchar unsigned char#define uint unsigned intvoid main (void); / 主函数void LED4_Display (void); / LED显示void LED_OUT(uchar X); / LED单字节串行移位函数unsigned char code LED_0F; / LED字模表sbit DIO = P12; /串行数据输入sbit RCLK = P13;

9、/时钟脉冲信号上升沿有效sbit SCLK = P14; /打入信号上升沿有效/-/ 全局变量uchar LED8; /用于LED的8位显示缓存uint ff; /承受频率值uchar start=1; /定时器,计数模式启动变量unsigned char code LED_0F = / 0 1 2 3 4 5 6 7 8 9 A b C d E F - 0xC0,0xF9,0xA4,0xB0,0x99,0x92,0x82,0xF8,0x80,0x90,0x8C,0xBF,0xC6,0xA1,0x86,0xFF,0xbf;void delay(k) /延时函数while(k-);void De

10、lay_ms(uint time) /延时函数uint i,j; for(i=time;i0;i-) for(j=125;jj-);void LED4_Display (void) /显示函数unsigned char code *led_table; / 查表指针uchar i; /显示第1位led_table = LED_0F + LED1; i = *led_table; LED_OUT(0x04); LED_OUT(i); RCLK = 0; RCLK = 1;/显示第2位led_table = LED_0F + LED2; LED_OUT(0x08);/显示第3位led_table = LED_0F + LED3; LED_OUT(0x01);/显示第4位led_table = LED_0F + LED4; LED_OUT(0x02);void LED_OUT(uchar X) /输出函数 for(i=8;=1; if (X&0x80) DIO=1; else DIO=0;X SCLK = 0; SCLK = 1; void time0_init() /定时器初始化TIMER0TMOD|=0x01; /定时器0 定时模式计数X围65536 TH0=0x3c; /定时初值50ms TL0=0x

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

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