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

加入VIP,免费下载
 

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

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

下载须知

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

版权提示 | 免责声明

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

基于89C52单片机的数字频率计的设计DOC.docx

1、基于89C52单片机的数字频率计的设计DOC 单片机课程设计报告题 目:基于89C52单片机的数字频率计 院 (系): 信息与通信学院 专 业: 电子信息工程 学生姓名: - 学 号: - 指导教师: - 2012 年 11 月 15 日摘 要 该系统以STC89S51单片机为核心, 应用单片机的运算和控制功能并采用 LCD 显示器实时地将所测频率显示出来, 通过测量结果对比,分析了测量误差的来源,提出了减小误差应采取的措施。频率计具有电路结构简单、 成本低、 测量方便、 精度较高等特点,适合测量低频信号。关键词:单片机,频率测量Abstract The paper introduces on

2、e cymometer system Based on singlechip which applys the singlechips function of operation and control and displays the result by LCD. By comparing results, the source of measurement error is analysed, the measures are proposed for reducing errors. T he frequency meter has characteristics of simple c

3、ircuit, low cost, easy measurement and high precision, it fits for measuring low frequency signals.Key words : Singlechip,frequency- measure引言11 课程设计概述1 1.1 课程设计任务及要求.1 1.2 主要仪器.1 1.3 数字频率计概述.1 1.4 测频基本设计原理.22 方案论证.2 2.1 总体方案.2 2.2 测频方案选择.33硬件设计.3 3.1系统功能描述.3 3.2硬件电路设计框架3 3.3单片机部分.4 3.4 放大整形部分4 3.5分

4、频部分.5 3.6 LCD显示和键盘部分.64 软件设计.6 4.1 主程序流程图设计6 4.2 子程序流程图设计.7 4.2.1 显示程序.7 4.2.2频率测量程序框图.8 4.2.3 中断服务流程图.85 系统调试.9 5.1显示调试.9 5.2键盘调试.9 5.3前置放大整形调试.9 5.4软件调试.96结果分析与结论.107总结.10参考文献.11 附录12引言:在工业生产、仪器仪表行业及实验教学中,经常会遇到频率的测量,我们经常使用的及目前市场上所售的频率测量装置,大多数是采用小规模集成电路及分离元件组成。在现代电子学的各个领域,要求频率计精度高且能够直接读出频率值。频率计由89S

5、52单片机控制电路、信号处理电路、键盘电路以及测量数据的显示电路还有系统软件所构成的,在信号处理电路当中包含了待测信号放大、限幅、波形变换、波形整形以及分频电路。信号的予处理电路当中的放大器所实现的是对待测信号的一个放大的功能,能够降低对待测信号的幅度的一个要求,波形的变换和整形电路实现将正弦波样的一个正负交替的号波形转换成为能够被单片机所接受的一个信号,分频电路所用于扩展的单片机的频率测量范围以及提高测量精度,并且通过实现单片机频率测量以及周期测量使用统一的一个输入的信号。系统的软件包括有测量初始化的模块、显示的模块以及信号频率测量的模块等等。1 课程设计概述1.1 课程设计任务及要求 题目

6、:数字频率计 要求:LCD显示,测量范围0100KHZ,带前置放大、整形电路,可测周期信号的频率。1.2 主要仪器设备 函数信号发生器 1台示波器 1台直流稳压电源(030V) 1台 数字万用表 1块PC机 1台1.3数字频率计概述 数字频率计是计算机、通讯设备、音频视频等科研生产领域不可缺少的测量仪器。它是一种用十进制数字显示被测信号频率的数字测量仪器。它的基本功能是测量正弦信号,方波信号及其他各种单位时间内变化的物理量。在进行模拟、数字电路的设计、安装、调试过程中,由于其使用十进制数显示,测量迅速,精确度高,显示直观,经常要用到频率计。1.4 测频基本设计原理所谓“频率”,就是周期性信号在

