5iMX宗旨:分享遥控模型兴趣爱好

5iMX.com 我爱模型 玩家论坛 ——专业遥控模型和无人机玩家论坛(玩模型就上我爱模型,创始于2003年)
查看: 1077|回复: 4
打印 上一主题 下一主题

PWM转开关控制程序

[复制链接]
跳转到指定楼层
楼主
发表于 2021-3-18 20:59 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
最近需要高低电平控制外设,飞控的继电器输出没弄明白。刚好手头有闲置单片机,简单写了个PWM转IO控制程序。原程序为STC15F104E(对,就是那个外部中断有问题的单片机),程序仅1个延时参数,如有需要可根据不同单片机自行调整延时参数和扩展输出。
思路:死循环以下内容{内首先定义计数Count为0,输入PWM信号为低电平时无动作,输入PWM信号为高电平时以100us为单位计数,如果计数为15~25之间(1500us至2500us之间),则输出高电平,否则输出低电平}。
修改建议:1、不同单片机、时钟频率需更改100us延时参数;2、根据输出需要,可以将1000us至2000us之间分为若干时间段分别控制不同输出端口。

程序如下:
/*STC1F104E PWM->IO*/
//@11.0592MHz
#include<reg51.h>

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

sbit P_IN  = P3^5 ;
sbit P_OUT = P3^4 ;

unsigned char Count;

void Delay100us()
{
        unsigned char i, j;
        i = 2;
        j = 15;
        do
        {
                while (--j);
        } while (--i);
}

void main()
{
        P3M0 = 0x10 ;
        P3M1 = 0x20 ;

        while(1)
        {
                Count = 0;
                while(P_IN == 0);
                while(P_IN == 1)
                {
                        Count++;
                        Delay100us();
                }
                if(25>Count&&Count>15)
                {
                        P_OUT =1;
                }
                else
                {
                        P_OUT =0;
                }
        }
}

欢迎继续阅读楼主其他信息

沙发
发表于 2021-3-18 21:06 | 只看该作者

不错不错,程序够简洁。
我更喜欢STC15W204S-SOP8。
3
发表于 2021-3-18 22:07 | 只看该作者
现在片机的高级语言很好用啊。。。
4
发表于 2021-11-14 09:19 | 只看该作者
我想把监控摄像头后方得五向按键模拟出来。遥控器可以用飞控模式切换模块,一路PWM控制五路开关分成五段控制分控的五种飞行模式,就是用这个思路,控制五路开关,把监控摄像头的五向案件模拟出来。
5
发表于 2021-12-13 15:25 | 只看该作者
多谢楼主的慷慨,对于不会单片机程序来说是个天书,有它的电路图吗?幸苦楼主了!!!

您需要登录后才可以回帖 登录 | 我要加入

本版积分规则

关闭

【站内推荐】上一条 /1 下一条

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