background image

/*-----------------------------------------------
  名称:直流电机调速
  内容:1、学习目的:利用定时器产生 PWM,了解原理和使用方法
        2

 

、硬件要求:直流电机 定时器

        3、试验现象:按键调速,PWM

 

部分显示速度档位,电机根据档位调节速度 这个需

要把电机驱动输入端和 PWM 端连接起来
------------------------------------------------*/
#include<reg52.h>     //包含头文件,一般情况不需要改动,头文件包含特殊功能寄存器的
定义

sbit KEY1 = P3^1;     //定义调速按键
sbit PWM = P1^5;      //定义调速端口
unsigned char CYCLE;  //

 

定义周期 该数字 X

 

基准定时时间 如果是 10 则周期是 10 x 0.1ms

unsigned char PWM_ON ;//定义高电平时间
/******************************************************************/
/*                    

                                    

延时函数

*/

/******************************************************************/
void delay(unsigned int cnt)
{
 while(--cnt);
}
/******************************************************************/
/*                    

                                      

主函数

*/

/******************************************************************/
main()
{
unsigned char PWM_Num;//定义档位
TMOD |=0x01;//

 

定时器设置 1ms in 12M crystal

TH0=(65536-1000)/256; 
TL0=(65536-1000)%256;//定时 1mS 
IE= 0x82;  //打开中断
TR0=1;

CYCLE = 10;// 

 

时间可以调整 这个是 10

 

步调整 周期 10ms 8 位 PWM 就是 256 步

while(1)
  {
if(!KEY1)
  {
   delay(10000);
   if(!KEY1)
     {
      PWM_Num++;

  if(PWM_Num==4)PWM_Num=0;

       switch(PWM_Num){