《课程设计(论文)基于单片机的简易频率计.doc》由会员分享,可在线阅读,更多相关《课程设计(论文)基于单片机的简易频率计.doc(19页珍藏版)》请在三一办公上搜索。
1、单片机课程设计题 目 基于单片机简易的频率计 专业班级 11级电子科学与技术2班院 (系) 电气工程 完成时间 2015年 1月 9日 单片机课程设计任务书一、设计题目 基于单片机简易的频率计 二、设计任务与要求1.本品主要由信号输入、放大整形、分频、单片机控制模块、驱动显示电路等组成2.设计过程中,频率计采用外部10分频,以便测量1Hz1MHz的信号频率,并且实现量程自动切换。三、 参考文献1 吴钟珍.最新实用电子电工技术手册.徐氏基金会出版社 2010,23(3):97982 深圳市中源单片机发展有限公司 STC89C52 3 张友德.单片微型机原理、应用和实验. 复旦大学出版社 2009
2、.3423444 陈大钦.电子技术基础.(第二版)高等教育出版社 2009,13:2526 5 曾建唐.电工电子基础实践设计.机械工业出版社 2007,10(4):2782806 马淑华.单片机原理与接口技术.北京邮电大学出版社 2004.4977.四、 设计时间 2014 年 12 月 29 日 至 2015 年 1月 9 日指导教师签名: 年 月 日目 录1 总体方案设计11.1 设计要点11.2 系统方案12 理论分析与计算22.1 频率计概述22.2 频率测量原理22.3精度保证33 电路与程序33.1 电路设计33.2 程序设计44 测试与调整54.1 测试方案及测试条件54.2 测
3、试结果完整性65 总结与体会6参考文献8附录1:总体电路原理图9附录2:实物图10附录3:元器件清单11附录4:C语言程序121 总体方案设计 1.1 设计要点 本次课程设计有以下要点: 设计一个频率计。要求用4位7段数码管显示待测频率,格式为0000Hz。 测量频率范围:109999Hz。 测量信号类型:正弦波、方波和三角波。 测量信号幅值:0.55V。 设计的脉冲信号发生器,以此产生闸门信号,闸门信号宽度为1S。 确定设计方案,按功能模块的划分选择元、器件和中小规模集成电路,设计分电路,画出总体电路原理图,阐述基本原理。 1.2 系统方案 简易数字频率计可以用中规模集成芯片构建而成,但与用
4、51单片机实现相比,其电路复杂程度要大得多,而且远远不及用单片机实现灵活,其精度也不及用单片机实现的高。所以我采用用STC89C52单片机去实现。 我采用单片机89S52作为控制核心,用数码管显示所输入信号的频率,具体的系统框图如图1-1所示: 图1-1 简易频率计的系统总体框图其中,信号通过整形放大后,输入单片机中的计数器,运用单片机中的定时器设置每隔一秒钟将计数器中死亡数据输出,通过数码管显示。单片机作为控制中心,随时检测和计录输入信号的频率,并控制输出显示和输入是否超载。而显示电路用一个四位一体的数码管实现。为简化硬件电路,用动态显示的方式,依次点亮个数码管,这样不仅仅是简化了电路,而且
5、每一时刻四位数码管只相当于一位数码管的功耗,大大减少了功耗。2 理论分析与计算2.1 频率计概述数字频率计是计算机、通讯设备、音频视频等科研生产领域不可缺少的测量仪器。它是一种用十进制数字显示被测信号频率的数字测量仪器。它的基本功能是测量正弦信号,方波信号及其他各种单位时间内变化的物理量。在进行模拟、数字电路的设计、安装、调试过程中,由于其使用十进制数显示,测量迅速,精确度高,显示直观,经常要用到频率计。 本数字频率计将采用定时、计数的方法测量频率,采用一个1602A LCD显示器动态显示四位数。测量范围从100Hz9999Hz的正弦波、方波、三角波。用单片机实现自动测量功能。 此频率计是直接
6、用十进制数字显示被测信号频率的一种测量装置。它以测量周期的方法对正弦波、方波、三角波的频率进行自动的测量2.2 频率测量原理频率测量仪的设计思路主要是:对信号分频,测量一个或几个被测量信号周期中已知标准频率信号的周期个数,进而测量出该信号频率的大小,其原理如右图2-1所示。 若被测量信号的周期为,分频数m1,分频后信号的 周期为T,则:T=m1Tx 。由图可知: T=NTo (注:To为标准信号的周期,所以T为分频后信号的周期,则可以算出被测量信号的频率f。)图2-1 频率测量原理图2.3精度保证单片机系统的标准频率比较稳定,而是系统标准信号频率的误差,通常情况下很小;而系统的量化误差小于1,
7、所以由式T=NTo可知,频率测量的误差主要取决于N值的大小,N值越大,误差越小,测量的精度还有C语言自校程序,对测量仪经行自校。3 电路与程序3.1 电路设计实际电路如下图所示:图3-1 实际硬件电路接线图我们按此电路连接器件,然后在IN口输入待测信号,再有施密特输出至单片机输入口。3.2 程序设计我们采用C语言来编写控制测试程序。其结构如下:图3-2 C语言程序设计图程序见附录44 测试与调整4.1 测试方案及测试条件测试方案: 我们在测试过程的测试方案如下:图4-1 测试流程框架图合成函数信号发生器 发出待测信号,信号经过放大整形电路被放大、整理成为TTL波形,然后输入单片机,经程序控制,
8、显示在LCD屏上。测试条件: 对单片机提供+5V电压,数字示波器4.2 测试结果完整性待测信号经放大整形后输出为TTL波形,经单片机程序控制,LCD可显示测得的信号频率大小,范围为1009999Hz,测量误差为 1Hz,测量时间1s,可连续测量。 调试过程: 在连接测试过程中第一次测试的时候输出波形、所测电压范围都不是很稳定。后来发现是外接电路以及电路中的接线都太长了,导致干扰较大。我们截短了电线,再次测量,就可以得到稳定的频率、电压了。 然后,在初步成功的基础上,我们对其经行工艺加工,使其能更为美观大方。我们使用了底座,将板子都布置在底座上,使其看起来非常好看。但是,这样连接后,由于接触不够
9、好,使得测试时0.1V时,低频测试只能达到1KHz,无法继续下降了,其他电压时均可以。 实际测试: 由于AD8039高速的时候能达到350MHZ,能满足我们的要求即使最高频率为3MHZ。我们用它做一个过零比较器进行电压的整形。由于我们接的是双电源,所以输出波形会有负电压,为避免对芯片的损坏,我们接一个74LS14(6反相施密特触发器)。为了避免8039输出电压过大对芯片造成损坏,我们接了一个保护电阻即R1(359)。5 总结与体会数字频率计是计算机、通讯设备、音频视频等科研生产领域不可缺少的测量仪器。在进行模拟、数字电路的设计、安装、调试过程中,由于其使用十进制数显示,测量迅速,精确度高,显示
10、直观,会被经常使用到。本次课程设计刚开始的时候,由于控制电路这部分比较难搞定,所以在数电模电实验箱上反复连接电路的时候,就会停下来设计控制电路,为了提高效率,在实际的操作中,先连好时基电路,分频电路测试通过后,再把显示电路和计数电路连好,调测符合要求。最后搞定控制电路的连接。最后完成的一块电路板,它所实现的功能就是可以测被测信号的频率、周期。在调测的过程中发现测量频率时,档位在1Hz999Hz,最终得到的结果只有占空比部分程序未能写出,其他的测量结果非常接近待测信号实际值。 通过本次课程设计,不但加深我们对在课程上所学到的单片机理论知识的认识和理解,重新让自己认识到了这门学科的在应用方面的广阔
11、前景,并且通过知识与应用于实践的结合更加丰富了自己的知识,扩展了知识面,不但掌握了本专业的相关知识,而且对其他专业的知识也有所了解,并且较系统的掌握单片机应用系统的开发应用过程,从而使自身的综合素质有了较全面的提高 。另外,我们也注意到电路工艺的重要性。 经过这次一个较完整的产品设计和制作过程,对于认识到自己在知识方面存在的不足,明确今后的学习方向是非常有益的,为将来的更近一步的学习打了下扎实的基础。 参考文献1 吴钟珍.最新实用电子电工技术手册.徐氏基金会出版社 2010,23(3):97982 深圳市中源单片机发展有限公司 STC89C52 Datasheets 3 张友德.单片微型机原理
12、、应用和实验. 复旦大学出版社 2009.3423444 陈大钦.电子技术基础.(第二版)高等教育出版社 2009,13:2526 5 曾建唐.电工电子基础实践设计.机械工业出版社 2007,10(4):2782806 马淑华.单片机原理与接口技术.北京邮电大学出版社 2004.4977. 附录1:总体电路原理图附录2:实物图附录3:元器件清单名称数量名称数量STC89C52110K电位器1排针若干晶振1按键130P电容210UF电容1四位一体共阳数码管1200欧电阻88550410K电阻5导线若干LED1排插若干附录4:C语言程序简易频率计的C语言程序: #pragma db code #i
13、nclude #define uchar unsigned char #define uint unsigned int sbit LED_0=P10; sbit LED_1=P11; sbit LED_2=P12; sbit LED_3=P13; /*=0-9=A-G=*/ uchar a16=0xc0,0xf9,0xa4,0xb0,0x99,0x92,0x82,0xf8,0x80,0x90,0x88,0x83,0xc6,0x86,0x8e,0x82; uchar b4=0x8e,0xc1,0xc7,0xc7; uchar one,two,three,four; uint t=8000,j;
14、/时间t uint m=0,n=0,k=0;/次数 uint s3=0,s4;/dt前后次数 time1()interrupt 3 /delay(20); t=t+0.05*100;/每到0.05s,定时器1产生中断 TH1=0x3e; TL1=0xff; if(t%100=0) m=TH0*256+TL0;TH0=0x00;TL0=0x00;/*s3=n;m=(s3-s4);s4=s3;*/ void delay(uint x); void display(void); void led_analyze(uint l); void led_add(); void main() uint a;
15、 IT1=1; /外部中断0下跳沿 EX1=1; TMOD=0x15;/T1定时方式1,T0计数1 TH1=0x3e; TL1=0xff;/定时50ms TR1=1;/T1 ET1=1; TH0=0x00; TL0=0x00;/定时50ms TR0=1;/T0 ET1=1 EA=1 while(1) if(m=9999) led_analyze(m); for(a=0;a100;a+) display(); else P0=b0; LED_0=0; delay(300); LED_0=1; P0=b1; LED_1=0; delay(300); LED_1=1; P0=b2; LED_2=0;
16、 delay(3); LED_2=1; P0=b3; LED_3=0; delay(300); LED_3=1; void delay(uint x) uint i;for(i=0;ix;i+); void display(void) P0=aone; LED_0=0; delay(3); LED_0=1; P0=atwo; LED_1=0; delay(3); LED_1=1; P0=athree; LED_2=0; delay(3); LED_2=1; P0=afour; LED_3=0; delay(3); LED_3=1; void led_analyze(uint l) l=l%10000; one=l/1000; two=(l/100)%10; three=(l%100)/10; four=(l%100)%10;