利用定时方式0,测量外部脉冲宽度(5到250ms),74HC595输出显示

发布者:devilcore最新更新时间:2018-05-08 来源: eefocus关键字:定时方式0  外部脉冲宽度  74HC595 手机看文章 扫描二维码
随时随地手机看文章

;有人提问:
;利用单片机的定时方式0,实现外部脉冲宽度(在5到250ms)的测量。要求画出电路图。在线等 
;问题补充:写出程序,测量结果存储在R0中。
;=================================================
;做而论道对此题给出了答案:
;外部脉冲宽度(在5到250ms)之间,测量存放在R0。程序如下。

    ORG 0000H
    JMP START
    ORG 000BH
    JMP T0_INT
;------------;初始化
START:
    MOV SP, #60H
    MOV TMOD, #01H       ;/*T0定时方式1*/ 
    MOV TH0, #HIGH(65536 - 1000) ;1ms@12MHz
    MOV TL0, #LOW (65536 - 1000)
    SETB ET0
    SETB EA
    MOV R0, #0
;------------;电路:要把外部脉冲,接在P1.0
    JB   P1.0, $          ;等待高电平结束.
    JNB P1.0, $          ;等待低电平结束.
    SETB TR0              ;到了高电平,就启动T0开始计时.
    JB   P1.0, $          ;等待高电平结束.
    CLR TR0              ;到了低电平,结束T0计时.

    CALL DISPLAY         ;显示

    SJMP $                ;程序到此结束, R0中就是脉宽的毫秒数.
;-------------;1ms执行一次
T0_INT:         
    MOV TL0, #LOW (65536 - 993) ;重新写入初始值.
    MOV TH0, #HIGH(65536 - 993) ;1ms@12MHz
    INC R0        ;1ms加一次一.
    RETI
;---------------------------------

;原题目,并没有提出显示测量结果的要求,这就不便观察。
;为此,下面补充了显示电路(以三个74HC595来驱动数码管)和程序。

    SDAT_595 BIT   P3.0
    SCLK_595 BIT   P3.1
    S_UP_595 BIT   P3.2
;**************************************************
;595发送程序
;**************************************************
OUT_595:MOV   R2, #8
        CPL   A
O_1:    RLC   A
        NOP
        MOV   SDAT_595, C
        NOP
        CLR   SCLK_595
        NOP
        SETB SCLK_595
        NOP
        DJNZ R2, O_1
        RET
;**************************************************
;显示程序
;**************************************************
DISPLAY:
        MOV   A, R0       ;把脉宽数据,分解成
        MOV   B, #100     ;BCD码
        DIV   AB;
        MOV   30H, A      ;百位
        MOV   A, #10;
        XCH   A, B;
        DIV   AB;
        MOV   31H, A      ;十位
        MOV   32H, B      ;个位

        MOV   R0, #32H     ;把30H 31H 32H
        MOV   R7, #3       ;送出去显示
D_1:
        MOV   A, @R0
        MOV   DPTR, #TAB
        MOVC A, @A+DPTR
        CALL OUT_595
        NOP
        SETB S_UP_595
        DEC   R0
        CLR   S_UP_595
        DJNZ R7, D_1
        RET
;**************************************************
;七段码表
;**************************************************
TAB:
        DB 00111111B
        DB 00000110B
        DB 01011011B
        DB 01001111B
        DB 01100110B
        DB 01101101B
        DB 01111101B
        DB 00000111B
        DB 01111111B
        DB 01101111B
        DB 00000000B
END 
;=================================================
;程序在PROTEUS中运行的图像如下:

利用定时方式0,测量外部脉冲宽度(5到250ms),74HC595输出显示 - 非著名博主 - 电子信息角落


关键字:定时方式0  外部脉冲宽度  74HC595 引用地址:利用定时方式0,测量外部脉冲宽度(5到250ms),74HC595输出显示

上一篇:基于51单片机的4×4矩阵键盘电子琴
下一篇:单片机89S51,4×4矩阵键盘,控制16个发光二极管

推荐阅读最新更新时间:2024-03-16 16:02

【51单片机快速入门指南】2.4:74HC595、LED点阵屏及其SPI控制
普中51-单核-A2 STC89C52 Keil uVision V5.29.0.0 PK51 Prof.Developers Kit Version:9.60.0.0 硬知识 选自《普中51单片机开发攻略_V1.2》 IO 口扩展方式-串转并 使用的芯片是 74HC595。开发板板载 1 个 74HC595 芯片,仅需单片机 3 个 IO 口即可扩展 8 个,如果需要还可以将 2 个 74HC595 级联扩展出 16 个 IO,这就实现用少数 IO 资源控制多个设备。 74HC595 芯片介绍 74HC595 是一个 8 位串行输入、并行输出的位移缓存器,其中并行输出为三 态输出(即高电平、低电平和高
[单片机]
【51单片机快速入门指南】2.4:<font color='red'>74HC595</font>、LED点阵屏及其SPI控制
两片74HC595级联动态驱动8位数码管 51单片机
功能 : 用2片74HC595驱动8位数码管, 级联的最低1片595控制位选,那么第一片控制段选 时间 : 2013-3-28 21:11:59 作者 : Stone 版本 : REV1 平台 : STC89C52 11.0592MHz 现象 : 8位数码管从第一位开始从0计数,满10进位 版本说明 : 第0版本没有使用定时器中断,同时定义了一个 unsigned long int 变量计数 再把这个数的每位分离出来显示,所以导致有点闪屏,此版本使用定时器中断, 而且没有用 unsigned long int 之类的变量,而是用数组 Val 来计数,
[单片机]
ATmega16开发板教程(3)——74HC595驱动数码管显示
4、数码管显示 数码管驱动电路采用2片74HC595芯片进行IO扩展,仅仅只需3Pin即可驱动需要16位引脚的数码管。74HC595是一个8位串行输入、并行输出的位移缓存器。 只有对74HC595的工作原理和时序要了解清楚,才能更好的理解和编程。 工作原理: Ø1、74HC595是串行输入,即将一个字节Byte的数据通过8次以高低电平的形式送到数据引脚DS,且高字节先入,低字节后入,类似于堆栈; Ø2、那么数据什么时候进入呢?需要SCK(SH_CP)时钟上升沿来讲8位bit数据移入到移位寄存器中; 直接编程讲解: 如图,首先假设wei变量=01101001,然后取出最高位,那么&0x80,得到0,那么执行e
[单片机]
ATmega16开发板教程(3)——<font color='red'>74HC595</font>驱动数码管显示
74HC595驱动8段数码管的程序
//使用STM32F103作为MCU,74HC595驱动8段数码管的程序 #define HC595_OE_H() GPIO_SetBits(GPIOB, GPIO_Pin_12) #define HC595_OE_L() GPIO_ResetBits(GPIOB, GPIO_Pin_12) #define HC595_RCK_H() GPIO_SetBits(GPIOB, GPIO_Pin_13) #define HC595_RCK_L() GPIO_ResetBits(GPIOB, GPIO_Pin_13) #define HC595_SCK_H() GPIO_SetBits(GPIOB, GPIO_Pin_14) #de
[单片机]
小广播
添点儿料...
无论热点新闻、行业分析、技术干货……
设计资源 培训 开发板 精华推荐

最新单片机文章
何立民专栏 单片机及嵌入式宝典

北京航空航天大学教授,20余年来致力于单片机与嵌入式系统推广工作。

换一换 更多 相关热搜器件
电子工程世界版权所有 京B2-20211791 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved