淘豆网
下载此文档放大查看缩小查看   1/22
0/100
您的浏览器不支持进度条
更多>>该用户其他文档
下载所得到的文件列表
频率计设计思路.doc
文档介绍:
总体:先用测频法测得一个数据,然后判断F<100HZ ? ,否就送数码管显示,是就转用测周法再次测量,然后显示。
测频法:Fx=N/T , T 为定时时间,N 为T时间内统计的脉冲个数。
编程:定一个时间,在设定时间内统计被测信号的脉冲个数,时间到,取出N->N/T。
测周法:Fx=1/Tx ,Tx=N*Tc , 12M晶振时,机器周期Tc=0.s 。
编程:在一个被测周期内,统计系统时钟的个数N,然后*0.s 就是Tx,再倒数就是被测频率值。外部中断INT0或INT1 设置成下降沿中断,两个下沿之间就是一个Tx ; 或者两个计数器计数模式溢出中断中断之间也是一个Tx 。一个Tx后取出计数器里面的值N , N*0.s->Tx 。
(思路仅供参考!)
定时器T0,T1工作模式:
定时模式时,计数器对系统时钟计数,每一个机器周期,计数器加1,直到记满溢出。
计数模式时,计数器对来自外部P3.4( T0 ) , P3.5( T1 )的脉冲计数,每来一个下降沿,计数器加1,直到记满溢出。(这些课本里都有的)
可以参考人家的思路:
/***************************************************************************
标题:51频率计
说明:通过对信号在1s内的脉冲计数值求得频率,并通过数码管显示结果
工作于:LY5A-L2A开发板
作者:YangTing
日期:2012年4月9日
备注:使用12M晶振,频率量程<10000Hz
******************************************************************************/
TIMER_H EQU 46H ;定时器高位字节单元
TIMER_L EQU 47H ;定时器低位字节单元
TIMCOUNT EQU 48H ;时间中断数
INT_H EQU 45H ;T1计数缓冲单元高地址
INT_L EQU 44H ;T1计数缓冲单元低地址
;脚功能定义
SMG_q EQU P1.0 ;定义数码管阳级控制脚,千位
SMG_b EQU P1.1 ;定义数码管阳级控制脚,百位
SMG_s EQU P1.2 ;定义数码管阳级控制脚,十位
SMG_g EQU P1.3 ;定义数码管阳级控制脚,个位
;数据存放
ORG 0100H
TABLE: DB 0C0h,0F9H,0A4H,0b0H,99H,92H,82H,0F8H,80H,90H
;共阳数码管 0-9

ORG 0000H
LJMP START

ORG 000BH
JMP T0_interrupt

ORG 0200H
;-------------------------------------------------------------
;主程序
;-------------------------------------------------------------
START: LCALL PRO_init
LCALL TIM_set

LOOP:
MOV R0,INT_H
MOV R1,INT_L
LCALL HEX2BCD
MOV A,R4
MOV B,#16
DIV AB ;除以16,目的是分离出高、低四位
MOV R1,A ;存放十位
MOV R0,B ;存放个位
MOV A,R2
MOV A,R3
MOV B,#16
DIV AB
MOV R3,A ;存放千位
MOV R2,B ;存放百位
LCALL DISPLAY
JMP LOOP

;---------------------------------------------------------
;初始化程序
;---------------------------------------------------------
PRO_init:
MOV A,#00H
MOV B,#00H
MOV P0,#0FFH
MOV P1,#0FFH
MOV P2,#0FFH
MOV INT_H,#00H
MOV INT_L,#00H
MOV TIMCOUNT,#00H
MOV TIMER_H,#3CH ;定时 50 MS
MOV TIMER_L,#0B0H
SETB P3.5 ;P3.5端口(T1)置输入状态
RET
;------------------------ 内容来自淘豆网www.taodocs.com转载请标明出处.