收藏 分享(赏)

基于c语言单片机数字频率计课程设计.doc

上传人:HR专家 文档编号:11375049 上传时间:2020-04-07 格式:DOC 页数:27 大小:91.83KB
下载 相关 举报
基于c语言单片机数字频率计课程设计.doc_第1页
第1页 / 共27页
基于c语言单片机数字频率计课程设计.doc_第2页
第2页 / 共27页
基于c语言单片机数字频率计课程设计.doc_第3页
第3页 / 共27页
基于c语言单片机数字频率计课程设计.doc_第4页
第4页 / 共27页
基于c语言单片机数字频率计课程设计.doc_第5页
第5页 / 共27页
点击查看更多>>
资源描述

1、课程设计报告课程名称:单片机课程设计报告题目:数字频率计学生姓名:所在学院:专业班级:学生学号:指导教师:2013 年 12 月 25 日课程设计任务书报告题目数字频率计完成时间2013/12/25学生姓名专业班级指导教师职称讲师总体设计要求和技术要点设计一个数字频率计,要求如下:1完成单脉冲测量,输入脉冲宽度范围是100ms0.1s。2使用AT89C51单片机的定时器/计数器的定时和计数功能,外部扩展6位LED数码管,要求累计每秒进入单片机的外部脉冲个数,用LED数码管显示出来。3.要求(1)被测频率fx110Hz,采用测周法,显示频率. ;fx110Hz,采用测频法,显示频率。(2)利用键

2、盘分段测量和自动分段测量。(3)完成单脉冲测量,输入脉冲宽度范围是100ms0.1s。 (4)显示脉冲宽度要求如下。Tx1000ms,显示脉冲宽度。Tx1000ms,显示脉冲宽度。工作内容及时间进度安排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

3、周周五:答辩评分摘要以ATMEL单片机为核心,利用单片机的外部中断、定时器的计数模式和定时器的功能对信号发生器产生的脉冲频率进行计数。且可以根据频率的不同,单片机控制选择测周法或者测频法对产生的脉冲波形进行计数,以进行更加精确的频率测量。而且可以通过按键来进行频率测量方法的选择。关键词:数字频率计;测频发;测周法;单片机 目录一、概述1二、方案论证11总体方案12测量方案选择2三、硬件设计21系统功能描述22硬件电路设计方框3 3单片机各部分电路3四、软件设计41测频发42测周法43主程序流程图设计54.程序设计14五、课程与心得14六、参考文献15一、概述 数字频率计是采用数字电路制成的实现

4、对周期性变化信号的频率的测量。数字频率计是计算机、通讯设备、音频视频等科研生产领域不可缺少的测量仪器。它是一种用十进制数字,显示被测信号频率的数字测量仪器。它的基本功能是测量正弦信号,方波信号以及其他各种单位时间内变化的物理量。在进行模拟、数字电路的设计、安装、调试过程中,由于其使用十进制数显示,测量迅速,精度高,显示直观,所以经常要用到数字频率。二、方案论证1 总体方案本次设计包含硬件设计与软件设计两部分,根据设计任务要求,采用AT89S52单片机,配置时钟电路,复位电路构成单片机最小系统,配置前置放大电路,人机对话通道中的键盘,数码管显示,从而构成设计要求的单片机应用测频系统,其结构框图如

5、下图1-1所示:前置放大整形复位电路 单片机数码管显示时钟电路 键盘电路 图1结构框图2.测量方案选择方案一:直接测频法。直接测频法是把被测频率信号经脉冲形成电路后加到闸门的一个输入端, 只有在闸门开通时间T ( 以秒计) 内, 被计数的脉冲被送到十进制计数器进行计数。设计数器的值为N , 由频率定义式可以计算得到被测信号频率为: f = N / T 。 方案二:高精度恒误差测频法。通过对传统测量方法的研究, 结合高精度恒误差测量原理, 设计一种测量精度与被测频率无关的硬件测频电路。本方法立足于快速的宽位数高精度浮点数字运算。方案三:倍频法。直接测频法在高频段有着很高的精度。可以把频率测量范围

