普通直流電機調(diào)速調(diào)試程序- #include "reg52.h"
-
- typedef unsigned int u16;
- typedef unsigned char u8;
- sbit IN1 = P1^4; // 電機0為1正轉
- sbit IN2 = P1^5;
- sbit PWM=P3^7;
- u16 timer1;
- void Timer1Init()
- {
- TMOD|=0X10;//選擇為定時器1Z模式,工作方式1,僅用TR1打開啟動。
- TH1 = 0xFF;
- TL1 = 0xff; //1us
-
- ET1=1;//打開定時器1中斷允許
- EA=1;//打開總中斷
- TR1=1;//打開定時器
- }
- void forward_1()
- {
- IN1 = 0, IN2 = 1;//電機0正轉
- }
- void back_1()
- {
- IN1 = 1, IN2 = 0;//電機0反轉
-
- }
- void main()
- {
- back_1();
- Timer1Init(); //定時器1初始化
- while(1)
- {
- if(timer1>1000)
- {
- timer1=0;
- }
-
- if(timer1 <50) //1000范圍內(nèi)調(diào)節(jié)占空比,越大轉速越快
- {
- PWM=1;
- }
- else
- {
- PWM=0;
- }
- }
- }
- void Time1(void) interrupt 3 //3 為定時器1的中斷號
- {
- TH1 = 0xff;
- TL1 = 0xFF; //1us
- timer1++;
-
-
- }
復制代碼
|