数码之家

 找回密码
 立即注册
搜索
查看: 3077|回复: 16

按键触发脉冲的小程序。

[复制链接]
发表于 2020-5-28 00:53:23 | 显示全部楼层 |阅读模式
30家元
按一下按键,触发stc15w104第四输入端口,使高电平降到低电平,stc15w104检测到低电平,就从第三脚输出从0到48000rpm(转)的方形脉冲,脉冲持续40秒。按键松开,stc15w104第四输入端口恢复高电平,stc15w104检测到第四脚高电平,则第三脚无输出任何脉冲。任何时候按住按键就有脉冲发出,持续40秒,按键松开,无脉冲输出。写一段小程序。恳请各位大师帮忙,有悬赏。有什么问题在下方留言。谢谢!


发表于 2020-5-28 09:17:28 | 显示全部楼层
毛毛悬赏就算了,连描述也描述不清。  你按一下就松开,到底是继续发送直到40s结束还是马上就停呀?
0到48000rpm(转)的方形脉冲  是什么鬼呀?
回复

使用道具 举报

发表于 2020-5-28 13:03:53 | 显示全部楼层
mousebat04 发表于 2020-5-28 09:17
毛毛悬赏就算了,连描述也描述不清。  你按一下就松开,到底是继续发送直到40s结束还是马上就停呀?
0到480 ...

:lol:字数补丁,补丁
回复

使用道具 举报

 楼主| 发表于 2020-5-28 13:34:52 | 显示全部楼层
是stc15w104第5脚输入检测按键变化,低电平,按键按下,第6脚输出0到48000RPM转的pwm方形脉冲,高电平按键不按下,则第6脚无输出,按一下发送40s脉冲,松开则停止。
回复

使用道具 举报

 楼主| 发表于 2020-5-28 14:54:08 | 显示全部楼层
是stc15w104第五脚检测到有按键按下,从高电平到低电平,第六脚输出48000RPM转的pwm方形脉冲,有按键按下,则第六脚有40秒的脉冲,任何时候松开按键,stc15w104检测第五脚是高电平,则六脚输出中止输出任何脉冲。如果是持续按下按键,则持续40秒,中间停顿5秒,再输出,这样持续不停循环,中间按键松开则6脚无输出。
回复

使用道具 举报

 楼主| 发表于 2020-5-28 14:55:44 | 显示全部楼层
是stc15w104第五脚检测到有按键按下,从高电平到低电平,第六脚输出48000RPM转的pwm方形脉冲,有按键按下,则第六脚有40秒的脉冲,任何时候松开按键,stc15w104检测第五脚是高电平,则六脚输出中止输出任何脉冲。如果是持续按下按键,则持续40秒,中间停顿5秒,再输出,这样持续不停循环,中间按键松开则6脚无输出。
回复

使用道具 举报

 楼主| 发表于 2020-5-28 14:59:21 | 显示全部楼层
mousebat04 发表于 2020-5-28 09:17
毛毛悬赏就算了,连描述也描述不清。  你按一下就松开,到底是继续发送直到40s结束还是马上就停呀?
0到480 ...

是stc15w104第五脚检测到有按键按下,从高电平到低电平,第六脚输出48000RPM转的pwm方形脉冲,有按键按下,则第六脚有40秒的脉冲,任何时候松开按键,stc15w104检测第五脚是高电平,则六脚输出中止输出任何脉冲。如果是持续按下按键,则持续40秒,中间停顿5秒,再输出,这样持续不停循环,中间按键松开则6脚无输出。
回复

使用道具 举报

发表于 2020-6-16 23:34:25 | 显示全部楼层
完全看不懂你的逻辑
回复

使用道具 举报

发表于 2020-6-23 17:07:50 | 显示全部楼层
唐承龙 发表于 2020-5-28 14:59
是stc15w104第五脚检测到有按键按下,从高电平到低电平,第六脚输出48000RPM转的pwm方形脉冲,有按键按下 ...

48000RPM转的pwm方形脉冲  指的是 48000hz的方波,还是一定占空比的方波哦
回复

使用道具 举报

发表于 2020-6-24 10:52:21 来自手机浏览器 | 显示全部楼层
RPM为每分钟转数,是电机的参数,单片机能检测转数?电机有反馈信号?
回复

使用道具 举报

发表于 2020-6-29 00:50:40 | 显示全部楼层

没有芯片,仿真可用。
时钟设置为12MHZ,定时器0设置为1微秒中断。10个1US翻转一次输出,50000HZ。如果输入脚为低就计时,40秒内可以输出,40-45秒关掉。然后循环。
如果不限制P3.1输出的话,可以把输出改到第3脚T0CLK0或者第5脚T2CLK0,利用定时器溢出自动翻转,可以让频率更准。

// Writen by elecfunwb @ 2020-06-28
// https://www.mydigit.cn/forum.php?mod=viewthread&tid=160466
// MCU:STC15W104
// 第五脚检测到有按键按下,由高电平转为低电平,第六脚输出48000RPM转的pwm方形脉冲。
// 如果是持续按下按键,则输出持续40秒,中间停顿5秒,再输出,循环。
// 任何时候松开按键,,则六脚中止输出任何脉冲。

