基于AT89S52单片机的频率报告.docx
《基于AT89S52单片机的频率报告.docx》由会员分享,可在线阅读,更多相关《基于AT89S52单片机的频率报告.docx(19页珍藏版)》请在冰豆网上搜索。
基于AT89S52单片机的频率报告
一、前言………………………………………………3
二、系统总体方案设计………………………………4
三、硬件电路具体设计………………………………6
四、仿真图…………………………………………10
五、心得体会………………………………………11
附件…………………………………………………12
一、前言
频率测量是电子学测量中最为基本的测量之一。
由于频率信号抗干扰性强,易于传输,因此可以获得较高的测量精度。
随着数字电子技术的发展,频率测量成为一项越来越普遍的工作,测频原理和测频方法的研究正受到越来越多的关注。
1.1频率计概述
数字频率计是计算机、通讯设备、音频视频等科研生产领域不可缺少的测量仪器。
它是一种用十进制数字显示被测信号频率的数字测量仪器。
它的基本功能是测量正弦信号、方波信号及其他各种单位时间内变化的物理量。
在进行模拟、数字电路的设计、安装、调试过程中,由于其使用十进制数显示,测量迅速,精确度高,显示直观,经常要用到频率计。
传统的频率计采用测频法测量频率,通常由组合电路和时序电路等大量的硬件电路组成,产品不但体积大,运行速度慢而且测量低频信号不准确。
本次采用单片机技术设计一种数字显示的频率计,测量准确度高,响应速度快,体积小等优点[1]。
1.2频率计发展与应用
在我国,单片机已不是一个陌生的名词,它的出现是近代计算机技术的里程碑事件。
单片机作为最为典型的嵌入式系统,它的成功应用推动了嵌入式系统的发展。
单片机已成为电子系统的中最普遍的应用。
单片机作为微型计算机的一个重要分支,其应用范围很广,发展也很快,它已成为在现代电子技术、计算机应用、网络、通信、自动控制与计量测试、数据采集与信号处理等技术中日益普及的一项新兴技术,应用范围十分广泛。
其中以AT89S52为内核的单片机系列目前在世界上生产量最大,派生产品最多,基本可以满足大多数用户的需要[2]。
1.3频率计设计内容
利用电源、单片机、分频电路及数码管显示等模块,设计一个简易的频率计能够粗略的测量出被测信号的频率。
参数要求如下:
1.测量范围1HZ—500KHZ;
2.用LCD1602显示测量值;
3.可以测量方波、三角波及正弦波等多种波形;
二、系统总体方案设计
2.1测频的原理
测频的原理归结成一句话,就是“在单位时间内对被测信号进行计数”。
被测信号,通过输入通道的放大器放大后,进入整形器加以整形变为矩形波,并送入主门的输入端[3]。
由晶体振荡器产生的基频,按十进制分频得出的分频脉冲,经过基选通门去触发主控电路,再通过主控电路以适当的编码逻辑便得到相应的控制指令,用以控制主门电路选通被测信号所产生的矩形波,至十进制计数电路进行直接计数和显示。
若在一定的时间间隔T内累计周期性的重复变化次数N,则频率的表达式为式:
(1)
图1说明了测频的原理及误差产生的原因。
时基信号
待测信号
丢失(少计一个脉冲)计到N个脉冲多余(比实际多出了0.x个脉冲)
图1测频原理
在图1中,假设时基信号为1KHZ,则用此法测得的待测信号为1KHZ×5=5KHZ。
但从图中可以看出,待测信号应该在5.5KHZ左右,误差约有0.5/5.5≈9.1%。
这个误差是比较大的,实际上,测量的脉冲个数的误差会在±1之间。
假设所测得的脉冲个数为N,则所测频率的误差最大为δ=1/(N-1)*100%。
显然,减小误差的方法,就是增大N。
本频率计要求测频误差在1‰以下,则N应大于1000。
通过计算,对1KHZ以下的信号用测频法,反应的时间长于或等于10S,。
由此可以得出一个初步结论:
测频法适合于测高频信号。
频率计数器严格地按照
公式进行测频[4]。
由于数字测量的离散性,被测频率在计数器中所记进的脉冲数可有正一个或负一个脉冲的
量化误差,在不计其他误差影响的情况下,测量精度将为:
应当指出,测量频率时所产生的误差是由N和T俩个参数所决定的,一方面是单位时间内计数脉冲个数越多时,精度越高,另一方面T越稳定时,精度越高。
为了增加单位时间内计数脉冲的个数,一方面可在输入端将被测信号倍频,另一方面可增加T来满足,为了增加T的稳定度,只需提高晶体振荡器的稳定度和分频电路的可靠性就能达到。
上述表明,在频率测量时,被测信号频率越高,测量精度越高。
2.2具体模块
根据上述系统分析,频率计系统设计共包括五大模块:
单片机控制模块、电源模块、放大整形模块、分频模块及显示模块。
各模块作用如下:
1、单片机控制模块:
以AT89S52单片机为控制核心,来完成它待测信号的计数,译码,和显示以及对分频比的控制。
利用其内部的定时/计数器完成待测信号周期/频率的测量。
单片机AT89S52内部具有2个16位定时/计数器,定时/计数器的工作可以由编程来实现定时、计数和产生计数溢出时中断要求的功能。
(因为AT89C51所需外围元件少,扩展性强,测试准确度高。
)
2、电源模块:
为整个系统提供合适又稳定的电源,主要为单片机、信号调理电路以及分频电路提供电源,电压要求稳定、噪声小及性价高的电源。
3、显示模块:
显示电路采用液晶LCD1602显示,以便于观测。
综合以上频率计系统设计有单片机控制模块、电源模块、放大整形模块及显示模块等组成,频率计的总体设计框图如图2所示。
图2频率计总体设计框图
三、硬件电路具体设计
根据系统设计的要求,频率计实际需要设计的硬件系统主要包括以下几个部分:
AT89S52单片机最小系统模块、电源模块、放大整形模块及显示模块,下面将分别给予介绍。
3.1AT89S52主控制器模块
3.1.1AT89S52的介绍
8位单片机是MSC-51系列产品升级版[5],有世界著名半导体公司ATMEL在购买MSC-51设计结构后,利用自身优势技术——(掉电不丢数据)闪存生产技术对旧技术进行改进和扩展,同时使用新的半导体生产工艺,最终得到成型产品。
与此同时,世界上其他的著名公司也通过基本的51内核,结合公司自身技术进行改进生产,推广一批如51F020等高性能单片机。
AT89S52片内集成256字节程序运行空间、8K字节Flash存储空间,支持最大64K外部存储扩展。
根据不同的运行速度和功耗的要求,时钟频率可以设置在0-33M之间。
片内资源有4组I/O控制端口、3个定时器、8个中断、软件设置低能耗模式、看门狗和断电保护。
可以在4V到5.5V宽电压范围内正常工作。
不断发展的半导体工艺也让该单片机的功耗不断降低。
同时,该单片机支持计算机并口下载,简单的数字芯片就可以制成下载线,仅仅几块钱的价格让该型号单片机畅销10年不衰。
根据不同场合的要求,这款单片机提供了多种封装,本次设计根据最小系统有时需要更换单片机的具体情况,使用双列直插DIP-40的封装。
AT89S52引脚如下图3所示。
图3AT89S52引脚图
3.1.2复位电路及时钟电路
复位电路和时钟电路是维持单片机最小系统运行的基本模块。
复位电路通常分为两种:
上电复位(图4)和手动复位(图5)。
图4上电复位图5手动复位
有时系统在运行过程中出现程序跑飞的情况,在程序开发过程中,经常需要手动复位。
所以本次设计选用手动复位。
高频率的时钟有利于程序更快的运行,也有可以实现更高的信号采样率,从而实现更多的功能[6]。
但是告诉对系统要求较高,而且功耗大,运行环境苛刻。
考虑到单片机本身用在控制,并非高速信号采样处理,所以选取合适的频率即可。
合适频率的晶振对于选频信号强度准确度都有好处,本次设计选取12.000M无源晶振接入XTAL1和XTAL2引脚。
并联2个30pF陶瓷电容帮助起振。
AT89S52单片机最小系统如图6所示。
图6单片机最小系统原理图
3.2放大整形模块
由于输入的信号可以是正弦波,三角波。
而后面的闸门或计数电路要求被测信号为矩形波,所以需要设计一个整形电路则在测量的时候,首先通过整形电路将正弦波或者三角波转化成矩形波。
在整形之前由于不清楚被测信号的强弱的情况。
所以在通过整形之前通过放大衰减处理。
当输入信号电压幅度较大时,通过输入衰减电路将电压幅度降低。
当输入信号电压幅度较小时,前级输入衰减为零时若不能驱动后面的整形电路,则调节输入放大的增益,使被测信号得以放大。
根据上述分析,放大电路放大整形电路采用74HC132施密特触发与非门,它对放大器的输出波形信号进行整形,使之成为矩形脉冲。
74HC132引脚如图7所示。
图774HC132引脚图
3.3显示模块
显示模块由频率值显示电路组成,我们通过用LCD1602把频率值实时的显示在显示屏上。
1602液晶也叫1602字符型液晶它是一种专门用来显示字母、数字、符号等的点阵型液晶模块它有若干个5X7或者5X11等点阵字符位组成,每个点阵字符位都可以显示一个字符。
图81602液晶显示
LCD1602A液晶屏引脚功能说明
引脚
符号
功能说明
1
VSS
一般接地
2
VDD
接电源(+5V)
3
V0
液晶显示器对比度调整端,接正电源时对比度最弱,接地电源时对比度最高(对比度过高时会产生“鬼影”,使用时可以通过一个10K的电位器调整对比度)。
4
RS
RS为寄存器选择,高电平1时选择数据寄存器、低电平0时选择指令寄存器。
5
R/W
R/W为读写信号线,高电平
(1)时进行读操作,低电平(0)时进行写操作。
6
E
E(或EN)端为使能(enable)端,下降沿使能。
7
DB0
低4位三态、双向数据总线0位(最低位)
8
DB1
低4位三态、双向数据总线1位
9
DB2
低4位三态、双向数据总线2位
10
DB3
低4位三态、双向数据总线3位
11
DB4
高4位三态、双向数据总线4位
12
DB5
高4位三态、双向数据总线5位
13
DB6
高4位三态、双向数据总线6位
14
DB7
高4位三态、双向数据总线7位(最高位)(也是busyflag)
15
BLA
背光电源正极
16
BLK
背光电源负极
四、仿真图
五、心得体会
通过这次的频率计设计,我们更深地认识到一个电子产品从设计到投入使用来之不易,也从这次的设计中学到了很多,让我们明白了理论与实际的差距。
首先,了解了单片机的基本知识和在控制领域的作用和地位。
其次掌握了汇编语言的编写程序,学会了使用PROTUTES和KEIL的仿真来实现,同时掌握了如何收集、查阅、应用文献资料,如何根据实际需要有选择的阅读书籍和正确确定系统所要使用的元器件的类型。
再次,在精神方面锻炼了思想、磨练了意志。
面对存在的困难首先分析问题根据目的要求确定可实现的部分,定出那不准的方面找同学和老师讨论研究,再完善、再修改、再发现问题、再解决培养了自己的耐心、恒心及遇事不乱的精神。
总之,我明白了理论和实践之间存在的距离只有靠不断的思考不断的动手才能将所学的知识真正运用到实践上来。
在毕业设计中我的很多方面的能力都得到了提高,尤其在单片机软件编程方面让我感触颇深。
我个人认为软件设计是个即灵活又细腻的工作,它要求耐心和细心去不断完善,同时还需要有良好的逻辑思维能力。
通过这次毕业设计,我分析问题和解决问题的能力有所提高,也巩固了所学的知识,加深了对理论知识的理解,更重要的是锻炼自己的独立性,为我今后的工作和学习打下坚实的基础。
附件:
单片机程序
RSEQUP3.0
RWEQUP3.1
EEQUP3.2
COMEQU30H
DATEQU31H
RESULT1EQU32H
RESULT2EQU33H
RESULT3EQU34H
DISP_COUNTEQU35H
COUNTEQU20
STORE_COUNTEQU36H
ORG0000H
LJMPMAIN
ORG000BH
LJMPTINT0
ORG001BH
LJMPTINT1
MAIN:
MOVSP,#60H
MOVSTORE_COUNT,#COUNT
MOVRESULT1,#00H
MOVRESULT2,#00H
MOVRESULT3,#00H
MOVTH1,#3CH
MOVTL1,#0B0H
MOVTMOD,#15H
MOVIE,#8AH
SETBTR0
SETBTR1
LCALLLCD_INIT
WAIT:
JMPWAIT
LCD_INIT:
MOVCOM,#38H
CALLWR_COM
MOVCOM,#38H
CALLWR_COM
MOVCOM,#01H
CALLWR_COM
MOVCOM,#06H
CALLWR_COM
MOVCOM,#0CH
CALLWR_COM
RET
WR_COM:
CLRRS
CLRRW
LCALLDELAY
MOVP0,COM
CLRE
SETBE
CLRE
RET
WR_DAT:
MOVA,DAT
ADDA,#30H
MOVDAT,A
WR_DAT1:
CLRWR
SETBRS
LCALLDELAY
MOVP0,DAT
CLRE
SETBE
CLRE
RET
TINT0:
INCRESULT3
RETI
TINT1:
CLRTR0
DJNZSTORE_COUNT,T1_1
MOVRESULT2,TH0
MOVRESULT1,TL0
LCALLDISPLAY
MOVRESULT3,#00H
MOVSTORE_COUNT,#COUNT
MOVTH0,#00H
MOVTL0,#00H
T1_1:
MOVTH1,#3CH
MOVTL1,#0B0H
SETBTR1
SETBTR0
RETI
DELAY:
MOVR7,#03H
DL1:
MOVR6,#88H
DL0:
MOVR5,#04H
DJNZR5,$
DJNZR6,DL0
DJNZR7,DL1
RET
DISPLAY:
MOVR0,#06H
MOVR1,#40H
DISPLAY1:
MOV@R1,#00H
INCR1
DJNZR0,DISPLAY1
MOVA,RESULT3
MOVB,#0AH
DIVAB
MOV40H,A
MOVA,B
SWAPA
MOVB,A
MOVA,RESULT2
SWAPA
ANLA,#0FH
ORLA,B
MOVB,#0AH
DIVAB
MOV41H,A
MOVA,B
SWAPA
MOVB,A
MOVA,RESULT2
ANLA,#0FH
ORLA,B
MOVB,#0AH
DIVAB
MOV42H,A
MOVA,B
SWAPA
MOVB,A
MOVA,RESULT1
SWAPA
ANLA,#0FH
ORLA,B
MOVB,#0AH
DIVAB
MOV43H,A
MOVA,B
SWAPA
MOVB,A
MOVA,RESULT1
ANLA,#0FH
ORLA,B
MOVB,#0AH
DIVAB
MOV44H,A
MOV45H,B;个位
MOVA,40H
SWAPA
ADDA,41H
MOVB,#0AH
DIVAB
MOV40H,A
MOVA,B
SWAPA
ADDA,42H
MOVB,#0AH
DIVAB
MOV41H,A
MOVA,B
SWAPA
ADDA,43H
MOVB,#0AH
DIVAB
MOV42H,A
MOVA,B
SWAPA
ADDA,44H
MOVB,#0AH
DIVAB
MOV43H,A
MOV44H,B;十位
MOVA,40H
SWAPA
ADDA,41H
MOVB,#0AH
DIVAB
MOV40H,A
MOVA,B
SWAPA
ADDA,42H
MOVB,#0AH
DIVAB
MOV41H,A
MOVA,B
SWAPA
ADDA,43H
MOVB,#0AH
DIVAB
MOV42H,A
MOV43H,B;百位
MOVA,40H
SWAPA
ADDA,41H
MOVB,#0AH
DIVAB
MOV40H,A
MOVA,B
SWAPA
ADDA,42H
MOVB,#0AH
DIVAB
MOV41H,A
MOV42H,B;千位
MOVA,40H
SWAPA
ADDA,41H
MOVB,#0AH
DIVAB
MOV41H,B;万位
MOV40H,A;十万位
MOVR0,#40H
MOVDISP_COUNT,#00H
CHECK_ZERO:
MOVA,@R0
JZCHECK_ZERO1
JMPCHECK_ZERO2
CHECK_ZERO1:
INCR0
INCDISP_COUNT
CJNER0,#46H,CHECK_ZERO
CHECK_ZERO2:
MOVA,#40H
ADDA,DISP_COUNT
MOVR0,A
MOVCOM,#84H
LCALLWR_COM
WRITE:
MOVDAT,@R0
LCALLWR_DAT
INCR0
CJNER0,#46H,WRITE
;MOVCOM,#8AH
;LCALLWR_COM
MOVDPTR,#TABLE
CLRA
MOVCA,@A+DPTR
MOVDAT,A
LCALLWR_DAT1
INCDPTR
CLRA
MOVCA,@A+DPTR
MOVDAT,A
LCALLWR_DAT1
RET
TABLE:
DB"Hz"
END