基于某c语言单片机数字频率计课程设计_第1页
基于某c语言单片机数字频率计课程设计_第2页
基于某c语言单片机数字频率计课程设计_第3页
基于某c语言单片机数字频率计课程设计_第4页
已阅读5页,还剩16页未读 继续免费阅读

下载本文档

版权说明:本文档由用户提供并上传,收益归属内容提供方,若内容存在侵权,请进行举报或认领

文档简介

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

2、 ×××;fx 110Hz,采用测频法,显示频率××××××。(2) 利用键盘分段测量和自动分段测量。(3) 完成单脉冲测量,输入脉冲宽度范围是100 s0.1s 。(4) 显示脉冲宽度要求如下。Tx 1000 s,显示脉冲宽度×××。Tx 1000 s,显示脉冲宽度××××。工作内容及时间进度安排1. 时间及任务17 周 -18 周周一到周五,上午 8:00-11:40,下午 2:00-5:40 。(1)17周周一:学生选题,明确任务

3、,指导教师对课题进行讲解, 资料检索。(2)17周周二:硬件设计(3)17周周三:硬件仿真(4)17周周四:软件设计(5)17周周五:软件设计(6)18周周一:软件设计(7)18周周二:综合调试(8)18周周三:书写课程设计报告(9)18周周四:书写课程设计报告(10)18周周五:答辩评分摘要以 ATMEL单片机为核心, 利用单片机的外部中断、 定时器的计数模式和定时器的功能对信号发生器产生的脉冲频率进行计数。 且可以根据频率的不同, 单片机控制选择测周法或者测频法对产生的脉冲波形进行计数, 以进行更加精确的频率测量。而且可以通过按键来进行频率测量方法的选择。关键词:数字频率计;测频发;测周法

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

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

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

7、框架根据设计要求,数字频率计 整个系统硬件框架图如下 2-1 待测信息信号放大信号限幅信号整形分频电路数码管显示AT89S52单片机键盘电路图 2 整机硬件电路框图3. 单片机各部分电路( 1) P0口经上拉电阻数据管显示电路( 2) P34-P36 作为键盘设置端口2( 3) P33作为被测信号输入端口( 4) P34被测信号接收端图 3 单片机最小系统4. 放大整形部分待测信号经过第一级放大后,进入第二级放大限幅电路。LM318是高数运放,工作电压 ±5- ±20V,输入带宽 15MHZ,足够处理高频信号。放大倍数: n=RL2/RL1(RL2用 50K,RL1用 10

8、K)。限幅原理:限幅电路的稳压管跨接在集成运放的输出端和反相输入端之间。假设稳压管截止,则集成运放必然工作在开环状态,输出电压不是+UOM,就是 -UOM。这样,必将导致稳压管击穿而工作在稳压状态, DZ 构成负反馈通路,使反相输入端为“虚地”,限流电阻上的电流 iR 等于稳压管的电流 iZ ,输出电压 u O=± UZ。3图 4 放大电路四、软件设计1测频发所谓“频率”,就是周期性信号在单位时间(1s)内变化的次数。若在一定时间间隔T 内测得这个周期性信号的重复变化次数N,则其频率可表示为f=N/T 右图其中脉冲形成电路的作用是将被测信号变成脉冲信号,其重复频率 等 于 被 测 频

9、 率f x 。 时 间 基 准 信 号 发 生 器提供标准的时间脉冲信号,若其周期为1s,图 5 测频原理则门控电路的输出信号持续时间亦准确地等于1s。闸门电路由标准秒信号进行控制,当秒信号来到时, 闸门开通, 被测脉冲信号通过闸门送到计数译码显示电路。秒信号结束时闸门关闭,计数器停止计数。2测周法主要是利用单片机的定时器计时, 测量 2 个时间参数 t1 和 t2 ,即如下所示:图6测周法计算信号的一个波形的周期t=t1+t2则可以求出频率 f=1/t 。43. 主程序流程图设计开始采集频率( 1s 内)频率转换十进制转换P34=0P36=0那个按键按下P35=0测频率测周期自动测频测周数码

