冰楓論壇

 找回密碼
 立即註冊
搜索
查看: 577|回覆: 0
打印 上一主題 下一主題

[討論] 製作32鍵電子琴 這樣能行嗎

[複製鏈接]

2609

主題

0

好友

1003

積分

金牌會員

Rank: 6Rank: 6

UID
373967
帖子
8982
主題
2609
精華
0
積分
1003
楓幣
28
威望
980
存款
35699
贊助金額
0
推廣
0
GP
1205
閱讀權限
70
在線時間
459 小時
註冊時間
2023-1-12
最後登入
2024-12-18

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

跳轉到指定樓層
1
發表於 2023-3-26 07:24:25 |只看該作者 |倒序瀏覽
製作32鍵電子琴需要以下材料:

8051單片機(例如AT89C51等)
電子琴鍵盤模組(32鍵)
蜂鳴器
電容
電阻
電源
麵包板
杜邦線
以下是8051單片機和鍵盤模組的連結腳位圖:


           +----+                +--------+
    P2.0 --| 1  |--- C4          |        |
    P2.1 --| 2  |--- C5          |        |
    P2.2 --| 3  |--- C6          |        |
    P2.3 --| 4  |--- C7          |        |
    P2.4 --| 5  |--- C8          |        |
    P2.5 --| 6  |--- C9          |        |
    P2.6 --| 7  |--- C10         |        |
    P2.7 --| 8  |--- C11         |        |
           +----+                |        |
                                 |        |
    P3.0 --| 9  |--- R1          |        |
    P3.1 --| 10 |--- R2          |        |
    P3.2 --| 11 |--- R3          |        |
    P3.3 --| 12 |--- R4          |        |
    P3.4 --| 13 |--- R5          |        |
    P3.5 --| 14 |--- R6          |        |
    P3.6 --| 15 |--- R7          |        |
    P3.7 --| 16 |--- R8          |        |
           +----+                +--------+

    C4 - C11: 鍵盤列腳
    R1 - R8: 鍵盤行腳
以下是8051單片機的程式碼:

#include <reg51.h>

sbit SPEAKER = P1^0;  // 蜂鳴器接P1.0
unsigned char row;    // 鍵盤行變量
unsigned char key;    // 鍵盤按鍵變量
unsigned char note;   // 音符變量
unsigned char delay;  // 延時變量

void delayms(unsigned int time)  // 延時函數
{
    unsigned int i, j;
    for (i = 0; i < time; i++) {
        for (j = 0; j < 120; j++);
    }
}

void main()
{
    while (1) {
        for (row = 0; row < 8; row++) {  // 檢測每一行
            P2 = ~(1 << row);           // 將列對應的P2輸出為低電平
            key = P3;                   // 讀取行的值
            if (key != 0xff) {          // 按下按鍵
                delay

            delay = 10;           // 設置延時
            note = row * 8 + key;  // 計算音符
            while (delay--) {      // 延時
                SPEAKER = 1;       // 發聲
                delayms(note);     // 發聲時長
                SPEAKER = 0;       // 停止發聲
                delayms(note);     // 停止發聲時長
            }
        }
    }
}
}



這個程式碼使用了8051單片機的P2口和P3口來控制32鍵的電子琴鍵盤模組,並使用了蜂鳴器來發出聲音。當按下按鍵時,程式碼會計算出相應的音符,然後通過延時函數發出聲音。
收藏收藏0 推0 噓0


把本文推薦給朋友或其他網站上,每次被點擊增加您在本站積分: 1鑰匙
複製連結並發給好友,以賺取推廣點數
簡單兩步驟,註冊、分享網址,即可獲得獎勵! 一起推廣文章換商品、賺$$
高級模式
B Color Image Link Quote Code Smilies |上傳

廣告刊登意見回饋關於我們管群招募本站規範DMCA隱私權政策

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

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

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

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

GMT+8, 2024-12-18 13:50

回頂部