// MCU: STC15W104
// 时钟设置为12MHz
// PIN1  P3.4/RST/T0/~INT2/MCLKO
// PIN2  VCC
// PIN3  P3.5/T0CLKO/~INT3
// PIN4  GND
// PIN5  T2CLKO/~INT4/P3.0
// PIN6  T2/P3.1
// PIN7  INT0/P3.2
// PIN8  RSTOUT_LOW/INT1/P3.3

#include "reg51.h"

#define FOSC 12000000L                      //芯片时钟
#define T1US (65536-FOSC/1000000)           //1T模式

sfr P3M1 = 0xb1;
sfr P3M0 = 0xb2;

sfr AUXR = 0x8e;                            //Auxiliary register
sfr INT_CLKO = 0x8f;                        //外部中断与时钟输出控制寄存器

sbit IO_IN = P3^0;
sbit IO_OUT = P3^1;

unsigned int gUsCnt = 0;                    //定时器中断微秒计数
unsigned long gOutCnt = 0;                  //输出计数

//定时器0中断服务函数,每1us中断一次,加上处理时间后约48000HZ
void tm0_isr() interrupt 1
{
    if (++gUsCnt >= 10) {                   //10次1US约为50000HZ
        gUsCnt = 0;
        if (!IO_IN) {                       //输入脚为低电平时才能输出
            if (++gOutCnt < 4000000) {      //0~40秒输出方波
                IO_OUT = ~IO_OUT;           //输出IO电平翻转
            } else if (gOutCnt < 4500000) { //40~45秒关闭输出
                IO_OUT = 0;
            } else {                        //超过45秒重新计时
                gOutCnt = 0;
            }
        } else {                            //输入脚为高电平时,输出为低
            IO_OUT = 0;
            gOutCnt = 0;
        }
    }
}

void main()
{
    P3M0 = 0x00;                    //IO设置为标准模式,弱上拉
    P3M1 = 0x00;

    IO_IN = 1;                      //输入脚设为高电平
    IO_OUT = 0;                     //输出脚设为低电平
    gUsCnt = 0;                     //清空计数值
    gOutCnt = 0;

    AUXR |= 0x80;                   //定时器0为1T模式
    TMOD = 0x00;                    //设置定时器0为模式0(16位自动重装载)
    TL0 = T1US;                     //初始化计时值
    TH0 = T1US >> 8;
   
    ET0 = 1;                        //打开定时器0中断
    EA = 1;                         //打开全局中断

    TR0 = 1;                        //定时器0开始计时
    while (1);
}




回复

使用道具 举报

 楼主| 发表于 2020-7-12 23:00:34 | 显示全部楼层
elecfunwb 发表于 2020-6-29 00:50
没有芯片,仿真可用。
时钟设置为12MHZ,定时器0设置为1微秒中断。10个1US翻转一次输出,50000HZ。如果输 ...

尊敬的大师,我还有另一款定时器芯片的软件和硬件没搞懂,是关于psoc的,你懂不懂?上面的程序能驱动空心杯电机吗?我说的是占空比?
回复

使用道具 举报

发表于 2020-7-13 23:01:53 | 显示全部楼层
唐承龙 发表于 2020-7-12 23:00
尊敬的大师,我还有另一款定时器芯片的软件和硬件没搞懂,是关于psoc的,你懂不懂?上面的程序能驱动空心 ...

电机驱动没搞过,不会
回复

使用道具 举报

 楼主| 发表于 2020-9-14 16:51:42 | 显示全部楼层
我想加你的微信号,那个单片机我的引脚定义有错误?你能在微信里编好程序我付款给你。
回复

使用道具 举报

 楼主| 发表于 2020-9-14 17:25:50 | 显示全部楼层
你的微信号有吗? 我想向你请教几个问题,是关于定时器芯片的硬件和软件的问题,我的微信号是15299188560.
回复

使用道具 举报

 楼主| 发表于 2020-10-18 20:59:55 | 显示全部楼层
8000RPM到24000RPM转速,在3.7v250ma电池下面。是怎么换算的8000/60=133.3个脉冲,换算成周期是0.0075秒的方波,就是每秒种133个7.5ms的pwm方波。24000/60=400个脉冲,换算成周期是0.0025秒的方波,就是每秒钟400个2.5ms的pwm方波。是stc15w104c第6脚p3.1输入,第8脚p3.3输出。
回复

使用道具 举报

 楼主| 发表于 2020-10-18 21:01:46 | 显示全部楼层
8000RPM到24000RPM转速,在3.7v250ma电池下面。是怎么换算的8000/60=133.3个脉冲,换算成周期是0.0075秒的方波,就是每秒种133个7.5ms的pwm方波。24000/60=400个脉冲,换算成周期是0.0025秒的方波,就是每秒钟400个2.5ms的pwm方波。是stc15w104c第6脚p3.1输入,第8脚p3.3输出
回复

使用道具 举报

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

本版积分规则

APP|手机版|小黑屋|关于我们|联系我们|法律条款|技术知识分享平台

闽公网安备35020502000485号

闽ICP备2021002735号-2

GMT+8, 2025-5-6 04:09 , Processed in 0.156001 second(s), 10 queries , Redis On.

Powered by Discuz!

© 2006-2025 MyDigit.Net

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