综合应用实验设计报告
数字频率计数计
姓名: 学号: 姓名: 学号:
2011 年 6 月 19 日
摘要
设计以单片机为核心,被测信号先进入信号放大电路进行放大,再被送到波形整形电路整形,把被测的正弦波或者三角波整形为方波。利用单片机的计数器和定时器的功能对被测信号进行计数。编写相应的程序可以使单片机自动调节测量的量程,并把测出的频率数据送到显示电路显示。
本设计的目的是通过在对单片机原理及应用的学习,以及查阅资料,培养自学与动手能力,把学到的知识应用到日常生活当中。在设计的过程中,不断的补充不知道的内容、巩固所学,和队友的分工合作、相互讨论,运用科学的分析问题的方法解决遇到的困难,掌握单片机系统一般的开发流程,学会对常见问题的处理方法,积累设计系统的经验,充分发挥教学与实践的结合。
关键词:单片机;数字频率计;设计;
一. 项目的意义与目的
在电子技术中,频率是最基本的参数之一,并且与许多电参量的测量方案、测量结果都有十分密切的关系,因此频率的测量就显得更为重要。
单片机数字频率计可靠性高、体积小、价格低、功能全,广泛应用与各种职能仪器中,能使在测量过程的控制中达到自动化,省掉很多繁琐的人工操作,同时也提高了测试精度。
二.设计要求和指标
测量被测信号的频率,要求如下:
信号波形:方波, 正弦波,锯齿波,三角波等; 信号频率:1Hz~100kHz。 显示:LCD 显示。
三.方案设计和论证
方案一:本方案主要以单片机为核心,利用单片机的计数定时功能来实现频率的计数并且利用单片机的动态扫描法把测出的数据送到数字显示电路显示。其原理框图如图1所示:
图1 方案一原理框图
方案二:本方案主要以数字器件为核心,主要分为时基电路,逻辑控制电路,放大整形电路,闸门电路,计数电路,锁存电路,译码显示电路七大部分。其原理框图如图2所示:
图2 方案二原理框图
方案论证
方案一:本方案主要以单片机为核心,被测信号先进入信号放大电路进行放大,再被送到波形整形电路整形,把被测的正弦波或者三角波整形为方波。利用单片机的计数器和定时器的功能对被测信号进行计数。编写相应的程序可以使单片机自动调节测量的量程,并把测出的频率数据送到显示电路显示。
方案二:本方案使用大量的数字器件,被测信号经放大整形电路变成计数器所要求的脉冲信号,其频率与被侧信号的频率相同。同时时基电路提供标准时间基准信号,其高电平持续时间1s ,当1s 信号来到时,闸门开通,被测脉冲信号通过闸门,计数器开始计数,直到1s 信号结束闸门关闭,停止计数。若在闸门时间1s 内计数器计得的脉冲个数为N ,则被测信
号频率Fx = NHz 。逻辑控制电路的作用有两个:一是产生锁存脉冲,是显示器上的数字稳定;二是产生清零脉冲,使计数器每次测量从零开始计数。 方案选择
比较以上两种方案可以知道,方案一的核心是单片机,使用的元器件少,原理电路简单,方案二则使用了大量的数字元器件,原理电路复杂,硬件调试麻烦。基于上述比较,所以选择了方案一。
四.电路原理设计
所谓“频率”,就是周期性信号在单位时间(1s )内变化的次数。若在一定时间间隔T 内测得这个周期性信号的重复变化次数N ,则其频率可表示为f=N/T。其中脉冲形成电路的作用是将被测信号变成脉冲信号,其重复频率等于被测频率fx 。被测脉冲信号整形放大电路,被测频率fx=NHz。
数字频率计是一个将被测频率显示出来的计数装置,它主要由单片机89C51控制、7407、LED 显示器、电源等组成。该系统的功能是将信号输入P3.4口,通过单片机程序控制,对LED 显示器进行段控和位控,实现动态显示。
元器件:
1、原理框框
图3系统原理框图
2、电路原理图
图4系统原理图
信号整形 1 运放部分
同相比例放大器的倍数为:Uo=(1+Rf/R)Ui,而放大倍数为(1+Rf/R)。因此,适当选择Rf 和R 的值,可使小的输入信号达到可测试范围内的信号大小,然后就可以对它进行测试了。 选择器件:lm358。LM358 内部包括有两个独立的、高增益、内部频率补偿的双运算放大器,
适合于电源电压范围很宽的单电源使用,也适用于双电源工作模式,在推荐的工作条件下,
电源电流与电源电压无关。它的使用范围包括传感放大器、直流增益模块和其他所有可用单电源供电的使用运算放大器的场合。LM358 的封装形式:塑封8引线双列直插式,如图 5
所示。
特性(Features): · 内部频率补偿
· 直流电压增益高(约100dB) · 单位增益频带宽(约1MHz)
· 电源电压范围宽:单电源(3—30V) ; 双电源(±1.5 一±15V)
· 低功耗电流,适合于电池供电
图5
2 过零比较部分
过零比较器,顾名思义,其阈值电压UT=0V。电路如图(a)所示,集成运放工作在开环状态,
其输出电压为+UOM或-UOM 。当输入电压uI0V时,UO=-UOM。因此,电压传输特性如图(b)所示,我们使用LM324构建过零比较器,如图 6 所示,来整波。
图 6
选择器件:LF353 ,封装如图7所示 各引脚功能:
图7 3 稳压部分
经过运放部分处理的信号电压值可能过大,直接输入到单片机中可能会烧毁电路,因此需
要对信号进行稳定其电压值。
选择器件:74LS04,封装如图 8所示。
电源电压:5V
图 8 单片机控制电路
单片机控制电路由AT89C52片机、晶振时序电路、复位电路构成。
单片机AT89C52:AT89C52如图9 所示,是一种带4K 字节闪烁可编程可擦除只读存储器的低电压,高性能CMOS8 位微处理器,俗称单片机。该器件采用ATMEL 高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。由于将多功能8位CPU 和闪烁存储器组合在单个芯片中,ATMEL 的AT89C52是一种高效微控制器,为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。
AT89C52
图9
本次设计主要用到单片机4个I/O口中的3个,其中P3口的一部分及P1口与LCD 相接,18、19脚外界晶振电容为单片机提供时序,9号脚为复位电路的接入脚。
晶振时序电路
XTAL1和XTAL2分别为反向放大器的输入和输出。该反向放大器可以配置为片内振荡器。石晶振荡和陶瓷振荡均可采用。如采用外部时钟源驱动器件,XTAL2应不接。有余输入至内部时钟信号要通过一个二分频触发器,因此对外部时钟信号的脉宽无任何要求,但必须保证脉冲的高低电平要求的宽度。晶振电路原理图如图3 – 6 所示。
图10晶振电路原理图
复位电路
常见的复位电路有两种:上电复位电路和开关复位电路,可根据电路的需要选择复位电路。复位电路如图3 – 7 所示。
图11 复位电路原理图
液晶显示电路
字符型液晶显示模块LCD1602是一种用5x7点阵图形来显示字符的液晶显示器,其引脚功能如表所示。 LCD 引脚接口说明表
读状态:输入:RS=L,RW=H,E=H 输出:D0~D7=状态字 写指令:输入:RS=L,RW=L,D0~D7=指令码,E=高脉冲 输出:无
读数据:输入:RS=H,RW=H,E=H 输出:D0~D7=数据 写数据:输入:RS=H,RW=L,D0~D7=数据,E=高脉冲
根据1602液晶显示器的读写时序操作,编写相应的单片机驱动程序,便可以实现液晶显示器的显示输出。
3、系统PCB 图
图12系统PCB 图
4、 仿真图:
图13
五、硬件设计与调试
使用的主要仪器和仪表:数字万用表,信号发生器,示波器等。
调试方法:依次测量每个功能部分原件的功能是否达到要求。待每个部分功能正常后
把所有的部分结构统一起来组成完整的电路原件。
软件设计部分
ORG 0000H
AJMP MAIN ORG 000BH LJMP SEVER1 ORG 0030H MAIN:
A8279_1 EQU 0FF82H A8279_2 EQU 0FF80H
MOV DPTR,#A8279_1 ;8279初始化 MOV A,#0D1H MOVX @DPTR,A W AIT1:MOVX A,@DPTR
JB
ACC.7,WAIT1 ; MOV A,#00H MOVX @DPTR,A MOV A,#2CH MOVX @DPTR,A CLR 00H CLR 01H CLR 02H CLR 03H CLR 04H
CLR 05H CLR 06H CLR 07H
CLR
08H
CLR 09H
START:MOV DPTR,#A8279_1 MOVX A,@DPTR ANL A,#07H JZ RETUN ACALL KEY JBC 00H,MAIN JBC 01H,START1 JBC 02H,START2 JBC 03H,START3 JBC 04H,START4
RETUN:AJMP START START1:MOV P1,#0EFH LCALL SEACH1 JBC 00H,MAIN JBC 06H,PINYU61 JBC 07H,PINYU71 JBC 08H,PINYU81 JBC 09H,PINYU91 AJMP START1 PINYU61:LJMP PINYU6 PINYU71:LJMP PINYU7 PINYU81:LJMP PINYU8 PINYU91:LJMP PINYU9 START2:MOV P1,#2FH LCALL SEACH1 JBC 00H,MAIN JBC 06H,ZHOUQI11 JBC 07H,ZHOUQI21 JBC 08H,ZHOUQI31 JBC 09H,RETUN4 RETUN4:AJMP START2 ZHOUQI11:AJMP ZHOUQI1 ZHOUQI21:AJMP ZHOUQI2 ZHOUQI31:AJMP ZHOUQI3
START3:
LCALL SEACH1 JBC 00H ,RETUN16 LCALL CEMK AJMP START3 RETUN16:LJMP MAIN
START4: LCALL SEACH1 JBC 00H ,RETUN15 LCALL CEZHANKB AJMP START4 RETUN15:LJMP MAIN PINYU6:LCALL SEACH1 JBC 00H ,RETUN11 MOV P1,#1EH LCALL ZHQI LCALL PINYU1 LCALL TRANS LCALL LED
RETUN11:AJMP MAIN PINYU7:LCALL SEACH1 JBC 00H ,RETUN12 MOV P1,#1DH LCALL CZS MOV 36H,R3
MOV 37H,R4 MOV 38H,R5
LCALL HB4 ; 转换后的三字节BCD码整数在R2,R3、R4、R5中。
LCALL PINYU2 LCALL TRANS LCALL LED AJMP PINYU7 RETUN12:AJMP MAIN PINYU8:LCALL SEACH1 JBC 00H ,RETUN13 MOV P1,#1BH LCALL CZS MOV 35H,#08H LCALL PINYU LCALL TRANS LCALL LED AJMP PINYU8 RETUN13:AJMP MAIN PINYU9:LCALL SEACH1 JBC 00H ,RETUN14 MOV P1,#17H LCALL CZS MOV 35H,#32
LCALL PINYU
LCALL TRANS LCALL LED AJMP PINYU9 RETUN14:LJMP MAIN ZHOUQI1:MOV P1,#2EH LCALL ZHQI LCALL MUL4 LCALL ADD1 MOV 60H,R2 MOV 61H,R3 MOV 62H,R4 MOV 63H,R5 LCALL TRANS LCALL LED AJMP ZHOUQI1 ZHOUQI2:MOV P1,#2DH LCALL SEACH1 JBC 00H ,RETUN9
MOV 60H,R2 MOV 61H,R3 MOV 62H,R4 MOV 63H,R5 LCALL TRANS LCALL LED AJMP ZHOUQI2 RETUN9:LJMP MAIN ZHOUQI3:MOV P1,#2BH LCALL SEACH1 JBC 00H ,RETUN10 LCALL ZHOUQI2_2 MOV 36H,R3 MOV 37H,R4
MOV 38H,R5 MOV R0,#36H
MOV R7,#08H LCALL MULD3_1 MOV 60H,R2 MOV 61H,R3 MOV 62H,R4
MOV
63H,R5
LCALL TRANS LCALL LED
AJMP ZHOUQI3 RETUN10:AJMP MAIN ZHOUQI2_2:
LCALL CZS MOV A,76H
;CJNE A,#00H,NEXT12 ;AJMP NEXT13
LCALL MUL4 LCALL ADD1 MOV 60H,R2 MOV 61H,R3 MOV 62H,R4 MOV 63H,R5 CJNE R3,#00H,NEXT14 MOV 76H,#01H
; 分频系数
AJMP NEXT15 NEXT14:JC NEXT15 MOV 76H,#08H
MOV 69H,76H MOV R7,#08H
LCALL DV31 ; 双字节商在R4、R5中 MOV 62H,R4 MOV 63H,R5 NEXT15:
MOV A,R4 MOV R6,A MOV A,R5 MOV R7,A
MOV R2,#00H MOV R3,#0FH
MOV R4,#42H MOV R5,#40H
LCALL DIVD ; 双字节商在R2、R3中,OV=1 时溢出
MOV 62H,R2 MOV 63H,R3 MOV R6,#00H
MOV R7,76H JNB OV ,NEXT16 MOV R6,62H MOV R7,63H
MOV R2,#00H ; 存入10000 MOV R3,#00H MOV R4,#27H MOV R5,#10H
LCALL DIVD ; 双字节商在R2、
R3中,OV=1 时溢出
NEXT16:MOV A,69H
CJNE A,#01H,NEXT32 AJMP NEXT33 NEXT32: MOV R6,#00H MOV R7,#69H LCALL DIVD NEXT33: MOV R7,#64H
MOV R6,#00H
RET
CEMK: MOV P1,#4DH LCALL MAIKUAN
LCALL HB4 ; 转换后的三字节BCD码整数在R2,R3、R4、R5中。 MOV 60H,R2 MOV 61H,R3 MOV 62H,R4 MOV 63H,R5
LCALL TRANS LCALL LED RET
CEZHANKB:MOV P1,#8DH
LCALL ZHQI LCALL MUL4
LCALL ADD1 ; ;结果在R2.R3.R4.R5中 MOV 70H,R2 MOV 71H,R3 MOV 72H,R4 MOV 73H,R5
LCALL MAIKUAN ;;结果在36,37,38H 中 MOV R6,37H MOV R7,38H
MOV R2,#03H MOV R3,#0E8H
LCALL MULD; 乘积在R2、R3、R4、R5中。
MOV R6,72H MOV R7,73H
LCALL DIVD ; 双字节商在R2、R3中,OV=1 时溢出。 MOV R2,72H MOV R3,73H MOV R6,72H
MOV R7,73H
LCALL HB2 ; 转换后的三字节BCD码整数在R3、R4、R5中。 MOV 60H,#00H MOV 61H,R3 MOV 62H,R4
MOV 63H,R5 LCALL TRANS LCALL LED RET
KEY :MOV DPTR ,#A8279_1 MOV A,#40H MOVX @DPTR,A MOV DPTR,#A8279_2
MOVX A,@DPTR
ANL A,#3FH
CJNE A,#00H,KEY1 SETB 00H
LJMP RETUN1 KEY1:CJNE A,#01H,KEY2 SETB 01H
LJMP RETUN1
KEY2:CJNE A,#02H,KEY3 SETB 02H AJMP RETUN1 KEY3:CJNE A,#03H,KEY4 SETB 03H
LJMP RETUN1
KEY4:CJNE A,#04H,KEY5 SETB 04H
LJMP RETUN1 KEY5:CJNE A,#05H,RETUN1 SETB 05H
RETUN1:RET
KEY_1:MOV DPTR ,#A8279_1 MOV A,#40H MOVX @DPTR,A MOV DPTR,#A8279_2 MOVX A,@DPTR
ANL A,#3FH
CJNE A,#00H,KEY_11 SETB 00H
LJMP RETUN2
KEY_11:CJNE A,#06H,KEY_12 SETB 06H
LJMP RETUN2
KEY_12:CJNE A,#07H,KEY_13
SETB 07H
AJMP RETUN2 KEY_13:CJNE A,#08H,KEY_14 SETB 08H
LJMP RETUN2
KEY_14:CJNE A,#09H,RETUN2 SETB 09H
RETUN2:RET
ZHQI: ;0.1hz_1khz测量, 测周期 ;16进制 MOV TMOD,#01H MOV TL0,#00H MOV TH0,#00H SETB EA SETB ET0 MOV 76H,#00H SETB P3.5
GDP1: MOV C,P3.5 JC GDP1 DDP1: MOV C,P3.5 JNC DDP1 SETB TR0
GDP2: MOV C,P3.5 JC GDP2 DDP2: MOV C,P3.5 JNC DDP2 CLR TR0 CLR TR1 MOV A,TH0 MOV TH1,A MOV A,TL0 MOV TL1,A RET
PINYU1: ;0.1hz_1khz测量;结果在让,r4,r5 中 ;16进制
LCALL MUL4 LCALL ADD1 MOV 30H,#00H MOV 31H,#00H MOV 32H,#0FFH
MOV 33H,#0FFH
LCALL BIJIAO JB 20H,BIJIAO2 MOV 34H,R4 MOV 35H,R5 MOV R6,34H MOV R7,35H MOV R2,#00H MOV R3,#0FH
MOV R4,#42H MOV R5,#40H
LCALL DIVD ; OV=0 时,双字节商在R2、R3中,OV=1 时溢出。 MOV A,R2 MOV R6,A MOV A,R3 MOV R7,A
AJMP NEXT30 BIJIAO2:MOV 30H,#00H MOV 31H,#0FH MOV 32H,#42H MOV 33H,#40H
LCALL BIJIAO
JB 20H,BIJIAO3 MOV R7,#100
LCALL DV31 ;OV=0 时,双字节商在R4、R5中,OV=1 时溢出。 MOV 34H,R4 MOV 35H,R5 MOV R6,34H MOV R7,35H
MOV R2,#00H
MOV R3,#0FH MOV R4,#42H
MOV R5,#40H
LCALL DIVD ; OV=0 时,双字节商在R2、R3中,OV=1 时溢出。 MOV 34H,R2 MOV 35H,R3 MOV R6,34H MOV R7,35H MOV R3,#00H MOV R4,34H MOV R5,35H
MOV R7,#100
LCALL DV31 ;OV=0 时,双字节商在R4、R5中,OV=1 时溢出。 MOV 34H,R4 MOV 35H,R5 MOV R6,34H MOV R7,35H AJMP NEXT30 BIJIAO3:
MOV R7,#0E8H
MOV R6,#03H
LCALL DIVD ; OV=0 时,双字节商在R2、R3中,OV=1 时溢出。 MOV 34H,R2 MOV 35H,R3 MOV R6,34H MOV R7,35H MOV R2,#00H MOV R3,#98H MOV R4,#96H
MOV R5,#80H
LCALL DIVD ; OV=0 时,双字节商在R2、R3中,OV=1 时溢出。
MOV 34H,R2 MOV 35H,R3 MOV R6,34H MOV R7,35H MOV R2,#00H MOV R3,#00H MOV R4,34H
MOV
R5,35H
MOV R7,#0E8H MOV R6,#03H
LCALL DIVD ; OV=0 时,双字节商在R2、R3中,OV=1 时溢出。
MOV 34H,R2 MOV 35H,R3 MOV R6,34H MOV R7,35H
NEXT30: LCALL HB2 MOV 60H,#00H MOV 61H,R3
CLR ET0 RET
SEVER1:INC 76H RETI
CZS: MOV 65H,#00H MOV 66H,#00H MOV 67H,#00H NEXT4: MOV 50H,#06H MOV 51H,#55H MOV 52H,#36H ; 测1秒钟的周期数
MOV TMOD,#51H MOV TL0,#00H MOV TH0,#4CH MOV 76H,#00H MOV R7,#14H
MOV TL1,#00H MOV TH1,#00H SETB TR1 SETB TR0
HERE:JBC TF0 ,NEXT1 JBC TF1,NEXT20 SJMP HERE NEXT20:INC 76H AJMP HERE NEXT1:MOV TL0,#00H MOV TH0,#4CH
DJNZ R7,HERE CLR TR0 CLR TR1 RET
PINYU2: ; 测频率1k_0.5mhz MOV A,76H
CJNE A,#00H,NEXT2 MOV 65H,#00H MOV 66H,#00H MOV 67H,#00H AJMP NEXT3 NEXT2:
MOV R6,76H
MOV R0,#65H
LCALL BCDA DJNZ R6,NEXT4
NEXT3: MOV R6,TH1 MOV R7,TL1 LCALL HB2 MOV R7,#03H MOV 50H,R3 MOV 51H,R4 MOV 52H,R5 MOV R0,#65H
MOV R1,#50H LCALL BCDA
MOV 60H,#00H ; 结果在65,66,67h 中BCD 码 MOV 61H,65H MOV 62H,66H MOV 63H,67H RET
PINYU:
MOV 30H,TH0 MOV 31H,TL0 MOV A,76H ;CJNE A,#00H,NEXT5 ;AJMP NEXT6 ;CLR TF0
LCALL MUL4 LCALL ADD1 MOV 65H,R2 MOV 66H,R3 MOV 67H,R4 MOV 68H,R5
MOV R0,#66H
MOV R7,35H ; 乘以分频系数 LCALL MULD3_1 MOV 36H,R3
LCALL HB4 ; 转换后的三字节BC
D码整数在R2,R3、R4、R5中。 MOV 60H,R2 MOV 61H,R3 MOV 62H,R4 MOV 63H,R5 RET
MAIKUAN: ; 测量, 测脉宽 MOV TMOD,#01H MOV TL0,#00H MOV TH0,#00H SETB EA SETB ET0 MOV 76H,#00H SETB P3.5
GDP5: MOV C,P3.5 JC GDP5 DDP5: MOV C,P3.5 JNC DDP5 SETB TR0
GDP6: MOV C,P3.5 JC GDP6 CLR TR0 ; MOV A,B
; CJNE A,#00H,NEXT6 ;AJMP NEXT7 MOV A,TH0 MOV TH1,A
MOV A,TL0
MOV TL1,A CLR ET0 LCALL MUL4 LCALL ADD1 MOV 36H,R3 MOV 37H,R4 MOV 38H,R5 RET
MUL4: MOV R2,#0FFH MOV R3,#0FFH MOV R6,#00H
LCALL MULD MOV A,76H ADD A,R5 MOV R5,A MOV A,#00H ADDC A,R4 MOV R4,A MOV A,#00H ADDC A,R3 MOV R3,A
MOV A,#00H
ADDC A,R2 ; 结果在R2.R3.R4.R5中
RET
ADD1: MOV A,TL1 ADD A,R5 MOV R5,A MOV A,TH1 ADDC A,R4 MOV R4,A MOV A,#00H ADDC A,R3 MOV R3,A
MOV A,#00H
ADDC A,R2
MOV R2,A ; 结果在R2.R3.R4.R5中
RET
BIJIAO:MOV A,R2 ; 比较30h,31h,32h,33h 与r2,r3,r4,r5中数据的大小,大,20H=0, CJNE A,30H,TEND MOV A,R3
CJNE A,31H,TEND MOV A,R4 CJNE A,32H,TEND MOV A,R5 CJNE A,33H,TEND TEND:JC BJ1 SETB 20H
AJMP TEND2
BJ1:CLR 20H
TEND2:RET
MULD:MOV A,R3 ;计算R3乘R7
MOV B,R7 MUL AB MOV R4,B ;暂存部分积 MOV R5,A MOV A,R3 ;计算R3乘R6
MOV B,R6 MUL AB ADD A,R4 ;累加部分积
MOV
R4,A
CLR A
ADDC A,B MOV R3,A MOV A,R2 ;计算R2乘R7
MOV B,R7 MUL AB ADD A,R4 ;累加部分积
MOV R4,A MOV A,R3 ADDC A,B MOV R3,A
CLR A RLC A XCH A,R2 ;计算R2乘R6
MOV B,R6 MUL AB ADD A,R3 ;累加部分积
MOV R3,A MOV
A,R2
ADDC A,B MOV R2,A RET
DV31: CLR C MOV A,R3 SUBB
A,R7 JC DV30
SETB OV ;商溢出
RET
DV30: MOV R2,#10H ;求R3R4R5/R7-→
R4R5
DM23: CLR C MOV A,R5 RLC A
MOV
R5,A
MOV A,R4 RLC A MOV R4,A MOV A,R3 RLC A MOV R3,A MOV F0,C CLR C SUBB A,R7 ANL
C,/F0
JC DM24 MOV R3,A
INC R5
DM24: DJNZ R2,DM23 MOV A,R3 ;四舍五入 ADD A,R3 JC DM25 SUBB A,R7 JC DM26 DM25: INC R5
MOV A,R5
JNZ DM26
INC R4
DM26: CLR O V RET ;商在R4R5中
DIVD: CLR C ;比较被除数和除数
MOV
A,R3
SUBB A,R7 MOV A,R2 SUBB A,R6 JC DVD1
SETB OV ;溢出
RET
DVD1: MOV B,#10H ;计算双字节商
DVD2: CLR C ;部分商和余数同时左移一位 MOV A,R5 RLC A MOV R5,A MOV A,R4 RLC A MOV R4,A MOV A,R3 RLC A
MOV
R3,A
XCH A,R2
RLC A XCH A,R2
MOV F0,C; ;保存溢出位
CLR C SUBB A,R7;计算(R2R3-R6R7) MOV R1,A MOV A,R2
SUBB A,R6
ANL
C,/F0 ;结果判断
JC DVD3
MOV R2,A ;够减,存放新的余数 MOV
A,R1
MOV R3,A
INC R5 ;商的低位置一
DVD3: DJNZ B,DVD2 ;计算完十六位商
(R4R5) MOV A,R4 ;将商移到R2R3中
MOV R2,A MOV
A,R5
MOV R3,A
CLR O V ;设立成功标志 RET
HB2:CLR A
;BCD码初始化 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
RET
;; (1) 标号: BCDA 功能:多字节BCD码加法
;; 入口条件:字节数在R7中,被加数在[R0]中,加数在[R1]中。
;; 出口信息:和在[R0]中,最高位进位在CY 中。 ;;; 影响资源:PSW 、A 、R2 堆栈需求: 2字节
BCDA: MOV A,R7
;取字节数至R2中
MOV R2,A ADD A,R0 ;初始化数据指针
MOV R0,A MOV A,R2
ADD
A,R1
MOV R1,A CLR C BCD1: DEC R0 ;调整数据指针
DEC R1 MOV A,@R0
ADDC A,@R1 ;按字节相加 DA A ;十进制调整
MOV @R0,A ;和存回[R0]中 DJNZ R2,BCD1;处理完所有字节
RET
MULD3_1:INC R0 INC R0
MOV A,R7 ;计算乘 MOV B,@R0
MUL AB MOV R4,B ;暂存部分积 MOV R5,A MOV A,R7
;计算乘
DEC R0
MOV B,@R0 MUL AB ADD A,R4 ;累加部分积
MOV
R4,A
CLR A
ADDC A,B MOV R3,A MOV
A,R7
;计算乘
DEC R0
MOV B,@R0 MUL AB ADD A,R3 ;累加部分积 MOV R3,A
CLR A ADDC A,B MOV R2,A
RET
;HB4:CLR A ;BCD码初始化 MOV R3,A MOV
R4,A
MOV R5,A MOV R2,A
MOV R7,#18H ;转换3字节十六
进制整数
HB5: MOV A,38H ;从高端移出待转换数
的一位到CY 中 RLC A MOV 38H,A MOV A,37H
RLC A MOV 37H,A
MOV
A,36H ;从高端移出待转换数的一
位到CY 中 RLC A
MOV 36H,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 DA A
MOV R3,A
MOV A,R2 ADDC A,R2 DA A
MOV
R2,A
;双字节十六进制数
的万位数不超过6,不用调整 DJNZ R7,HB5 ; ;处理完16bit
RET
TRANS: MOV R0,#63H MOV R1,#40H MOV R6,#04H LAST:MOV A,@R0 ANL A,#0FH MOV @R1,A MOV A,@R0 ANL A,#0F0H SW AP A INC R1
MOV @R1,A INC R1 DEC R0 DJNZ R6,LAST RET
SEACH1:MOV DPTR,#A8279_1 MOVX A,@DPTR ANL A,#07H JZ RETUN8 LJMP KEY_1 RETUN8:RET
LED:MOV DPTR,#A8279_1 MOV A,#90H
MOVX @DPTR,A MOV R1,#40H
MOV R7,#08H
MOV DPTR,#A8279_2 LOOP:MOV A,@R1 ADD A,#05H MOVC A,@A+PC MOVX @DPTR,A INC R1 DJNZ R7,LOOP RET
DB 3FH,06H,5BH,4FH,66H,6DH DB 7DH,07H,7FH,6FH END
数字频率计设计报告
心得体会
通过本次课程设计,不但加深我们对在课程上所学到的单片机理论知识的认识和理解,重新让自己认识到了这门学科的在应用方面的广阔前景,并且通过知识与应用于实践的结合更加丰富了自己的知识,扩展了知识面,掌握了本专业的相关知识,并且较系统的掌握单片机应用系统的开发应用过程,从而使自身的综合素质有了较全面的提高 。另外,我们也注意到电路工艺的重要性。
经过这次一个较完整的设计和制作过程,对于认识到自己在知识方面存在的不足,明确今后的学习方向是非常有益的,为将来的更近一步的学习打了下扎实的基础。
在这次课程设计过程中,我们是以小组的形式进行。虽然花费了大量的时间和精力,但我却学到了许多在理论课程中无法学到的知识。最重要的是让我懂得了合作的重要性,学会了如何与人更好的合作。
在这段课设的时间里遇到了很多问题,幸好同学们的悉心指导和帮助。在此对他们表示衷心的感谢。
六、测试结果
基本实现了设计要求,但长时间工作有误差,稳定性有待提高。
参考文献:
[1]冯育长等. 单片机系统设计及实例分析. 西安:西安电子科技大学出版社, 2007.5
[2]雷思孝,冯育长. 单片机系统设计及工程应用. 西安:西安电子科技大学出版社,2005. [3]阎石. 数字电子技术基础[M]. 高等教育出版社,2006
[4] 童师白,华成英. 模拟电子技术基础[M]. 高等教育出版社,2006
21
综合应用实验设计报告
数字频率计数计
姓名: 学号: 姓名: 学号:
2011 年 6 月 19 日
摘要
设计以单片机为核心,被测信号先进入信号放大电路进行放大,再被送到波形整形电路整形,把被测的正弦波或者三角波整形为方波。利用单片机的计数器和定时器的功能对被测信号进行计数。编写相应的程序可以使单片机自动调节测量的量程,并把测出的频率数据送到显示电路显示。
本设计的目的是通过在对单片机原理及应用的学习,以及查阅资料,培养自学与动手能力,把学到的知识应用到日常生活当中。在设计的过程中,不断的补充不知道的内容、巩固所学,和队友的分工合作、相互讨论,运用科学的分析问题的方法解决遇到的困难,掌握单片机系统一般的开发流程,学会对常见问题的处理方法,积累设计系统的经验,充分发挥教学与实践的结合。
关键词:单片机;数字频率计;设计;
一. 项目的意义与目的
在电子技术中,频率是最基本的参数之一,并且与许多电参量的测量方案、测量结果都有十分密切的关系,因此频率的测量就显得更为重要。
单片机数字频率计可靠性高、体积小、价格低、功能全,广泛应用与各种职能仪器中,能使在测量过程的控制中达到自动化,省掉很多繁琐的人工操作,同时也提高了测试精度。
二.设计要求和指标
测量被测信号的频率,要求如下:
信号波形:方波, 正弦波,锯齿波,三角波等; 信号频率:1Hz~100kHz。 显示:LCD 显示。
三.方案设计和论证
方案一:本方案主要以单片机为核心,利用单片机的计数定时功能来实现频率的计数并且利用单片机的动态扫描法把测出的数据送到数字显示电路显示。其原理框图如图1所示:
图1 方案一原理框图
方案二:本方案主要以数字器件为核心,主要分为时基电路,逻辑控制电路,放大整形电路,闸门电路,计数电路,锁存电路,译码显示电路七大部分。其原理框图如图2所示:
图2 方案二原理框图
方案论证
方案一:本方案主要以单片机为核心,被测信号先进入信号放大电路进行放大,再被送到波形整形电路整形,把被测的正弦波或者三角波整形为方波。利用单片机的计数器和定时器的功能对被测信号进行计数。编写相应的程序可以使单片机自动调节测量的量程,并把测出的频率数据送到显示电路显示。
方案二:本方案使用大量的数字器件,被测信号经放大整形电路变成计数器所要求的脉冲信号,其频率与被侧信号的频率相同。同时时基电路提供标准时间基准信号,其高电平持续时间1s ,当1s 信号来到时,闸门开通,被测脉冲信号通过闸门,计数器开始计数,直到1s 信号结束闸门关闭,停止计数。若在闸门时间1s 内计数器计得的脉冲个数为N ,则被测信
号频率Fx = NHz 。逻辑控制电路的作用有两个:一是产生锁存脉冲,是显示器上的数字稳定;二是产生清零脉冲,使计数器每次测量从零开始计数。 方案选择
比较以上两种方案可以知道,方案一的核心是单片机,使用的元器件少,原理电路简单,方案二则使用了大量的数字元器件,原理电路复杂,硬件调试麻烦。基于上述比较,所以选择了方案一。
四.电路原理设计
所谓“频率”,就是周期性信号在单位时间(1s )内变化的次数。若在一定时间间隔T 内测得这个周期性信号的重复变化次数N ,则其频率可表示为f=N/T。其中脉冲形成电路的作用是将被测信号变成脉冲信号,其重复频率等于被测频率fx 。被测脉冲信号整形放大电路,被测频率fx=NHz。
数字频率计是一个将被测频率显示出来的计数装置,它主要由单片机89C51控制、7407、LED 显示器、电源等组成。该系统的功能是将信号输入P3.4口,通过单片机程序控制,对LED 显示器进行段控和位控,实现动态显示。
元器件:
1、原理框框
图3系统原理框图
2、电路原理图
图4系统原理图
信号整形 1 运放部分
同相比例放大器的倍数为:Uo=(1+Rf/R)Ui,而放大倍数为(1+Rf/R)。因此,适当选择Rf 和R 的值,可使小的输入信号达到可测试范围内的信号大小,然后就可以对它进行测试了。 选择器件:lm358。LM358 内部包括有两个独立的、高增益、内部频率补偿的双运算放大器,
适合于电源电压范围很宽的单电源使用,也适用于双电源工作模式,在推荐的工作条件下,
电源电流与电源电压无关。它的使用范围包括传感放大器、直流增益模块和其他所有可用单电源供电的使用运算放大器的场合。LM358 的封装形式:塑封8引线双列直插式,如图 5
所示。
特性(Features): · 内部频率补偿
· 直流电压增益高(约100dB) · 单位增益频带宽(约1MHz)
· 电源电压范围宽:单电源(3—30V) ; 双电源(±1.5 一±15V)
· 低功耗电流,适合于电池供电
图5
2 过零比较部分
过零比较器,顾名思义,其阈值电压UT=0V。电路如图(a)所示,集成运放工作在开环状态,
其输出电压为+UOM或-UOM 。当输入电压uI0V时,UO=-UOM。因此,电压传输特性如图(b)所示,我们使用LM324构建过零比较器,如图 6 所示,来整波。
图 6
选择器件:LF353 ,封装如图7所示 各引脚功能:
图7 3 稳压部分
经过运放部分处理的信号电压值可能过大,直接输入到单片机中可能会烧毁电路,因此需
要对信号进行稳定其电压值。
选择器件:74LS04,封装如图 8所示。
电源电压:5V
图 8 单片机控制电路
单片机控制电路由AT89C52片机、晶振时序电路、复位电路构成。
单片机AT89C52:AT89C52如图9 所示,是一种带4K 字节闪烁可编程可擦除只读存储器的低电压,高性能CMOS8 位微处理器,俗称单片机。该器件采用ATMEL 高密度非易失存储器制造技术制造,与工业标准的MCS-51指令集和输出管脚相兼容。由于将多功能8位CPU 和闪烁存储器组合在单个芯片中,ATMEL 的AT89C52是一种高效微控制器,为很多嵌入式控制系统提供了一种灵活性高且价廉的方案。
AT89C52
图9
本次设计主要用到单片机4个I/O口中的3个,其中P3口的一部分及P1口与LCD 相接,18、19脚外界晶振电容为单片机提供时序,9号脚为复位电路的接入脚。
晶振时序电路
XTAL1和XTAL2分别为反向放大器的输入和输出。该反向放大器可以配置为片内振荡器。石晶振荡和陶瓷振荡均可采用。如采用外部时钟源驱动器件,XTAL2应不接。有余输入至内部时钟信号要通过一个二分频触发器,因此对外部时钟信号的脉宽无任何要求,但必须保证脉冲的高低电平要求的宽度。晶振电路原理图如图3 – 6 所示。
图10晶振电路原理图
复位电路
常见的复位电路有两种:上电复位电路和开关复位电路,可根据电路的需要选择复位电路。复位电路如图3 – 7 所示。
图11 复位电路原理图
液晶显示电路
字符型液晶显示模块LCD1602是一种用5x7点阵图形来显示字符的液晶显示器,其引脚功能如表所示。 LCD 引脚接口说明表
读状态:输入:RS=L,RW=H,E=H 输出:D0~D7=状态字 写指令:输入:RS=L,RW=L,D0~D7=指令码,E=高脉冲 输出:无
读数据:输入:RS=H,RW=H,E=H 输出:D0~D7=数据 写数据:输入:RS=H,RW=L,D0~D7=数据,E=高脉冲
根据1602液晶显示器的读写时序操作,编写相应的单片机驱动程序,便可以实现液晶显示器的显示输出。
3、系统PCB 图
图12系统PCB 图
4、 仿真图:
图13
五、硬件设计与调试
使用的主要仪器和仪表:数字万用表,信号发生器,示波器等。
调试方法:依次测量每个功能部分原件的功能是否达到要求。待每个部分功能正常后
把所有的部分结构统一起来组成完整的电路原件。
软件设计部分
ORG 0000H
AJMP MAIN ORG 000BH LJMP SEVER1 ORG 0030H MAIN:
A8279_1 EQU 0FF82H A8279_2 EQU 0FF80H
MOV DPTR,#A8279_1 ;8279初始化 MOV A,#0D1H MOVX @DPTR,A W AIT1:MOVX A,@DPTR
JB
ACC.7,WAIT1 ; MOV A,#00H MOVX @DPTR,A MOV A,#2CH MOVX @DPTR,A CLR 00H CLR 01H CLR 02H CLR 03H CLR 04H
CLR 05H CLR 06H CLR 07H
CLR
08H
CLR 09H
START:MOV DPTR,#A8279_1 MOVX A,@DPTR ANL A,#07H JZ RETUN ACALL KEY JBC 00H,MAIN JBC 01H,START1 JBC 02H,START2 JBC 03H,START3 JBC 04H,START4
RETUN:AJMP START START1:MOV P1,#0EFH LCALL SEACH1 JBC 00H,MAIN JBC 06H,PINYU61 JBC 07H,PINYU71 JBC 08H,PINYU81 JBC 09H,PINYU91 AJMP START1 PINYU61:LJMP PINYU6 PINYU71:LJMP PINYU7 PINYU81:LJMP PINYU8 PINYU91:LJMP PINYU9 START2:MOV P1,#2FH LCALL SEACH1 JBC 00H,MAIN JBC 06H,ZHOUQI11 JBC 07H,ZHOUQI21 JBC 08H,ZHOUQI31 JBC 09H,RETUN4 RETUN4:AJMP START2 ZHOUQI11:AJMP ZHOUQI1 ZHOUQI21:AJMP ZHOUQI2 ZHOUQI31:AJMP ZHOUQI3
START3:
LCALL SEACH1 JBC 00H ,RETUN16 LCALL CEMK AJMP START3 RETUN16:LJMP MAIN
START4: LCALL SEACH1 JBC 00H ,RETUN15 LCALL CEZHANKB AJMP START4 RETUN15:LJMP MAIN PINYU6:LCALL SEACH1 JBC 00H ,RETUN11 MOV P1,#1EH LCALL ZHQI LCALL PINYU1 LCALL TRANS LCALL LED
RETUN11:AJMP MAIN PINYU7:LCALL SEACH1 JBC 00H ,RETUN12 MOV P1,#1DH LCALL CZS MOV 36H,R3
MOV 37H,R4 MOV 38H,R5
LCALL HB4 ; 转换后的三字节BCD码整数在R2,R3、R4、R5中。
LCALL PINYU2 LCALL TRANS LCALL LED AJMP PINYU7 RETUN12:AJMP MAIN PINYU8:LCALL SEACH1 JBC 00H ,RETUN13 MOV P1,#1BH LCALL CZS MOV 35H,#08H LCALL PINYU LCALL TRANS LCALL LED AJMP PINYU8 RETUN13:AJMP MAIN PINYU9:LCALL SEACH1 JBC 00H ,RETUN14 MOV P1,#17H LCALL CZS MOV 35H,#32
LCALL PINYU
LCALL TRANS LCALL LED AJMP PINYU9 RETUN14:LJMP MAIN ZHOUQI1:MOV P1,#2EH LCALL ZHQI LCALL MUL4 LCALL ADD1 MOV 60H,R2 MOV 61H,R3 MOV 62H,R4 MOV 63H,R5 LCALL TRANS LCALL LED AJMP ZHOUQI1 ZHOUQI2:MOV P1,#2DH LCALL SEACH1 JBC 00H ,RETUN9
MOV 60H,R2 MOV 61H,R3 MOV 62H,R4 MOV 63H,R5 LCALL TRANS LCALL LED AJMP ZHOUQI2 RETUN9:LJMP MAIN ZHOUQI3:MOV P1,#2BH LCALL SEACH1 JBC 00H ,RETUN10 LCALL ZHOUQI2_2 MOV 36H,R3 MOV 37H,R4
MOV 38H,R5 MOV R0,#36H
MOV R7,#08H LCALL MULD3_1 MOV 60H,R2 MOV 61H,R3 MOV 62H,R4
MOV
63H,R5
LCALL TRANS LCALL LED
AJMP ZHOUQI3 RETUN10:AJMP MAIN ZHOUQI2_2:
LCALL CZS MOV A,76H
;CJNE A,#00H,NEXT12 ;AJMP NEXT13
LCALL MUL4 LCALL ADD1 MOV 60H,R2 MOV 61H,R3 MOV 62H,R4 MOV 63H,R5 CJNE R3,#00H,NEXT14 MOV 76H,#01H
; 分频系数
AJMP NEXT15 NEXT14:JC NEXT15 MOV 76H,#08H
MOV 69H,76H MOV R7,#08H
LCALL DV31 ; 双字节商在R4、R5中 MOV 62H,R4 MOV 63H,R5 NEXT15:
MOV A,R4 MOV R6,A MOV A,R5 MOV R7,A
MOV R2,#00H MOV R3,#0FH
MOV R4,#42H MOV R5,#40H
LCALL DIVD ; 双字节商在R2、R3中,OV=1 时溢出
MOV 62H,R2 MOV 63H,R3 MOV R6,#00H
MOV R7,76H JNB OV ,NEXT16 MOV R6,62H MOV R7,63H
MOV R2,#00H ; 存入10000 MOV R3,#00H MOV R4,#27H MOV R5,#10H
LCALL DIVD ; 双字节商在R2、
R3中,OV=1 时溢出
NEXT16:MOV A,69H
CJNE A,#01H,NEXT32 AJMP NEXT33 NEXT32: MOV R6,#00H MOV R7,#69H LCALL DIVD NEXT33: MOV R7,#64H
MOV R6,#00H
RET
CEMK: MOV P1,#4DH LCALL MAIKUAN
LCALL HB4 ; 转换后的三字节BCD码整数在R2,R3、R4、R5中。 MOV 60H,R2 MOV 61H,R3 MOV 62H,R4 MOV 63H,R5
LCALL TRANS LCALL LED RET
CEZHANKB:MOV P1,#8DH
LCALL ZHQI LCALL MUL4
LCALL ADD1 ; ;结果在R2.R3.R4.R5中 MOV 70H,R2 MOV 71H,R3 MOV 72H,R4 MOV 73H,R5
LCALL MAIKUAN ;;结果在36,37,38H 中 MOV R6,37H MOV R7,38H
MOV R2,#03H MOV R3,#0E8H
LCALL MULD; 乘积在R2、R3、R4、R5中。
MOV R6,72H MOV R7,73H
LCALL DIVD ; 双字节商在R2、R3中,OV=1 时溢出。 MOV R2,72H MOV R3,73H MOV R6,72H
MOV R7,73H
LCALL HB2 ; 转换后的三字节BCD码整数在R3、R4、R5中。 MOV 60H,#00H MOV 61H,R3 MOV 62H,R4
MOV 63H,R5 LCALL TRANS LCALL LED RET
KEY :MOV DPTR ,#A8279_1 MOV A,#40H MOVX @DPTR,A MOV DPTR,#A8279_2
MOVX A,@DPTR
ANL A,#3FH
CJNE A,#00H,KEY1 SETB 00H
LJMP RETUN1 KEY1:CJNE A,#01H,KEY2 SETB 01H
LJMP RETUN1
KEY2:CJNE A,#02H,KEY3 SETB 02H AJMP RETUN1 KEY3:CJNE A,#03H,KEY4 SETB 03H
LJMP RETUN1
KEY4:CJNE A,#04H,KEY5 SETB 04H
LJMP RETUN1 KEY5:CJNE A,#05H,RETUN1 SETB 05H
RETUN1:RET
KEY_1:MOV DPTR ,#A8279_1 MOV A,#40H MOVX @DPTR,A MOV DPTR,#A8279_2 MOVX A,@DPTR
ANL A,#3FH
CJNE A,#00H,KEY_11 SETB 00H
LJMP RETUN2
KEY_11:CJNE A,#06H,KEY_12 SETB 06H
LJMP RETUN2
KEY_12:CJNE A,#07H,KEY_13
SETB 07H
AJMP RETUN2 KEY_13:CJNE A,#08H,KEY_14 SETB 08H
LJMP RETUN2
KEY_14:CJNE A,#09H,RETUN2 SETB 09H
RETUN2:RET
ZHQI: ;0.1hz_1khz测量, 测周期 ;16进制 MOV TMOD,#01H MOV TL0,#00H MOV TH0,#00H SETB EA SETB ET0 MOV 76H,#00H SETB P3.5
GDP1: MOV C,P3.5 JC GDP1 DDP1: MOV C,P3.5 JNC DDP1 SETB TR0
GDP2: MOV C,P3.5 JC GDP2 DDP2: MOV C,P3.5 JNC DDP2 CLR TR0 CLR TR1 MOV A,TH0 MOV TH1,A MOV A,TL0 MOV TL1,A RET
PINYU1: ;0.1hz_1khz测量;结果在让,r4,r5 中 ;16进制
LCALL MUL4 LCALL ADD1 MOV 30H,#00H MOV 31H,#00H MOV 32H,#0FFH
MOV 33H,#0FFH
LCALL BIJIAO JB 20H,BIJIAO2 MOV 34H,R4 MOV 35H,R5 MOV R6,34H MOV R7,35H MOV R2,#00H MOV R3,#0FH
MOV R4,#42H MOV R5,#40H
LCALL DIVD ; OV=0 时,双字节商在R2、R3中,OV=1 时溢出。 MOV A,R2 MOV R6,A MOV A,R3 MOV R7,A
AJMP NEXT30 BIJIAO2:MOV 30H,#00H MOV 31H,#0FH MOV 32H,#42H MOV 33H,#40H
LCALL BIJIAO
JB 20H,BIJIAO3 MOV R7,#100
LCALL DV31 ;OV=0 时,双字节商在R4、R5中,OV=1 时溢出。 MOV 34H,R4 MOV 35H,R5 MOV R6,34H MOV R7,35H
MOV R2,#00H
MOV R3,#0FH MOV R4,#42H
MOV R5,#40H
LCALL DIVD ; OV=0 时,双字节商在R2、R3中,OV=1 时溢出。 MOV 34H,R2 MOV 35H,R3 MOV R6,34H MOV R7,35H MOV R3,#00H MOV R4,34H MOV R5,35H
MOV R7,#100
LCALL DV31 ;OV=0 时,双字节商在R4、R5中,OV=1 时溢出。 MOV 34H,R4 MOV 35H,R5 MOV R6,34H MOV R7,35H AJMP NEXT30 BIJIAO3:
MOV R7,#0E8H
MOV R6,#03H
LCALL DIVD ; OV=0 时,双字节商在R2、R3中,OV=1 时溢出。 MOV 34H,R2 MOV 35H,R3 MOV R6,34H MOV R7,35H MOV R2,#00H MOV R3,#98H MOV R4,#96H
MOV R5,#80H
LCALL DIVD ; OV=0 时,双字节商在R2、R3中,OV=1 时溢出。
MOV 34H,R2 MOV 35H,R3 MOV R6,34H MOV R7,35H MOV R2,#00H MOV R3,#00H MOV R4,34H
MOV
R5,35H
MOV R7,#0E8H MOV R6,#03H
LCALL DIVD ; OV=0 时,双字节商在R2、R3中,OV=1 时溢出。
MOV 34H,R2 MOV 35H,R3 MOV R6,34H MOV R7,35H
NEXT30: LCALL HB2 MOV 60H,#00H MOV 61H,R3
CLR ET0 RET
SEVER1:INC 76H RETI
CZS: MOV 65H,#00H MOV 66H,#00H MOV 67H,#00H NEXT4: MOV 50H,#06H MOV 51H,#55H MOV 52H,#36H ; 测1秒钟的周期数
MOV TMOD,#51H MOV TL0,#00H MOV TH0,#4CH MOV 76H,#00H MOV R7,#14H
MOV TL1,#00H MOV TH1,#00H SETB TR1 SETB TR0
HERE:JBC TF0 ,NEXT1 JBC TF1,NEXT20 SJMP HERE NEXT20:INC 76H AJMP HERE NEXT1:MOV TL0,#00H MOV TH0,#4CH
DJNZ R7,HERE CLR TR0 CLR TR1 RET
PINYU2: ; 测频率1k_0.5mhz MOV A,76H
CJNE A,#00H,NEXT2 MOV 65H,#00H MOV 66H,#00H MOV 67H,#00H AJMP NEXT3 NEXT2:
MOV R6,76H
MOV R0,#65H
LCALL BCDA DJNZ R6,NEXT4
NEXT3: MOV R6,TH1 MOV R7,TL1 LCALL HB2 MOV R7,#03H MOV 50H,R3 MOV 51H,R4 MOV 52H,R5 MOV R0,#65H
MOV R1,#50H LCALL BCDA
MOV 60H,#00H ; 结果在65,66,67h 中BCD 码 MOV 61H,65H MOV 62H,66H MOV 63H,67H RET
PINYU:
MOV 30H,TH0 MOV 31H,TL0 MOV A,76H ;CJNE A,#00H,NEXT5 ;AJMP NEXT6 ;CLR TF0
LCALL MUL4 LCALL ADD1 MOV 65H,R2 MOV 66H,R3 MOV 67H,R4 MOV 68H,R5
MOV R0,#66H
MOV R7,35H ; 乘以分频系数 LCALL MULD3_1 MOV 36H,R3
LCALL HB4 ; 转换后的三字节BC
D码整数在R2,R3、R4、R5中。 MOV 60H,R2 MOV 61H,R3 MOV 62H,R4 MOV 63H,R5 RET
MAIKUAN: ; 测量, 测脉宽 MOV TMOD,#01H MOV TL0,#00H MOV TH0,#00H SETB EA SETB ET0 MOV 76H,#00H SETB P3.5
GDP5: MOV C,P3.5 JC GDP5 DDP5: MOV C,P3.5 JNC DDP5 SETB TR0
GDP6: MOV C,P3.5 JC GDP6 CLR TR0 ; MOV A,B
; CJNE A,#00H,NEXT6 ;AJMP NEXT7 MOV A,TH0 MOV TH1,A
MOV A,TL0
MOV TL1,A CLR ET0 LCALL MUL4 LCALL ADD1 MOV 36H,R3 MOV 37H,R4 MOV 38H,R5 RET
MUL4: MOV R2,#0FFH MOV R3,#0FFH MOV R6,#00H
LCALL MULD MOV A,76H ADD A,R5 MOV R5,A MOV A,#00H ADDC A,R4 MOV R4,A MOV A,#00H ADDC A,R3 MOV R3,A
MOV A,#00H
ADDC A,R2 ; 结果在R2.R3.R4.R5中
RET
ADD1: MOV A,TL1 ADD A,R5 MOV R5,A MOV A,TH1 ADDC A,R4 MOV R4,A MOV A,#00H ADDC A,R3 MOV R3,A
MOV A,#00H
ADDC A,R2
MOV R2,A ; 结果在R2.R3.R4.R5中
RET
BIJIAO:MOV A,R2 ; 比较30h,31h,32h,33h 与r2,r3,r4,r5中数据的大小,大,20H=0, CJNE A,30H,TEND MOV A,R3
CJNE A,31H,TEND MOV A,R4 CJNE A,32H,TEND MOV A,R5 CJNE A,33H,TEND TEND:JC BJ1 SETB 20H
AJMP TEND2
BJ1:CLR 20H
TEND2:RET
MULD:MOV A,R3 ;计算R3乘R7
MOV B,R7 MUL AB MOV R4,B ;暂存部分积 MOV R5,A MOV A,R3 ;计算R3乘R6
MOV B,R6 MUL AB ADD A,R4 ;累加部分积
MOV
R4,A
CLR A
ADDC A,B MOV R3,A MOV A,R2 ;计算R2乘R7
MOV B,R7 MUL AB ADD A,R4 ;累加部分积
MOV R4,A MOV A,R3 ADDC A,B MOV R3,A
CLR A RLC A XCH A,R2 ;计算R2乘R6
MOV B,R6 MUL AB ADD A,R3 ;累加部分积
MOV R3,A MOV
A,R2
ADDC A,B MOV R2,A RET
DV31: CLR C MOV A,R3 SUBB
A,R7 JC DV30
SETB OV ;商溢出
RET
DV30: MOV R2,#10H ;求R3R4R5/R7-→
R4R5
DM23: CLR C MOV A,R5 RLC A
MOV
R5,A
MOV A,R4 RLC A MOV R4,A MOV A,R3 RLC A MOV R3,A MOV F0,C CLR C SUBB A,R7 ANL
C,/F0
JC DM24 MOV R3,A
INC R5
DM24: DJNZ R2,DM23 MOV A,R3 ;四舍五入 ADD A,R3 JC DM25 SUBB A,R7 JC DM26 DM25: INC R5
MOV A,R5
JNZ DM26
INC R4
DM26: CLR O V RET ;商在R4R5中
DIVD: CLR C ;比较被除数和除数
MOV
A,R3
SUBB A,R7 MOV A,R2 SUBB A,R6 JC DVD1
SETB OV ;溢出
RET
DVD1: MOV B,#10H ;计算双字节商
DVD2: CLR C ;部分商和余数同时左移一位 MOV A,R5 RLC A MOV R5,A MOV A,R4 RLC A MOV R4,A MOV A,R3 RLC A
MOV
R3,A
XCH A,R2
RLC A XCH A,R2
MOV F0,C; ;保存溢出位
CLR C SUBB A,R7;计算(R2R3-R6R7) MOV R1,A MOV A,R2
SUBB A,R6
ANL
C,/F0 ;结果判断
JC DVD3
MOV R2,A ;够减,存放新的余数 MOV
A,R1
MOV R3,A
INC R5 ;商的低位置一
DVD3: DJNZ B,DVD2 ;计算完十六位商
(R4R5) MOV A,R4 ;将商移到R2R3中
MOV R2,A MOV
A,R5
MOV R3,A
CLR O V ;设立成功标志 RET
HB2:CLR A
;BCD码初始化 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
RET
;; (1) 标号: BCDA 功能:多字节BCD码加法
;; 入口条件:字节数在R7中,被加数在[R0]中,加数在[R1]中。
;; 出口信息:和在[R0]中,最高位进位在CY 中。 ;;; 影响资源:PSW 、A 、R2 堆栈需求: 2字节
BCDA: MOV A,R7
;取字节数至R2中
MOV R2,A ADD A,R0 ;初始化数据指针
MOV R0,A MOV A,R2
ADD
A,R1
MOV R1,A CLR C BCD1: DEC R0 ;调整数据指针
DEC R1 MOV A,@R0
ADDC A,@R1 ;按字节相加 DA A ;十进制调整
MOV @R0,A ;和存回[R0]中 DJNZ R2,BCD1;处理完所有字节
RET
MULD3_1:INC R0 INC R0
MOV A,R7 ;计算乘 MOV B,@R0
MUL AB MOV R4,B ;暂存部分积 MOV R5,A MOV A,R7
;计算乘
DEC R0
MOV B,@R0 MUL AB ADD A,R4 ;累加部分积
MOV
R4,A
CLR A
ADDC A,B MOV R3,A MOV
A,R7
;计算乘
DEC R0
MOV B,@R0 MUL AB ADD A,R3 ;累加部分积 MOV R3,A
CLR A ADDC A,B MOV R2,A
RET
;HB4:CLR A ;BCD码初始化 MOV R3,A MOV
R4,A
MOV R5,A MOV R2,A
MOV R7,#18H ;转换3字节十六
进制整数
HB5: MOV A,38H ;从高端移出待转换数
的一位到CY 中 RLC A MOV 38H,A MOV A,37H
RLC A MOV 37H,A
MOV
A,36H ;从高端移出待转换数的一
位到CY 中 RLC A
MOV 36H,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 DA A
MOV R3,A
MOV A,R2 ADDC A,R2 DA A
MOV
R2,A
;双字节十六进制数
的万位数不超过6,不用调整 DJNZ R7,HB5 ; ;处理完16bit
RET
TRANS: MOV R0,#63H MOV R1,#40H MOV R6,#04H LAST:MOV A,@R0 ANL A,#0FH MOV @R1,A MOV A,@R0 ANL A,#0F0H SW AP A INC R1
MOV @R1,A INC R1 DEC R0 DJNZ R6,LAST RET
SEACH1:MOV DPTR,#A8279_1 MOVX A,@DPTR ANL A,#07H JZ RETUN8 LJMP KEY_1 RETUN8:RET
LED:MOV DPTR,#A8279_1 MOV A,#90H
MOVX @DPTR,A MOV R1,#40H
MOV R7,#08H
MOV DPTR,#A8279_2 LOOP:MOV A,@R1 ADD A,#05H MOVC A,@A+PC MOVX @DPTR,A INC R1 DJNZ R7,LOOP RET
DB 3FH,06H,5BH,4FH,66H,6DH DB 7DH,07H,7FH,6FH END
数字频率计设计报告
心得体会
通过本次课程设计,不但加深我们对在课程上所学到的单片机理论知识的认识和理解,重新让自己认识到了这门学科的在应用方面的广阔前景,并且通过知识与应用于实践的结合更加丰富了自己的知识,扩展了知识面,掌握了本专业的相关知识,并且较系统的掌握单片机应用系统的开发应用过程,从而使自身的综合素质有了较全面的提高 。另外,我们也注意到电路工艺的重要性。
经过这次一个较完整的设计和制作过程,对于认识到自己在知识方面存在的不足,明确今后的学习方向是非常有益的,为将来的更近一步的学习打了下扎实的基础。
在这次课程设计过程中,我们是以小组的形式进行。虽然花费了大量的时间和精力,但我却学到了许多在理论课程中无法学到的知识。最重要的是让我懂得了合作的重要性,学会了如何与人更好的合作。
在这段课设的时间里遇到了很多问题,幸好同学们的悉心指导和帮助。在此对他们表示衷心的感谢。
六、测试结果
基本实现了设计要求,但长时间工作有误差,稳定性有待提高。
参考文献:
[1]冯育长等. 单片机系统设计及实例分析. 西安:西安电子科技大学出版社, 2007.5
[2]雷思孝,冯育长. 单片机系统设计及工程应用. 西安:西安电子科技大学出版社,2005. [3]阎石. 数字电子技术基础[M]. 高等教育出版社,2006
[4] 童师白,华成英. 模拟电子技术基础[M]. 高等教育出版社,2006
21