找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1273|回复: 4
打印 上一主题 下一主题
收起左侧

如何用89C52单片机写脉宽测量的程序?求思路

[复制链接]
跳转到指定楼层
楼主
ID:981636 发表于 2021-12-17 22:21 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
有用89C52写的脉宽测量的程序。一定要用普中51学习板或相通的。要两路信号输入
1. 被测信号从P3.2定为T0和P3.3定为T1入

1. 总体LCD1602显示界面

a.    第一行高8位显示T0脉宽,第二行低8位显示T1脉宽,全用十进制显示
b.    第二行显示用T1的数值除以2个T0的数值。(此处可能要调可能是3个或4个)。N=T1/2T0
c.    如果商结果大于1999时,显示千位的 “OL”,(有两个板本另外一个是大于9999时)
也是最大显示为1999,(或9999),在这要求做3次计数相加求平均值再显示出来,如是9999的要求做5次计数再平均显示出来
分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:992336 发表于 2021-12-17 22:56 | 只看该作者
这是学校的项目吧,思路在教材里
回复

使用道具 举报

板凳
ID:993877 发表于 2021-12-18 08:40 | 只看该作者
自己多动手,这个不难得。网上很多参考
回复

使用道具 举报

地板
ID:407019 发表于 2021-12-18 18:10 | 只看该作者

例如这段程序就是检测超声波高电平脉冲的     检测脉冲宽度   可以使用定时器精确计时    类似的
void main(void)
{

         TMOD=0x01;                   //设T0为方式1,GATE=1;
         TH0=0;
         TL0=0;         
         ET0=1;             //允许T0中断
         EA=1;                           //开启总中断       

        LcdInit();
        LcdShowStr(0,0,PuZh);
        while(1)
        {
                 StartModule();
             while(!Echo);                //当RX为零时等待
             TR0=1;                            //开启计数
             while(Echo);                        //当RX为1计数并等待
             TR0=0;                                //关闭计数
         Conut();                        //计算
                 delayms(80);
        }
                       
}

回复

使用道具 举报

5#
ID:981636 发表于 2021-12-18 21:25 | 只看该作者
3125311919 发表于 2021-12-18 18:10
例如这段程序就是检测超声波高电平脉冲的     检测脉冲宽度   可以使用定时器精确计时    类似的
void m ...

有一点思路
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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