找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 1505|回復: 2
收起左側

如何用51單片機產生一個控制電機轉速和正反轉的PWM信號

[復制鏈接]
ID:1063055 發(fā)表于 2023-3-6 18:14 | 顯示全部樓層 |閱讀模式
謝謝大家
回復

使用道具 舉報

ID:883242 發(fā)表于 2023-3-6 23:33 | 顯示全部樓層
你需要先找到能夠產生一個控制電機轉速和正反轉的PWM信號的51單片機。
回復

使用道具 舉報

ID:579397 發(fā)表于 2023-3-6 23:54 | 顯示全部樓層

#include "reg52.h"                     //此文件中定義了單片機的一些特殊功能寄存器       

typedef unsigned int u16;          //對數據類型進行聲明定義
typedef unsigned char u8;

sbit PWM=P1.0               //PWM輸出

void delay(u16 i)      //延時函數
{
  while(i--);
}

void Timer0Init()
{
        TMOD|=0X01;          //選擇為定時器0模式,工作方式1,僅用TR0打開啟動。
        TH0=0XFC;                //給定時器賦初值,定時1ms
        TL0=0X18;       
        ET0=1;                        //打開定時器0中斷允許
        EA=1;                        //打開總中斷
        TR0=1;                        //打開定時器                       
}

void main()
{       
        Timer0Init();  //定時器0初始化
        while(1);               
}


void Timer0() interrupt 1
{
        static u16 out_time, bright_time;
        static u16 i;
       
        TH0=0XFC;          //給定時器賦初值,定時1ms
        TL0=0X18;
        i++;
        if(i==1000)    //1s
        {
                 i=0;
                 
                 for(bright_time=0;bright_time<=500;bright_time++)
                {  
                        out_time=500-bright_time;
                        PWM=1;
                        delay(out_time);
                        PWM=0;
                        delay(bright_time);
                }
               
                for(out_time=0;out_time<=500;out_time++)
                {
                        bright_time=500-out_time;
                        PWM=0;
                        delay(bright_time);
                        PWM=1;
                        delay(out_time);
                }
        }       
}
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規(guī)則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表