历史上的今天

今天是:2024年08月25日(星期日)

正在发生

2021年08月25日 | 51单片机-输入捕获

发布者:美好未来 来源: eefocus关键字:51单片机  输入捕获  定时器 手机看文章 扫描二维码
随时随地手机看文章

1.捕获高电平时间

我们利用定时器0的计数功能实现捕获外部引脚的高电平时间。定时器在不同用法里有不同称呼,比如我们这次是想得知某段过程持续了多长时间,用定时器的计数方式的话就叫做计数器。


我们这次选用的外部引脚还是P1.6,初始时先让该引脚输出低电平。


我们之前没有说过当TMOD低四位里的第三位GATE为1时是什么作用,这里说明一下,当这个位被置1的话,如果此时有“TR0=1;”,且P3.2必须为高电平的时候,才会触发定时器0的计数(P3.2为低电平时不会触发),也就是TL0每隔(12/11059200)秒就会加1,加到256变为0之后TH0就加1。一直加到65535就会有“TL0=255;”和“TH0=255;”,再加1就会全部变为0,这里复习以前讲过的知识。


所以我们把P1.6和P3.2连接起来,在 TR0置1时,只要P1.6输出高电平就会开启计数功能,P1.6输出低电平时就会停止计数功能。我们再用左边三个数码管显示TH0的数,右边三个显示TL0的数。


所以我们打算这样做

P1.6=0;

TR0=1;

P1.6=1;            //开始计数

delay_ms(30);  //延时一段时间

P1.6=0;            //停止计数

代码先用软件测试一下“delay_ms(30);”到底真正花费多少时间。

8.13.png

所以P1.6保持了41.784ms的高电平时间。


用杜邦线把P1.6和P3.2连接起来之后,注意我们的延时时间不要超过71ms,也就是高电平持续的时间不能超过71ms,这跟定时时间一次定不了71ms一样。因为计数最高只能到65535。


2.代码

把代码下载进去,观察数码管显示的数值。

#include  

#include //详见第六章第8讲

  

//请用杜邦线把P1.6和P3.2连接起来

void main()

{     

    LED_Init(); //初始化LED硬件模块

    TMOD=0x09;  //低四位 1001 

   

    BEEP=0;     //先让P1.6输出低电平

    TR0=1;

    BEEP=1;     //开始计数  

    delay_ms(30);

    BEEP=0;     //停止计数  

   

    LedBuff[0]=LedChar[TL0%10];

    LedBuff[1]=LedChar[(TL0/10)%10];

    LedBuff[2]=LedChar[(TL0/100)%10]; 

   

    LedBuff[3]=0x7F&LedChar[TH0%10];//加上小数点好区分

    LedBuff[4]=LedChar[(TH0/10)%10];

    LedBuff[5]=LedChar[(TH0/100)%10];

 

    while(1)

    {     

        SEG_Scan();//读取TH0和TL0的值  

    }   

}


数码管显示150.109,所以

(150*256+109)*(12/11059200)= 0.0417849s

捕获到的高电平时间为41.7849ms,可以说精度相当高。

这里大家忘记为什么“150*256”的话,请回去复习本章之前的内容。

还有TMOD的第七位GATE的功能与第三位的GATE的功能一样,只不过用的是定时器1来计数,触发开启计数的引脚为P3.3而已。详细请参考《手把手教你学51单片机》文档5.2.2节

关键字:51单片机  输入捕获  定时器 引用地址:51单片机-输入捕获

上一篇:51单片机-单独文件封装
下一篇:51单片机-数据类型强制转换

推荐阅读

随着人们生活水平的不断提高,对产品服务的要求也发生了变化,消费端开始升级并带来新的挑战和机遇。而服务机器人似乎为新的时代而生,逐步开始进入社会,进入家庭,服务于平民大众。在2018世界机器人大会上,北京康力优蓝机器人科技有限公司创始人兼首席执行官刘雪楠认为,服务机器人最大的市场是面向家庭的服务机器人,如果从商业价值的角度来讲,最大的...
2013年到2017年,中国机器人市场一直保持着高速的增长,但是突然出现了拐点。由过去的高速发展变成了低速的,甚至是零增长和负增长。通过分析,我们可以把原因归结为汽车行业引起的这个大的变化,同时3C行业去年增长也比较乏力,使得机器人市场发展受到了一定影响,这两个行业是中国机器人市场大幅度下滑的主要原因。 我们知道,机器人作为集各种高新技...
  爆料人士 Jon Prosser 今天分享了苹果内部正在研发的一款可折叠 iPhone 的一些信息,他表示,可折叠 iPhone 是真实存在的,该设备外观将类似于三星 Galaxy Z Flip。  此外 Prosser 还透露,可折叠 iPhone 的内部屏幕实际上将是两块独立的面板,类似微软的 Surface Duo, 而不是采用柔性玻璃。不过,Prosser 表示,当打开可折...
