简易6位数显频率计报告
- 1、下载文档前请自行甄别文档内容的完整性,平台不提供额外的编辑、内容补充、找答案等附加服务。
- 2、"仅部分预览"的文档,不可在线预览部分如存在完整性等问题,可反馈申请退款(可完整预览的文档不适用该条件!)。
- 3、如文档侵犯您的权益,请联系客服反馈,我们会尽快为您处理(人工客服工作时间:9:00-18:30)。
简易6位数显频率计
一、任务分析
(1)用51单片机的定时计数器功能设计一个带6位数显的简易频率计。
(2)参数要求:
a、输入信号为矩形波,幅度>4.5V,信号频率范围为1-250kHz,误差为±1Hz;
b、测得的频率结果用6位数码管显示出来,显示方式自定;
c、51单片机晶振频率为12MHz。
二、实现方案
采用12MHz的晶体震荡器的情况下,一秒的定时已经超过了定时器可提供的最大定时值。为了实现一秒的定时,采用定时和计数相结合的方法实现。选用定时计数器TO做定时器,工作于方式1产生50ms的定时器,再用软件计数的方式对他计数20次,就可得到一秒的定时。另外,此处对外部事件计数脉冲的占空比(即脉冲的持续宽度)无特殊要求,但必须保证所给出的高电平在其改变之前至少被采样1次,即至少保持1个完整的机器周期。由此可见,从T1口输入脉冲信号,T1可以实现对脉冲个数的计数。采用中断来实现每一秒钟算一次频率,时时显示频率。采用移位除法把十六位的二进转换成十进制的数。
三、程序流程图
四、硬件电路图
五、程序列表
DATE0 EQU 22H
DATE1 EQU 23H
DATE2 EQU 24H
DATE3 EQU 25H
DATE4 EQU 26H
LL6 EQU 27H
LL5 EQU 28H
LL4 EQU 29H
LL3 EQU 30H
LL2 EQU 31H
LL1 EQU 32H
M EQU 33H
N EQU 34H
V ALUEH EQU 35H ;暂存TH1的值V ALUEL EQU 36H ;暂存TL1的值AS EQU 37H
ORG 0000H
LJMP START
ORG 000BH
LJMP INT00
ORG 001BH
LJMP INT11
START: MOV SP,#60H
MOV P0,#0C0H
MOV P2,#00H
MOV 22H,#00H
MOV 23H,#00H
MOV 24H,#00H
MOV 25H,#00H
MOV 26H,#00H
MOV LL6,#0
MOV LL5,#0
MOV LL4,#0
MOV LL3,#0
MOV LL2,#0
MOV LL1,#0
MOV N,#0
MOV M,#1
MOV TMOD,#15H ;T1定时
5ms,T0计数MOV TH1,#0ECH
MOV TL1,#81H
MOV TH0,#0
MOV TL0,#0
MOV IE,#8AH
SETB TR0
SETB TR1
MOV DPTR,#TABLE DETACH: MOV A,LL1 ;显示计数值MOVC A,@A+DPTR
MOV P0,#0FFH
MOV P2,#80H
MOV P0,A
MOV A,LL2
MOVC A,@A+DPTR
MOV P0,#0FFH
MOV P2,#40H
MOV P0,A
MOV A,LL3
MOVC A,@A+DPTR
MOV P0,#0FFH
MOV P2,#20H
MOV P0,A
MOV A,LL4
MOVC A,@A+DPTR
MOV P0,#0FFH
MOV P2,#10H
MOV P0,A
MOV A,LL5
MOVC A,@A+DPTR
MOV P0,#0FFH
MOV P2,#08H
MOV P0,A
MOV A,LL6
MOVC A,@A+DPTR
MOV P0,#0FFH
MOV P2,#04H
MOV P0,A
LJMP DETACH
INT11: MOV AS,A
MOV TH1,#0ECH
MOV TL1,#81H
INC N
MOV A,N
CJNE A,#200,OVER;是否计满1秒
MOV V ALUEL,TL0 ;存放计数值
MOV V ALUEH,TH0
LCALL HTOD
MOV LL1,DATE4
MOV LL2,DATE3
MOV LL3,DATE2
MOV LL4,DATE1
MOV LL5,DATE0
MOV LL6,#0
LCALL CHANGE
MOV N,#0
MOV M,#1
CLR TR0 ;关闭计数器
MOV TH0,#0
MOV TL0,#0
SETB TR0
CLR TR1 ;关闭定时器
MOV TH1,#0ECH
MOV TL1,#81H
SETB TR1
MOV A,AS
OVER: RETI
INT00: INC M
MOV TH0,#0
MOV TL0,#0
RETI
CHANGE: DJNZ M,NEXT
RET
NEXT: MOV V ALUEH,#0FFH
MOV V ALUEL,#0FFH
LCALL HTOD
MOV B,#10
MOV A,LL1
ADD A,DATE4
DIV AB
MOV LL1,B
MOV B,#10
ADD A,LL2
ADD A,DATE3
DIV AB
MOV LL2,B
MOV B,#10
ADD A,LL3
ADD A,DATE2
DIV AB
MOV LL3,B
MOV B,#10
ADD A,LL4
ADD A,DATE1
DIV AB
MOV LL4,B
MOV B,#10
ADD A,LL5
ADD A,DATE0
DIV AB
MOV LL5,B