搭了個H橋電路,控制電機的正反轉和PWM調速,程序是網上的,改改引腳就能用,電路和源程序如下:
功能:P1.1按鍵停止,P1.2左轉,P1.3右轉,P1.0調速
#include#define uchar unsigned char #define uint unsigned int sbit PW1=P0^0 ; sbit PW2=P0^1 ; //控制電機的兩個輸入 sbit accelerate=P1^0 ; //調速按鍵 sbit stop=P1^1 ; //停止按鍵 sbit left=P1^2 ; //左轉按鍵 sbit right=P1^3 ; //右轉按鍵 #define right_turn PW1=0;PW2=1 //順時針轉動 #define left_turn PW1=1;PW2=0 //逆向轉動 #define end_turn PW1=1;PW2=1 //停轉 uint t0=25000,t1=25000; //初始時占空比為50% uint a=25000; // 設置定時器裝載初值 25ms 設定頻率為20Hz uchar flag=1; //此標志用于選擇不同的裝載初值 uchar dflag; //左右轉標志 uchar count; //用來標志速度檔位 void keyscan(); //鍵盤掃描 void delay(uchar z); void time_init(); //定時器的初始化 void adjust_speed(); //通過 調整占空比來調整速度 //**********************************// void main() { time_init(); //定時器的初始化 while(1) { keyscan(); //不斷掃描鍵盤程序,以便及時作出相應的響應 } } //*************************************// void timer0() interrupt 1 using 0 { if(flag) { flag=0; end_turn; a=t0; //t0的大小決定著低電平延續時間 TH0=(65536-a)/256; TL0=(65536-a)%256; //重裝載初值 } else { flag=1; //這個標志起到交替輸出高低電平的作用 if(dflag==0) { right_turn; //右轉 } else { left_turn; //左轉 } a=t1; //t1的大小決定著高電平延續時間 TH0=(65536-a)/256; TL0=(65536-a)%256; //重裝載初值 } } void time_init() { TMOD=0x01; //工作方式寄存器 軟件起動定時器 定時器功能 方式1 定時器0 TH0=(65536-a)/256; TL0=(65536-a)%256; //裝載初值 ET0=1; //開啟定時器中斷使能 EA=1; // 開啟總中斷 TR0=0; } //****************************************// void delay(uchar z) //在12M下延時z毫秒 { uint x,y; for(x=z;x>0;x--) for(y=110;y>0;y--); } //******************************// void keyscan() { if(stop==0) { TR0=0; //關閉定時器0 即可停止轉動 end_turn; } if(left==0) { TR0=1; dflag=1; //轉向標志置位則左轉 } if(right==0) { TR0=1; dflag=0; //轉向標志復位則右轉 } if(accelerate==0) { delay(5) ; //延時消抖 if(accelerate==0) { while(accelerate==0) ; //等待松手 count++; if(count==1) { t0=20000; t1=30000; //占空比為百分之60 } if(count==2) { t0=15000; t1=35000; //占空比為百分之70 } if(count==3) { t0=10000; t1=40000; //占空比為百分之80 } if(count==4) { t0=5000; t1=45000; //占空比為百分之90 } if(count==5) { count=0; } } } }
聲明:本文內容及配圖由入駐作者撰寫或者入駐合作網站授權轉載。文章觀點僅代表作者本人,不代表電子發燒友網立場。文章及其配圖僅供工程師學習之用,如有內容侵權或者其他違規問題,請聯系本站處理。
舉報投訴
-
51單片機
+關注
關注
274文章
5705瀏覽量
124081 -
PWM調速
+關注
關注
2文章
34瀏覽量
10976 -
控制電機
+關注
關注
0文章
241瀏覽量
18209
發布評論請先 登錄
相關推薦
評論