基于单片机的高精度频率计的设计课程设计.doc
《基于单片机的高精度频率计的设计课程设计.doc》由会员分享,可在线阅读,更多相关《基于单片机的高精度频率计的设计课程设计.doc(14页珍藏版)》请在三一办公上搜索。
1、数字频率计的设计姓名:任琼琳 学号:070102050039一、课程设计的目的通过本课程设计使学生进一步巩固光纤通信、单片机原理与技术的基本概念、基本理论、分析问题的基本方法;增强学生的软件编程实现能力和解决实际问题的能力,使学生能有效地将理论和实际紧密结合,拓展学生在工程实践方面的专业知识和相关技能。二、课程设计的内容和要求1课程设计内容(硬件类)频率测量仪的设计 2课程设计要求频率测量仪的设计 要求学生能够熟练地用单片机中定时/计数、中断等技术,针对周期性信号的特点,采用不同的算法,编程实现对信号频率的测量,将测量的结果显示在LCD 1602上,并运用Proteus软件绘制电路原理图,进行
2、仿真验证。三实验原理可用两种方法测待测信号的频率方法一:(定时1s测信号脉冲次数)用一个定时计数器做定时中断,定时1s,另一定时计数器仅做计数器使用,初始化完毕后同时开启两个定时计数器,直到产生1s中断,产生1s中断后立即关闭T0和T1(起保护程序和数据的作用)取出计数器寄存器内的值就是1s内待测信号的下跳沿次数即待测信号的频率。用相关函数显示完毕后再开启T0和T1这样即可进入下一轮测量。原理示意图如下:实验原理分析:1 根据该实验原理待测信号的频率不应该大于计数器的最大值65535,也就是说待测信号应小于65535Hz。2 实验的误差应当是均与的与待测信号的频率无关。方法二(测信号正半周期)
3、对于1:1占空比的方波,仅用一个定时计数器做计数器,外部中断引脚作待测信号输入口,置计数器为外部中断引脚控制(外部中断引脚为“1”切TRx=1计数器开始计数)。单片机初始化完毕后程序等待半个正半周期(以便准确打开TRx)打开TRx,这时只要INTx(外部中断引脚)为高电平计数器即不断计数,低电平则不计数,待信号从高电平后计数器终止计数,关闭TRx保护计数器寄存器的值,该值即为待测信号一个正半周期的单片机机器周期数,即可求出待测信号的周期:待测信号周期T=2*cnt/(12/fsoc) cnt为测得待测信号的一个正半周期机器周期数;fsoc为单片机的晶振。所以待测信号的频率f=1/T。原理示意图
4、如下:实验原理分析:1 根据该实验原理该方法只适用于1:1占空比的方波信号,要测非1:1占空比的方波信号2 由于有执行f=1/(2*cnt/(12/fsoc))的浮点运算,而数据类型转换时未用LCD浮点显示,故测得的频率将会被取整,如1234.893Hz理论显示为1234Hz,测得结果会有一定程度的偏小。也就是说测量结果与信号频率的奇偶有一定关系。3 由于计数器的寄存器取值在165535之间,用该原理时,待测信号的频率小于单片机周期的1/12时,单片机方可较标准的测得待测信号的正半周期。故用该原理测得信号的最高频率理论应为fsoc/12 如12MHZ的单片机为1MHz。而最小频率为f=1/(2
5、*65535/(12/fsoc)) 如12MHZ的单片机为8Hz。四实验内容及步骤1. 仿真模型的构建数字方波频率计的设计总体可分为两个模块。一是信号频率测量,二是将测得的频率数据显示在1602液晶显示模块上。因此可搭建单片机最小系统构建构建频率计的仿真模型。原理图,仿真模型的总原理图如下:2. 液晶显示部分功能与原理分析由于此部分并非课程的主要部分,故仅作简要原理分析A1602硬件接口及功能接口/硬件接口部分*sbit LcdRs= P20;sbit LcdRw= P21;sbit LcdEn = P22;sfr DBPort = 0x80;/P0=0x80,P1=0x90,P2=0xA0,
6、P3=0xB0.数据端口/向LCD写入命令或数据*#define LCD_COMMAND0 / Command#define LCD_DATA1 / Data#define LCD_CLEAR_SCREEN0x01 / 清屏#define LCD_HOMING 0x02 / 光标返回原点/设置显示模式*#define LCD_SHOW0x04 /显示开#define LCD_HIDE0x00 /显示关 #define LCD_CURSOR0x02 /显示光标#define LCD_NO_CURSOR0x00 /无光标 #define LCD_FLASH0x01 /光标闪动#define LCD
7、_NO_FLASH0x00 /光标不闪动/设置输入模式*#define LCD_AC_UP0x02/将光标返回0x00#define LCD_AC_DOWN0x00 / default#define LCD_MOVE0x01 / 画面可平移#define LCD_NO_MOVE0x00 /defaultB1602初始化流程和原理框图void LCD_Initial()LcdEn=0;LCD_Write(LCD_COMMAND,0x38); /8位数据端口,2行显示,5*7点阵LCD_Write(LCD_COMMAND,0x38);LCD_SetDisplay(LCD_SHOW|LCD_NO_C
8、URSOR); /开启显示, 无光标LCD_Write(LCD_COMMAND,LCD_CLEAR_SCREEN); /清屏LCD_SetInput(LCD_AC_UP|LCD_NO_MOVE); /AC递增, 画面不动开始清使能端写命令:8位数据端口,2行显示,5*7点阵重写控制命令写命令:开启显示, 无光标写命令:清屏写命令:AC递增, 画面不动结束初始化流程开始y=0?x,yYN写命令(80H+x)写命令(80H+40H+x)初始化结束写DDRAM地址,DDRAM地址与屏幕相对应开始*str=0?字符串首地址strYN写写数据*strstr地址加1结束写字符串C 写DDRAM地址(原理框
9、图如上)void GotoXY(unsigned char x, bit y)if(y=0)LCD_Write(LCD_COMMAND,0x80|x);if(y=1)LCD_Write(LCD_COMMAND,0x80|(x-0x40);D写字符串(原理框图如上)void Print(unsigned char *str)while(*str!=0)LCD_Write(LCD_DATA,*str);str+;3.程序机原理框图(关于显示函数部分不列出,只分析算法函数)方法一:用定时计数器T0做脉冲计数器(下跳沿有效),开始与暂停由T1控制定时计数器T1做定时中断,定时1s,定时开启置T0开始计
10、数,定时完毕,置T0为暂停,关闭T1,读取计数数据并清空计数器,将计数数据装换为有效规范的字符串显示后再开启T0和T1,进入下一轮测量。以下是程序的核心部分:(定时1s,取计数数,并将其转换显示出来)原理框图如下void timer1() interrupt 3 /定时50msTH1=THCLK;TL1=TLCLK;if(-Cnt=0)/Cnt初值为20TR0=0;TR1=0;Cnt=CntNum;tmp=TH0*256+TL0;TH0=TL0=0;Dynamic_LCD_Print();TR0=1;TR1=1;方法二:用一个定时计数器做计数器,外部中断引脚作待测信号输入口,置计数器为外部中断
11、引脚控制(外部中断引脚为“1”切TRx=1计数器开始计数)。单片机初始化完毕后程序等待半个正半周期(以便准确打开TRx)打开TRx,这时只要INTx(外部中断引脚)为高电平计数器即不断计数,低电平则不计数,待信号从高电平后计数器终止计数,关闭TRx保护计数器寄存器的值,该值即为待测信号一个正半周期的单片机机器周期数,即可求出待测信号的周期:待测信号周期T=2*cnt/(12/fsoc) cnt为测得待测信号的一个正半周期机器周期数;fsoc为单片机的晶振。所以待测信号的频率f=1/T。以下是程序的核心部分:(原理框图如下) void chkfreq() /while(FreqIN=0);whi
12、le(FreqIN=1);TR0=1;while(FreqIN=0);while(FreqIN=1);TR0=0;cnttime=500000/(TH0*256+TL0);TH0=TL0=0;tmp=(int)cnttime;Dynamic_LCD_Print();4.原理框图如下产生50ms中,进入中断服务程序断服务程序计满20次即产生完1s?YN关闭T0,T1保护数据从置中断次数结束取计数器计数值,将其转换为int型清计数器值调用函数,将数据装换有效字符串,并将其显示出来在屏幕上显示出来开T0,T1进入下一轮测量方法一流程图开始等待一个负半周期直到遇到高电平,以便于精确测量等待到遇到低电平
13、开启TR0等待到遇到高电平等待到遇到低电平关闭TR0取计数器计数值,将其运算转行为信号频率的int类型清计数器值调用函数,将数据装换有效字符串,并将其显示出来在屏幕上显示出来结束方法二流程图五课程设计结果及结论1.通过程序调试,用Protues用两种方法均可测得小于6Mhz的频率,以下是用方法一测量1000Hz频率的仿真图:2.实验结果及误差分析对于用原理一A待测信号的频率小于65535Hz。B实验的误差2000Hz时为0.05%; 10000Hz时为0.07% ;5000060000Hz时为0.073%。对于用原理二 C在频率8-10000Hz时测得的值相当精确,频率为奇数时有1-2的误差。
14、 D超过频率8-10000Hz测得值完全错误由此可见实验结果符合之前的原理分析,验证成功。3。实验优化及改进建议a) 方法一可将计数器0更改为中断扩展数据位数并延长定时时间,数据处理后和测量大于65535Hz的频率,但由T0中断不确定性,加大了测量范围会加大测量误差b) 方法二可将硬件待测信号取反接入剩余的外部中断接口,用于测量待测信号的负半周期,将正半周期和负半周期数相加即为待测信号的周期。这样即可测量非均衡占空比的方波信号。c) 方法二还可计多次正半周期取平均值,可大大提高精度,但这样会提高实验的最低量程4 两算法的对比a) 方法一误差均衡,切易于扩大量程,且可测量任意占空比的方波信号,但
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 单片机 高精度 频率计 设计 课程设计
链接地址:https://www.31ppt.com/p-4148810.html