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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

单片机频率计.docx

1、单片机频率计数字频率计学生:* 学号:071300022 指导老师:张俊 1、 设计内容的相关理论(1)数字频率计是直接用十进制数字来显示被测信号频率的一种测量装置。它不仅可以测量正弦波、方波、三角波、和尖脉冲信号的频率,而且还可以测量它们的周期。数字频率计在测量其他物理量如转速、振动频率等方面获得广泛应用。(2)所谓“频率”,就是周期性信号在单位时间(1s)内变化的次数,若在一定时间间隔T内测得这个周期性信号的重复变化次数N,则其频率可表示为 f=N/T。(3)原理图中的个元件介绍1)、7414TTL六反相施密特触发器2)、LM318运算放大器3)AT89C51单片机4)、六位数码管2、具体

2、设计2.1设计思路我们设计的数字频率计要可以测三角波,正弦波,方波和尖脉冲信号,那我们就不能直接从单片机的I/O口输入一个脉冲信号,因为从单片机输入的是方波信号,那我们必须把除方波以外的其他波形转化成方波的形式,然后从单片机的一个I/O口输入,所以我在信号输入单片机之前使用运算放大器将信号先放大以便单片机可以检测到输入的外部信号,在经过一个施密特触发器将放大后的信号转换成为方波信号,再输入给单片机进行脉冲计数,对数据进行处理,最后在数码管上面显示。2.2电路设计和分析过程下图1是数字频率计的原理图分析:输入的信号经过第一个Lm318组成的交流反向比例运算放大器放大26倍之后再经过第二个LM31

3、8组成的交流反向比例运算放大器进行二次放大10倍,放大后的信号在经过7414TTL六反相施密特触发器将输入放大后的信号整形成为方波,经过整形后的信号,伏值增大,频率不变。此整形电路将输入的正弦波、三角波和尖脉冲信号经过放大整形成为方波。形成的方波通过AT89C51的P3.4T0口输入计数,将记得的脉冲个数经过处理用两个三位数码管显示。图2是在Protus上的仿真电路图2.3、 程序流程图2.4、 仿真结果分析输入一个56HZ的正弦波是的仿真结果如下:分析:如果我直接从单片机的T0口输入频率范围为1Hz10KHz的方波信号,显示的结果准确而且稳定,但是不能输入其他的脉冲信号,否则将无法显示;如果

4、我将信号进行处理之后再输入到单片机进行数据处理,则输入信号的频率到达200HZ之后显示电路开始闪烁。在仿真的过程当中还出现一个问题就是从信号的输入到输出结果,输入的频率越大,计数器T0就在不断的计数,显示输出结果等待的时间就越长。3、 设计小结在这次数字频率计电路原理图与程序的设计过程当中,一开始出现了很多的问题,比如,一开始不知道从何入手,自己是用软件实现还是用纯电路实现,如果自己用纯电路实现的话,有些知识不是很完善,所以最后还是选择用单片机实现频率的显示。但定好方案,在完成的过称当中,又出现了一些不同的问题,比如数据处理的时候该用何种方法对数据进行处理,显示的时候让它怎样在规定的频率范围内

5、不闪烁等等。4、 程序代码#include/头文件#include/头文件#define uchar unsigned char/宏定义#define uint unsigned int/宏定义sfr16 DPTR=0x82;/定义DPTRbit flag=1;/状态标志位uint aa, qian, bai,shi,ge,bb,wan,shiwan; /定义变量uchar cout;/计数unsigned long temp;/定义长整型变量/*数码管显示0-9*/uchar code table=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x

6、6f,0x77,0x7c,0x39,0x5e,0x79,0x71;/*延时子函数。延时1MS*/void delay(uint z) uint i,j; for(i=0;iz;i+) for(j=0;j110;j+);/*定时器,计数器初始化*/void chu() temp=0;/变量赋初值 aa=0; cout=0; IE=0X8A;/开中断,T0,T1中断 TMOD=0x15;/T0为定时器工作于方式1,T1为计数器工作于方式1 TH1=0x3c;/定时器赋高8初值 , 12M晶振 TL1=0xb0;/定时器赋低8初值 , 12M晶振 TR1=1;/开定时器1 TH0=0;/计数器赋高8

7、初值初值 TL0=0;/计数器赋低8初值 TR0=1;/开计数器0/*显示子函数*/void display(uint shiwan,uint wan,uint qian,uint bai,uint shi,uint ge) P0=0xdf; /P0口是位选 1101 1111 改成 1111 1101 =0XDF P2=tableshiwan; /显示shiwan位 delay(5); P0=0xef; /P0口是位选 1110 1111 改成 1111 1110 =0XFE P2=tablewan; /显示wan位 delay(3); P0=0xf7; /P0口是位选 1111 01111

8、 改成 0111 1111=0X7F P2=tableqian; /显示千位 delay(3); P0=0xfb; /P0口是位选 1111 1011 改成 1011 1111=0XBF P2=tablebai; /显示百位 delay(3); P0=0xfd; /P0口是位选 1111 1101 改成 1101 1111 =0XDF P2=tableshi; /显示十位 delay(3); P0=0xfe; /P0口是位选 1111 1110 改成 1110 1111 =0XEF P2=tablege; /显示个位 delay(3);/*定时中断子函数*/void xtimer1() int

9、errupt 3 TH1=0x3c;/定时器赋高8初值 TL1=0xb0;/定时器赋低8初值 aa+;/*计数器中断子函数*/void xtimer0() interrupt 1 cout+;/*主函数*/void main() P0=0XFF; /初始化P0口 chu();/调用定时器,计数器初始化 while(1) if(aa=19)/定时20*50MS=1S aa=0;/定时完成一次后清0 flag=1;/完成计数 TR1=0; /关闭T1定时器,定时1S完成 delay(50); /延时较正误差 TR0=0;/关闭T0 DPL=TL0; /计数量的低8位 DPH=TH0;/计数量的高8位 temp=DPTR+cout*65535; /计数值放入变量 shiwan=temp%1000000/100000; wan=temp%100000/10000; qian=temp%10000/1000;/显示千位 bai=temp%1000/100;/显示百位 shi=temp%100/10;/显示十位 ge=temp%10;/显示个位 display(shiwan,wan,qian,bai,shi,ge); /调用显示函数

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

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