7、单位时间(1s)内变化的次数。若在一定时间间隔T内测得这个周期性信号的重复变化次数N,则其频率可表示为f=N/T(右图1-1所示)。其中脉冲形成电路的作用是将被测信号变成脉冲信号,其重复频率等于被测频率fx。时间基准信号发生器提供标准的时间脉冲信号,若其周期为1s,则门控电路的 图1-1 输出信号持续时间亦准确地等于1s。闸门电路由标准秒信号进行控制,当秒信号来到时,闸门开通,被测脉冲信号通过闸门送到计数译码显示电路。秒信号结束时闸门关闭,计数器停止计数。由于计数器计得的脉冲数N是在1秒时间内的累计数,所以被测频率fx=NHz。2 方案论证2.1 总体方案本次设计包含硬件设计与软件设计两部分,

8、根据设计任务要求,采用AT89S52单片机,配置时钟电路,复位电路构成单片机最小系统,配置前置放大电路,人机对话通道中的键盘,L CD显示,从而构成设计要求的单片机应用测频系统,其结构框图如下图2-1所示: 图2-1结构框图2.2 测频方案选择方案一:直接测频法。直接测频法是把被测频率信号经脉冲形成电路后加到闸门的一个输入端, 只有在闸门开通时间T ( 以秒计) 内, 被计数的脉冲被送到十进制计数器进行计数。设计数器的值为N , 由频率定义式可以计算得到被测信号频率为: f = N / T 。 方案二:高精度恒误差测频法。通过对传统测量方法的研究, 结合高精度恒误差测量原理, 设计一种测量精度

9、与被测频率无关的硬件测频电路。本方法立足于快速的宽位数高精度浮点数字运算。方案三:倍频法。直接测频法在高频段有着很高的精度。可以把频率测量范围分成多个频段, 使用倍频技术, 根据频段设置倍频系数将经整形的低频信号进行倍频后再进行测量, 高频段则进行直接测量。从编程难易及单片机资源利用情况和测量误差角度考虑,选择方案一,尽管在测量低频段时的相对测量误差较大。但是可以通过增大 T 来提高测量精度。3 硬件设计3.1系统功能描述本次课程设计主要完成功能有:(1)长按设置键可选择测量频率或者周期。(2)短按则是选择设置闸门时间(0.05s10s)。(3)测量频率范围:0.1Hz4MHz。3.2硬件电路

10、设计框架根据设计要求,数字频率计整个系统硬件框架图如下3-1 图3-1整机硬件电路框图 本系统实用LM318对待测信号进行放大,在用稳压二极管1N4733对信号进行限幅,然后经74LS14反向器整形得到TTL信号,送74LS161分频,最后送单片机P35内部计数器进行计数,单片机处理数据后送LCD显示。3.3单片机部分 P0口经上拉后做LCD数据接口P2.1P2.3作为LCD控制端口P2.4-P2.5作为分频选择端口P1.6-P1.7作为键盘设置端口P3.5作为被测信号输入端口 图3-23.4 放大整形部分待测信号经过第一级放大后,进入第二级放大限幅电路,再由7414组成的施密特触发器整形,得

11、到标准方波信号。LM318是高数运放,工作电压5-20V,输入带宽15MHZ,足够处理高频信号。放大倍数:n=RL2/RL1(RL2用50K,RL1用10K)。限幅原理:限幅电路的稳压管跨接在集成运放的输出端和反相输入端之间。假设稳压管截止,则集成运放必然工作在开环状态,输出电压不是+UOM,就是-UOM。这样,必将导致稳压管击穿而工作在稳压状态,DZ构成负反馈通路,使反相输入端为“虚地”,限流电阻上的电流iR等于稳压管的电流iZ,输出电压u O=UZ。 图3-33.5分频部分74HC161与74ls161功能兼容,是常用的四位二进制可预置的同步加法计数器,他可以灵活的运用在各种数字电路,以及

12、单片机系统中实现分频器等很多重要的功能.其管脚图如图3-4所示: 图3-4 74HC161 图3-5 74HC153管脚图 74HC153是一个双4选1数据选择器,其管脚图如图3-5所示: 74LS161对整形后的防波信号进行分频,Q1为四分频输出,Q3为16分频输出。未经分频、经过四分频和经过16分频的三路信号作为74LS153的一个4选1数据选择器低三位输入,由单片机控制选择分频数,然后再送单片机内部计数器T1(如图3-6). 图3-63.6 LCD显示和键盘部分 LCD显示,通过调节变阻器调节LCD背光亮度,八位数据口接单片机P0口,读写控制端接P2.0-P2.2口。 三个按键中,设置键

