基于单片机用软件实现直流电机PWM调速系统的开题报告

如题,求基于单片机用软件实现直流电机PWM调速系统的开题报告谢谢!... 如题,求基于单片机用软件实现直流电机PWM调速系统的开题报告
谢谢!
展开
 我来答
百度网友c66740b58
2010-03-06 · TA获得超过469个赞
知道小有建树答主
回答量:179
采纳率:0%
帮助的人:149万
展开全部
  这里有个PWM控制LED给你参考下

  使用两个定时器Timer0和Timer1中断实现PWM控制LED明暗效果。其中Timer0工作在方式1用于脉冲宽定时,Timer1工作于方式2用于占空比的定时。在这个程序里,脉冲宽是个固定的值,通过递增、递减改变占空比,从而实现LED明暗效果。如果将LED换作蜂鸣器,通过改变脉冲宽可改变音调。

  /**************************************/
  //文件名:main.c
  //作 者:jammy-lee
  //日 期:2009-3-18
  //功 能:使用两个定时器模拟PWM
  /**************************************/

  //头文件
  #include<reg51.h>

  //宏定义
  typedef unsigned char uint8;
  typedef unsigned int uint16;
  typedef long unsigned int uint32;

  uint16 time0;
  uint16 PULSE_WIDTH = 0x300; //脉冲宽
  uint8 DUTY_CYCLE = PULSE_WIDTH*(1/5);//占空比

  //延时子程序
  void delay(uint8 ms)
  {
  uint8 i;
  while(ms--)
  {
  for(i=0;i<120;i++);
  }
  }

  //定时器0,控制低电平
  void Timer0() interrupt 1
  {
  TR1 = 0; //关闭定时器1
  time0 = 0xFFFF - PULSE_WIDTH; //定时器0初始值
  TL0 = (uint8)time0;
  TH0 = time0 >> 8;
  TH1 = DUTY_CYCLE;
  TR1 = 1;
  P0 = 0x00; //打开定时器1
  }

  //定时器1.控制高电平
  void Timer1() interrupt 3
  {
  TR1 = 0; //关闭定时器1
  P0 = 0xFF;
  }

  //主函数
  int main(void)
  {
  TMOD = 0x21; //定时器1:工作方式1,定时器0:工作方式2
  time0 = 0xFFFF - PULSE_WIDTH; //定时器0初始值
  TL0 = (uint8)time0;
  TH0 = time0 >> 8;
  TL1 = DUTY_CYCLE;
  TH1 = DUTY_CYCLE;
  EA = 1; //允许全局中断
  ET0 = 1; //允许定时器0中断
  ET1 = 1; //允许定时器1中断
  TR0 = 1;

  //主循环
  while(1)
  {

  do{
  if(DUTY_CYCLE != PULSE_WIDTH*(1/4))
  {
  DUTY_CYCLE++;
  delay(5);
  }
  else break;
  }while(1);

  do{
  if(DUTY_CYCLE != 0x01)
  {
  DUTY_CYCLE--;
  delay(5);
  }
  else break;
  }while(1);

  }
  }
艾普斯
2024-07-18 广告
稳频稳压电源哪家好?艾普斯电源(苏州)有限公司开始专业研发、制造及营销交流稳压电源,满足全球电子及信息业对电源设备日益蓬勃的市场需求。迄今为止,业已发展成为交流不间断电源、稳压电源、变频电源、中频航空- 军事专用电源、直流电源、逆变电源等产... 点击进入详情页
本回答由艾普斯提供
Leozhangyang
2010-02-22 · 超过14用户采纳过TA的回答
知道答主
回答量:47
采纳率:0%
帮助的人:28.9万
展开全部
二楼的兄弟可否报一下书名,我想看一下这本书。
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
凤波府夜梅
2020-01-14 · TA获得超过3820个赞
知道大有可为答主
回答量:3137
采纳率:26%
帮助的人:237万
展开全部
  这里有个PWM控制LED给你参考下
  使用两个定时器Timer0和Timer1中断实现PWM控制LED明暗效果。其中Timer0工作在方式1用于脉冲宽定时,Timer1工作于方式2用于占空比的定时。在这个程序里,脉冲宽是个固定的值,通过递增、递减改变占空比,从而实现LED明暗效果。如果将LED换作蜂鸣器,通过改变脉冲宽可改变音调。
  /**************************************/
  //文件名:main.c
  //作
者:jammy-lee
  //日
期:2009-3-18
  //功
能:使用两个定时器模拟PWM
  /**************************************/
  //头文件
  #include<reg51.h>
  //宏定义
  typedef
unsigned
char
uint8;
  typedef
unsigned
int
uint16;
  typedef
long
unsigned
int
uint32;
  uint16
time0;
  uint16
PULSE_WIDTH
=
0x300;
//脉冲宽
  uint8
DUTY_CYCLE
=
PULSE_WIDTH*(1/5);//占空比
  //延时子程序
  void
delay(uint8
ms)
  {
  uint8
i;
  while(ms--)
  {
  for(i=0;i<120;i++);
  }
  }
  //定时器0,控制低电平
  void
Timer0()
interrupt
1
  {
  TR1
=
0;
//关闭定时器1
  time0
=
0xFFFF
-
PULSE_WIDTH;
//定时器0初始值
  TL0
=
(uint8)time0;
  TH0
=
time0
>>
8;
  TH1
=
DUTY_CYCLE;
  TR1
=
1;
  P0
=
0x00;
//打开定时器1
  }
  //定时器1.控制高电平
  void
Timer1()
interrupt
3
  {
  TR1
=
0;
//关闭定时器1
  P0
=
0xFF;
  }
  //主函数
  int
main(void)
  {
  TMOD
=
0x21;
//定时器1:工作方式1,定时器0:工作方式2
  time0
=
0xFFFF
-
PULSE_WIDTH;
//定时器0初始值
  TL0
=
(uint8)time0;
  TH0
=
time0
>>
8;
  TL1
=
DUTY_CYCLE;
  TH1
=
DUTY_CYCLE;
  EA
=
1;
//允许全局中断
  ET0
=
1;
//允许定时器0中断
  ET1
=
1;
//允许定时器1中断
  TR0
=
1;
  //主循环
  while(1)
  {
  do{
  if(DUTY_CYCLE
!=
PULSE_WIDTH*(1/4))
  {
  DUTY_CYCLE++;
  delay(5);
  }
  else
break;
  }while(1);
  do{
  if(DUTY_CYCLE
!=
0x01)
  {
  DUTY_CYCLE--;
  delay(5);
  }
  else
break;
  }while(1);
  }
  }
已赞过 已踩过<
你对这个回答的评价是?
评论 收起
收起 更多回答(1)
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式