|
1、運行時,按下相應的按鍵,電機即可產生正轉、反轉、停止的效果。同時相應的 LED 指示燈也會點亮。
當 P1.0 輸出低電平時:Q3,Q2 截止,Q7,Q1 導通,電機左端輸出高電平;
P1.1 輸出高電平時:Q8,Q4 截止,Q6,Q5 導通,電機右端輸出低電平,此時,電機正轉。
反之,當 P1.0 輸出高電平時:Q3,Q2 導通,Q7,Q1 截止,電機左端輸出低電平;
P1.1 輸出低電平時:Q8,Q4 導通,Q6,Q5 截止,電機右端輸出高電平,此時,電機反轉。
當 P1.0 輸出低電平時;P1.1 輸出同時也輸出低電平:電機兩端均為高電平,電機停止轉動。
2、需要注意的是,本例僅僅只是演示電機的正反轉和停止的控制。在實際應用中,這種電路是不能穩定可靠的工作的。
具體實際應用電路,需要參考相關資料。
仿真原理圖如下(proteus仿真工程文件可到本帖附件中下載)
按下 正轉按鍵 電機正轉
正轉
按下 反轉按鍵 電機反轉
反轉
按下 停止按鍵 電機停止
停止轉動
停止仿真
代碼:
- #include <reg52.h>
- #include <intrins.h>
- // 定義 3 個按鍵對應的引腳
- sbit K1 = P3^0; // 正轉
- sbit K2 = P3^1; // 反轉
- sbit K3 = P3^2; //停止
- // 定義 3 個 LED 對應的引腳
- sbit LED1 = P0^0;
- sbit LED2 = P0^1;
- sbit LED3 = P0^2;
- //定義電機的兩個引腳
- sbit MA = P1^0;
- sbit MB = P1^1;
- void main(void) {
- LED1 = 1; // 開始 3 個 LED 全部熄滅
- LED2 = 1;
- LED3 = 1;
-
- while (1) {
- if (K1 == 0) { // 判斷那個按鍵按下
- while (K1 == 0); // 直到按鍵松開才進入下一步處理
- LED1 = 0;
- LED2 = 1;
- LED3 = 1;
- MA = 0; // 正轉
- MB = 1;
- }
- if (K2 == 0) {
- while (K2 == 0);
- LED1 = 1;
- LED2 = 0;
- LED3 = 1;
- MA = 1; // 反轉
- MB = 0;
- }
- if (K3 == 0) {
- while (K3 == 0);
- LED1 = 1;
- LED2 = 1;
- LED3 = 0;
- MA = 0; // 停止
- MB = 0;
- }
- }
- }
復制代碼
壓縮包解壓后的文件夾結構
文件夾內容
Proteus8工程文件 路徑
Proteus8工程
hex文件 路徑
hex文件
Keil4工程文件 路徑
Keil4工程
源文件 路徑
源文件
各個文件所在文件夾壓縮包51hei下載
電機正反轉控制.rar
(661.88 KB, 下載次數: 65)
2021-1-7 23:11 上傳
點擊文件名下載附件
文件夾
|
評分
-
查看全部評分
|