13、接P3.2单片机按外部中断0接口,当按键按下后,置P3.2口低电平,单片机中断。S1、S2为频率/周期、闸门时间加/减选择按键(如图3-7)。 图3-74 软件设计4.1 主程序流程图设计 本次程序设计采用的是C语言程序设计,其设计流程图4-1所示:图-主程序流程图4.2 子程序流程图设计4.2.1 显示程序 LCD显示程序设计流程如图4-2 图4-2显示程序流程图4.2.2频率测量程序框图频率测量程序的整体架构如图4-3所示: 图4-3频率测量框架图4.2.3 中断服务流程图 INT0中断流程图如图4-4 图4-4INT0中断流程图5 系统调试5.1显示调试调节变阻器改变LCD背光亮度,直到

14、亮度合适且显示正常。去掉前置放大整形部分,送数据LCD显示看是否正常显示,能够正常显示,说明显示电路正常工作。5.2键盘调试在显示正常情况下调试键盘,按设置键,看是否能正常进入中断,若能,进入中断后,按下频率/周期、闸门时间设置键,看是否能正常设置。在调试过程中遇到能够进入中断,但是不能进行设置,经检查电路、程序后发现两个选择按键之间短路,当其中一个按键按下,相当于两个同时按下,只是单片机CPU不能正常识别。消除短路后电路正常工作了。5.3前置放大整形调试去掉LCD、单片机调试放大器是否正常工作。给定输入信号,用示波器分别测量各级输入输出信号,看是否和放大相应倍数,限幅在指定范围。调试结果:第

15、一级放大五倍与符合预想要求。第二级限幅在6.2V,与理论值5.1伏有所出入,但仍然满足后面电路要求。5.4软件调试单片机软件调试主要是调试本次课程设计的主程序。其调试过程如下:(1)新建一个工程。单击Project菜单,在弹出的下拉菜单中选New Project。(2)然后选择你要保存的路径,输入工程文件的名字,保存。(3)新建一个工程后弹出一个对话框,根据你的需要选择你使用的单片机型号。然后点击确定。(4)单击“File”,选择“New”,新建文件并在其中输入程序代码,然后保存为c语言文件。(5)回到编辑界面后,单击“Target 1”前面的“+”号,然后在“Source Group 1”单

16、击右键选择“Add File To Group Source Group 1”,选中Test.c文件。(6)单击“Project”菜单,选中“Built Target”,完成程序的编译,在工程文件夹中找到*.hex文件即可6 结果分析与结论测量结果对比分析:输入频率测量频率误差12345结论:整个系统完成测试后,性能稳定,由于所用函数发生器输出最大频率为10KHz,没有测试更高频率;从测量结果对比分析可知本次设计的频率计基本满足课程设计要,并且功能有所扩展。7 总结 在整个课程设计的过程中每一步都是自己亲自做过的,遇到的问题也非常多,在经过遇到问题,思索问题到解决问题的过程中,收获是最多的。以

17、往没有注意到的问题,都在这一次的课程设计中得以体现,这培养了我的细心,耐心和专心。我觉得能够在这次的课程设计中学到很多的东西,以往不注意的细节,在这一次中是必须让自己去注意的。对实际经验的不足在设计过程中出现了不少的问题,得到了老师的耐心指导,在此表示感谢。参考文献1 张义和 . 例说51单片机 .人民邮电出版社2 马淑华. 王凤文等著 .单片机原理与接口技术. 北京邮电大学出版社3 华成英 .童诗白著. 模拟电子技术基础 . 高等教育出版社4 阎石著.数字电子技术技术基础 . 高等教育出版社5 谭浩强. C语言程序设计 . 清华大学出版社6 陈尚松等.电子测量与仪器(第二版).电子工业出版社

