基于单片机的频率计设计Word下载.docx
《基于单片机的频率计设计Word下载.docx》由会员分享,可在线阅读,更多相关《基于单片机的频率计设计Word下载.docx(34页珍藏版)》请在冰豆网上搜索。
为了实现智能化的计数测频,实现一个宽领域、高精度的频率计,一种有效的方法是将单片机用于频率计的设计当中。
本课题介绍以51单片机作为核心器件,另外还包括信号输入、信号放大、信号选择、时钟提供、数据显示等功能模块的数字频率计的设计方法。
频率计的硬件电路是用Protel绘图软件绘制而成,软件部分的单片机控制程序,是用汇编语言编写而成。
由于本设计采用了模块化的设计方法,提高了测量频率的范围。
关键词:
测量频率计单片机汇编
DesignofadigitalfrequencymeterbasedonSCM
Abstract:
Amongelectronictechnology,frequencyisoneofthemostbasicparameters,andresultofmeasuringhaveaverycloserelationtoalotofelectricparameters,sothemeasurementoffrequencyseemsevenmoreimportant.Inordertorealizethecountingofintellectualityexaminesfrequently,realizeawide-range,high-accuracycymometer,aneffectivemethodistouseone-chipcomputerforthedesignofthecymometer.Thissubjectrecommendsregarding51Single-Chipcomputerasthekeydevice,includesignalinput,signalamplify,signalchoose,clockoffer,datapersonwhorevealfunctiondigitaldesignmethodofcymometerofmodulestillinaddition.ThehardwarecircuitofthecymometerisdrawingwithProtelmappingsoftware,theone-chipcomputercontrolprocedureofthesoftwarepart,wrotetheassemblerlanguage.Becauseoriginallydesignthedesignmethodtoadoptmodule,improvetherangeofmeasuringfrequency.
Keywords:
Measurement,Cymometer,Single-Chipcomputer,Compilation
二、设计要求
1、设计任务:
用单片机(STC89C52)实现频率计
2、设计要求
1、用LED数码管或LCD显示频率;
2、测量频率范围:
0.1Hz—100KHz;
3、频率测量精度:
优于10-4;
4、频率显示位数:
5位;
5、能根据输入频率自动换挡。
3、设计报告要求
1、说明设计作品的功能、特点、应用范围.
2、方案对比,确定方案。
3、电路设计、电路工作原理、技术指标测试.
4、编程方法、程序框图及关键程序清单。
5、课程设计总结。
三、硬件电路设计
3.1方案的提出与论证
方案一:
系统测频、测周期部分采用中小规模数字集成电路,用机械功能转换开关换挡,完成测频率、测量周期及测脉宽等功能。
该方案的特点是中小规模集成电路应用技术成熟,概念清楚,能可靠的完成频率计的基本功能,但由于系统功能要求较高,所以电路过于复杂。
而且多量程转换开关使用不便。
方案二:
采用测频集成芯片,如5G7226B是采用CMOS大规模集成电路工艺制造的单片电子计数器芯片。
它只需外接几个元件就可以构成一台体积小、成本低的多功能通用计数器。
其直接测量频率范围为0~10MHz,测周期范围为0.5us~10s;
有4个内部闸门时间(0.01s、0.1s、1s、10s)可供选择;
位和段的信号线均能直接驱动LED数码管,并且有益处指示;
仅要求单一的5V直流电源供电,使用非常方便。
方案三:
系统采用STC89C52单片机作为控制核心,门控信号由单片机产生。
由于使用了单片机,使得整个系统具有极为灵活的可编程性,能方便地对系统进行功能扩展与改进。
以上方案均需使用小信号放大、整形通道电路来提高系统的测量精度和灵敏度。
方案比较及其选用依据:
虽然方案一要比方案二简洁、新颖,可以满足系统设计的指标要求,但是不符合题意。
采用带有运算器的单片机使本系统可以通过对软件改进而扩展功能,提高测量精度,因此我们采用方案三作为具体实施方案。
3.2系统结构框图
系统软件的设计主要是和硬件电路相结合,正确地实现等精度测量。
整个系统软件的设计采用了自顶向下的模块化的结构方式,将各个功能分成独立模块,由系统的程序统一管理执行。
它主要完成各种功能,如测量、数据运算、显示等。
如图4所示为频率测量主程序流程图,在计数前对计数器清零。
然后,发出命令打开闸门进入闸门时间,计数器在闸门时间内计数。
延时子程序结束后,发出命令关闭闸门使计数器停止计数;
单片机再依照程序读取计数器的值,并与单片机内部计数器所计的值合并在一起。
由公式
(1),即被测频率fx=f0×
Nx/N0来进行运算,由于精度要求,Nx和N0都由24位二进制数来计数。
因此,要在单片机内部进行多字节无符号二进制数的乘法和除法运算,并将运算结果转换成BCD码,显示运算结果。
单片机流程图:
(具体程序见附录)
3.3工作原理
在使用计数方法实现频率测量时,这时外部的待测信号为定时/计数器的计数源,利用软件延时程序实现计数闸门。
频率计的工作过程为:
首先定时/计数器的计数寄存器清0,运行控制位TR置1,启动定时/计数器;
然后运行软件延时程序,同时定时/计数器对外部的待测信号进行计数,延时结束时TR清0,停止计数;
最后从计数寄存器读出测量数据,在完成数据处理后,由显示电路显示测量结果。
在使用定时方法实现频率测量时,这时外部的待测信号通过频率计的予处理电路变成宽度等于待测信号周期的方波,该方波同样加至定时/计数器的输入脚。
这时频率计的工作过程为:
首先定时/计数器的计数寄存器清0,然后检测方波高电平是否加至定时/计数器的输入脚;
当判定高电平加至定时/计数器的输入脚,运行控制位TR置1,启动定时/计数器对单片机的机器周期的计数,同时检测方波高电平是否结束;
当判定高电平结束时TR清0,停止计数,然后从计数寄存器读出测量数据,在完成数据处理后,由显示电路显示测量结果。
测量结果的显示格式采用科学计数法,即有效数字乘以10为底的幂。
这里设计的频率计用5位数码管显示测量结果:
前3位为测量结果的有效数字;
第4位为指数的符号;
第5位为指数的值。
采用这种显示格式既保证了测量结果的显示精度,又保证了测量结果的显示范围。
量程自动转换的过程由频率计测量量程的高端开始。
由于只显示3位有效数字,在测量量程的高端计数闸门不需要太宽,例如在规定频率范围,计数闸门宽度为10mS即可。
频率计每个工作循环开始时使用计数方法实现频率测量,并使计数闸门宽度为最窄,完成测量后判断测量结果是否具有3位有效数字,如果成立,将结果送去显示,本工作循环结束;
否则将计数闸门宽度扩大10倍,继续进行测量判断,直到计数闸门宽度达到1s,这时对应的频率测量范围为100Hz-999Hz。
如果测量结果仍不具有3位有效数字,频率计则使用定时方法实现频率测量。
定时方法测量的是待测信号的周期,这种方法只设一种量程,测量结果通过浮点数运算模块将信号周期转换成对应的频率值,再将结果送去显示。
这样无论采用何种方式,只要完成一次测量即可,频率计自动开始下一个测量循环,因此该频率计具有连续测量的功能,同时实现量程的自动转换。
3.4有关芯片介绍
3.41STC89C52
STC89C52是美国ATMEL公司生产的,兼容51系列(硬件引脚兼容,软件也兼容),所以使用方面与51系列基本相同,支持在线下载。
STC89C52是用串口下载,只一条下载线就可以。
STC89C52它有如下特点:
加密性强、低功耗、超低价、高速、高可靠、强抗静电、强抗干扰等。
有关STC89C52的引脚说明如下:
STC89C52芯片共40引脚:
1-8脚:
通用I/O接口p1.0-p1.7
9脚:
rst复位键
10-11脚:
RXD串口输入TXD串口输出
12-19脚:
I/Op3接口(12,13脚:
INT0中断0,INT1中断1。
14,15脚:
计数脉冲T0T1。
16,17脚:
WR写控制RD读控制输出端)
18-19脚:
晶振谐振器20地线
21-28脚:
p2接口高8位地址总线
29脚:
psen片外rom选通端。
单片机对片外rom操作时29脚(psen)输出低电平
30脚:
ALE/PROG地址锁存器
31脚:
EArom取指令控制器高电平片内取低电平片外取
32-39脚:
p0.0-p0.7(注意此接口的顺序与其他I/O接口不同与引脚号的排列顺序相反)
40脚:
电源+5V
3.42有关MAX232的介绍如下:
MAX232特征:
1、优于双极
2、经营从单一的5伏供电(5V和12v-max231/max239)
3、低功耗接收模式,在关机(max223/max242)
4、满足所有eia/tia-232e和v.28规格
5、多个驱动器和接收器
6、三态驱动器和接收器输出开放式在线检测(max243)
MAX引脚图以及电路图:
STC单片机下载器连接图:
3.43LCD液晶屏
工业字符型液晶,能够同时显示16x02即32个字符。
(16列2行)
1602液晶模块内部的字符发生存储器(CGROM)已经存储了160个不同的点阵字符图形,这些字符有:
阿拉伯数字、英文字母的大小写、常用的符号、和日文假名等,每一个字符都有一个固定的代码,比如大写的英文字母“A”的代码是01000001B(41H),显示时模块把地址41H中的点阵字符图形显示出来,我们就能看到字母“A”。
因为1602识别的是ASCII码,试验可以用ASCII码直接赋值,在单片机编程中还可以用字符型常量或变量赋值,如'
A’。
以下是1602的16进制ASCII码表:
读的时候,先读上面那列,再读左边那行,如:
感叹号!
的ASCII为0x21,字母B的ASCII为0x42(前面加0x表示十六进制)。
有关液晶屏的引脚说明如下:
1602字符型LCD通常有14条引脚线或16条引脚线的LCD,多出来的2条线是背光电源线
VCC(15脚)和地线GND(16脚),其控制原理与14脚的LCD完全一样,其中:
引脚
符号
功能说明
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位
DB3
底4位三态、双向数据总线3位
11
DB4
高4位三态、双向数据总线4位
12
DB5
高4位三态、双向数据总线5位
13
DB6
高4位三态、双向数据总线6位
14
DB7
高4位三态、双向数据总线7位(最高位)(也是busyflag)
15
BLA
背光电源正极
16
BLK
背光电源负极
寄存器选择控制表
操作说明
写入指令寄存器(清除屏等)
读busyflag(DB7),以及读取位址计数器(DB0~DB6)值
写入数据寄存器(显示各字型等)
从数据寄存器读取数据
注:
关于E=H脉冲——开始时初始化E为0,然后置E为1,再清0.
busyflag(DB7):
在此位为被清除为0时,LCD将无法再处理其他的指令要求。
四、电路原理图
五、总结
1、元器件的挑选方面:
优先选择项目要求的元件类型,在选择同一种元件时,考虑元件的价格性能比,还考虑了功耗小的元件。
2、电路的设计方面:
首先保证能够实现所要求的功能,尽可能少的使用大功耗,价格低的元器件。
设计实验中,首先要弄清楚该电路需要几部分,即做出原理框图,确保电路设计的正确性。
3、电路的安装与元器件的布线、焊接方面:
这是电路设计最为关键的一部份。
在本次设计当中,元件在电路板上的布局不太理想,需要注意布线,焊接之前首先应该规划好元器件的布局,有效的使用电路板,做到元件排列疏密一致、整齐美观、便于检查。
再有需要不断的积累布线的一些技巧。
4、电路调试方面:
在调试过程中,应先测试各单元电路,保证各部份电路能够正常工作。
采用逐步缩小范围的方式,慢慢确定出错位置,并解决问题。
5、心得:
本次课程设计是以单片机89C52芯片为核心的部件,实现了频率计的功能。
这一次在软件上是花费时间比较多的,通过上网找资料,尽可能的去了解频率计这方面的知识。
通过这一次的课程设计,使得我又得到了一次用专业知识、专业技能分析和解决问题的机会。
让我在单片机的基本原理、单片机应用系统开发过程,以及常用编程设计思路技巧的掌握方面进了一大步。
在此,我要感谢杨老师、林老师的精心指导和严格要求,因为他们的精心指导使得我在这一次的课程设计当中,获得了丰富的理论知识,极大的提高了实践能力。
参考文献
1、 梁文海单片机AT89C2051构成的智能型频率计
现代电子技术2002年
2、 曹巧媛单片机原理及应用[M]
北京:
电子工业出版社1997年
3、程远楚单片机智能频率信号装置[J]
自动化与仪器仪表2001年
4、吴慎山压电超声直线马达驱动电路的研究
河南师范大学学报(自然科学版)1994年
5、谢自美电子线路设计
华中科技大学出版社
元件列表
名称
规格
数量
LCD
1602
单片机
STC89C52
芯片
MAX232
24M晶振
10K排阻
电容、电阻
不同型号
若干
万能板
导线
排针、排孔
程序清单
RSBITP2.0
RWBITP2.1
ENBITP2.2
COMEQU30H
DATEQU31H
FREQ1EQU32H
FREQ2EQU33H
FREQ3EQU34H
FREQ4EQU35H
FREQ5EQU36H
FREQ6EQU37H
JISHUEQU38H
JISHU1EQU39H
JISHU2EQU3AH
JISHU3EQU3BH
TIMEBEQU3CH
TIMEHEQU3DH
TIMEMEQU3EH
TIMELEQU3FH
PANDUANEQU40H
BEICHUBEQU41H
BEICHUHEQU42H
BEICHUMEQU43H
BEICHULEQU44H
ZANCUNBEQU45H
ZANCUNHEQU46H
ZANCUNMEQU47H
ZANCUNLEQU48H
RESULT1EQU49H
RESULT2EQU4AH
RESULT3EQU4BH
RESULT4EQU4CH
RESULT5EQU4DH
RESULT6EQU4EH
XIAOSHUEQU4FH
CUNCHUEQU50H
FLAG1BIT20H
FLAG2BIT21H
FLAG3BIT22H
ORG0000H
LJMPSTART
ORG0003H
LJMPOUTINT0
ORG000BH
LJMPTIMINT0
ORG001BH
LJMPTIMINT1
ORG0100H
START:
MOVSP,#60H
LCALLLCDINIT
LCALLDISPLAI
LCALLVARINIT
SETBFLAG3
KEYLOOP:
JNBFLAG3,KEYDOWN
LCALLFIJUDGE
KEYDOWN:
LCALLDISPLAY
JNBFLAG1,GOBACK
LCALLCALCULA
GOBACK:
SJMPKEYLOOP
LCDINIT:
MOVCOM,#38H
LCALLSENDCOM
LCALLDELAY5
MOVCOM,#08H
MOVCOM,#01H
MOVCOM,#06H
MOVCOM,#0CH
RET
VARINIT:
MOVXIAOSHU,#1
MOVZANCUNB,#0
MOVZANCUNH,#10H
MOVZANCUNM,#84H
MOVZANCUNL,#80H
MOVRESULT1,#0
MOVRESULT2,#0
MOVRESULT3,#0
MOVRESULT4,#0
MOVRESULT5,#0
MOVRESULT6,#0
MOVR0,#30H
MOVR1,#15
CLEAR:
MOV@R0,#0
INCR0
DJNZR1,CLEAR
FIJUDGE:
CLRFLAG1
CLRFLAG3
MOVZANCUNH,#1EH
MOVR1,#16
CLEAR1:
DJNZR1,CLEAR1
MOVTH0,#3CH
MOVTL0,#0B0H
MOVTH1,#0H
MOVTL1,#0H
MOVTMOD,#11H
MOVTCON,#11H
MOVIE,#83H
MOVIP,#02H
DISPLAI:
MOVDPTR,#TABLE
MOVR0,#16
MOVR1,#0
MOVR2,#80H
BACKDIS:
MOVCOM,R2
INCR2
MOVA,R1
MOVCA,@A+DPTR
MOVDAT,A
LCALLSENDDAT
INCR1
DJNZR0,BACKDIS
MOVDPTR,#TABLE1
MOVR2,#0C0H
BACKDI2:
DJNZR0,BACKDI2
DISPLAY:
MOVA,XIAOSHU
ADDA,#0C9H
MOVCOM,A
MOVDAT,#2EH
MOVR0,#49H
MOVR1,#6
SHUCHUD:
MOVA,#49H
ADDA,XIAOSHU
MOVB,A
MOVA,R0
SUBBA,B
JNCGODISPL
MOVA,#80H
ADDA,R0
SJMPGODISPP
GODISPL:
MOVA,#81H
GODISPP:
MOVCOM,A
MOVA,#30H
ADDA,@R0
DJNZR1,SHUCHUD
CALCULA:
MOVRESULT1,#0
MOVRESULT