天堂v国产精品五月天老熟女久久|天天看黄色免费金沙 无码 中字|亚洲精品无码线AV无码专区在线|加勒比av福利色哟哟—精品人妻|最新黄片免费播了国产精品99ri|麻豆福利在线在线视频 91|无码久久久久每一日精品人妻|av一区亚洲午夜福利电影

下載手機汽配人

51單片機控制步進電機

用一塊AD0832對光敏電阻進行數(shù)據(jù)采集,將數(shù)字信號給51單片機,單片機將此數(shù)據(jù)與自己設定的數(shù)據(jù)進行比較來控制步進電機轉(zhuǎn)動,求電路圖和程序
提問者:網(wǎng)友 2018-08-06
最佳回答
這個簡單,讓我來教樓主怎么玩 首先我說下思路: 我們采用P1口來采集ADC0832的8位數(shù)據(jù),用P0.0口控制步進電機動作,利用T0的時間中斷來采集P1口的ADC0832數(shù)據(jù)并做出比較后設置步進電機啟動標志位start=1;并設置他的運行頻率,當然,樓主沒說怎么比較,我這就只是寫了個簡單的例子,一通百通,希望對你有幫助 下面是程序: #include //選用晶振11.0592MHz unsigned int m=0,n=0; //設置循環(huán)的周期 unsigned char start=0,t0temp=0; sbit Y0=P0^0; //控制步進電機的管腳 delay() { unsigned char i,j; for(i=m;i>0;i--) for(j=n;i>0;j--); } main() { //自檢測T0時間設置 ET0=1; TMOD|=0x01; TH0=0XFC; //1ms中斷掃描 TL0=0X66; IT0=1; //下降沿觸發(fā) TR0=0; //關(guān)閉掃描 /***********************初始化完畢***********************/ //****************I/O口程序 while(1) { while(start) { delay(); Y0=~Y0; } } } void counter1(void) interrupt 1 //T0計時器中斷 { if(t0temp%4)t0temp++; //4ms時間才采集一次P0口的數(shù)據(jù) else { t0temp++; //這里就寫你怎么做對比的程序,我舉個例子 if(P1>150) {start=1;n=1000;m=0;} //入錯采用12M晶振,那這時候控制步進電機的輸出周期就是1ms一次,也就是1000HZ else {start=0;n=0;m=0;} } } //PS:我在輸出頻率中用了兩個全局變量m,n可以延遲很長時間,樓主可以根據(jù)需要選用,一般16位的,選用一個就可以了,另一個放棄 OK,至于電路圖,我軟件沒有ADC0832的封裝,不然就發(fā)給你了,但想來樓主完全就沒必要擔心,ADC0832的8位數(shù)據(jù)接到P1口,P0.0控制步進電機啟動的三極管,電路圖就那么簡單!
回答者:網(wǎng)友
產(chǎn)品精選
在移動端查看: 51單片機控制步進電機
搜索問答
還沒有汽配人賬號?立即注冊

我要提問

汽配限時折扣

本頁是網(wǎng)友提供的關(guān)于“51單片機控制步進電機”的解答,僅供您參考,汽配人網(wǎng)不保證該解答的準確性。