12014~2015学年第一学期《单片机C51技术运用》课程设计报告题目:数字频率器计专业:电子信息工程班级:12电子信息工程(2)班姓名:刘磊陆兴凯孟凯彭志峰尚宏晔沈左彪指导教师:周珍艮电气工程学院2014年11月29日2任务书课题名称数字频率计指导教师(职称)王银花(讲师)执行时间2014~2015学年第1学期第13周学生姓名学号承担任务刘磊1209121089软件设计陆兴凯1209121090程序编程和调试孟凯1209121091电路图设计彭志峰1209121092电路图设计尚宏晔1209121093硬件制作沈左彪1209121094硬件制作设计目的设计一个数字频率计设计要求利用STC89C52单片机上编程,利用定时计数器,来实现对输入的TTL信号进行频率测量,测频结果通过4位数码管显示出来。要求能够对0-100KHZ的信号频率进行准确计数,计数误差不超过±1HZ。3目录第一章频率计数器的设计任务和要求-------------------------------------------21.1频率计数器的设计任务------------------------------------------------21.2设计要求及发挥部分--------------------------------------------------2第二章方案的总体设计------------------------------------------------------32.1方案的设计----------------------------------------------------------32.2方案的整体框图------------------------------------------------------32.3方案的说明----------------------------------------------------------4第三章硬件设计------------------------------------------------------------53.1单片机的最小系统----------------------------------------------------53.1.1上电复位电路------------------------------------------------------53.1.2晶振电路----------------------------------------------------------53.2LED数码管显示电路---------------------------------------------------63.3整体电路------------------------------------------------------------7第四章软件设计-------------------------------------------------------------84.1程序流程图----------------------------------------------------------84.2初始化子函数--------------------------------------------------------84.3延时子函数----------------------------------------------------------84.4中断子函数----------------------------------------------------------9第五章系统的调试和说明---------------------------------------------------105.1C程序的说明--------------------------------------------------------105.2C程序编译的结果----------------------------------------------------105.3实物图-------------------------------------------------------------11第六章设计总结与心得体会-------------------------------------------------126.1设计总结------------------------------------------------------------126.2设计心得-----------------------------------------------------------12参考文献-------------------------------------------------------------------13附录-----------------------------------------------------------------------134数字频率计摘要数字频率计是计算机、通讯设备、音频视频等科研生产领域不可缺少的测量仪器。它是一种用十进制数字,显示被测信号频率的数字测量仪器。它的基本功能是测量正弦信号,方波信号以及其他各种单位时间内变化的物理量。本课程设计主要设计一个简易的频率计,来实现信号在0-9999HZ范围内周期变化的方波频率的测定。该文主要介绍了基于STC89C52单片机频率计的设计方案和实现方法,该系统主要由硬件和软件两部分组成,其中重点给出了具体硬件电路图和软件流程图以及具体工作原理。硬件部分通过洞洞板的布线设计帮助,可以确保焊接时尽量少的飞线和出错。软件通过keilµvision编译及调试,其中在P1.7口编入了一个5500HZ的方波,用以仿真调试该频率计的软硬件功能是否能够实现输出频率的功能。另外,本设计多增加了一个按键功能,通过一个按键来控制定时计数器的开始和关闭。该频率计还带有3*3的矩阵键盘,可以作为扩展应用区,通过编程实现。本设计中用的是LED共阴数码管,输出频率时采用的事动态显示的方法。关键词:频率计;单片机;动态显示第一章频率计数器的设计任务和要求1.1频率计数器的设计任务本课程设计任务主要是基于单片机系统,通过软件、硬件的调试,完成一个具有计数功能的频率计数器。1.2设计要求及发挥部分1.1.1设计要求主要有:设计的方案合理、正确;完成系统硬件的设计及正确焊接;完成系统软件的设计与调试;1.1.2发挥部分:本课程设计的发挥部分较小,只再增加了一个按键来控制定时器,计数器的开始。第二章方案的总体设计2.1方案的设计本课程设计的基于ATMEL公司STC89C52单片机的频率计数器,是利用该52单片机内部的定时计数器来完成待测信号频率的测量。STC89C52单片机内部具有2个16位的定定时计数器T0与T1,可以通过编程来实现所需要的功能。定时/计数器T0与T1的核心都是16位的加1计数器,TH0与TL0构成在构成定时器/计数器T0加1计数器的高8位和低8位;TH1与TL1构成在构成定/计数器T1加1计数器的高8位和低8位。加1计数器的初值可以通过程序设定,这样就可以获得不同的计数器初值或定时时间。加1计数器用作定时器时,每个机器周期加1,这样以机器周期为基准可以用来测量时间间隔。定时/计数器用作计数器时,在相应的外部方波从1到0的跳变时计数器加1,这样在计数闸门的控制下可以测量待测信号的频率。定时/计数器的工作由响应的运行控制位TR控制,当TR置1时,定时/计数器开始计数,当TR置零时停止计数。在本设计方案中,我在程序中设定T0工作在计数状态,T1工作在计时状态下。T0计数器对输入信号进行计数,由于信号的频率就是每秒钟信号的脉冲个数,于是我让T1工作在定时状态下,定时时间为1秒。每定1秒钟到,就停止T0的计数,然后从T0的计数单元中读取计数的数值,即完成了信号的频率测量。最后通过四位数码显示出频率值。由于要尽可能的使用最少的元件,在满足设计要求的前提下,我将P1.7口与P3.4口(即T0)用导线连接,在设定程序时,利用T1定时的同时在P1.7口输出一个设定好的方波,以便直观的检测频率计数器的软件、硬件是否达到设计的基本功能。2.2方案的整体框图图2-1系统总体框图2.3方案的说明本课程设计采用内部给定的方波来实现频率计数的功能,缺陷在于只能测得一个方波的频率,但是这个方波的输入意在便于检测设计的软、硬件的功能是否实现,若功能可以实现,则可用于测量外部输入的0—100kHZ之间的任意频率值。STC89C52单片机按键电路LED数码管显示电路上电复位电路晶振电路电源电路第三章硬件设计3.1单片机的最小系统3.1.1上电复位电路复位是单片机的初始化操作。单片机系统在上电启动运行时,都需要先复位。其作用是使CPU和系统中其他部件都处于一个确定的初始状态,并从这个状态开始工作。而复位是一个很重要的操作方式,但单片机本身是不能自动经行复位的,必须配合相应的外部复位电路才能实现。本设计的复位电路采用上电复位加按键手动复位,其电路如下图所示:图3-1复位电路3.1.2晶振电路单片机工作是在统一的时钟脉冲控制下一拍一拍地进行的,这个脉冲是单片机控制器中的时序电路发出的。单片机的时序就是CPU在执行指令时所需控制信号的时间顺序。为了保证各部件的同步工作,单内部电路应在唯一的时钟信号下严格按时序进行工作。其电路原理图如下:图3-2晶振电路3.2LED数码管显示电路显示器是微机重要的输出设备。显示器有显示监控结果、提供用户操作界面等功能。在本次设计中采用了LED显示器,即数码管。数码管的每一个数码段是一只发光二极管。当发光二极管导通时,相应的一个点或者一个笔画发光,控制发光二极管发光组合,可以显示出所需字符。我采用了共阴极结构。在定义其显示字形的码段时,通过I/O口送出七段码其段码表如下:表3-1共阴数码管段选码显示字形0123456789共阴段选码3FH06H5BH4FH66H6DH7DH07H7FH6FH数码管的电路图如下:图3-3数码管接线电路3.3整体电路图3-4整体原理图第四章软件设计本课程设计包含了主函数、初始化子函数、中断子函数、按键扫描子函数和延时子函数等多个函数。4.1程序流程图图4-1主流程图4.2初始化子函数初始化子函数主要是:1.对T0、T1定时/计数器进行初始化;2.对单片机各管脚及按键赋初值,以便主程序的执行。4.3延时子函数主要用于数码管动态显示的子程序中。voiddelay(ucharz){ucharx,y;for(x=z;x0;x--)for(y=113;y0;y--);开始初始化中断程序频率输出}4.4中断子函数流程图如下:图4-2中断程序流程图第五章系统的调试和说明5.1C程序的说明C语言是一种通用的程序设计语言,其代码率高,数据类型及运算符丰富,位操作能力强,适用于各种应用的程序设计。使用C语言进行单片机应用系统开发,具有编程灵活、调试方便、目标代码编译效率高的特点。C语言也是目前使用最广的单片机应用系统编程语言。由C语言编程的单片机应用程序,称为单片机C语言程序。MCS-51系列单片机开发系统的编译软件可以对51单片机C语言源程序进行编译,称为C51编译器。在C51编译软件中可进行51单片机C语言程序的调试。5.2C程序编译的结果在keilµvision上编译的结果:图5-1程序调试图5.3实物图图5-2正面实物图图5-3反面实物图第六章设计总结与心得体会6.1设计总结为期一周的单片机课程设计已经接近尾声了,单片机课程设计的主要目的是让我们提高动手能力和综合运用能力。经过这一周的设计,我更加深刻的体会到“万事开头难”这话的含义了。这次单片机的课程设计,我选的课题是频率计数器。这个看似很简单的课