毕业设计66xx大学论文:简易频率计的设计
目 录
1、摘 要…………………………………………………………….(2)
2、设计要求与任务………………………………………………......(2)
3、设计原理……………………………………………………..........(2)
4、设计方案………………………………………...………………..(2)
5、电路总的原理图………………………………….………............(4)
6、器件介绍……………………………………..…………………...(5)
7、软件程序……………………………………………………..…...(6)
8、设计总结………………………………………….……….……...(9)
简易频率计的设计
摘要:以单片机89C2051为核心 ,实现单位时间(1s)内周期信号的变化次数。若在一定时间间隔T内测得周期信号的重复变化次数为N,则其频率为 f=N/T。
一. 设计要求
1.测量频率范围1Hz~1MHz,量程分为3档,即×1,×10, ×100。
2.测量精度分别为:1Hz,10Hz,100Hz。
3.被测信号可以是正弦波、三角波和方波。
4.测量信号幅度0.1 ~10V.
5.显示方式为4位十进制数显示 。
二. 设计原理
频率的定义是单位时间(1s)内周期信号的变化次数。若在一定时间间隔T内测得周期信号的重复变化次数为N,则其频率为 f=N/T。
三. 设计方案
1. 本方案采用单片机实现,原理框图如下:
原理框图1
基本原理是,被测信号ux首先经放大整形电路变成计数器所要求的脉冲信号,频率与被测信号的频率fx相同。时钟电路产生时间基准信号,控制计数与保持状态。当其高电平时,计数器计数;低电平时,计数器处于保持状态,数据送入锁存器进行锁存显示。然后对计数器清零,准备下一次计数。
五、调试过程
1、系统测试仪器及设备:
双路跟踪稳压稳流电源DH1718E-5
直流稳压电源
数字示波器Tektronix TDS1002
数字万用表
2、测试方法:
(1)调试的基本过程
先将电路的硬件电路调好调软件部分。硬件部分:接上电源数码管都不会亮,如果将复位电容C1开路,四个数码管都显示8。硬件部分没问题后就用WAVE来仿真软件。软件调好后输入频率,看看误差。
(2) 试中发现的问题
在调软件的时候发现,数码管显示的数据是错乱的,比如1234HZ,它显示的是3241HZ。通过该程序它也只能显示4321HZ,这是这个电路的唯一的没有解决的问题,再以后我会继续学习汇编程序,相信会编出来的。
六、数据的处理与分析
分析:由于测量不同频率范围是89C2051会自动调整精度,不过总体上测量数据的准确性和精度都还不错。
七、软件程序
;显示存储器 50H 51H 52H 53H 54H
LED EQU P3.7
ORG 00H
AJMP MAIN
ORG 0BH
AJMP DISPLAY
ORG 1BH
AJMP TR1EA
RETI
;===============================================
MAIN: MOV TMOD,#51H ;T1设置成计数器 T0设置成定时器 MOV TH0,#0F6H
MOV TL0,#43H
MOV TH1,#00H
MOV TL1,#00H
MOV 30H,#00H
MOV 32H,#0FEH ;位选
MOV 31H,#2 ;量程
MOV 33H,#50H ;小数点
MOV 34H,#54H ;校正
MOV R0,#50H
MOV DPTR,#TABLE
SETB EA
SETB ET0
SETB ET1
SETB TR1
SETB TR0
SETB PT0
MOV R6,#00H
MOV R7,#00H
ACALL HB2
SJMP $
;=============================================
DISPLAY:NOP
MOV TL0,#44H
MOV TH0,#0F6H
ORL P3,#1FH ;消隐
PUSH A
CPL 20H.1
JNB 20H.1,CON
;-----------------------时间基准
INC 30H
MOV A,30H
CJNE A,31H,CON
NOP
MOV TL0,34H ;校正
MOV 30H,#00H
MOV R7,TL1
MOV TL1,#00H
MOV R6,TH1
MOV TH1,#00H
ACALL HB2
CPL 20H.0
;-------------------------显示
CON: MOV A,@R0
MOVC A,@A+DPTR
MOV P1,A
MOV A,R0
CJNE A,33H,CON1
CLR P1.6 ;小数点
CON1: MOV P3,32H ;位选
MOV C,20H.0
MOV LED,C
MOV A,32H
RL A
MOV 32H,A
INC R0
CJNE R0,#55H,OVER
MOV R0,#50H
MOV 32H,#0FEH
OVER: POP A
RETI
;=====================================溢出,量程切换 TR1EA: MOV 30H,#00H
MOV A,31H
MOV B,#10
DIV AB
JZ T2
MOV 31H,A
CJNE A,#20,T1
MOV 33H,#51H
MOV 34H,#61H
T1: CJNE A,#2H,T2
MOV 33H,#50H
MOV 34H,#54H
T2: RETI
;======================================================
HB2: CLR A
MOV R3,A
MOV R4,A
MOV R5,A
MOV R2,#10H ;转换双字节十六进制整数
HB3: MOV A,R7 ;从高端移出待转换数的一位到 CY 中
RLC A
MOV R7,A
MOV A,R6
RLC A
MOV R6,A
MOV A,R5 ;BCD码带进位自身相加,相当于乘2
ADDC A,R5
DA A ;十进制调整
MOV R5,A
MOV A,R4
ADDC A,R4
DA A
MOV R4,A
MOV A,R3
ADDC A,R3
MOV R3,A ;双字节十六进制数的万位数不超过6,不用调整 DJNZ R2,HB3 ;处理完16bit
;--------------------------------------输出显示
MOV 54H,R3
MOV A,R4
ANL A,#0F0H
SWAP A
MOV 53H,A
MOV A,R4
ANL A,#0FH
MOV 51H,A
MOV A,R5
ANL A,#0F0H
SWAP A
MOV 50H,A
MOV A,R5
ANL A,#0FH
MOV 52H,A
;--------------------------------------量程判断
MOV A,31H
ADD A,#56
JC HB4
MOV A,54H
JNZ HB4
MOV A,53H
CLR C
SUBB A,#6
JNC HB4
MOV A,31H
MOV B,#10
MUL AB
MOV 31H,A
;---------------校正值
CJNE A,#200,HB5
MOV 33H,#53H
MOV 34H,#0DAH
HB5: CJNE A,#20,HB4
MOV 33H,#51H
MOV 34H,#61H
HB4: CJNE R3,#00H,HB6
MOV 54H,#0AH
HB6: RET
;===============================
TABLE: DB 048H,0EBH,052H,062H,0E1H,064H,044H,0EAH,040H,060H,0FFH
七、设计总结
本系统是单片机89C2951为核心,制作电路存在的最大问题就是软件的调试,如何读懂源程序,如何修改源程序成了我们最大的任务。但在老师和同学的帮助下还是能够顺利的调试出来,更加让我熟悉了汇编语言编写程序的思路和方法。