课程设计(论文)基于单片机的频率计_第1页
课程设计(论文)基于单片机的频率计_第2页
课程设计(论文)基于单片机的频率计_第3页
课程设计(论文)基于单片机的频率计_第4页
课程设计(论文)基于单片机的频率计_第5页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

1、 2013电子设计(论文)论文题目: 基于单片机的频率计 学 院: 信息与电子工程学院 专 业: 电子信息工程 班 级: 电子信息工程103 学 号: 学生姓名: 指导教师: 二一三 年 六 月六日摘要本设计是基于at89c52单片机频率计入信号为峰峰值5v的正弦信号,频率测量精度为0.1%。采用1602液晶显示器显示测量结果。本设计基于proteus仿真实现,信号源由proteus 的虚拟信号发生器产生。目录摘要i第1章 引言11.1 背景与意义11.2国内外现状1第2章 硬件平台22.1 at89c52单片机22.2 74ls151芯片32.3 lcd16024第3章 原理及电路53.1

2、设计原理53.2 电路设计63.2.1 电平转换电路73.2.2 分频电路83.2.3 数据选择电路83.2.4 单片机控制及显示系统93.3 软件设计93.3.1 设计原理93.4 仿真123.5 程序清单13参考文献18第1章 引言1.1 背景与意义 频率计又称为频率计数器,是一种专门对被测信号频率进行测量的电子测量仪器。频率计主要由四个部分构成:时基(t)电路、输入电路、计数显示电路以及控制电路。 在传统的电子测量仪器中,示波器在进行频率测量时测量精度较低,误差较大。频谱仪可以准确的测量频率并显示被测信号的频谱,但测量速度较慢,无法实时快速的跟捕捉到被测信号频率的变化。正是由于频率计能够

3、快速准确的捕捉到被测信号频率的变化,因此,频率计拥有非常广泛的应用范围。 在传统的生产制造企业中,频率计被广泛的应用在产线的生产测试中。频率计能够快速的捕捉到晶体振荡器输出频率的变化,用户通过使用频率计能够迅速的发现有故障的晶振产品,确保产品质量。 在计量实验室中,频率计被用来对各种电子测量设备的本地振荡器进行校准。在无线通讯测试中,频率计既可以被用来对无线通讯基站的主时钟进行校准,还可以被用来对无线电台的跳频信号和频率调制信号进行分析。1.2国内外现状 目前,市场上的频率计厂家可分为三类:中国大陆厂家、中国台湾厂家、欧美厂家。其中,欧美频率计厂家所占有的市场份额最大。 欧美频率计厂家主要有:

4、pendulum instruments 和 agilent科技。pendulum instruments 公司是一家瑞典公司,总部位于瑞典首都斯德哥尔摩。 pendulum 公司源于philips公司的时间、频率部门,在时间频率测量领域具有40多年的研发生产经历。pendulum instruments 公司常规频率计型号主要有:cnt-91、cnt-90、cnt-81、cnt-85。同时,pendulum instruments公司还推出铷钟时基频率计cnt-91r、cnt-85r。以及微波频率计cnt-90xl(频率测量范围高达60g)。agilent科技公司是一家美国公司,总部位于美国

5、的加利福尼亚。agilent科技公司成立于1939年,在电子测量领域也有着70多年的研发生产经历。agilent科技公司的常规频率计信号主要有:53181a、53131a、53132a。同时,agilent科技公司还推出微波频率计:53150a,53151a,53152a(频率测量范围最高可达46g)。第2章 硬件平台2.1 at89c52单片机 at89c52为8 位通用微处理器,采用工业标准的c51内核,在内部功能及管脚排布上与通用的8xc52 相同,其主要用于会聚调整时的功能控制。功能包括对会聚主ic 内部寄存器、数据ram及外部接口等功能部件的初始化,会聚调整控制,会聚测试图控制,红外

6、遥控信号ir的接收解码及与主板cpu通信等。主要管脚有:xtal1(19 脚)和xtal2(18 脚)为振荡器输入输出端口,外接12mhz 晶振。rst/vpd(9 脚)为复位输入端口,外接电阻电容组成的复位电路。vcc(40 脚)和vss(20 脚)为供电端口,分别接+5v电源的正负端。p0p3 为可编程通用i/o 脚,其功能用途由软件定义,在本设计中,p0 端口(3239 脚)被定义为n1 功能控制端口,分别与n1的相应功能管脚相连接,13 脚定义为ir输入端,10 脚和11脚定义为i2c总线控制端口,分别连接n1的sdas(18脚)和scls(19脚)端口,12 脚、27 脚及28 脚定

