的原理,很容易想到利用51单片机的T0、T1两个定时/计数器,一个用来定时,另一个用来计数。
1.3 设计课题总体方案介绍及工作原理说明
本次设计主要分成两大方面:硬件电路的设计和软件程序的设计。硬件电路方面,采用单片机最小系统,便可实现课题要求。程序的设计方面,本人采用C语言编写程序。
1.3.1 数字频率计总体方案设计
本方案主要以单片机为核心,利用单片机的计数、定时功能来实现频率的计数并且利用单片机的动态扫描法把测出的数据送到数字显示电路显示。其原理框图如图2所示:
图1-2 单片机原理框图
本方案主要以单片机为核心,利用单片机的计数器和定时器的功能对被测信号进行计数。编写相应的程序可以使单片机自动调节测量的量程,并把测出的频率数据送到显示电路显示。
2 硬件系统的设计
2.1 硬件系统各模块功能简要介绍
本次课程设计用到的硬件电路有七个部分组成(见表2-1和图2)电路图见附录A。
表2-1 硬件电路说明
2.2 硬件电路主要部分的介绍
2.2.1数码管电路
图2-1 数码管电路
如图2所示数码管电路采用了两个4位一体共阳数码管,P0口接为段控口,电阻的作用是限流,P2口为位控口控制三极管通和断,当其为低电平时三极管接通,相应的数码管显示。
2.2.2 独立键盘电路
图2-2 独立键盘电路
如图2,独立键盘电路采用按键低电平有效。接P1口,P1口是一个带内部上拉电阻的8位双向I/O口,P1的输出缓冲级可驱动4个TTL逻辑门电路。对端口写“1”,通过内部的上拉电阻把端口拉到高电平,此时可作输入口,作输入口使用时,因为内部存在上拉电阻,某个引脚被外部信号拉低时会输出一个电流。
2.2.3复位电路
图2-3 复位电路
如图3,复位电路采用手动复位的方式,利用一个电容电压的不可突变性使得复位信号能够维持2个周期的高电平。
2.2.4 晶振电路
图2-4 晶振电路
如图2-4,当MCS-51内部的定时器/计数器被选定为定时器工作模式时,计数输入信号是内部时钟脉冲,每个机器周期产生一个脉冲使计数器增1,因此定时器/计数器的输入脉冲的周期与机器周期一样,输入脉冲的频率为时钟振荡的1/12。当采用12MHz频率的晶体时,计数速率为1MHz,输入脉冲的周期间隔为1us。当定时器/计数器用作计数器时,计数脉冲来自相应的外部输入引脚T0和T1。当输入信号产生由1至0的负跳变时,计数器的值增1,对外部输入引脚进行采样。
2.2.5 电源电路
图2-5 电源电路
如图2-5,采用2种供电方式,一种为USB供电,另一种是外接12V电源。
2.2.6下载口电路
如图2-6下载口电路
如图2-6所示,用PC的USB口供电,通过下载口把程序导入芯片。
2.2.7 AT89S52芯片
图2-7 AT89C52芯片
如图2-7,主控制器采用AT89C52,是ATMEL公司生产的一款性能稳定的8位单片机。AT89C52具有1个8KB的Flash程序存储器,1个256字节的RAM,4个8位的双向可位寻址I/O端口,看门狗定时器,2个数据指针,3个16位的定时/计数器及一个串行口和1个6向量二级中断结构,全双工串行口,片内晶体振荡器及时钟电路。
3 软件系统的设计
3.1 使用单片机资源的情况
内部RAM:20H单元存键码;40H--47H单元为显示频率、脉宽、占空比的缓冲区;30H--37H单元为显示学号信息的缓冲区;21H--24H、60H和66H为间接存数区;SP指向70H单元;使用了通用寄存器区的第0组和第2组通用寄存器组;使用了专用寄存器区中的A、IE、P0、P2、P3,其中P0口为段控口,P2口为位控口,P3.4口作为频率待测信号的输入口,P3.2为待测周期、脉宽、占空比信号的输入口。
3.2 软件系统各模块功能简要介绍
程序中主要的子程序为:测量频率程序,测量周期程序,测量脉宽程序,测量占空比程序,其次有把二进制转化为是十进制的进制转化程序和显示程序。测量频率程序,测量周期程序,测量脉宽程序,测量占空比子程序在下一节中会介绍,而其它子程序相对比较简单,本节主要介绍进制转化子程序。
进制转化子程序是利用对10循环求取余数的方法,把二进制数转化为十进制数。其核心是“移位相减”即把被除数向余数单元左移,然后把余数和除数想减,然后把被除数移位后腾出来的低位存放商,这样除法完成后,被除数已经全部转移到余数单元并逐次被减得到最后的余数,而被除数单元被商代替。
3.3 设计原理简介
本次设计的重点的合理利用定时/计数器。
测量频率:使用T0的计数功能,T1的计时功能,当它们同时工作时如计时时间为1S,则T0中计的数即为频率。
测量周期:此处定义周期为信号两个相邻上升沿的时间差,因此定时器从第一个上升沿开始计时到第二个上升沿结束计时即可测得周期。
因为测量脉宽和占空比的原理和测量周期的一致,此处便不再重复。
3.4 软件系统程序流程框图
4 设计误差分析及总结
4.1 误差分析
由于程序中所用的定时/计数器均在查询的方式下工作,加上实物晶振频率的误差,测量误差在所难免,而且由于受程序和单片机本身所限,对测量量也有一定的要求。
由于系统的晶振频率为12MHz所以单片机的机器周期T1为1uS,定时/计数器用的是查询方式,故Tmin=2T1,Tmax=1S,而受显示数码位控所限,fmax=65535Hz综上,对待测频率信号打要求是:
。对待测周期信号的要求是
。对待测脉宽信号的要求是:
。由于占空比程序使用的是定时/计数器的工作方式2,故不同的待测信号,要求不同,不符合测量要求的信号,将会出现较大的误差。
在测量范围内的误差,主要由晶振系统和定时器查询程序所占的时间产生,其中最大的是频率的误差,因此要靠调节延时程序的初值,减小误差。
4.2 频率计的使用说明
待测频率信号从P3.4口引入,待测周期信号和待测脉宽及占空比信号从P3.2口引入。测量不同的待测信号之前要按复位键S1手动复位。S2键测周期,S3键测频率,S4键测脉宽,S5键测占空比,按S6显示学号信息。
4.3 实物的运行分析
用keil4编程,把生成的.hex文件通过下载口导入单片机,测得数据如表4-1所示:
表4-1 实物的运行分析
由表4-1可知,实物测量误差较小,完成设计任务。
4.4 设计总结
基于单片机的频率计的设计涉及到计算机的硬软件知识,通过对系统的设计和调试,本次设计主要完成了以下工作:提出基于单片机的数字频率计设计的基本方案;完成了硬件电路设计和软件电路的设计;编译了频率计的控制程序、数码转化程序、数据显示程序等系统软件程序;对硬件电路进行了误差分析。
通过本次课程设计,使我更加熟悉了单片机最小系统,在设计的过程中,难点首先是程序的编写,这使我不得不把教材完整的看一遍。然后是求余程序的编写,移位相减解决了这个问题。再次是对频率连续可测量并使显示不间断,在延时程序中调用显示程序使这个问题得到了解决。其实设计程序中最主要的问题就是程序的循环了,这就要有清晰的思路,课程设计本身就是一个发现问题解决问题的平台,只是这一次我利用这个平台发现了一些显而易见的问题,本次设计暴露的我课本知识掌握不牢的缺点,今后应当努力学习基础知识。
致 谢
在这实习的两周中我了解到了很多书本上未曾有过的东西,在我多次陷入困境时找到了出路,从而使我们能轻松完成此次设计同时结合实践操作,可以体现现代化的设计方法和理念,使电子课程设计在培养我们能力方面得到比较大的提高。通过此次的课程设计我对数字电子课本上的基本知识有了更深刻的领悟和掌握,由于我设计的是数字频率计涉及的知识面很广所以我查阅了很多的书籍并上网查阅了相关的知识才完成了这份课程设计,在这个过程中遇到了种种的问题但是通过老师和同学的帮助以及查阅书籍最终解决了问题。谢学校和老师对我的培养,给我这个自己动手的机会和空间。经过一段时间,终于在完成了设计,对自己的能力有了很大的提升。在此我要感谢每一个帮助过我的人。在此我要感谢我的老师和同学,在我最困难的时候伸出援助之手,用他们的智慧帮我解决各个难题。
总而言之,感谢每一位关心过我的人,他们今天对我的付出,成为我将来工作的动力。
参考文献
1.马忠梅,单片机的C语言Windows环境编程宝典[M], 北京:北京航空航天大学出版社,2003.6
2.李光飞,单片机C程序设计指导[M],北京:北京航空航天大学出版社,2003.01
3.李光飞,单片机课程设计实例指导[M],北京:北京航空航天大学出版社,2004.9
4.现代电子系统设计浙江大学出版社何小艇主编
5.EDA技术使用教程科学出版社潘松编著
6.电子技术基础数字部分康华光高等教育出版社1998年
7.实用电子电路手册高等教育出版社1992年
8.新型集成器件实用电路杨帮文电子工业出版社2002年6)电子技术课程设计书艾永乐付子义焦作工学院电气系1998年
附录A
PCB图
元器件布局图