登录
注册
登录
注册
学院
工具云
项目外包
技术会议
计算公式
资源
资讯
社区
文库
专题
项目
请
登录
后使用快捷导航
没有帐号?
立即注册
社区
›
研发信息&资源
›
研发应用
如何用51单片机实现直流电机调速?
布丁奶茶
/
于 2013-3-13 14:15
/
1
/
1296
/
[复制链接]
[只看该作者]
[打印]
[上一主题]
[下一主题]
布丁奶茶
积分
48
精华
0
学分
245
技术分
0
最后登录 2014-3-31
加为好友
发送消息
访问家园
动力与电气工程250
分享到:
QQ好友和群
QQ空间
腾讯微博
腾讯朋友
收藏
0
分享
淘帖
0
支持
0
反对
0
相关帖子
•
在用flotherm做热设计时,手机主板里面的含铜量与导热系数存在什么样的量化关系?还是只有经验值?
举报
使用道具
提升卡
置顶卡
沉默卡
喧嚣卡
变色卡
千斤顶
照妖镜
|
回复
共 1 个关于本帖的回复 最后回复于 2013-3-13 14:16
狗狗
积分
0
精华
0
学分
173
技术分
0
最后登录 2014-4-9
加为好友
发送消息
访问家园
个人资料
主题列表
发消息
沙发
狗狗
新来的
发表于 2013-3-13 14:16:54
|
只看该作者
直流电机调速主要采用PWM调速方式实现。51单片机实现直流电机调速可以采用中断方式实现PWM脉宽的控制,实现调速功能。 下例是51单片机结合中断实现直流电机调速的程序。#include<reg52.h> sbit KEY1 = P3^1; //定义调速按键sbit PWM = P1^5; //定义调速端口unsigned char CYCLE; //定义周期T=x*0.1msunsigned char PWM_ON ; //定义高电平时间 void delay(unsigned int cnt){ while(--cnt);} main(){ unsigned char PWM_Num; TMOD |=0x01; TH0=(65536-1000)/256; TL0=(65536-1000)%256; IE= 0x82; TR0=1; CYCLE = 10; while(1) { if(!KEY1) { delay(10000); if(!KEY1) { PWM_Num++; if(PWM_Num==4) PWM_Num=0; switch(PWM_Num) { case 0
0=0x06
WM_ON=0;break; case 1
0=0x5B
WM_ON=4;break; case 2
0=0x4F
WM_ON=6;break; case 3
0=0x66
WM_ON=8;break; default:break; } } } }}void tim(void) interrupt 1 using 1{ static unsigned char count; TH0=(65536-1000)/256; TL0=(65536-1000)%256; if (count==PWM_ON) { PWM = 1; } count++; if(count == CYCLE) { count=0; if(PWM_ON!=0) PWM = 0; }}
举报
使用道具
照妖镜
回复
支持
反对
返回列表
B
Color
Image
Link
Quote
Code
Smilies
高级模式
您需要登录后才可以回帖
登录
|
立即注册
本版积分规则
发表回复
回帖后跳转到最后一页
发表主题
热门导读
回复
点评
评分
分享
关注我们
快速回复
快速发帖
返回顶部
返回列表
360网站安全检测平台
共 1 个关于本帖的回复 最后回复于 2013-3-13 14:16