娇小w搡bbbb搡bbb,《第一次の人妻》,中国成熟妇女毛茸茸,边啃奶头边躁狠狠躁视频免费观看

歷史上的今天

今天是:2025年02月18日(星期二)

正在發生

2020年02月18日 | 89c51單片機控制兩個步進電機正反轉加減速

發布者:不懂之人 來源: 51hei關鍵字:89c51  單片機控制  步進電機  正反轉  加減速 手機看文章 掃描二維碼
隨時隨地手機看文章

序有詳細注釋。

仿真原理圖如下
0.png

單片機程序如下:

/*******************************************************************************

* 實 驗 名: 步進電機實驗


* 使用的IO: 電機用P1口,鍵盤使用P2.0、P2.1、P2.2、P2.3、P2.4、P2.5


* 按鍵功能:K1;正轉  K2;反轉  K3;低速轉動  K4;高速轉動  K5:電機切換  K6;停止


* 實驗效果: 按下K1鍵,順時針轉,按下K2鍵,逆時針轉,按下K3鍵,低速,按下K4鍵,高速。


按下K5鍵,轉動的電機停止,并切換到控制另一個電機

按下K6鍵,轉動的電機停止,按下K1或K2時,剛才停止的電機繼續轉動

*******************************************************************************/

#include "reg52.h"


//電機IO


#define GPIO_MOTOR P1            //宏定義 對端口進行操作,定義電機接口為P1


//sbit F1 = P1^0;


//sbit F2 = P1^1;


//sbit F3 = P1^2;


//sbit F4 = P1^3;


//sbit F5 = P1^4;


//sbit F6 = P1^5;


//sbit F7 = P1^6;


//sbit F8 = P1^7;                //另種操作,位操作,定義電機接口為P1.0~p1.7


//按鍵IO


sbit K1=P2^0;          //正轉


sbit K2=P2^1;          //反轉


sbit K3=P2^2;          // 減速


sbit K4=P2^3;          // 加速


sbit K5=P2^4;          // 電機切換


sbit K6=P2^5;          // 停止


unsigned char code FFW_X[8]={0xf1,0xf3,0xf2,0xf6,0xf4,0xfc,0xf8,0xf9}; //X反轉順序


unsigned char code FFZ_X[8]={0xf9,0xf8,0xfc,0xf4,0xf6,0xf2,0xf3,0xf1}; //X正轉順序


unsigned char code FFW_Y[8]={0x1f,0x3f,0x2f,0x6f,0x4f,0xcf,0x8f,0x9f}; //Y反轉順序


unsigned char code FFZ_Y[8]={0x9f,0x8f,0xcf,0x4f,0x6f,0x2f,0x3f,0x1f}; //Y正轉順序


unsigned char Direction,Speed,X_Y=0,stop=0;           //  Direction  轉向標志位,Speed 延時函數的參數,通過改變它大小來控制電機轉速

                                                                                           //X_Y 電機的參數  X_Y=0為Y電機 X_Y=1為X電機

void Delay(unsigned int t);                                           //stop為控制電機停止的標志位,但它為1時,電機停止


void Motor();                                                                   //電機旋轉函數



/*******************************************************************************


* 函 數 名 : main


* 函數功能 : 主函數


* 輸    入 : 無


* 輸    出 : 無


*******************************************************************************/



void main(void)


{


unsigned char i;


Speed=30;                   //Speed 延時函數的參數,通過改變它大小來控制電機轉速


while(1)


{


/********************檢測按鍵K1是否按下***********************/

if(K1==0) //檢測按鍵K1是否按下


{


Delay(1); //消除抖動


if(K1==0)


{


Direction=1;           //Direction 轉向標志位,為1時為正轉

stop=0;                   //按下K1時,對stop停止標志位清零,如果之前按下停止鍵,清零之后才能啟動


}


while((i<200)&&(K1==0))//檢測按鍵是否松開


{


Delay(1);


i++;


}


i=0;


}


/********************檢測按鍵K2是否按下***********************/


if(K2==0) //檢測按鍵K2是否按下


{


Delay(1); //消除抖動


if(K2==0)


{


Direction=2;                  //Direction 轉向標志位,為2時為反轉

stop=0;                          //按下K1時,也對stop停止標志位清零,如果之前按下停止鍵,清零之后才能啟動


}


while((i<200)&&(K2==0))//檢測按鍵是否松開


{


Delay(1);


i++;


}


i=0;


}


/********************檢測按鍵K3是否按下***********************/

if(K3==0)//檢測按鍵K3是否按下


{


Delay(1);//消除抖動


if(K3==0)


{


Speed=60;                                   //Speed 延時函數的參數,通過改變它大小來控制電機轉速

                                                   //87行代碼定義Speed=30;但按鍵K3按下后,Speed=60,這時轉速就會降下來

}


while((i<200)&&(K3==0))//檢測按鍵是否松開


{


Delay(1);


i++;


}


i=0;


}



/********************檢測按鍵K3是否按下***********************/


if(K4==0) //檢測按鍵K4是否按下


{


Delay(1); //消除抖動


if(K4==0)


{


Speed=20;                         //Speed 延時函數的參數,通過改變它大小來控制電機轉速

                                                   //87行代碼定義Speed=30;但按鍵K4按下后,Speed=20,這時轉速就會降下來升上去

}


while((i<200)&&(K4==0))//檢測按鍵是否松開


{


Delay(1);


i++;


}


i=0;


}


  if(K5==0)//檢測按鍵K1是否按下


{


Delay(1);//消除抖動


if(K5==0)


   Direction=0;                                   //X_Y 電機的參數  X_Y=0為Y電機 X_Y=1為X電機

   if(X_Y==0)                                   //當切換電機時,對Direction=0;對標志位清零,防止上個電機的轉向影響本次所控電機

       X_Y=1;

   else

       X_Y=0;


}


while((i<200)&&(K5==0))//檢測按鍵是否松開


{


Delay(1);


i++;


}


i=0;


}


   if(K6==0)//檢測按鍵K1是否按下


{


Delay(1);//消除抖動


if(K6==0)


   stop=1;                                   //stop為控制電機停止的標志位,但它為1時,電機停止


}


while((i<200)&&(K6==0))//檢測按鍵是否松開


{


Delay(1);


i++;


}


i=0;


}


