大神,能发我一份51单片机 控制直流电机的转速 proteus电路图和程序吗?万分感谢!!!! 5
2015-05-21
展开全部
#include <reg52.h>
//--定义使用的IO口--//
sbit PWM=P1^0;
//--定义一个全局变量--//
unsigned char timer1;
void Time1Config();
/*******************************************************************************
* 函 数 名 : main
* 函数功能 : 主函数
* 输 入 : 无
* 输 出 : 无
*******************************************************************************/
void main(void)
{
Time1Config();
while(1)
{
if(timer1>100) //PWM周期为100*0.5ms
{
timer1=0;
}
if(timer1 < 30) //改变30这个值可以改变直流电机的速度
{
PWM=1;
}
else
{
PWM=0;
}
}
}
/*******************************************************************************
* 函 数 名 : Time1Config
* 函数功能 : 设置定时器
* 输 入 : 无
* 输 出 : 无
*******************************************************************************/
void Time1Config()
{
TMOD|= 0x10; //设置定时计数器工作方式1为定时器
//--定时器赋初始值,12MHZ下定时0.5ms--//
TH1 = 0xFE;
TL1 = 0x0C;
ET1 = 1; //开启定时器1中断
EA = 1;
TR1 = 1; //开启定时器
}
/*******************************************************************************
* 函 数 名 : Time1
* 函数功能 : 定时器1的中断函数
* 输 入 : 无
* 输 出 : 无
*******************************************************************************/
void Time1(void) interrupt 3 //3 为定时器1的中断号 1 定时器0的中断号 0 外部中断1 2 外部中断2 4 串口中断
{
TH1 = 0xFE; //重新赋初值
TL1 = 0x0C;
timer1++;
}
//--定义使用的IO口--//
sbit PWM=P1^0;
//--定义一个全局变量--//
unsigned char timer1;
void Time1Config();
/*******************************************************************************
* 函 数 名 : main
* 函数功能 : 主函数
* 输 入 : 无
* 输 出 : 无
*******************************************************************************/
void main(void)
{
Time1Config();
while(1)
{
if(timer1>100) //PWM周期为100*0.5ms
{
timer1=0;
}
if(timer1 < 30) //改变30这个值可以改变直流电机的速度
{
PWM=1;
}
else
{
PWM=0;
}
}
}
/*******************************************************************************
* 函 数 名 : Time1Config
* 函数功能 : 设置定时器
* 输 入 : 无
* 输 出 : 无
*******************************************************************************/
void Time1Config()
{
TMOD|= 0x10; //设置定时计数器工作方式1为定时器
//--定时器赋初始值,12MHZ下定时0.5ms--//
TH1 = 0xFE;
TL1 = 0x0C;
ET1 = 1; //开启定时器1中断
EA = 1;
TR1 = 1; //开启定时器
}
/*******************************************************************************
* 函 数 名 : Time1
* 函数功能 : 定时器1的中断函数
* 输 入 : 无
* 输 出 : 无
*******************************************************************************/
void Time1(void) interrupt 3 //3 为定时器1的中断号 1 定时器0的中断号 0 外部中断1 2 外部中断2 4 串口中断
{
TH1 = 0xFE; //重新赋初值
TL1 = 0x0C;
timer1++;
}
意法半导体(中国)投资有限公司
2020-01-15 广告
2020-01-15 广告
单片机(Microcontrollers)是一种集成电路芯片,是采用超大规模集成电路技术把具有数据处理能力的中央处理器CPU、随机存储器RAM、只读存储器ROM、多种I/O口和中断系统、定时器/计数器等功能(可能还包括显示驱动电路、脉宽调制...
点击进入详情页
本回答由意法半导体(中国)投资有限公司提供
推荐律师服务:
若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询