18、附录:PCB图:程序清单:#include #include #include #include float f; /频率float p; /周期float sj; /闸门时间char idata buff20;char flag=0; /频率周期选择标志位char xs=0; /设置闸门时间结束后是否显示结果的标志位unsigned char m=0,n=0,yichu=0,fenpin; /m定时中断次数 n计数中断次数 yichu判断是定时器还是计数器溢出#define Key_Set P1#define K1 0xbf /1011_1111 P16#define K2 0x7f /01

19、11_1111 P17#define NO_Set 0xff#define Freq 0#define Peri 1sbit B153=P24;sbit A153=P23;sbit P17=P17;sbit P16=P16;sbit P35=P35;sbit Set=P32;unsigned char LCD_Wait(void);void LCD_Write(bit style, unsigned char input);void LCD_SetDisplay(unsigned char DisplayMode);void LCD_SetInput(unsigned char InputMo

20、de);void LCD_Initial();void GotoXY(unsigned char x, unsigned char y);void Print(unsigned char *str);void C52_Initial();void Delay(unsigned int t);void display(float f);void cepin();void panduan();void timedisplay(float sj);void Time_Set1();void Time_Set2();void t0();void t1();/* 模块名称:LCD1602显示程序 */*

21、Port Definitions*/sbit LcdRs= P20;sbit LcdRw= P21;sbit LcdEn= P22;sfr DBPort= 0x80; /P0=0x80,P1=0x90,P2=0xA0,P3=0xB0.数据端口/*内部等待函数*/unsigned char LCD_Wait(void) LcdRs=0; /寄存器选择输入端 1:数据 0:指令 LcdRw=1; _nop_(); /RW:为0:写状态;为1:读状态; LcdEn=1; _nop_(); /使能输入端,读状态,高电平有效;写状态,下降沿有效 LcdEn=0; return DBPort; /*向LC

22、D写入命令或数据*/#define LCD_COMMAND 0 / Command#define LCD_DATA 1 / Data#define LCD_CLEAR_SCREEN 0x01 / 清屏#define LCD_HOMING 0x02 / 光标返回原点void LCD_Write(bit style, unsigned char input) LcdEn=0; LcdRs=style; LcdRw=0; _nop_(); DBPort=input; _nop_();/注意顺序 LcdEn=1; _nop_();/注意顺序 LcdEn=0; _nop_(); LCD_Wait();

23、/*设置显示模式*/#define LCD_SHOW 0x04 /显示开#define LCD_HIDE 0x00 /显示关 #define LCD_CURSOR 0x02 /显示光标#define LCD_NO_CURSOR 0x00 /无光标 #define LCD_FLASH 0x01 /光标闪动#define LCD_NO_FLASH 0x00 /光标不闪动void LCD_SetDisplay(unsigned char DisplayMode) LCD_Write(LCD_COMMAND, 0x08|DisplayMode); /*设置输入模式*/#define LCD_AC_UP

24、 0x02#define LCD_AC_DOWN 0x00 / default#define LCD_MOVE 0x01 / 画面可平移#define LCD_NO_MOVE 0x00 /defaultvoid LCD_SetInput(unsigned char InputMode) LCD_Write(LCD_COMMAND, 0x04|InputMode);/*初始化LCD*/void LCD_Initial() LcdEn=0; LCD_Write(LCD_COMMAND,0x38); /8位数据端口,2行显示,5*7点阵 LCD_Write(LCD_COMMAND,0x38); LC

25、D_SetDisplay(LCD_SHOW|LCD_NO_CURSOR); /开启显示, 无光标 LCD_Write(LCD_COMMAND,LCD_CLEAR_SCREEN); /清屏 LCD_SetInput(LCD_AC_UP|LCD_NO_MOVE); /AC递增, 画面不动/*/void GotoXY(unsigned char x, unsigned char y)if(y=0) LCD_Write(LCD_COMMAND,0x80|x);if(y=1) LCD_Write(LCD_COMMAND,0x80|(x-0x40);void Print(unsigned char *str) while(*str!=0) LCD_Write(LCD_DATA,*str); str+; /* /* * 模块名称: 频率测量程序 * 主要技术指标: 测量范围:0.1Hz4M * 闸门时间:0.05s10s可调。 * */*89c52初始化*/ void C

copyright@ 2008-2023 冰点文库 网站版权所有

经营许可证编号:鄂ICP备19020893号-2