6、分成多个频段, 使用倍频技术, 根据频段设置倍频系数将经整形的低频信号进行倍频后再进行测量, 高频段则进行直接测量。从编程难易及单片机资源利用情况和测量误差角度考虑,选择方案一,尽管在测量低频段时的相对测量误差较大。但是可以通过增大 T 来提高测量精度。三硬件设计1系统功能描述本次课程设计主要完成功能有:(1)按P34键可选择测量频率。(2)按P35键可以选择测量周期。(3)按P36键可以自动选择测频率与测周期。2硬件电路设计框架根据设计要求,数字频率计整个系统硬件框架图如下2-1键盘电路AT89S52单片机信号放大分频电路信号整形信号限幅待测信息数码管显示 图2整机硬件电路框图3.单片机各部

7、分电路(1)P0口经上拉电阻数据管显示电路(2)P34-P36作为键盘设置端口(3)P33作为被测信号输入端口(4)P34被测信号接收端 图3单片机最小系统4. 放大整形部分待测信号经过第一级放大后,进入第二级放大限幅电路。LM318是高数运放,工作电压5-20V,输入带宽15MHZ,足够处理高频信号。放大倍数:n=RL2/RL1(RL2用50K,RL1用10K)。限幅原理:限幅电路的稳压管跨接在集成运放的输出端和反相输入端之间。假设稳压管截止,则集成运放必然工作在开环状态,输出电压不是+UOM,就是-UOM。这样,必将导致稳压管击穿而工作在稳压状态,DZ构成负反馈通路,使反相输入端为“虚地”

8、,限流电阻上的电流iR等于稳压管的电流iZ,输出电压u O=UZ。 图4放大电路四、软件设计1测频发 所谓“频率”,就是周期性信号在单位时间(1s)内变化的次数。若在一定时间间隔T内测得这个周期性信号的重复变化次数N,则其频率可表示为f=N/T右图其中脉冲形成电路的作用是将被测信号变成脉冲信号,其重复频率等于被测频率fx。时间基准信号发生器 提供标准的时间脉冲信号,若其周期为1s, 图 5测频原理 则门控电路的输出信号持续时间亦准确地等于1s。闸门电路由标准秒信号进行控制,当秒信号来到时,闸门开通,被测脉冲信号通过闸门送到计数译码显示电路。秒信号结束时闸门关闭,计数器停止计数。2测周法主要是利

9、用单片机的定时器计时,测量2个时间参数t1和t2,即如下所示: 图6测周法计算信号的一个波形的周期 t=t1+t2 则可以求出频率f=1/t。3.主程序流程图设计 开始采集频率(1s内)频率转换十进制转换数码管显示自动测频测周测周期P34=0P36=0P35=0测频率那个按键按下 图7流程图4.程序设计#include #include sbit smgdl=P26;sbit smgwl=P27;bit LED = P33;sbit key1 = P34;/定义按键1sbit key2 = P35;/定义按键2sbit key3 = P36;/定义按键3sbit key4 = P37;/定义按

10、键4unsigned char value,smg;/保存按键接口状态unsigned char lkey,key_time;unsigned char mode=0;unsigned int time=0;unsigned char num=0;unsigned char key=0;unsigned char time_key=0;unsigned int flag_f=0;unsigned int f_temp1=0;unsigned int f_temp2=0;unsigned int t_temp1=0;unsigned int t_temp2=0;unsigned char fla

