您好,欢迎访问三七文档
当前位置:首页 > 电子/通信 > 综合/其它 > 基于c语言单片机数字频率计课程设计
课程设计报告课程名称:单片机课程设计报告题目:数字频率计学生姓名:所在学院:专业班级:学生学号:指导教师:2013年12月25日课程设计任务书报告题目数字频率计完成时间2013/12/25学生姓名专业班级指导教师职称讲师总体设计要求和技术要点设计一个数字频率计,要求如下:1.完成单脉冲测量,输入脉冲宽度范围是100s~0.1s。2.使用AT89C51单片机的定时器/计数器的定时和计数功能,外部扩展6位LED数码管,要求累计每秒进入单片机的外部脉冲个数,用LED数码管显示出来。3.要求(1)被测频率fx<110Hz,采用测周法,显示频率×××.×××;fx>110Hz,采用测频法,显示频率××××××。(2)利用键盘分段测量和自动分段测量。(3)完成单脉冲测量,输入脉冲宽度范围是100s~0.1s。(4)显示脉冲宽度要求如下。Tx<1000s,显示脉冲宽度×××。Tx>1000s,显示脉冲宽度××××。工作内容及时间进度安排1.时间及任务17周-18周周一到周五,上午8:00-11:40,下午2:00-5:40。(1)17周周一:学生选题,明确任务,指导教师对课题进行讲解,资料检索。(2)17周周二:硬件设计(3)17周周三:硬件仿真(4)17周周四:软件设计(5)17周周五:软件设计(6)18周周一:软件设计(7)18周周二:综合调试(8)18周周三:书写课程设计报告(9)18周周四:书写课程设计报告(10)18周周五:答辩评分摘要以ATMEL单片机为核心,利用单片机的外部中断、定时器的计数模式和定时器的功能对信号发生器产生的脉冲频率进行计数。且可以根据频率的不同,单片机控制选择测周法或者测频法对产生的脉冲波形进行计数,以进行更加精确的频率测量。而且可以通过按键来进行频率测量方法的选择。关键词:数字频率计;测频发;测周法;单片机目录一、概述………………………………………………………………………………1二、方案论证…………………………………………………………………………11.总体方案………………………………………………………………………12.测量方案选择…………………………………………………………………2三、硬件设计…………………………………………………………………………21.系统功能描述…………………………………………………………………22.硬件电路设计方框……………………………………………………………33.单片机各部分电路……………………………………………………………3四、软件设计…………………………………………………………………………41.测频发…………………………………………………………………………42.测周法…………………………………………………………………………43.主程序流程图设计……………………………………………………………54.程序设计……………………………………………………………14五、课程与心得………………………………………………………………………14六、参考文献…………………………………………………………………………151一、概述数字频率计是采用数字电路制成的实现对周期性变化信号的频率的测量。数字频率计是计算机、通讯设备、音频视频等科研生产领域不可缺少的测量仪器。它是一种用十进制数字,显示被测信号频率的数字测量仪器。它的基本功能是测量正弦信号,方波信号以及其他各种单位时间内变化的物理量。在进行模拟、数字电路的设计、安装、调试过程中,由于其使用十进制数显示,测量迅速,精度高,显示直观,所以经常要用到数字频率。二、方案论证1总体方案本次设计包含硬件设计与软件设计两部分,根据设计任务要求,采用AT89S52单片机,配置时钟电路,复位电路构成单片机最小系统,配置前置放大电路,人机对话通道中的键盘,数码管显示,从而构成设计要求的单片机应用测频系统,其结构框图如下图1-1所示:图1结构框图单片机键盘电路复位电路时钟电路数码管显示前置放大整形22.测量方案选择方案一:直接测频法。直接测频法是把被测频率信号经脉冲形成电路后加到闸门的一个输入端,只有在闸门开通时间T(以秒计)内,被计数的脉冲被送到十进制计数器进行计数。设计数器的值为N,由频率定义式可以计算得到被测信号频率为:f=N/T。方案二:高精度恒误差测频法。通过对传统测量方法的研究,结合高精度恒误差测量原理,设计一种测量精度与被测频率无关的硬件测频电路。本方法立足于快速的宽位数高精度浮点数字运算。方案三:倍频法。直接测频法在高频段有着很高的精度。可以把频率测量范围分成多个频段,使用倍频技术,根据频段设置倍频系数将经整形的低频信号进行倍频后再进行测量,高频段则进行直接测量。从编程难易及单片机资源利用情况和测量误差角度考虑,选择方案一,尽管在测量低频段时的相对测量误差较大。但是可以通过增大T来提高测量精度。三.硬件设计1.系统功能描述本次课程设计主要完成功能有:(1)按P3^4键可选择测量频率。(2)按P3^5键可以选择测量周期。(3)按P3^6键可以自动选择测频率与测周期。2.硬件电路设计框架根据设计要求,数字频率计整个系统硬件框架图如下2-1待测信息图2整机硬件电路框图3.单片机各部分电路(1)P0口经上拉电阻数据管显示电路(2)P3^4-P3^6作为键盘设置端口信号放大信号限幅信号整形分频电路AT89S52单片机键盘电路数码管显示3(3)P3^3作为被测信号输入端口(4)P3^4被测信号接收端图3单片机最小系统4.放大整形部分待测信号经过第一级放大后,进入第二级放大限幅电路。LM318是高数运放,工作电压±5--±20V,输入带宽15MHZ,足够处理高频信号。放大倍数:n=RL2/RL1(RL2用50K,RL1用10K)。限幅原理:限幅电路的稳压管跨接在集成运放的输出端和反相输入端之间。假设稳压管截止,则集成运放必然工作在开环状态,输出电压不是+UOM,就是-UOM。这样,必将导致稳压管击穿而工作在稳压状态,DZ构成负反馈通路,使反相输入端为“虚地”,限流电阻上的电流iR等于稳压管的电流iZ,输出电压uO=±UZ。4图4放大电路四、软件设计1.测频发所谓“频率”,就是周期性信号在单位时间(1s)内变化的次数。若在一定时间间隔T内测得这个周期性信号的重复变化次数N,则其频率可表示为f=N/T右图其中脉冲形成电路的作用是将被测信号变成脉冲信号,其重复频率等于被测频率fx。时间基准信号发生器提供标准的时间脉冲信号,若其周期为1s,图5测频原理则门控电路的输出信号持续时间亦准确地等于1s。闸门电路由标准秒信号进行控制,当秒信号来到时,闸门开通,被测脉冲信号通过闸门送到计数译码显示电路。秒信号结束时闸门关闭,计数器停止计数。2.测周法主要是利用单片机的定时器计时,测量2个时间参数t1和t2,即如下所示:图6测周法计算信号的一个波形的周期t=t1+t2则可以求出频率f=1/t。53.主程序流程图设计图7流程图开始采集频率(1s内)频率转换十进制转换那个按键按下测频率数码管显示自动测频测周测周期P3^4=0P3^6=0P3^5=064.程序设计#includereg52.h#includeintrins.hsbitsmgdl=P2^6;sbitsmgwl=P2^7;bitLED=P3^3;sbitkey1=P3^4;//定义按键1sbitkey2=P3^5;//定义按键2sbitkey3=P3^6;//定义按键3sbitkey4=P3^7;//定义按键4unsignedcharvalue,smg;//保存按键接口状态unsignedcharlkey,key_time;unsignedcharmode=0;unsignedinttime=0;unsignedcharnum=0;unsignedcharkey=0;unsignedchartime_key=0;unsignedintflag_f=0;unsignedintf_temp1=0;unsignedintf_temp2=0;7unsignedintt_temp1=0;unsignedintt_temp2=0;unsignedcharflag_int_0=0;/*********************************/unsignedchartablewe[]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf};unsignedchartabledu[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71};unsignedcharsu[]={0,0,0,0,0,0,0,0};/*********************************//*************DIS_LED*************/voiddelay(unsignedinta)//延时函数{unsignedintb;unsignedcharc;for(b=a;a0;a--)for(c=100;c0;c--);}voiddisplay_smg(unsignedcharsmg,unsignedcharvalue)//显示函数{smgwl=1;P0=tablewe[smg];smgwl=0;8smgdl=1;P0=tabledu[value];smgdl=0;delay(6);//延长显示时间避开视觉暂留看数码管显示过程}//**************按键功能*****************unsignedcharReadKey(void){if(key1==0){key_time++;if(key_time==20){lkey=1;mode=1;}if(key_time20)key_time=100;}elseif(key2==0){key_time++;if(key_time==20){lkey=2;mode=2;}if(key_time20)key_time=100;}elseif(key3==0){9key_time++;if(key_time==20){lkey=3;mode=3;}if(key_time20)key_time=100;}else{key_time=0;}returnlkey;}voidmain(){unsignedchark;TMOD=0x01;//定时器初始化TH0=(65536-2000)/256;TL0=(65536-2000)%256;//EA=1;ET0=1;TR0=1;//PT0=1;//EX0=1;//外部中断初始化IT0=1;EA=1;10while(1){display_smg(0,su[2]);//数码管显示display_smg(1,su[3]);//数码管显示display_smg(2,su[4]);//数码管显示display_smg(3,su[5]);//数码管显示display_smg(4,su[6]);//数码管显示display_smg(5,su[7]);//数码管显示k=ReadKey();LED=~LED;//脉冲发生}}voidtime_1()interrupt1{TH0=(65536-1000)/256;//定时器初始化TL0=(65536-1000)%256;time++;if(time==500){time=0;num++;if(num=10)num=0;}if(mode==1)//测频法模式11{EX0=1;//外部中断打开IT0=1;flag_f++;if(flag_f=600)//1S钟计时{flag_f=0;mode=0;EX0=0;su[2]=f_temp2;su[3]=f_temp1/10000;su[4]=f_temp1/1000%10;su[5]=f_temp1/100%10;su[6]=f_temp1/10%10;su[7]=f_temp1%10;;f_temp1=f_temp2
本文标题:基于c语言单片机数字频率计课程设计
链接地址:https://www.777doc.com/doc-4123741 .html