7、义为握手信号功能端口,连接主板cpu 的相应功能端,用于当前制式的检测及会聚调整状态进入的控制功能。 图2-1 at89c52 pdip封装芯片 图2-2 at89c52引脚 2.2 74ls151芯片74ls151是常用的8选1数据选择器(互补输出),常用在各种数字电路和单片机系统的显示系统中。图2-3 74ls151引脚图2-4 74ls151真值表2.3 lcd1602 工业字符型液晶,能够同时显示16x02(16列2行)即32个字符。(注:为了表示的方便 ,后文皆以1表示高电平,0表示低电平。) 1602液晶也叫1602字符型液晶,它是一种专门用来显示字母、数字、符号等的点阵型液晶模块

8、。它由若干个5x7或者5x11等点阵字符位组成,每个点阵字符位都可以显示一个字符,每位之间有一个点距的间隔,每行之间也有间隔,起到了字符间距和行间距的作用,正因为如此所以它不能很好地显示图形(用自定义cgram,显示效果也不好)。1602lcd是指显示的内容为16x2,即可以显示两行,每行16个字符液晶模块(显示字符和数字)。市面上字符液晶大多数是基于hd44780液晶芯片的,控制原理是完全相同的,因此基于hd44780写的控制程序可以很方便地应用于市面上大部分的字符型液晶。图 2-5 lcd1602第3章 原理及电路3.1 设计原理 测量一个信号的频率有两种方法:第一种是计数法,用基准信号去

9、测量被测信号的高电平持续的时间,然后转换成被测信号的频率。第二种是计时法,计算在基准信号高电平期间通过的被测信号个数。根据设计要求测量10hz100mhz的正弦信号,首先要将正弦信号通过过零比较转换成方波信号,然后变成测量方波信号。如果用第一种方法,当信号频率超过1khz的时候测量精度将超出测量极度要求,所以当被测信号的频率高于1khz的时候需要将被测信号进行分频处理。如果被测信号频率很高需要将被测信号进行多次分频直到达到设计的精度要求。根据设计要求用单片机的内部t0产生基准信号,由into输入被测信号,通过定时方式计算被测信号的高电平持续时间。通过单片机计算得出结果,最后有1062液晶显示器

10、显示测量结果。等精度频率计的系统设计框架如下图1所示。at89c51液晶显示被测信号信号转换(过零比较)分频处理数据选择器图3 -1 等精度频率计系统设计框图3.2 电路设计硬件电路主要分为信号转换电路、分频电路、数据选择电路、单片机系统和显示电路五部分。其总体电路图如图3-2所示。图3-2 总体电路图3.2.1 电平转换电路要将正弦信号转换成方波信号可以用过零比较电路实现。正弦信号通过lm833n与零电平比较,电压大于零的时候输出lm833n的正电源+5v,电压小于零的时候输出负电源0v。具体电路如图3所示。图3 - 3电平转换电路图 3-4 转换效果3.2.2 分频电路分频电路采用十进制的

11、计数器74hc4017来分频,当被测信号脉冲个数达到10个时74hc4017产生溢出,c0端输出频率为输入频率的1/10,达到十分频的作用。如果当频率很高是需要多次分频只需将多片74hc4017级联就可以了。74hc4017时序图如图4所示,系统分频电路如图5所示。图3-574hc4017时序图图 3-6 分频电路3.2.3 数据选择电路图 3-7 数据选择电路3.2.4 单片机控制及显示系统图3-8 单片机控制及显示系统3.3 软件设计3.3.1 设计原理当频率为10hz时,t=100000us,高电平为50000us,0.1%的误差为100us,由单片机产生的基准频率为1mhz,t0=1u