Motor();


}


}


/*******************************************************************************


* 函 數 名: Motor


* 函數功能: 電機旋轉函數


* 輸    入: 無


* 輸    出: 無


*******************************************************************************/



void Motor()


{


unsigned char i;


for(i=0;i<8;i++)


{


if(Direction==1&&X_Y==0&&stop==0)                 //正轉&Y電機&電機沒按下停止


GPIO_MOTOR = FFW_Y[i]&0xf0;//取數據,‘&’按位與


if(Direction==2&&X_Y==0&&stop==0)                 //反轉&Y電機&電機沒按下停止


GPIO_MOTOR = FFZ_Y[i]&0xf0;


  if(Direction==1&&X_Y!=0&&stop==0)                 //正轉&X電機&電機沒按下停止


GPIO_MOTOR = FFW_X[i]&0x0F;//取數據


if(Direction==2&&X_Y!=0&&stop==0)                 //反轉&X電機&電機沒按下停止


GPIO_MOTOR = FFZ_X[i]&0x0f;


Delay(Speed); //調節轉速


}


}


/*******************************************************************************


* 函 數 名  : Delay


* 函數功能  : 延時


* 輸    入  : t


* 輸    出  : 無


*******************************************************************************/


void Delay(unsigned int t)


{


unsigned int k;


while(t--)


{


for(k=0; k<80; k++)


{ }


}


}


關鍵字:89c51  單片機控制  步進電機  正反轉  加減速 引用地址:89c51單片機控制兩個步進電機正反轉加減速

上一篇:基于單片機的火災報警器設計
下一篇:C51單片機利用74hc138擴展流水燈的仿真電路圖+程序

推薦閱讀

1 引言 S3C44B0是Samsung公司推出的一款為手持設備或其他通用設備開發的32位處理器,它基于ARM7TDMI核,沒有內存管理單元(MMU)。在采用無MMU的微處理器的嵌入式系統中廣泛采用的就是uClinux系統,作為linux的衍生系統,其具有支持多任務、內核精簡、高效穩定和源代碼開放的優點。系統移植的基本過程包括:獲取較新版本的linux-2.6.9內核源...
集微網消息,2月17日,北方華創在互動平臺回復投資者提問時稱,公司生產的OLED設備屬于平板顯示設備,在公司營業收入中占比較低。北方華創是國內產品系列最豐富的核心半導體工藝設備供應商之一,公司主要供應刻蝕機、沉積設備、氧化/擴散爐、清洗設備等,公司承擔02重大科技專項多項課題,最新的14nm制程設備已經交付客戶進行工藝驗證。北方華創此時回應OL...
手機廠商中,三星、華為等已將5G基帶集成到自研處理器中,成為業內佼佼者,據說蘋果也有類似的布局計劃,但詳情仍以未經佐證的傳言居多。不過有一點可以確認,基帶芯片需要相當幾年的時間開發,在此期間,蘋果仍舊依賴成熟的三方供應商。 2月18日消息 據外媒報道,近日一份蘋果與高通和解后達成的采購協議曝光,文件中稱蘋果在未來4年里繼續采用高通的5G芯...
本文作者:Robbie Paul,是Digi-Key Electronics物聯網業務解決方案總監物聯網(IoT)現在幾乎無處不在。農業是受影響最大的領域之一。農業行業中的智能農業是一個新興的概念,有機會讓數字時代的農業發生革命。智慧農業的驅動力是物聯網,物聯網從始至終將農業過程連接起來,使其更加以數據為驅動力,以數據為基礎且效率更高,同時還優化了相關的人工。...

