久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 5996|回復: 2
打印 上一主題 下一主題
收起左側

DIY MIDI腳踏控制器(4按鍵筆記)附單片機程序

[復制鏈接]
跳轉到指定樓層
樓主
DIY制作MIDI腳踏控制器
        MIDI控制器,可以用來控制支持MIDI協議的軟件效果器,如guitar rig。MIDI控制器和鍵盤一樣可以控制guitar rig,但是鍵盤無法在后臺對guitar rig 進行控制。而midi協議的控制器不受影響 ,不管軟件是在前臺運行還是后臺運行都可以接受到MIDI信號的控制。
        先說調試過程中遇到的問題:
        1.guitar rig 軟件必須在正確連接asio聲卡的情況下才會接受MIDI信號,所以調試過程中必須保證你的聲卡正常連接。
        2.硬件電路中的兩個反向器可以不接但是接了也沒問題而且大多數的MIDI鍵盤電路都接了這個反相器。
        3.MIDI信號的發送,剛開始我只發送了ON信號結果發現 guitar rig軟件只能識別一次這個信號,第二次就控制不了了,所以MIDI協議的信號必須發送一個ON信號,再發送一個OFF 信號就正常了。
        4.由于USB端口的電流比較低,所以不要接太多的無所謂的電路上去。會供電不足。
      以下是一個簡單的測試電路和測試程序以供大家學習和參考。
      硬件:AT89S52單片機,usb轉MIDI線,單片機學習開發板,74HC04,300歐電阻2個。
      單片機軟件程序:軟件里有做了4個按鍵的代碼 如果需要8個按鍵可以把scankey函數寫兩遍并修改對應的發送代碼即可獲得更多的按鍵。
制作出來的實物圖如下:


電路原理圖如下:


#include<reg52.h>
#define uchar unsigned char
#define uint unsigned int
/*****************************************************************
延遲1ms子函數
******************************************************************/
void delay1ms(uint i)
{
uchar j;
while(i--)
{
for(j=0;j<115;j++)  //1ms基準延時程序
{
  ;
}
}
}
/*************************************************************
初始化子函數
***************************************************************/
void init()
{
TMOD=0x21; //T/C1工作于8位自動裝入狀態//
TL1=0xff;  // T/C1常數,確定波特率//
TH1=0xff;  //波特率為 31.25k
SCON=0x50; //設串口工作于方式1,//
PCON=0x80; //相當于SMOD=1;//
TR1=1; //T/C1開始計數//

}
/*********************************************************
串口發送子函數
*********************************************************/
void send(uchar *p)
{
     uchar i;
     TR1 =1;
     for(i=0;i<3;i++) //當i=1 發送CC,當i=2 發送kk,當i=3發送vv
        {
         SBUF=*p;
         while(TI==0);
         TI = 0;  
         p++;
        }
     TR1 =0;
}
/**********************************************************
鍵盤掃描子函數
**********************************************************/
void scankey()
{
uchar p[] = {0x90,0x30,0x64,          //按鍵1的命令,在guitar rig 里顯示的是48
0x91,0x32,0x64,//按鍵2的命令,在guitar rig 里顯示的是52
0x92,0x34,0x64,//按鍵3的命令,在guitar rig 里顯示的是53
0x93,0x35,0x64,//按鍵4的命令,在guitar rig 里顯示的是50
0x80,0x30,0x40,
0x81,0x32,0x40,
0x82,0x34,0x40,
   0x83,0x35,0x40,
};
uchar temp;
P1=0xfe;//給P1口11111110
temp=P1;
temp=temp&0xf0;//取出高四位值
while(temp!=0xf0)
{
delay1ms(5);
temp=P1;//此時 p1口值不等于0xf0,等于按鍵按下后的值
temp=temp&0xf0;
while(temp!=0xf0)
{
temp=P1;   //此時 p1口值不等于0xf0,等于按鍵按下后的值
while(temp==0xee)
{
send(p);
while(temp!=0xf0)//等待按鍵釋放
   {
temp=P1;
temp=temp&0xf0;
   }
send(p+12);
}
while(temp==0xde)
{
send(p+3);
while(temp!=0xf0)//等待按鍵釋放
   {
temp=P1;
temp=temp&0xf0;
   }
send(p+15);
}
  while(temp==0xbe)
{
send(p+6);
    while(temp!=0xf0)//等待按鍵釋放
   {
temp=P1;
temp=temp&0xf0;
   }
send(p+18);
}
while(temp==0x7e)
{
send(p+9);
while(temp!=0xf0)//等待按鍵釋放
   {
temp=P1;
temp=temp&0xf0;
   }
send(p+21);
}
}

}
}
void main()
{
init();//初始化  
while(1)
{
scankey();
}
}




評分

參與人數 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏2 分享淘帖 頂 踩
回復

使用道具 舉報

沙發
ID:881862 發表于 2021-1-31 19:11 | 只看該作者
這么好的貼子,怎么沒有人頂呢。學習了
回復

使用道具 舉報

板凳
ID:1039438 發表于 2022-11-15 15:27 | 只看該作者
寫的太好了。可以直接拿來用的一個方案。
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

手機版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 在线免费中文字幕 | 在线播放中文 | 免费毛片www com cn | 精品日韩一区二区 | 91亚洲国产成人精品一区二三 | 亚洲电影一区二区三区 | 色爱综合网 | 天天艹天天干天天 | 午夜免费在线电影 | 毛片网在线观看 | 日韩不卡一区二区三区 | 人人射人人草 | 色888www视频在线观看 | 久草精品视频 | 欧美日韩在线免费 | 极品粉嫩国产48尤物在线播放 | 日韩一区二区av | 蜜臀久久99精品久久久久野外 | 综合久久久| 国产精品极品美女在线观看免费 | 亚洲网站在线播放 | 久久国产高清视频 | 色吧综合网 | 一区二区三区视频免费看 | 亚洲精品免费在线 | 亚洲人成在线观看 | 美日韩精品 | www.色婷婷| 久久久久久国产精品 | 超碰97av| 国产亚洲精品久久久久久豆腐 | 中文字幕国产日韩 | 欧美激情在线精品一区二区三区 | 四色成人av永久网址 | 人人看人人爽 | 日韩精品一区二区三区在线播放 | 免费中文字幕日韩欧美 | www网站在线观看 | 波多野结衣av中文字幕 | 自拍 亚洲 欧美 老师 丝袜 | 一区二区三区在线 |