12、s,最大误差为1us,计数个数为50000(方式1),满足设计要求。当频率增加到1khz时,产生的误差刚刚能达到设计要求,这时计数个数为500。当频率大于1khz时(即计数个数小于500)就需要将被测频率分频后再测量,如当频率为10khz时,先计算计得的脉冲数等于50,小于了500,所以将10khz的信号10分频得到1khz,这时就满足要求了。最后得到的频率 f=其中n为计得的脉冲个数,i为分频的次数。主程序首先对系统环境初始化,设置分频选通信号p2=0x00,选通0通道。设置t0工作方式,采用硬件启动方式,gate=1,当int0和tr0同时为1时启动计时,计数方式为方式1(16位),th0

13、和tl0都置零。当外部中断int0=1时等待,当外部中断为0时启动t0即tr0=1,当int0一直为0时就等待,一旦int0=1就启动计数同时等待,当int0为0时跳出并关闭t0即tr0=0。这样就计得高电平期间基准脉冲个数,当脉冲个数小于500时就选择10分频信号,即p2自加1,同时记录分频一次;如果分频后脉冲个数还小于500则再次分频,知道计数个数大于500。其示意图如图9所示,主程序流程图如图10所示。被测脉冲int0基准脉冲t0等待启动t0,tr0=1启动计数停止计数,读出计数个数n个脉冲图 3-9 计数工作示意图开始初始化数据选择信号系统初始化读出计数个数nn=500变换数据选择通道

14、,计算分频次数iy显示结果n图 3-10 主程序流程图3.4 仿真 通过proteus仿真,验证可行性。 输入10khz的正弦波信号,得到如下结果。图3-11 仿真结果 有一定的误差,但在允许范围内。3.5 程序清单#include #include #include #include #define rs_clr rs=0 #define rs_set rs=1#define rw_clr rw=0 #define rw_set rw=1 #define en_clr en=0#define en_set en=1#define dataport p0sbit p32 = p32; /定义端

15、口 sbit rs = p12;sbit rw = p13;sbit en = p14;void delayus2x(unsigned char t);void delayms(unsigned char t);bit lcd_check_busy(void);void lcd_write_com(unsigned char com); void lcd_write_data(unsigned char data);void lcd_clear(void);void lcd_write_string(unsigned char x,unsigned char y,unsigned char *

16、s);void lcd_write_char(unsigned char x,unsigned char y,unsigned char data);void lcd_init(void);/*-主函数-*/ void main(void)unsigned int period,k,i=0;float f,m;char buff30;lcd_init(); lcd_clear(); /清屏p2=0x00;while(1)tmod=0x09;th0=0;tl0=0;while(p32=1);tr0=1;while(p32=0);while(p32=1);tr0=0;period=th0*256+

17、tl0;while(period=500) /判断是否分频及计算分频次数 p2+;i+;period=period*10;if(i=6)p2=0x00;break;k=pow(10,i); /10的i次方f=(1000000.0/(2*period)*k;if(f1000)sprintf(buff,f=%5.2fhz,f);else if(1000=f1000000)m=f/1000.0;sprintf(buff,f=%5.2fkhz,m);elsem=f/1000000.0;sprintf(buff,f=%5.2fmhz,m);lcd_write_string(1,0,frequency);

18、lcd_write_string(3,1,buff);delayms(100);/*- us延时函数-*/void delayus2x(unsigned char t) while(-t);/*- ms延时函数-*/void delayms(unsigned char t) while(t-)/大致延时1msdelayus2x(245);delayus2x(245);/*-判忙函数-*/bit lcd_check_busy(void) dataport= 0xff; rs_clr; rw_set; en_clr; _nop_(); en_set;return (bit)(dataport &

19、0x80);/*-写入命令函数-*/void lcd_write_com(unsigned char com) / while(lcd_check_busy(); /忙则等待delayms(5);rs_clr; rw_clr; en_set; dataport= com; _nop_(); en_clr;/*-写入数据函数-*/void lcd_write_data(unsigned char data) /while(lcd_check_busy(); /忙则等待delayms(5);rs_set; rw_clr; en_set; dataport= data; _nop_();en_clr;/*-清屏函数-*/void lcd_clear(void) lcd_write_com(0x01); delayms(5);/*-写入字符串函数-*/void lcd_write_string(unsigned char x,unsigned char y,unsigned char *s) if (y = 0) lcd_write_com(0x80 + x); /表示第一行else lcd_write_com(0xc0 + x)

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论