10、管显示图 7流程图54. 程序设计#include <reg52.h>#include <intrins.h>sbit smgdl=P26;sbit smgwl=P27;bit LED = P33;sbit key1 = P34;/ 定义按键 1sbit key2 = P35;/ 定义按键 2sbit key3 = P36;/ 定义按键 3sbit key4 = P37;/ 定义按键 4unsigned char value,smg;/ 保存按键接口状态unsigned char lkey,key_time;unsigned char mode=0;unsigned i

11、nt 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;6unsigned int t_temp1=0;unsigned int t_temp2=0;unsigned char flag_int_0=0;/*/unsigned char tablewe=0xfe,0xfd,0xfb,0xf7,0xef,0xdf;unsigned char tabledu=0x3f,0

12、x06,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;a>0;a-)for(c=100;c>0;c-);void display_smg(unsigned char smg,unsigned char value)/显示函数smgwl=1;P0=tablew

13、esmg;smgwl=0;7smgdl=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 if(key2 = 0)key_time+;if(key_time = 20)lkey = 2;mode=2;if(key_time > 20)key_time = 100;else

14、 if(key3 = 0)8key_time+;if(key_time = 20)lkey = 3;mode=3;if(key_time > 20)key_time = 100;elsekey_time = 0;return lkey;void main()unsigned char k;TMOD = 0x01;/定时器初始化TH0 = (65536 - 2000) / 256;TL0 = (65536 - 2000) % 256;/EA = 1;ET0 = 1;TR0 = 1;/PT0 = 1;/EX0 = 1;/外部中断初始化IT0 = 1;EA=1;9while(1)display

15、_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 1TH0 = (65536 - 1000) / 256;/定 时 器初始化TL0 = (65536 - 1000) % 256;time+;if(time = 500)time = 0;num+

16、;if(num >= 10) num=0;if(mode = 1)/测频法模式10EX0 = 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_temp1 / 100 % 10;su6 = f_temp1 / 10 % 10;su7 = f_temp1 % 10;f_temp1 = f_temp2 = 0;if(mode = 2)/测周法模式

17、EX0 = 1; /外部中断打开IT0 = 0;PX0 = 1;if(flag_int_0 = 1)EX0 = 0;mode = 0;11flag_int_0 = 0;TR1 = 0;t_temp1 = TL1;t_temp2 = TH1;t_temp2 = t_temp2 * 256;t_temp1 = t_temp1 + t_temp2;/ su2 = t_temp2 / 100;su3 = t_temp1 / 10000; su4 = t_temp1 / 1000 % 10; su5 = t_temp1 / 100 % 10; su6 = t_temp1 / 10 % 10; su7 =

18、 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;12if(f_temp1 <= 110)mode = 1;su0 = mode;su1 = num;void INT_0() interrupt 0/外部中断if(mode = 1)EX0 = 0;f_temp1+;if(f_temp1 >= 50000)f_temp1 = 50000;f_temp2+;if(f_temp2 >= 5000)f_temp1 = f_temp2 = 0;EX0 = 1;if(mode = 2)13TR1 = 1;flag_int_0 = 1;五、结论与心得这次为期两周的课程设计让我受益匪浅。 以前只是对单片机更多的只是一些感性的,理论上的认识,自己真正动

温馨提示

  • 1. 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。图纸软件为CAD,CAXA,PROE,UG,SolidWorks等.压缩文件请下载最新的WinRAR软件解压。
  • 2. 本站的文档不包含任何第三方提供的附件图纸等,如果需要附件,请联系上传者。文件的所有权益归上传用户所有。
  • 3. 本站RAR压缩包中若带图纸,网页内容里面会有图纸预览,若没有图纸预览就没有图纸。
  • 4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
  • 5. 人人文库网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对用户上传分享的文档内容本身不做任何修改或编辑,并不能对任何下载内容负责。
  • 6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
  • 7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

评论

0/150

提交评论