最近一直在使用机器人与上位机进行视觉抓取技术的调试,对 也稍有了解,就这样我开始接触到了HALCON. HALCON是德国MVc开发的一套完善的标准的算法包,拥有应用广泛的机器视觉集成开发环境。它节约了产品成本,缩短了开发周期——HALCON灵活的架构便于机器视觉,医学图像和图像分析应用的快速开发。在欧洲以及日本的工业界已经是公认具有最佳效能的Mach...

史海拾趣

问答坊 | AI 解惑

光驱改制个人影音系统的尝试

光驱作为计算机重要配置同样经历着飞快地更新换代的命运,不少被淘汰的低速光驱其实还有相当长的一段使用寿命,弃之可惜。倘若加以改造利用,定能为自己的生活添几分乐趣。…

查看全部问答∨

数据采集论文

不太完整,还需改进,希望各位多提意见啊,谢谢! [ 本帖最后由 TSB11 于 2009-4-27 21:02 编辑 ]…

查看全部问答∨

pxa270通过activesync传文件超过30m就断开

我的是pxa270加wince5.0的系统现在发现我的开发板用activesync通过usb同步,当传送小于10m的文件时可以传送但是传输当大于30m的文件时 马上activesync就断开了 这是什么原因呢,谢谢各位了我应该怎么什么 或者哪位有好用的ms2_usbfn.dll的话传一个 ...…

查看全部问答∨

键盘驱动开发

我在做键盘的驱动开发.... 想问下...在读取寄存器KPAS前我设置了时钟,还应该做什么设置啊?怎么 我明明是把键按下了,确读不出寄存器的值????…

查看全部问答∨

CE应用:菜单问题

偶这个问题,属于纯软件的问题,CE5.0系统。 我定义的弹出式菜单如下(示例): 1.增加 2.查看 等等,其中前面的1和2为图标。 问题是:如何使菜单可以响应数字1和2键的按下? 或者说Menu的消息处理,除了系统定义的外,自己如何增加? …

查看全部问答∨

问下5V的STM8能否与3。3V器件I2C通信

                                 问下5V的STM8能否与3。3V器件I2C通信,需要电平转换吗?如果需要,求最简单的硬件电路…

查看全部问答∨

MSP430之退出低功耗

在上一节里,我们提到为了摆脱低功耗,从而继续执行main函数中的其他内容,需要在中断处理程序中修改堆栈中保存的SR内容,将其中的SCG0、SCG1、OscOff、CPUOff置为0,这样,在中断返回的时候,可以使主程序自动的脱离低功耗进入活动状态。 但是, ...…

查看全部问答∨

谁申请AM3359成功了吗?

谁申请AM3359成功了吗? http://www.ti.com.cn/ww/more/solutions/industrial_ethernet.shtml?DCMP=hpa-gia-ethernet-cn&HQS=gia-ethernet-bhp-cn 工业以太网解决方案…

查看全部问答∨

【R7F0C809】PWM测试

本帖最后由 ltbytyn 于 2015-10-13 15:54 编辑 我的最终目的是要控制电机(玩具电梯),所以通过PWM调速还是很有必要的。 设定周期为10ms。实现10%~90%(占空比变化率为10%)总共九种占空比的波形输出。 实现思路,通过定时器计数,通过到达设 ...…

查看全部问答∨
小广播
设计资源 培训 开发板 精华推荐

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

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

更多每日新闻

 
EEWorld订阅号

 
EEWorld服务号

 
汽车开发圈

电子工程世界版权所有 京ICP证060456号 京ICP备10001474号-1 电信业务审批[2006]字第258号函 京公网安备 11010802033920号 Copyright © 2005-2024 EEWORLD.com.cn, Inc. All rights reserved