标题:
STC15F104E单片机使用PWM输出控制直流电机的转速 还可以做呼吸灯
[打印本页]
作者:
Precious丶粥稀
时间:
2017-4-7 14:24
标题:
STC15F104E单片机使用PWM输出控制直流电机的转速 还可以做呼吸灯
STC15F104E单片机 控制呼吸灯 电机
源程序:
/*******************************************************************************
*
* 51hei科技
--------------------------------------------------------------------------------
* 实 验 名 : PWM调速直流电机试验
* 实验说明 : 使用PWM输出控制直流电机的转速
* 连接方式 : 见连接图
* 注 意 :
*******************************************************************************/
#include <reg52.h>
//--定义使用的IO口--//
sbit PWM=P3^4;
sbit ANJIAN=P3^2;
//--定义一个全局变量--//
unsigned char timer0;
unsigned int Key=0;
unsigned int ZKB=0;
void Time0_Init();
void Init0_Init();
/*******************************************************************************
* 函 数 名 : main
* 函数功能 : 主函数
* 输 入 : 无
* 输 出 : 无
*******************************************************************************/
void main(void)
{
Init0_Init();
Time0_Init();
if(Key==4)
{
Key=0;
}
switch(Key)
{ case 1: ZKB=10;
break;
case 2: ZKB=40;
break;
case 3: ZKB=80;
break;
}
while(1)
{
if(timer0>100) //PWM周期为100*0.5ms
{
timer0=0;
}
if(timer0 < ZKB) //改变30这个值可以改变直流电机的速度
{
PWM=1;
}
else
{
PWM=0;
}
}
}
/*******************************************************************************
* 函 数 名 : Init0_Init()
* 函数功能 : 外部触发中断初始化
* 输 入 : 无
* 输 出 : 无
*******************************************************************************/
void Init0_Init()
{
// IT0=0; //低电平触发
IT0=1; //下降沿触发
EA=1;
EX0=1;
}
/*******************************************************************************
* 函 数 名 : Time0_Init()
* 函数功能 : 定时器初始化
* 输 入 : 无
* 输 出 : 无
*******************************************************************************/
void Time0_Init()
{
TMOD = 0x00; //选择模式0 13位计数 最大计数8192
//TH0=0x1C; //12.000M 预装初值
//TL0=0x18;
TH0 = (8192 - 1000)/32;
TL0 = (8192 - 1000)%32 ;
IE = 0x8A; //中断
TR0 = 1; //开启T0定时器
}
/*******************************************************************************
* 函 数 名 : INT0
* 函数功能 : 外部触发中断0的中断函数
* 输 入 : 无
* 输 出 : 无
*******************************************************************************/
void counter0(void) interrupt 0 using 1
{
EX0=0; //关外部中断
if(ANJIAN==0)
{
Key++; //按键次数
}
EX0=1; //开外部中断
}
/*******************************************************************************
* 函 数 名 : Time1
* 函数功能 : 定时器1的中断函数
* 输 入 : 无
* 输 出 : 无
*******************************************************************************/
void T0zd(void) interrupt 1 //3定时器1的中断号 1定时器0的中断号 0外部中断1 2外部中断2 4串口中断
{
// TH0 = 0xFE; //重新赋初值
// TL0 = 0x0C;
…………限于本文篇幅 余下代码请从51黑下载附件…………
复制代码
0.png
(61.24 KB, 下载次数: 91)
下载附件
2017-4-7 17:45 上传
下载:
009、STC15F104E系列单片机之产生PWM信号测试程序.rar
(80.95 KB, 下载次数: 178)
2017-4-7 14:23 上传
点击文件名下载附件
下载积分: 黑币 -5
作者:
xtxtt
时间:
2017-11-8 10:21
最近正在接触stc15f104,感谢楼主
作者:
xtxtt
时间:
2017-11-8 10:27
连接图好像没有附上?
作者:
warrenyan_dc
时间:
2018-1-31 10:09
谢谢分享;学习下
作者:
nanning321
时间:
2018-5-25 17:05
这程序不能用
作者:
caijinfa
时间:
2018-9-6 17:43
很好,学习下。
作者:
七娃
时间:
2018-9-6 21:28
感谢楼主很好,学习下。
作者:
51hei电控2112312
时间:
2019-5-22 03:05
THANK YOU !!! GOOD IDEA~~~
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1