11、g_int_0=0;/*/ unsigned char tablewe=0xfe,0xfd,0xfb,0xf7,0xef,0xdf; unsigned char tabledu=0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71; unsigned char su=0,0,0,0,0,0,0,0;/*/*DIS_LED*/void delay(unsigned int a)/延时函数 unsigned int b; unsigned char c; for(b=a;a0;a-) for(

12、c=100;c0;c-);void display_smg(unsigned char smg,unsigned char value)/显示函数 smgwl=1; P0=tablewesmg; smgwl=0; smgdl=1; P0=tableduvalue; smgdl=0; delay(6);/延长显示时间 避开视觉暂留 看数码管显示过程/*按键功能*unsigned char ReadKey(void)if(key1 = 0) key_time+;if(key_time = 20) lkey = 1;mode=1;if(key_time 20)key_time = 100;else

13、if(key2 = 0) key_time+;if(key_time = 20) lkey = 2;mode=2;if(key_time 20)key_time = 100;else if(key3 = 0) key_time+;if(key_time = 20) lkey = 3;mode=3;if(key_time 20)key_time = 100;else key_time = 0;return lkey;void main() unsigned char k;TMOD = 0x01; /定时器初始化TH0 = (65536 - 2000) / 256;TL0 = (65536 - 2

14、000) % 256;/EA = 1;ET0 = 1;TR0 = 1;/PT0 = 1;/EX0 = 1; /外部中断初始化IT0 = 1;EA = 1;while(1) display_smg(0,su2); /数码管显示 display_smg(1,su3); /数码管显示 display_smg(2,su4); /数码管显示 display_smg(3,su5); /数码管显示 display_smg(4,su6); /数码管显示 display_smg(5,su7); /数码管显示 k = ReadKey();LED = LED;/脉冲发生void time_1() interrupt

15、 1TH0 = (65536 - 1000) / 256;/定时器初始化TL0 = (65536 - 1000) % 256;time+;if(time = 500) time = 0;num+;if(num = 10) num=0;if(mode = 1) /测频法模式 EX0 = 1; /外部中断打开 IT0 = 1; flag_f+; if(flag_f = 600)/1S钟计时 flag_f = 0; mode = 0; EX0 = 0; su2 = f_temp2; su3 = f_temp1 / 10000; su4 = f_temp1 / 1000 % 10; su5 = f_t

16、emp1 / 100 % 10; su6 = f_temp1 / 10 % 10; su7 = f_temp1 % 10; ; f_temp1 = f_temp2 = 0; if(mode = 2)/测周法模式 EX0 = 1; /外部中断打开 IT0 = 0; PX0 = 1; if(flag_int_0 = 1) EX0 = 0; mode = 0; flag_int_0 = 0; TR1 = 0; t_temp1 = TL1; t_temp2 = TH1; t_temp2 = t_temp2 * 256; t_temp1 = t_temp1 + t_temp2;/ su2 = t_tem

17、p2 / 100; su3 = t_temp1 / 10000; su4 = t_temp1 / 1000 % 10; su5 = t_temp1 / 100 % 10; su6 = t_temp1 / 10 % 10; su7 = t_temp1 % 10; TH1 = 0; TL1 = 0; if(mode = 3) /自动测频测周 EX0 = 1; /外部中断打开 IT0 = 1; flag_f+; if(flag_f = 600)/1S钟计时 flag_f = 0; EX0 = 0; if(f_temp1 110) mode = 2; if(f_temp1 = 50000) f_tem

18、p1 = 50000;f_temp2+;if(f_temp2 = 5000) f_temp1 = f_temp2 = 0;EX0 = 1;if(mode = 2) TR1 = 1;flag_int_0 = 1; 五、结论与心得这次为期两周的课程设计让我受益匪浅。以前只是对单片机更多的只是一些感性的,理论上的认识,自己真正动手的时候,才真正理解到其中的精华所在。 频率计的设计让我更好的了解如何应用单片机的定时器计数器模块,其中最重要的是分析问题解决问题的能力,在我看来,无论是在节省硬件资源,还是提高数据的准确度来看,都需要下一些功夫把它做到最好。 感谢廖亦凡博士在此寒冷的天气每天指导我们的单片机的设计,是您的经验帮助我解决很多技术上的难题。六、参考文献【1】 杨恢先 黄辉先 单片机原理及应用人民邮电出版社【2】 大能 南光群 刘金华 单片机课程设计指导书 北京理工大学【3】 谭浩强 C语言程序设计第二版 清华大学教师评语及设计成绩教师评语:课程设计成绩:指导教师:(签名)日期:年月日21

展开阅读全文
相关资源
猜你喜欢
相关搜索
资源标签

当前位置:首页 > 学术论文 > 管理论文

本站链接:文库   一言   我酷   合作


客服QQ:2549714901微博号:道客多多官方知乎号:道客多多

经营许可证编号: 粤ICP备2021046453号世界地图

道客多多©版权所有2020-2025营业执照举报