冰楓論壇

 找回密碼
 立即註冊
搜索
查看: 518|回覆: 0

[分享] AT89S52 製作遙控飛機

[複製鏈接]

2102

主題

0

好友

921

積分

高級會員

Rank: 4

UID
373967
帖子
6303
主題
2102
精華
0
積分
921
楓幣
4526
威望
903
存款
20000
贊助金額
0
推廣
0
GP
991
閱讀權限
50
在線時間
355 小時
註冊時間
2023-1-12
最後登入
2024-2-26

2023端午節紀念勳章 2023中秋節紀念勳章 2023聖誕節紀念勳章

發表於 2023-3-18 06:45:20 |顯示全部樓層
製作遙控飛機需要的材料會因為不同的設計而有所不同,以下列出一些可能需要的材料:

AT89S52 微控制器
遙控器和接收器
电机和电调
螺旋桨
電池
飛機骨架
遙控器電池
程式碼範例可以參考下面的程式碼,程式碼簡單的設定了兩個通道,分別用來控制飛機的上下和左右移動:


#include <reg52.h>

#define uint unsigned int
#define uchar unsigned char

sbit PWMA = P1^0;
sbit AIN2 = P1^1;
sbit AIN1 = P1^2;
sbit STBY = P1^3;
sbit BIN1 = P1^4;
sbit BIN2 = P1^5;
sbit PWMB = P1^6;

void delay(uint i)
{
    while(i--);
}

void main()
{
    uint m1 = 0, m2 = 0;
    uchar command;
    TMOD = 0x01;
    TH0 = 0xFC;
    TL0 = 0x67;
    TR0 = 1;
    ET0 = 1;
    EA = 1;
    while(1)
    {
        if(command == 0x80)  // 前進
        {
            AIN1 = 1;
            AIN2 = 0;
            PWMA = 1;
            STBY = 1;
        }
        else if(command == 0x40) // 後退
        {
            AIN1 = 0;
            AIN2 = 1;
            PWMA = 1;
            STBY = 1;
        }
        else if(command == 0x20) // 左轉
        {
            BIN1 = 1;
            BIN2 = 0;
            PWMB = 1;
            STBY = 1;
        }
        else if(command == 0x10) // 右轉
        {
            BIN1 = 0;
            BIN2 = 1;
            PWMB = 1;
            STBY = 1;
        }
        else if(command == 0x00) // 停止
        {
            STBY = 0;
            PWMA = 0;
            PWMB = 0;
        }
        else
        {
            // 做一些錯誤處理
        }
    }
}

void timer0() interrupt 1
{
    static uchar count = 0;
    static uchar command = 0;
    if(count == 0)
    {
        command = 0;
    }
    if(count < 8)
    {
        command <<= 1;
        if(P3 & 0x01)
        {
            command |= 0x01;
        }
    }
    if(count == 8)
    {
        count = 0;
    }
    else
    {
        count++;
    }
}
以下是連接腳位的示意圖:


                        +-----+
                        |     |
           VCC



      +-------------+--+  +--+
      |             |     |  |
      |             |     |  |
      |             |     |  |
      |    AT89S52  |     |  |
      |             |     |  |
      |             |     |  |
      |             |     |  |
      +-------------+     |  |
                           |  |
      P1.0-----PWMA-------+  |
      P1.1-----AIN2---------+
      P1.2-----AIN1----------+
      P1.3-----STBY-----------+
      P1.4-----BIN1-------------+
      P1.5-----BIN2--------------+
      P1.6-----PWMB----------------+
      
      P3.0-----Signal (遙控信號輸入)
      
      GND------------------------GND
這裡是腳位的解釋:

VCC 和 GND 分別是 AT89S52 的電源輸入和地線腳位。
PWMA、AIN2、AIN1 和 STBY 是控制馬達的四個控制腳。 PWMA 是 PWM 輸出, AIN2 和 AIN1 是控制電機轉向的輸入, STBY 是啟用和停用馬達的輸入。
BIN1、BIN2 和 PWMB 是控制另一個電機的三個控制腳。 BIN1 和 BIN2 是控制電機轉向的輸入, PWMB 是 PWM 輸出。
Signal 是從遙控器接收信號的腳位,這裡連接到 P3.0 上。
複製連結並發給好友,以賺取推廣點數
簡單兩步驟,註冊、分享網址,即可獲得獎勵! 一起推廣文章換商品、賺$$
高級模式
B Color Image Link Quote Code Smilies |上傳

廣告刊登意見回饋關於我們職位招聘本站規範DMCA隱私權政策

Copyright © 2011-2024 冰楓論壇, All rights reserved

免責聲明:本網站是以即時上載留言的方式運作,本站對所有留言的真實性、完整性及立場等,不負任何法律責任。

而一切留言之言論只代表留言者個人意見,並非本網站之立場,用戶不應信賴內容,並應自行判斷內容之真實性。

小黑屋|手機版|冰楓論壇

GMT+8, 2024-2-27 00:56

回頂部