频率计EDA设计汇编Word文件下载.docx
- 文档编号:16168186
- 上传时间:2022-11-21
- 格式:DOCX
- 页数:25
- 大小:231.06KB
频率计EDA设计汇编Word文件下载.docx
《频率计EDA设计汇编Word文件下载.docx》由会员分享,可在线阅读,更多相关《频率计EDA设计汇编Word文件下载.docx(25页珍藏版)》请在冰豆网上搜索。
3.2硬件电路设计框架………………………………………………3
3.3单片机部分……………………………………………………..3
3.4放大整形部分……………………………………………………4
3.5分频部分.............................................5
3.6LCD显示和键盘部分................................6
4软件设计……………………………………………………….6
4.1主程序流程图设计…………………………………………7
4.2子程序流程图设计…………………………………………....7
4.2.1显示程序………………………………………………......7
4.2.2频率测量程序框图…………………………………….......8
4.2.3中断服务流程图.....................................8
5系统调试……………………………………………………….8
5.1显示调试…………………………………………………….....9
5.2键盘调试…………………………………………………….....9
5.3前置放大整形调试……………………………………………...9
5.4软件调试.............................................9
6结论…………………………………………………………………….9
7总结…………………………………………………………….9
参考文献………………………………………………………………10
参考附录………………………………………………………10
引言:
在工业生产、仪器仪表行业及实验教学中,经常会遇到频率的测量,我们经常使用的及目前市场上所售的频率测量装置,大多数是采用小规模集成电路及分离元件组成。
在现代电子学的各个领域,要求频率计精度高且能够直接读出频率值。
频率计由89S52单片机控制电路、信号处理电路、键盘电路以及测量数据的显示电路还有系统软件所构成的,在信号处理电路当中包含了待测信号放大、限幅、波形变换、波形整形以及分频电路。
信号的予处理电路当中的放大器所实现的是对待测信号的一个放大的功能,能够降低对待测信号的幅度的一个要求,波形的变换和整形电路实现将正弦波样的一个正负交替的号波形转换成为能够被单片机所接受的一个信号,分频电路所用于扩展的单片机的频率测量范围以及提高测量精度,并且通过实现单片机频率测量以及周期测量使用统一的一个输入的信号。
系统的软件包括有测量初始化的模块、显示的模块以及信号频率测量的模块等等。
1课程设计概述
1.1课程设计任务及要求
题目:
数字频率计
要求:
LCD显示,测量范围0~100KHZ,带前置放大、整形电路,可测周期信号的频率。
1.2主要仪器设备
函数信号发生器1台
示波器1台
直流稳压电源(0~30V)1台
数字万用表1块
PC机1台
1.3数字频率计概述
数字频率计是计算机、通讯设备、音频视频等科研生产领域不可缺少的测量仪器。
它是一种用十进制数字显示被测信号频率的数字测量仪器。
它的基本功能是测量正弦信号,方波信号及其他各种单位时间内变化的物理量。
在进行模拟、数字电路的设计、安装、调试过程中,由于其使用十进制数显示,测量迅速,精确度高,显示直观,经常要用到频率计。
1.4测频基本设计原理
所谓“频率”,就是周期性信号在单位时间(1s)内变化的次数。
若在一定时间间隔T内测得这个周期性信号的重复变化次数N,则其频率可表示为f=N/T。
其中脉冲形成电路的作用是将被测信号变成脉冲信号,其重复频率等于被测频率fx。
时间基准信号发生器提供标准的时间脉冲信号,若其周期为1s,则门控电路的输出信号持续时间亦准确地等于1s。
闸门电路由标准秒信号进行控制,当秒信号来到时,闸门开通,被测脉冲信号通过闸门送到计数译码显示电路。
秒信号结束时闸门关闭,计数器停止计数。
由于计数器计得的脉冲数N是在1秒时间内的累计数,所以被测频率fx=NHz。
2方案论证
2.1总体方案
本次设计包含硬件设计与软件设计两部分,根据设计任务要求,采用AT89S52单片机,配置时钟电路,复位电路构成单片机最小系统,配置前置放大电路,人机对话通道中的键盘,LCD显示,从而构成设计要求的单片机应用测频系统,其结构框图如下图2-1所示:
图2-1结构框图
图2.1
2.2测频方案选择
方案一:
直接测频法。
直接测频法是把被测频率信号经脉冲形成电路后加到闸门的一个输入端,只有在闸门开通时间T(以秒计)内,被计数的脉冲被送到十进制计数器进行计数。
设计数器的值为N,由频率定义式可以计算得到被测信号频率为:
f=N/T。
方案二:
高精度恒误差测频法。
通过对传统测量方法的研究,结合高精度恒误差测量原理,设计一种测量精度与被测频率无关的硬件测频电路。
本方法立足于快速的宽位数高精度浮点数字运算。
方案三:
倍频法。
直接测频法在高频段有着很高的精度。
可以把频率测量范围分成多个频段,使用倍频技术,根据频段设置倍频系数将经整形的低频信号进行倍频后再进行测量,高频段则进行直接测量。
从编程难易及单片机资源利用情况和测量误差角度考虑,选择方案一,尽管在测量低频段时的相对测量误差较大。
但是可以通过增大T来提高测量精度。
3硬件设计
3.1系统功能描述
本次课程设计主要完成功能有:
(1)长按设置键可选择测量频率或者周期。
(2)短按则是选择设置闸门时间(0.05s—10s)。
(3)测量频率范围:
0.1Hz—4MHz。
3.2硬件电路设计框架
根据设计要求,数字频率计整个系统硬件框架图如下3-1
图3-1
本系统实用LM318对待测信号进行放大,在用稳压二极管1N4733对信号进行限幅,然后经74LS14反向器整形得到TTL信号,送74LS161分频,最后送单片机P3^5内部计数器进行计数,单片机处理数据后送LCD显示。
3.3单片机部分
P0口经上拉后做LCD数据接口
P2.1~P2.3作为LCD控制端口
P2.4-P2.5作为分频选择端口
P1.6-P1.7作为键盘设置端口
P3.5作为被测信号输入端口
图3-2
3.4放大整形部分
待测信号经过第一级放大后,进入第二级放大限幅电路,再由7414组成的施密特触发器整形,得到标准方波信号。
LM318是高数运放,工作电压±
5--±
20V,输入带宽15MHZ,足够处理高频信号。
放大倍数:
n=RL2/RL1(RL2用50K,RL1用10K)。
限幅原理:
限幅电路的稳压管跨接在集成运放的输出端和反相输入端之间。
假设稳压管截止,则集成运放必然工作在开环状态,输出电压不是+UOM,就是-UOM。
这样,必将导致稳压管击穿而工作在稳压状态,DZ构成负反馈通路,使反相输入端为“虚地”,限流电阻上的电流iR等于稳压管的电流iZ,输出电压uO=±
UZ。
图3-3
3.5分频部分
74HC161与74ls161功能兼容,是常用的四位二进制可预置的同步加法计数器,他可以灵活的运用在各种数字电路,以及单片机系统中实现分频器等很多重要的功能.
其管脚图如图3-4所示:
图3-4
74HC161图3-574HC153管脚图
图3-5
74HC153是一个双4选1数据选择器,其管脚图如图3-5所示:
74LS161对整形后的防波信号进行分频,Q1为四分频输出,Q3为16分频输出。
未经分频、经过四分频和经过16分频的三路信号作为74LS153的一个4选1数据选择器低三位输入,由单片机控制选择分频数,然后再送单片机内部计数器T1(如图3-6).
图3-6
3.6LCD显示和键盘部分
LCD显示,通过调节变阻器调节LCD背光亮度,八位数据口接单片机P0口,读写控制端接P2.0-P2.2口。
三个按键中,设置键接P3.2单片机按外部中断0接口,当按键按下后,置P3.2口低电平,单片机中断。
S1、S2为频率/周期、闸门时间加/减选择按键(如图3-7)。
图3-7
4软件设计
4.1主程序流程图设计
本次程序设计采用的是C语言程序设计,其设计流程图4-1所示:
图4-1主程序流程图
4.2子程序流程图设计
4.2.1显示程序
LCD显示程序设计流程如图4-2
图4-2显示程序流程图
4.2.2频率测量程序框图
频率测量程序的整体架构如图4-3所示:
图4-3频率测量框架图
4.2.3中断服务流程图
图4-4中断程序流程图
5系统调试
5.1显示调试
调节变阻器改变LCD背光亮度,直到亮度合适且显示正常。
去掉前置放大整形部分,送数据LCD显示看是否正常显示,能够正常显示,说明显示电路正常工作。
5.2键盘调试
在显示正常情况下调试键盘,按设置键,看是否能正常进入中断,若能,进入中断后,按下频率/周期、闸门时间设置键,看是否能正常设置。
在调试过程中遇到能够进入中断,但是不能进行设置,经检查电路、程序后发现,两个选择按键之间短路,当其中一个按键按下,相当于两个同时按下,只是单片机CPU不能正常识别。
消除短路后电路正常工作了。
5.3前置放大整形调试
去掉LCD、单片机调试放大器是否正常工作。
给定输入信号,用示波器分别测量各级输入输出信号,看是否和放大相应倍数,限幅在指定范围。
调试结果:
第一级放大五倍与符合预想要求。
第二级限幅在±
6.2V,与理论值±
5.1伏有所出入,但仍然满足后面电路要求。
5.4软件调试
单片机软件调试主要是调试本次课程设计的主程序。
其调试过程如下:
(1)新建一个工程。
单击Project菜单,在弹出的下拉菜单中选NewProject。
(2)然后选择你要保存的路径,输入工程文件的名字,保存。
(3)新建一个工程后弹出一个对话框,根据你的需要选择你使用的单片机型号。
然后点击确定。
(4)单击“File”,选择“New”,新建文件并在其中输入程序代码,然后保存为c语言文件。
(5)回到编辑界面后,单击“Target1”前面的“+”号,然后在“SourceGroup1”单击右键选择“AddFileToGroup‘SourceGroup1’”,选中Test.c文件。
(6)单击“Project”菜单,选中“BuiltTarget”,完成程序的编译,在工程文件夹中找到*.hex文件即可。
6结论
结论:
整个系统完成测试后,性能稳定,由于所用函数发生器输出最大频率为10KHz,没有测试更高频率;
从测量结果对比分析可知本次设计的频率计基本满足课程设计要,并且功能有所扩展。
7总结
在整个课程设计的过程中每一步都是自己亲自做过的,遇到的问题也非常多,在经过遇到问题,思索问题到解决问题的过程中,收获是最多的。
以往没有注意到的问题,都在这一次的课程设计中得以体现,这培养了我的细心,耐心和专心。
我觉得能够在这次的课程设计中学到很多的东西,以往不注意的细节,在这一次中是必须让自己去注意的。
对实际经验的不足在设计过程中出现了不少的问题,得到了老师的耐心指导,在此表示感谢。
参考文献
[1]张义和.例说51单片机.人民邮电出版社
[2]马淑华.王凤文等著.单片机原理与接口技术.北京邮电大学出版社
[3]华成英.童诗白著.模拟电子技术基础.高等教育出版社
[4]阎石著.数字电子技术技术基础.高等教育出版社
[5]谭浩强.C语言程序设计.清华大学出版社
[6]陈尚松等.电子测量与仪器(第二版).电子工业出版社
参考附录
程序清单
#include<
AT89x52.h>
stdio.h>
math.h>
intrins.h>
floatf;
//频率
floatp;
//周期
floatsj;
//闸门时间
charidatabuff[20];
charflag=0;
//频率\周期选择标志位
charxs=0;
//设置闸门时间结束后是否显示结果的标志位
unsignedcharm=0,n=0,yichu=0,fenpin;
//m定时中断次数n计数中断次数yichu判断是定时器还是计数器溢出
#defineKey_SetP1
#defineK10xbf//1011_1111P16
#defineK20x7f//0111_1111P17
#defineNO_Set0xff
#defineFreq0
#definePeri1
sbitB153=P2^4;
sbitA153=P2^3;
sbitP17=P1^7;
sbitP16=P1^6;
sbitP35=P3^5;
sbitSet=P3^2;
unsignedcharLCD_Wait(void);
voidLCD_Write(bitstyle,unsignedcharinput);
voidLCD_SetDisplay(unsignedcharDisplayMode);
voidLCD_SetInput(unsignedcharInputMode);
voidLCD_Initial();
voidGotoXY(unsignedcharx,unsignedchary);
voidPrint(unsignedchar*str);
voidC52_Initial();
voidDelay(unsignedintt);
voiddisplay(floatf);
voidcepin();
voidpanduan();
voidtimedisplay(floatsj);
voidTime_Set1();
voidTime_Set2();
voidt0();
voidt1();
/****************************************
*模块名称:
LCD1602显示程序*
*****************************************/
/***********************PortDefinitions*********************/
sbitLcdRs=P2^0;
sbitLcdRw=P2^1;
sbitLcdEn=P2^2;
sfrDBPort=0x80;
//P0=0x80,P1=0x90,P2=0xA0,P3=0xB0.数据端口
/************************内部等待函数************************/
unsignedcharLCD_Wait(void)
{
LcdRs=0;
//寄存器选择输入端1:
数据0:
指令
LcdRw=1;
_nop_();
//RW:
为0:
写状态;
为1:
读状态;
LcdEn=1;
//使能输入端,读状态,高电平有效;
写状态,下降沿有效LcdEn=0;
returnDBPort;
}
/***********************向LCD写入命令或数据*******************/
#defineLCD_COMMAND0//Command
#defineLCD_DATA1//Data
#defineLCD_CLEAR_SCREEN0x01//清屏
#defineLCD_HOMING0x02//光标返回原点
voidLCD_Write(bitstyle,unsignedcharinput)
LcdEn=0;
LcdRs=style;
LcdRw=0;
DBPort=input;
//注意顺序
LCD_Wait();
/********************设置显示模式****************************/
#defineLCD_SHOW0x04//显示开
#defineLCD_HIDE0x00//显示关
#defineLCD_CURSOR0x02//显示光标
#defineLCD_NO_CURSOR0x00//无光标
#defineLCD_FLASH0x01//光标闪动
#defineLCD_NO_FLASH0x00//光标不闪动
voidLCD_SetDisplay(unsignedcharDisplayMode)
LCD_Write(LCD_COMMAND,0x08|DisplayMode);
/*********************设置输入模式****************************/#defineLCD_AC_UP0x02
#defineLCD_AC_DOWN0x00//default
#defineLCD_MOVE0x01//画面可平移
#defineLCD_NO_MOVE0x00//default
voidLCD_SetInput(unsignedcharInputMode)
LCD_Write(LCD_COMMAND,0x04|InputMode);
/******************初始化LCD*********************************/voidLCD_Initial()
LCD_Write(LCD_COMMAND,0x38);
//8位数据端口,2行显示,5*7点阵LCD_Write(LCD_COMMAND,0x38);
LCD_SetDisplay(LCD_SHOW|LCD_NO_CURSOR);
//开启显示,无光标LCD_Write(LCD_COMMAND,LCD_CLEAR_SCREEN);
//清屏
LCD_SetInput(LCD_AC_UP|LCD_NO_MOVE);
//AC递增,画面不动}
/*************************************************************/voidGotoXY(unsignedcharx,unsignedchary)
if(y==0)
LCD_Write(LCD_COMMAND,0x80|x);
if(y==1)
LCD_Write(LCD_COMMAND,0x80|(x-0x40));
voidPrint(unsignedchar*str)
while(*str!
='
\0'
)
LCD_Write(LCD_DATA,*str);
str++;
/********************************************************/***模块名称:
频率测量程序**主要技术指标:
测量范围:
0.1Hz~4M**闸门时间:
0.05s~10s可调。
*************************************************************/
/************************89c52初始化**********************/voidC52_Initial()
sj=1000000.00;
Key_Set=0xff;
TMOD=0x51;
//01010001T1为计数器,T0为定时器EA=1;
ET0=1;
ET1=1;
EX0=1;
PX0=1;
//外部中断0设置为高优先级IT0=0;
//电平触发方式
/**************************ms延时子程序********************/voidDelay(unsignedintt)//t随着数值越大,误差趋于平衡.{
unsignedchari;
while(t--)
for(i=0;
i<
123;
i++){;
/*************************计数中断*************************/voidt1(void)interrupt3//计数器1溢出,yichu=1
{n++;
yic
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 频率计 EDA 设计 汇编