找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 17892|回复: 11
收起左侧

检测51单片机某个io口输入信号的高低电平时间

  [复制链接]
ID:334416 发表于 2018-5-25 00:19 | 显示全部楼层 |阅读模式
本人是个新手刚刚接触51单片机,怎么编程去计算51单片机某个io口的输入高低电平时间,比如我从P1.0口输入了一个方波信号,那么怎么通过单片机编程去检测我这个方波高电平的时间(或者说长度),还有低电平的时间(或者说长度),这个检测时间要精确到ms。
回复

使用道具 举报

ID:331575 发表于 2018-5-25 06:52 来自手机 | 显示全部楼层
可以。当P1.0管脚变成低电平时。试着触发定时器T0,在每一次进入定时器中断的时候计数并显示就可以了

评分

参与人数 1黑币 +20 收起 理由
admin + 20 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

ID:7485 发表于 2018-5-25 10:02 | 显示全部楼层
普通IO口,可以像检测按键一样的检测某个脚的状态,检测到上升沿开始计时,下降沿停止计时,读取即时数据即可。

如果使用int0、int1端口可以采用中断方式,上升沿触发中断,中断程序中启动定时器、转下降沿触发,再中断时停止计时,并读取时间数据。不过传统的AT89***系列没有”上升沿触发”功能,仅有低电平和下降沿触发。如果使用这类芯片可以使用外部的反相器实现,这个就比较麻烦了。

据我所知,STC的后来的1T单片机好像都有这个功能。

评分

参与人数 1黑币 +40 收起 理由
admin + 40 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

ID:277550 发表于 2018-5-25 11:14 | 显示全部楼层
可以使用 外部中断+定时器

评分

参与人数 1黑币 +20 收起 理由
admin + 20 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

ID:337971 发表于 2018-5-25 12:53 | 显示全部楼层
外部中断加定时器了解一下
回复

使用道具 举报

ID:338022 发表于 2018-5-25 14:06 | 显示全部楼层
后期STC单片机的INT0可上升沿和下降沿中断, 中断后打开定时器计时,再次中断时读取定时器,两个时间一减即为电平时长,当然还可能定时器溢出.这个在要定时器中断里处理.

评分

参与人数 1黑币 +30 收起 理由
admin + 30 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

ID:338264 发表于 2018-5-25 18:14 | 显示全部楼层
可以用单片机定时器控制
回复

使用道具 举报

ID:111634 发表于 2018-5-25 22:09 | 显示全部楼层
本帖最后由 zl2168 于 2018-5-25 22:16 编辑

你的题目叫检测脉冲宽度,
介绍你一个仿真案例
实例72  测量脉冲宽度先Proteus仿真一下,确认有效。 实例72 测量脉冲宽度.rar (52.14 KB, 下载次数: 174)
回复

使用道具 举报

ID:278418 发表于 2018-5-25 22:44 | 显示全部楼层
外部中断,检测到一个上升沿,定时开启(加个反相器判断上升沿)。在找一个外部中断判断下降沿关闭定时,得出高电平时间。当然要把方波同时接到两个外部中断口。
回复

使用道具 举报

ID:85743 发表于 2019-5-24 15:59 | 显示全部楼层
谢谢8楼,下载学习。
回复

使用道具 举报

ID:85743 发表于 2019-5-24 16:03 | 显示全部楼层
zl2168 发表于 2018-5-25 22:09
你的题目叫检测脉冲宽度,介绍你一个仿真案例实例72  测量脉冲宽度先Proteus仿真一下,确认有效。

以上 ...

老大,没有原程序
回复

使用道具 举报

ID:93224 发表于 2019-5-24 18:22 | 显示全部楼层
利用定时器
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表