登录  | 立即注册

游客您好!登录后享受更多精彩

扫一扫,访问微社区

QQ登录

只需一步,快速开始

开启左侧

[寒假笔记] PWM直流电机调速

[复制链接]
发表于 2023-1-30 09:14:12 | 显示全部楼层 |阅读模式
学习笔记
学习科目: 51
学习安排: 51
开始时间: 2023-01-23
结束时间: 2023-01-24
PWM:即脉冲宽度调制,在具有惯性的系统中,可以通过一系列脉冲的宽度进行调制,来等效地获得所需的模拟量
参数:频率=1/Ts  占空比=Ton/Ts   精度=占空比变化步距
Ts=Ton+Toff
产生PWM方法:
利用定时器、计数器与用户设置的比较值进行比较
如果计数器<比较值 输出0
如果计数器>比较值 输出1
代码如下
#include <reg52.h>
#include "Delay.h"
#include "Key.h"
#include "Timer0.h"
#include "Nixie.h"
sbit Motor = P1^0;
unsigned int  Counter,Compare;//计数器和比较值
unsigned char KeyNum,Speed;
void main()
{
        Timer0_Init();//定时器初始化
        while(1)
        {
                KeyNum=Key();读出按键,通过按键进行控制模式
                if(KeyNum==1)
                {
                        Speed++;
                        Speed%=4;
                        if(Speed==0){Compare=0;}       
                        if(Speed==1){Compare=50;}
                        if(Speed==2){Compare=75;}
                        if(Speed==3){Compare=100;}
                }
                Nixie(1,Speed);//通过数码管显示
        }
}
void Timer0_Routine() interrupt 1
{   
  TL0 = 0x9C;               
        TH0 = 0xFF;
        Counter++;
      /*产生PWM*/
        if(Counter>=100)
        {
            Counter = 0;
        }
        if(Counter<Compare)
        {Motor = 1;}
        else
        {Motor = 0;}       
}

好懒~~不想说~~~
您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

Powered by Discuz! X3.4

Copyright © 2001-2020, Tencent Cloud.

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