史海拾趣

問答坊 | AI 解惑

高性能接觸電阻測試系統

接觸電阻是對通過閉合觸點對的電流的阻抗。這種類型的測量是針對例如連接器、繼電器和開關這樣的器件進行的。該電阻通常非常小,范圍從微歐到幾個毫歐,因此需要采用4線測量法。可編程掃描儀通過將一組測試儀器切換至多個觸點,大大縮短了測量時間 ...…

查看全部問答∨

讀《把時間當作朋友》(七):控制自己的大腦還是被大腦所控制

原文: 如果,我們不去控制我們自己的大腦,甚至根本就沒有意識到我們可以控制我們 的大腦,我們就只能被我們的大腦所控制。讓我們先描述一個日常生活中特別常 見的場景。 或許是因為考試臨近,或許是因為工作需要,你現在必須把一本書讀完。 ...…

查看全部問答∨

有關LCD中OSD的驅動編程問題,要寫個繁體字庫怎么寫?

現在在做一個LCD驅動,要加入繁體字,老大要我做個繁體字庫怎么做呢?沒點頭緒呢? 是把點陣放到數組里嗎?…

查看全部問答∨

wce5 基于mfc的對話框程序, 啟動的時候如何讓其隱藏?嘗試了windows的方法不支持啊。

如題。求解。 wce5 基于mfc的對話框程序, 啟動的時候如何讓其隱藏?嘗試了windows的方法不支持啊。 總是要閃一下才隱藏。…

查看全部問答∨

驅動程序啟動失敗,在[HKEY_LOCAL_MACHINE\Drivers\Active]下,DLL的號碼并不連貫:

我寫了一個GPIO的驅動,可以順利編譯并集成到OS中,查看 啟動后查看[HKEY_LOCAL_MACHINE\\Drivers\\BuiltIn]下的DLL的信息很正常。但是DLL沒有被啟動 查看 [HKEY_LOCAL_MACHINE\\Drivers\\Active]下,DLL的號碼并不連貫: 9后面的就是11了 ...…

查看全部問答∨

求助:在HDC設備上畫文字時為什么報183錯?程序如下:

在自己的類中建立一個兼容HDC設備,準備把文字繪制在上面,需要時復制到當前的窗口中,但在上面繪圖沒問題,寫文字時報183錯(當文件已存在時,無法創建該文件。 ),為什么?程序片斷如下: 說明:hdc是當前窗口傳下來的HDC,m_hdc是自己類中的 ...…

查看全部問答∨

請教液晶1602c調試問題

請教高手    調試液晶1602c時老是不能正確顯示,顯示單個字符A時只能顯示出 ||,然后兩個橫杠就沒了,請問是什么原因。    另外看很多例子檢查液晶忙時都檢查都檢查數據口第8位,并且先送0FFH到數據口,為什么?不送0FFH可以 ...…

查看全部問答∨

串口程序不穩定

請高手支招:我用Cyclone III做串口發送程序,現在用固定值調試,0為起始位,兩個停止位,偶爾會出現錯誤。比如,我把固定值設置為B6,每次發送n個。一次發送了n個B6,但是下一次可能會發送n個3B或n個67。把這3種可能寫成發送碼為:B6--0 0 ...…

查看全部問答∨

2812搜查令+TMS320F2812原理與開發

內容簡介 本書講述了TMS320F2812芯片的基本特點、硬件結構、內部功能模塊的基本原理等內容,并在結合應用實例的基礎上詳細闡述了各功能模塊的應用。同時專門針對電機控制領域的應用,詳細介紹了基于TMS320F2812數字信號處理器的永磁同步電機控制系 ...…

查看全部問答∨
小廣播
設計資源 培訓 開發板 精華推薦

最新單片機文章
何立民專欄 單片機及嵌入式寶典

北京航空航天大學教授,20余年來致力于單片機與嵌入式系統推廣工作。

 
EEWorld訂閱號

 
EEWorld服務號

 
汽車開發圈

 
機器人開發圈

電子工程世界版權所有 京ICP證060456號 京ICP備10001474號-1 電信業務審批[2006]字第258號函 京公網安備 11010802033920號 Copyright ? 2005-2025 EEWORLD.com.cn, Inc. All rights reserved
主站蜘蛛池模板: 武义县| 辉南县| 桂林市| 衡南县| 抚宁县| 多伦县| 拜城县| 张北县| 确山县| 普兰店市| 德格县| 新蔡县| 邳州市| 会同县| 当雄县| 正镶白旗| 南宁市| 砚山县| 澄城县| 泾川县| 岳普湖县| 西平县| 米泉市| 乌拉特后旗| 邢台县| 康定县| 汤原县| 土默特右旗| 大港区| 陕西省| 高邮市| 进贤县| 长垣县| 博兴县| 桃园县| 吉林省| 清镇市| 辰溪县| 杂多县| 连江县| 巩留县|