找回密码
 立即注册

QQ登录

只需一步,快速开始

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

51单片机直流电机调速程序,1KHz的PWM波

[复制链接]
跳转到指定楼层
楼主
  直流电机调速,占空比可调。小白第一次发帖

电路原理图如下:

单片机源程序如下:
  1. #include "reg51.h"
  2. #include "led.h"
  3. #include "delay.h"

  4. uint d=100;  //占空比
  5. uint b=65436;  //初值计时100us
  6. bit flag=0;

  7. void timer0(void) interrupt 1  //中断部分代码,见下文的释疑
  8. {
  9.         if(flag)
  10.         {
  11.      TH0 = b/256;         //900
  12.      TL0 = b%256;
  13.          flag = 0;
  14.          P2_4 = 0;
  15.          b=65536-d;
  16.         }
  17.         else
  18.         {
  19.      TH0 = b/256;          //100
  20.      TL0 = b%256;
  21.          flag = 1;
  22.          P2_4 = 1;
  23.          b=64536+d;
  24.         }
  25. }

  26. void main()
  27. {   
  28.     TMOD = 0x01; //TMOD的值表示定时器工作方式选择                              
  29.     TH0 = b/256; //写入初始值,初始值可以决定定时多久
  30.     TL0 = b%256;
  31.     TF0 = 0; //计数到时TF0为1,即当TH0 = 0xff;TL0 = 0xff;再运行一步TF0 = 1;
  32.     TR0 = 1; //开始计数,从这时起,每运行一步TH0和TL0都会增加,直到TH0 = 0xff;TL0 = 0xff;                        
  33.     ET0 = 1; //允许定时器0中断
  34.     EA=1;   //开总中断
  35.     while(1)
  36.         {
  37.          if(P3!=0xff)                         //按键对应占空比调整
  38.          {        
  39.             TR0 = 0;
  40.                   delay_ms(10);
  41.        if((P3_4==0)&&(d>=100))
  42.            {
  43.            d=d-100;                                         //10倍程可调减
  44.            }
  45.           if((P3_5==0)&&(d>=10))
  46.           {
  47.            d=d-10;                                        //1倍程可调减
  48.           }
  49.           if(P3_6==0)
  50.           {         
  51.            d=d+10;                                           //1倍程可调加
  52.           }
  53.           if(P3_7==0)
  54.           {
  55.            d=d+100;                                          //10倍程可调加
  56.           }
  57.           while(P3!=0xff);
  58.           TR0 = 1;
  59.         }
  60.           if(d<=10)                                                 //设置占空比最大最小值
  61.           {
  62.                  d=10;
  63.           }
  64.           if(d>=990)
  65.           {
  66.              d=990;
  67.           }
  68.           delay_ms(2);
  69.           show_led_one(0,(d%100)/10);                 //实时显示占空比
  70.           delay_ms(2);
  71.           show_led_one(1,d/100);
  72.         }        
  73. }
复制代码

所有资料51hei提供下载:
PWM.zip (39.21 KB, 下载次数: 47)
PWM.pdf (37.2 KB, 下载次数: 26)

评分

参与人数 1黑币 +100 收起 理由
admin + 100 共享资料的黑币奖励!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:1 发表于 2018-12-10 03:39 | 只看该作者
补全原理图或者详细说明一下电路连接即可获得100+黑币
回复

使用道具 举报

板凳
ID:442986 发表于 2018-12-10 08:21 | 只看该作者
感谢大佬
回复

使用道具 举报

地板
ID:442986 发表于 2018-12-10 08:21 | 只看该作者
大佬可以的,感谢分享。。。。。。。。。。。
回复

使用道具 举报

5#
ID:442877 发表于 2018-12-10 20:55 | 只看该作者
根据管理员建议,附上了原理图
回复

使用道具 举报

6#
ID:211167 发表于 2018-12-11 14:40 | 只看该作者
感谢大佬的分享
回复

使用道具 举报

7#
ID:456747 发表于 2018-12-29 10:52 来自手机 | 只看该作者
admin 发表于 2018-12-10 03:39
补全原理图或者详细说明一下电路连接即可获得100+黑币

你好  有没有四个按键的直流电机调速程序 启停  正反转 加速 减速  谢谢大佬

Screenshot_20181228-211705.jpg (226.85 KB, 下载次数: 27)

Screenshot_20181228-211705.jpg
回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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