欧美午夜欧美,台湾成人av,久久av一区,最近看过的日韩成人

電子開(kāi)發(fā)網(wǎng)

電子開(kāi)發(fā)網(wǎng)電子設(shè)計(jì) | 電子開(kāi)發(fā)網(wǎng)Rss 2.0 會(huì)員中心 會(huì)員注冊(cè)
搜索: 您現(xiàn)在的位置: 電子開(kāi)發(fā)網(wǎng) >> 電子開(kāi)發(fā) >> 單片機(jī) >> 正文

單片機(jī)電子琴--Electronic organ

作者:佚名    文章來(lái)源:本站原創(chuàng)    點(diǎn)擊數(shù):    更新時(shí)間:2017-11-25

單片機(jī)電子琴,Electronic organ

關(guān)鍵字:AT89S51,電子琴電路圖

 
1.  實(shí)驗(yàn)任務(wù)
(1.       由4X4組成16個(gè)按鈕矩陣,設(shè)計(jì)成16個(gè)音。
(2.       可隨意彈奏想要表達(dá)的音樂(lè)。
2.電路原理圖
 
 
 
3.系統(tǒng)板硬件連線
(1.       把“單片機(jī)系統(tǒng)”區(qū)域中的P1.0端口用導(dǎo)線連接到“音頻放大模塊”區(qū)域中的SPK IN端口上;
(2.       把“單片機(jī)系統(tǒng)“區(qū)域中的P3.0-P3.7端口用8芯排線連接到“4X4行列式鍵盤”區(qū)域中的C1-C4 R1-R4端口上;
4.  相關(guān)程序內(nèi)容
(1.       4X4行列式鍵盤識(shí)別;
(2.       音樂(lè)產(chǎn)生的方法;
一首音樂(lè)是許多不同的音階組成的,而每個(gè)音階對(duì)應(yīng)著不同的頻率,這樣我們就可以利用不同的頻率的組合,即可構(gòu)成我們所想要的音樂(lè)了,當(dāng)然對(duì)于單片機(jī)來(lái)產(chǎn)生不同的頻率非常方便,我們可以利用單片機(jī)的定時(shí)/計(jì)數(shù)器T0來(lái)產(chǎn)生這樣方波頻率信號(hào),因此,我們只要把一首歌曲的音階對(duì)應(yīng)頻率關(guān)系弄正確即可。現(xiàn)在以單片機(jī)12MHZ晶振為例,例出高中低音符與單片機(jī)計(jì)數(shù)T0相關(guān)的計(jì)數(shù)值如下表所示
音符
頻率(HZ)
簡(jiǎn)譜碼(T值)
 
音符
頻率(HZ)
簡(jiǎn)譜碼(T值)
低1 DO
262
63628
# 4 FA#
740
64860
#1 DO#
277
63731
中5 SO
784
64898
低2 RE
294
63835
# 5 SO#
831
64934
#2 RE#
311
63928
中6 LA
880
64968
低3 M
330
64021
# 6
932
64994
低4 FA
349
64103
中7 SI
988
65030
# 4 FA#
370
64185
高1 DO
1046
65058
低5 SO
392
64260
# 1 DO#
1109
65085
# 5 SO#
415
64331
高2 RE
1175
65110
低6 LA
440
64400
 
# 2 RE#
1245
65134
# 6
466
64463
高3 M
1318
65157
低7 SI
494
64524
高4 FA
1397
65178
中1 DO
523
64580
# 4 FA#
1480
65198
# 1 DO#
554
64633
高5 SO
1568
65217
中2 RE
587
64684
# 5 SO#
1661
65235
# 2 RE#
622
64732
高6 LA
1760
65252
中3 M
659
64777
# 6
1865
65268
中4 FA
698
64820
高7 SI
1967
65283
下面我們要為這個(gè)音符建立一個(gè)表格,有助于單片機(jī)通過(guò)查表的方式來(lái)獲得相應(yīng)的數(shù)據(jù)
低音0-19之間,中音在20-39之間,高音在40-59之間
TABLE:        DW 0,63628,63835,64021,64103,64260,64400,64524,0,0
                   DW 0,63731,63928,0,64185,64331,64463,0,0,0
                   DW 0,64580,64684,64777,64820,64898,64968,65030,0,0
                   DW 0,64633,64732,0,64860,64934,64994,0,0,0
                   DW 0,65058,65110,65157,65178,65217,65252,65283,0,0
                   DW 0,65085,65134,0,65198,65235,65268,0,0,0
                   DW 0
2、音樂(lè)的音拍,一個(gè)節(jié)拍為單位(C調(diào))
曲調(diào)值
DELAY
 
曲調(diào)值
DELAY
調(diào)4/4
125ms
 
調(diào)4/4
62ms
調(diào)3/4
187ms
 
調(diào)3/4
94ms
調(diào)2/4
250ms
 
調(diào)2/4
125ms
對(duì)于不同的曲調(diào)我們也可以用單片機(jī)的另外一個(gè)定時(shí)/計(jì)數(shù)器來(lái)完成。
下面就用AT89S51單片機(jī)產(chǎn)生一首“生日快樂(lè)”歌曲來(lái)說(shuō)明單片機(jī)如何產(chǎn)生的。
在這個(gè)程序中用到了兩個(gè)定時(shí)/計(jì)數(shù)器來(lái)完成的。其中T0用來(lái)產(chǎn)生音符頻率,T1用來(lái)產(chǎn)生音拍。
5.程序框圖
 
 
 
 
6.匯編源程序
KEYBUF      EQU 30H
STH0        EQU 31H
STL0        EQU 32H
TEMP        EQU 33H
            ORG 00H
            LJMP START
            ORG 0BH
            LJMP INT_T0
START:      MOV TMOD,#01H
            SETB ET0
            SETB EA
WAIT:  
            MOV P3,#0FFH
            CLR P3.4
            MOV A,P3
            ANL A,#0FH 
            XRL A,#0FH
            JZ NOKEY1
            LCALL DELY10MS
            MOV A,P3
            ANL A,#0FH
            XRL A,#0FH
            JZ NOKEY1
            MOV A,P3
            ANL A,#0FH
            CJNE A,#0EH,NK1
            MOV KEYBUF,#0
            LJMP DK1
NK1:        CJNE A,#0DH,NK2
            MOV KEYBUF,#1
            LJMP DK1
NK2:        CJNE A,#0BH,NK3
            MOV KEYBUF,#2
            LJMP DK1
NK3:        CJNE A,#07H,NK4
            MOV KEYBUF,#3
            LJMP DK1
NK4:        NOP
DK1:   
            MOV A,KEYBUF
            MOV DPTR,#TABLE
            MOVC A,@A+DPTR
            MOV P0,A
            MOV A,KEYBUF
            MOV B,#2
            MUL AB
            MOV TEMP,A
            MOV DPTR,#TABLE1
            MOVC A,@A+DPTR
            MOV STH0,A
            MOV TH0,A
            INC TEMP
            MOV A,TEMP
            MOVC A,@A+DPTR
            MOV STL0,A
            MOV TL0,A
            SETB TR0
 
DK1A:       MOV A,P3
            ANL A,#0FH
            XRL A,#0FH
            JNZ DK1A
            CLR TR0
NOKEY1:
            MOV P3,#0FFH
            CLR P3.5
            MOV A,P3
            ANL A,#0FH
            XRL A,#0FH
            JZ NOKEY2
            LCALL DELY10MS
            MOV A,P3
            ANL A,#0FH
            XRL A,#0FH
            JZ NOKEY2
            MOV A,P3
            ANL A,#0FH
            CJNE A,#0EH,NK5
            MOV KEYBUF,#4
            LJMP DK2
NK5:        CJNE A,#0DH,NK6
            MOV KEYBUF,#5
            LJMP DK2
NK6:        CJNE A,#0BH,NK7
            MOV KEYBUF,#6
            LJMP DK2
NK7:        CJNE A,#07H,NK8
            MOV KEYBUF,#7
            LJMP DK2
NK8:        NOP
DK2:   
            MOV A,KEYBUF
            MOV DPTR,#TABLE
            MOVC A,@A+DPTR
            MOV P0,A
            MOV A,KEYBUF
            MOV B,#2
            MUL AB
            MOV TEMP,A
            MOV DPTR,#TABLE1
            MOVC A,@A+DPTR
            MOV STH0,A
            MOV TH0,A
            INC TEMP
            MOV A,TEMP
            MOVC A,@A+DPTR
            MOV STL0,A
            MOV TL0,A
            SETB TR0
DK2A:       MOV A,P3
            ANL A,#0FH
            XRL A,#0FH
            JNZ DK2A
            CLR TR0
NOKEY2:
            MOV P3,#0FFH
            CLR P3.6
            MOV A,P3
            ANL A,#0FH
     &nbsnbsp;      XRL A,#0FH
            JZ NOKEY3
            LCALL DELY10MS
            MOV A,P3
            ANL A,#0FH
            XRL A,#0FH
            JZ NOKEY3
            MOV A,P3
            ANL A,#0FH
            CJNE A,#0EH,NK9
            MOV KEYBUF,#8
            LJMP DK3
NK9:        CJNE A,#0DH,NK10
            MOV KEYBUF,#9
            LJMP DK3
NK10:       CJNE A,#0BH,NK11
            MOV KEYBUF,#10
            LJMP DK3
NK11:       CJNE A,#07H,NK12
            MOV KEYBUF,#11
            LJMP DK3
NK12:       NOP
DK3:
            MOV A,KEYBUF
            MOV DPTR,#TABLE
            MOVC A,@A+DPTR
            MOV P0,A
            MOV A,KEYBUF
            MOV B,#2
            MUL AB
            MOV TEMP,A
            MOV DPTR,#TABLE1
            MOVC A,@A+DPTR
            MOV STH0,A
            MOV TH0,A
            INC TEMP
            MOV A,TEMP
            MOVC A,@A+DPTR
            MOV STL0,A
            MOV TL0,A
            SETB TR0
 
DK3A:       MOV A,P3
            ANL A,#0FH
            XRL A,#0FH
            JNZ DK3A
            CLR TR0
NOKEY3:
            MOV P3,#0FFH
            CLR P3.7
            MOV A,P3
            ANL A,#0FH
            XRL A,#0FH
            JZ NOKEY4
            LCALL DELY10MS
            MOV A,P3
            ANL A,#0FH
            XRL A,#0FH
            JZ NOKEY4
            MOV A,P3
            ANL A,#0FH
            CJNE A,#0EH,NK13
            MOV KEYBUF,#12
            LJMP DK4
NK13:       CJNE A,#0DH,NK14
            MOV KEYBUF,#13
            LJMP DK4
NK14:       CJNE A,#0BH,NK15
            MOV KEYBUF,#14
            LJMP DK4
NK15:       CJNE A,#07H,NK16
            MOV KEYBUF,#15
            LJMP DK4
NK16:       NOP
DK4:   
            MOV A,KEYBUF
            MOV DPTR,#TABLE
            MOVC A,@A+DPTR
            MOV P0,A
            MOV A,KEYBUF
            MOV B,#2
            MUL AB
            MOV TEMP,A
            MOV DPTR,#TABLE1
            MOVC A,@A+DPTR
            MOV STH0,A
            MOV TH0,A
            INC TEMP
            MOV A,TEMP
            MOVC A,@A+DPTR
            MOV STL0,A
            MOV TL0,A
            SETB TR0
DK4A:       MOV A,P3
            ANL A,#0FH
            XRL A,#0FH
            JNZ DK4A
            CLR TR0
NOKEY4:
            LJMP WAIT
DELY10MS:
            MOV R6,#10
D1:         MOV R7,#248
            DJNZ R7,$
            DJNZ R6,D1
            RET
INT_T0:
            MOV TH0,STH0
            MOV TL0,STL0
            CPL P1.0
            RETI
TABLE:      DB 3FH,06H,5BH,4FH,66H,6DH,7DH,07H
            DB 7FH,6FH,77H,7CH,39H,5EH,79H,71H
 
TABLE1:     DW 64021,64103,64260,64400
            DW 64524,64580,64684,64777
            DW 64820,64898,64968,65030
            DW 65058,65110,65157,65178
            END
7.  C語(yǔ)言源程序
#include
unsigned char code table[]={0x3f,0x06,0x5b,0x4f,
                            0x66,0x6d,0x7d,0x07,
                            0x7f,0x6f,0x77,0x7c,
                            0x39,0x5e,0x79,0x71};
unsigned char temp;
unsigned char key;
unsigned char i,j;
unsigned char STH0;
unsigned char STL0;
unsigned int code tab[]={64021,64103,64260,64400,
                          64524,64580,64684,64777,
                          64820,64898,64968,65030,
                          65058,65110,65157,65178};
void main(void)
{
  TMOD=0x01;
  ET0=1;
  EA=1;
  while(1)
    {
      P3=0xff;
      P3_4=0;
      temp=P3;
      temp=temp & 0x0f;
      if (temp!=0x0f)
        {
          for(i=50;i>0;i--)
          for(j=200;j>0;j--);
          temp=P3;
          temp=temp & 0x0f;
          if (temp!=0x0f)
            {
              temp=P3;
              temp=temp & 0x0f;             
              switch(temp)
                {
                  case 0x0e:
                    key=0;
                    break;
                  case 0x0d:
                    key=1;
                    break;
                  case 0x0b:
                    key=2;
                    break;
                  case 0x07:
                    key=3;
                    break;
                }
              temp=P3;
              P1_0=~P1_0;
              P0=table[key];
              STH0=tab[key]/256;
              STL0=tab[key]%256;
              TR0=1;
              temp=temp & 0x0f;             
              while(temp!=0x0f)
                {
                  temp=P3;
                  temp=temp & 0x0f;             
                }
              TR0=0;
            }
        }
 
      P3=0xff;
      P3_5=0;
      temp=P3;
      temp=temp & 0x0f;
      if (temp!=0x0f)
        {
          for(i=50;i>0;i--)
          for(j=200;j>0;j--);
          temp=P3;
          temp=temp & 0x0f;
          if (temp!=0x0f)
            {
              temp=P3;
              temp=temp & 0x0f;             
              switch(temp)
                {
                  case 0x0e:
                    key=4;
                    break;
                  case 0x0d:
                    key=5;
                    break;
                  case 0x0b:
                    key=6;
                    break;
                  case 0x07:
                    key=7;
                    break;
                }
              temp=P3;
              P1_0=~P1_0;
              P0=table[key];
              STH0=tab[key]/256;
              STL0=tab[key]%256;
              TR0=1;
              temp=temp & 0x0f;             
              while(temp!=0x0f)
                {
                  temp=P3;
                  temp=temp & 0x0f;             
                }
              TR0=0;
            }
        }
 
      P3=0xff;
      P3_6=0;
      temp=P3;
      temp=temp & 0x0f;
      if (temp!=0x0f)
        {
          for(i=50;i>0;i--)
          for(j=200;j>0;j--);
          temp=P3;
          temp=temp & 0x0f;
          if (temp!=0x0f)
            {
              temp=P3;
              temp=temp & 0x0f;             
              switch(temp)
                {
                  case 0x0e:
                    key=8;
                    break;
                  case 0x0d:
                    key=9;
                    break;
                  case 0x0b:
                    key=10;
                    break;
                  case 0x07:
                    key=11;
                    break;
                }
              temp=P3;
              P1_0=~P1_0;
              P0=table[key];
              STH0=tab[key]/256;
              STL0=tab[key]%256;
              TR0=1;
              temp=temp & 0x0f;             
              while(temp!=0x0f)
                {
                  temp=P3;
                  temp=temp & 0x0f;             
                }
              TR0=0;
            }
        }
      P3=0xff;
      P3_7=0;
      temp=P3;
      temp=temp & 0x0f;
      if (temp!=0x0f)
        {
          for(i=50;i>0;i--)
          for(j=200;j>0;j--);
          temp=P3;
          temp=temp & 0x0f;
          if (temp!=0x0f)
            {
              temp=P3;
              temp=temp & 0x0f;             
              switch(temp)
                {
                  case 0x0e:
                    key=12;
                    break;
                  case 0x0d:
              &nbs, , , p;     key=13;
                    break;
                  case 0x0b:
                    key=14;
                    break;
                  case 0x07:
                    key=15;
                    break;
                }
              temp=P3;
              P1_0=~P1_0;
              P0=table[key];
              STH0=tab[key]/256;
              STL0=tab[key]%256;
              TR0=1;
              temp=temp & 0x0f;             
              while(temp!=0x0f)
                {
                  temp=P3;
                  temp=temp & 0x0f;             
                }
              TR0=0;
            }
        }     
    }
}
 
void t0(void) interrupt 1 using 0
{
  TH0=STH0;
  TL0=STL0;
  P1_0=~P1_0;
}
Tags:單片機(jī),電子琴,Electronic organ,電子琴電路圖  
責(zé)任編輯:admin
  • 上一篇文章:
  • 下一篇文章: 沒(méi)有了
  • 請(qǐng)文明參與討論,禁止漫罵攻擊,不要惡意評(píng)論、違禁詞語(yǔ)。 昵稱:
    1分 2分 3分 4分 5分

    還可以輸入 200 個(gè)字
    [ 查看全部 ] 網(wǎng)友評(píng)論
    關(guān)于我們 - 聯(lián)系我們 - 廣告服務(wù) - 友情鏈接 - 網(wǎng)站地圖 - 版權(quán)聲明 - 在線幫助 - 文章列表
    返回頂部
    刷新頁(yè)面
    下到頁(yè)底
    晶體管查詢
    欧美午夜欧美,台湾成人av,久久av一区,最近看过的日韩成人
    欧美成人三级在线| 夫妻av一区二区| 欧美午夜精品一区二区三区| 一区二区三区免费| 日本丶国产丶欧美色综合| 亚洲精品成人少妇| 欧美狂野另类xxxxoooo| 美美哒免费高清在线观看视频一区二区 | 久久精品国产99国产| 欧美mv日韩mv国产网站app| 国产传媒久久文化传媒| 中文字幕日韩一区二区| 欧美在线一区二区三区| 美女诱惑一区二区| 国产精品麻豆久久久| 在线精品视频一区二区三四| 日韩1区2区3区| 欧美国产视频在线| 在线免费观看日韩欧美| 美国av一区二区| 欧美国产精品久久| 欧美日本视频在线| 国产精品1区二区.| 亚洲永久精品大片| 国产亚洲视频系列| 欧美日韩在线一区二区| 国产一区二区三区高清播放| 亚洲欧洲精品成人久久奇米网| 欧美日韩一区二区在线观看| 国产一区二区久久| 亚洲午夜精品久久久久久久久| 日韩精品一区二区三区视频| 色综合久久久网| 奇米精品一区二区三区四区| 国产精品久久久久aaaa| 欧美色视频一区| 国产成人av影院| 蜜臀av在线播放一区二区三区| **性色生活片久久毛片| 精品免费日韩av| 欧美日韩综合在线免费观看| 国产69精品一区二区亚洲孕妇| 日韩高清在线不卡| 一区二区在线电影| 国产精品成人一区二区艾草| 精品免费一区二区三区| 欧美日韩精品欧美日韩精品一| 成人黄页毛片网站| 国产在线一区二区| 日韩在线一区二区三区| 一区二区在线看| 亚洲欧美一区二区在线观看| 精品国产乱码久久久久久蜜臀| 欧美乱熟臀69xxxxxx| 91在线播放网址| 成人午夜精品在线| 国产麻豆一精品一av一免费| 日本在线不卡视频一二三区| 亚洲国产一区二区三区青草影视 | 一区在线播放视频| 国产亚洲综合在线| 2欧美一区二区三区在线观看视频| 欧美人动与zoxxxx乱| 在线观看国产91| 日本福利一区二区| 99re热视频精品| 99久久久精品| 成人免费毛片app| 国产精品影视在线观看| 韩国一区二区视频| 美日韩一区二区| 九九国产精品视频| 麻豆成人久久精品二区三区小说| 日韩精品1区2区3区| 亚洲成人自拍一区| 日韩在线一二三区| 开心九九激情九九欧美日韩精美视频电影 | 欧美在线制服丝袜| 在线视频中文字幕一区二区| 一本大道久久a久久综合婷婷| 不卡av免费在线观看| 91麻豆国产自产在线观看| 91网址在线看| 欧美日韩在线播放一区| 91精品婷婷国产综合久久性色| 91精品国产综合久久久蜜臀图片| 欧美一区二区三区在线看 | 日韩精品一区国产麻豆| 日韩精品一区二区在线观看| 精品国产不卡一区二区三区| 国产日韩在线不卡| 亚洲乱码国产乱码精品精的特点| 樱花影视一区二区| 日韩福利电影在线| 狠狠色丁香久久婷婷综合丁香| 国产一区二区三区在线观看免费| 国产91综合一区在线观看| 99久久国产免费看| 欧美巨大另类极品videosbest| 精品日韩欧美在线| 国产精品成人网| 亚洲成人av电影在线| 韩国三级中文字幕hd久久精品| 成人免费视频视频| 欧美日韩精品专区| 久久综合av免费| 亚洲蜜臀av乱码久久精品蜜桃| 丝袜a∨在线一区二区三区不卡 | 成人综合婷婷国产精品久久| 99久久er热在这里只有精品15| 欧美日韩精品一区视频| 久久久久久久综合日本| 亚洲精品国产一区二区三区四区在线| 亚洲福中文字幕伊人影院| 韩国精品在线观看| 91传媒视频在线播放| 精品久久久久久久久久久久包黑料| 欧美国产精品中文字幕| 日本特黄久久久高潮| 粉嫩一区二区三区在线看| 欧美精品日韩一区| 日韩一区有码在线| 老司机精品视频一区二区三区| 91麻豆免费观看| 欧美成人福利视频| 亚洲成人综合视频| 成人开心网精品视频| 日韩免费电影网站| 亚洲午夜久久久| 99视频精品全部免费在线| 精品国产乱码久久久久久夜甘婷婷 | 4438亚洲最大| 最新欧美精品一区二区三区| 精品一区二区影视| 欧美美女一区二区三区| 亚洲欧美日韩中文字幕一区二区三区 | 欧美日韩精品一区二区天天拍小说 | 9l国产精品久久久久麻豆| 久久这里都是精品| 日韩av在线发布| 欧美天天综合网| 亚洲丝袜精品丝袜在线| 国产成人av电影在线| 久久亚洲二区三区| 免费在线观看精品| 欧美精品一二三| 亚洲不卡一区二区三区| 色哟哟精品一区| 18成人在线观看| 成人免费高清在线| 国产精品嫩草影院com| 国产一区二区三区国产| 精品日韩一区二区三区免费视频| 日本麻豆一区二区三区视频| 在线免费观看视频一区| 亚洲综合视频在线| 欧美视频自拍偷拍| 亚洲图片欧美综合| 欧美日韩一级视频| 亚洲一区二区不卡免费| 欧美三级午夜理伦三级中视频| 亚洲高清一区二区三区| 欧美日韩精品一区视频| 亚洲成人高清在线| 91精品国产福利在线观看| 蜜桃精品视频在线| 精品久久久久av影院| 国产精品77777竹菊影视小说| 久久久久久久性| 成人国产免费视频| 亚洲人成网站色在线观看| 色婷婷精品久久二区二区蜜臂av| 亚洲男人天堂一区| 欧美三电影在线| 久久成人免费网站| 久久精品亚洲国产奇米99| 国产精品18久久久久久久久| 国产人伦精品一区二区| 91美女在线看| 性做久久久久久免费观看 | 高清beeg欧美| 国产精品成人免费精品自在线观看 | 丁香婷婷综合激情五月色| 国产精品第四页| 欧美三级在线视频| 狠狠色狠狠色合久久伊人| 国产女主播视频一区二区| 色综合天天做天天爱| 视频一区欧美日韩| 久久美女艺术照精彩视频福利播放 | 亚洲综合色视频| 日韩午夜在线播放| 成人精品视频网站| 亚洲成人黄色影院| 久久久美女艺术照精彩视频福利播放| 成av人片一区二区| 天天操天天色综合| 国产精品理伦片| 69p69国产精品| 成人av午夜电影|