标题: 数码管动态显示一定脉冲宽度的脉冲数量 [打印本页]

作者: g754200046    时间: 2016-12-26 23:06
标题: 数码管动态显示一定脉冲宽度的脉冲数量
本人新手一枚,最近在研究如何用数码管动态显示一定脉冲宽度的脉冲的数量。
然后问题出现在,由于计算脉冲宽度过长需要占用时间,这个时候无法动态扫描,于是数码管就不显示数据了
程序如下:
ORG  0000H
    AJMP START
    ORG  0013H
    AJMP X1_INT
START:
    MOV  SP,  #60H
    MOV  IE,  #84H
    MOV  R3,  #0
;-------------------
MAIN:
    LCALL DISPLAY
MOV TMOD,#09H
MOV TL0,#00H
MOV TH0,#00H
JB P3.2,$
SETB TR0
JNB P3.2,$
JB P3.2,$
CLR TR0
RP:
MOV A,TH0
MOV R0,TL0
CJNE A,TH0,RP
MOV R1,A
CJNE R1,#17H,BJ
BJ:
JNC MAIN   ;判断脉冲宽度
CLR P3.3
SETB P3.3    ;触发中断
AJMP MAIN
;-----------------------------------
X1_INT:
    MOV  A,  R3
    ADD  A,  #1
    DA   A
    MOV  R3, A          ;R3 = 00~99H
X1_LOOP:
    LCALL DISPLAY
    JNB  P3.3, X1_LOOP
    RETI
;-----------------------------------
DISPLAY:   
    MOV  A,  R3
    ANL  A,  #0FH       ;取出个位.
    MOV  DPTR, #TAB
    MOVC A,  @A + DPTR
    MOV  P2, #0FFH      ;关闭显示.
    MOV  P0, A          ;输出段码.
    CLR  P2.1           ;P2.1=0
    LCALL DELAY
;-------------------
    MOV  A,  R3
    SWAP A
    ANL  A,  #0FH       ;取出十位.
    MOVC A,  @A + DPTR
    MOV  P2, #0FFH      ;关闭显示.
    MOV  P0, A          ;输出段码.
    CLR  P2.0           ;P2.0=0
    LCALL DELAY
    RET
;-----------------------------------
DELAY:
    MOV  R4, #250
    DJNZ R4, $
    RET
;-----------------------------------
TAB:
    DB  3FH, 06H, 5BH, 4FH, 66H
    DB  6DH, 7DH, 07H, 7FH, 6FH
END

搜狗截图16年12月26日2305_1.png (44.29 KB, 下载次数: 106)

搜狗截图16年12月26日2305_1.png

作者: admin    时间: 2017-1-2 01:14
想办法把动态扫描程序穿插进计算脉冲宽度里面
作者: zl2168    时间: 2017-1-2 12:31
本帖最后由 zl2168 于 2017-1-2 12:33 编辑

一个显示脉冲宽度的案例
直流电机正反转及PWM调速
先Proteus仿真一下,确认有效。
实例100 直流电机正反转及调速.rar (44.12 KB, 下载次数: 4)


以上摘自张志良编著《80C51单片机仿真设计实例教程——基于Keil C和Proteus》清华大学出版社ISBN 978-7-302-41682-1,内有常用的单片机应用100案例,用于仿真实验操作,电路与程序真实可靠可信可行。书中电路和程序设计有详细说明,程序语句条条有注解。





欢迎光临 (http://www.51hei.com/bbs/) Powered by Discuz! X3.1