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

標(biāo)題: 基于單片機(jī)的矩陣式鍵盤電子琴仿真課程設(shè)計(jì) 原創(chuàng)作品 [打印本頁(yè)]

作者: 15764334643    時(shí)間: 2017-5-19 17:52
標(biāo)題: 基于單片機(jī)的矩陣式鍵盤電子琴仿真課程設(shè)計(jì) 原創(chuàng)作品
電子琴的仿真我在本科階段的一個(gè)課程設(shè)計(jì)題目,以51單片機(jī)為核心,電子琴按鍵是4乘4的矩陣式鍵盤,代碼是用匯編語(yǔ)言寫的,都是原創(chuàng)。


51單片機(jī)源程序:
  1. //附錄一 程序清單
  2. BUFF EQU 30H
  3. STH0 EQU 31H
  4. STL0 EQU 32H
  5. TEMP EQU 33H
  6. ORG 0000H
  7. LJMP START
  8. ORG 000BH
  9. LJMP INT_T0
  10. ORG 001BH
  11. LJMP TIM1
  12. START:MOV TMOD,#01H
  13.       SETB ET0
  14.           SETB EA
  15. MAIN:MOV P1,#0FFH                        ;置為高電平
  16.      CLR P1.4                                ;掃第一行
  17.          MOV A,P1
  18.          ANL A,#0FH
  19.          XRL A,#0FH
  20.          JZ KKEY1                                ;為零無(wú)鍵按下轉(zhuǎn)移
  21.          LCALL DELY10MS
  22.          MOV A,P1                                ;到底有沒(méi)有鍵按下啊,去抖
  23.          ANL A,#0FH
  24.          XRL A,#0FH
  25.          JZ KKEY1                               
  26.          MOV A,P1
  27.          ANL A,#0FH
  28.          CJNE A,#0EH,KK1                    ;相等說(shuō)明這回是真有鍵按下了,不騙人        00001110第一列
  29.          MOV BUFF,#0                        ;給個(gè)鍵值
  30.          LJMP NDK1                                ;終于出聲音了巴拉巴拉巴拉巴拉
  31. KK1:CJNE A,#0DH,KK2                    ;第二列00001101
  32.      MOV BUFF,#1
  33.          LJMP NDK1                                                                                                               
  34. KK2:CJNE A,#0BH,KK3                        ;第三列00001011
  35.     MOV BUFF,#2
  36.         LJMP NDK1
  37. KK3:CJNE A,#07H,KK4                        ;第四列0000 0111
  38.     MOV BUFF,#3
  39.         LJMP NDK1
  40. KK4:NOP                                                 ;空
  41.                            ;下面都是一樣的套路掃描第二三四行,復(fù)制三遍OK
  42. KKEY1:MOV P1,#0FFH                       
  43.      CLR P1.5                                ;掃第二行
  44.          MOV A,P1
  45.          ANL A,#0FH
  46.          XRL A,#0FH
  47.          JZ KKEY2                               
  48.          LCALL DELY10MS
  49.          MOV A,P1                               
  50.          ANL A,#0FH
  51.          XRL A,#0FH
  52.          JZ KKEY2                               
  53.          MOV A,P1
  54.          ANL A,#0FH
  55.          CJNE A,#0EH,KK5               
  56.          MOV BUFF,#4                       
  57.          LJMP NDK1                               
  58. KK5:CJNE A,#0DH,KK6               
  59.      MOV BUFF,#5
  60.          LJMP NDK1                                                                                                               
  61. KK6:CJNE A,#0BH,KK7                       
  62.     MOV BUFF,#6
  63.         LJMP NDK1
  64. KK7:CJNE A,#07H,KK8                       
  65.     MOV BUFF,#7
  66.         LJMP NDK1
  67. KK8:NOP

  68. KKEY2:MOV P1,#0FFH                       
  69.      CLR P1.6                                ;掃第三行
  70.          MOV A,P1
  71.          ANL A,#0FH
  72.          XRL A,#0FH
  73.          JZ KKEY3                               
  74.          LCALL DELY10MS
  75.          MOV A,P1                               
  76.          ANL A,#0FH
  77.          XRL A,#0FH
  78.          JZ KKEY3                               
  79.          MOV A,P1
  80.          ANL A,#0FH
  81.          CJNE A,#0EH,KK9               
  82.          MOV BUFF,#8                       
  83.          LJMP NDK1                               
  84. KK9:CJNE A,#0DH,KK10               
  85.      MOV BUFF,#9
  86.          LJMP NDK1                                                                                                               
  87. KK10:CJNE A,#0BH,KK11                       
  88.     MOV BUFF,#10
  89.         LJMP NDK1
  90. KK11:CJNE A,#07H,KK12                       
  91.     MOV BUFF,#11
  92.         LJMP NDK1
  93. KK12:NOP

  94. KKEY3:MOV P1,#0FFH                       
  95.      CLR P1.7                                ;掃第四行
  96.          MOV A,P1
  97.          ANL A,#0FH
  98.          XRL A,#0FH
  99.          JZ KKEY4                               
  100.          LCALL DELY10MS
  101.          MOV A,P1                               
  102.          ANL A,#0FH
  103.          XRL A,#0FH
  104.          JZ KKEY4                               
  105.          MOV A,P1
  106.          ANL A,#0FH
  107.          CJNE A,#0EH,KK13               
  108.          MOV BUFF,#12                       
  109.          LJMP NDK1                               
  110. KK13:CJNE A,#0DH,KK14               
  111.      MOV BUFF,#13
  112.          LJMP NDK1                                                                                                                                                                                  
  113. KK14:CJNE A,#0BH,KK15                       
  114.     MOV BUFF,#14
  115.         LJMP NDK1
  116. KK15:CJNE A,#07H,KK16                       
  117.     MOV BUFF,#15
  118.         LJMP NDK1
  119. KK16:NOP

  120. NDK1: MOV A,BUFF                                                ;給鍵值
  121.       MOV DPTR,#TABLE                               
  122.           MOVC A,@A+DPTR                                ;到表里找到它段碼
  123.           MOV P0,A                                                ;給數(shù)碼管數(shù)碼管
  124.           MOV A,BUFF                                       
  125.           RL A                                                       
  126.           MOV TEMP,A                                       
  127.           MOV DPTR,#TABLE1                               
  128.           MOVC A,@A+DPTR                                ;到表里找到它的T/2
  129.       MOV STH0,A                                       
  130.           MOV TH0,A                                               
  131.           INC TEMP                                               
  132.           MOV A,TEMP
  133.           MOVC A,@A+DPTR
  134.           MOV STL0,A
  135.           MOV TL0,A                                           ;給定時(shí)器高低位
  136.           SETB TR0
  137. NDK1A: MOV A,P1                                      ;松手了嗎親 ,不松手繼續(xù)出聲
  138.        ANL A,#0FH
  139.            XRL A,#0FH
  140.            JNZ NDK1A
  141.            CLR TR0
  142. KKEY4: MOV A,#0FFH
  143.        MOV P2,A
  144.            MOV A,P2
  145.            JB ACC.0,KKEY5                                  ;中斷按下了嗎,按下就唱歌了,想好了再按
  146.            LCALL DELY10MS
  147.            MOV A,P2
  148.            JB ACC.0,KKEY5
  149.            MOV BUFF,#16
  150.            MOV P0,#7FH
  151.            LJMP START22
  152. START22:MOV A,BUFF
  153.         CJNE A,#16,KKEY5
  154.                 LJMP START2
  155. KKEY5: LJMP MAIN
  156. START2:MOV TMOD,#10H            ;準(zhǔn)備播放音樂(lè)
  157.                 MOV IE,#88H
  158. START0:         MOV 30H,#00
  159. NEXT:        MOV A,30H
  160.                 MOV DPTR,#TAB                         ;拿到簡(jiǎn)譜碼表
  161.                 MOVC A,@A+DPTR
  162.                 MOV R2,A
  163.                 JZ EN0
  164.                 ANL A,#0FH
  165.                 MOV R5,A                 ;節(jié)拍放入R5
  166.                 MOV A,R2
  167.                 SWAP A
  168.                 ANL A,#0FH
  169.                 JNZ SING
  170.                 CLR TR1
  171.                 LJMP D1
  172. SING:        DEC A
  173.                 MOV 23H,A
  174.                 RL A
  175.                 MOV DPTR,#TAB1                  
  176.                 MOVC A,@A+DPTR
  177.                 MOV TH1,A
  178.                 MOV 24H,A                                  
  179.                 MOV A,23H
  180.                 RL A
  181.                 INC A
  182.                 MOVC A,@A+DPTR
  183.                 MOV TL1,A
  184.                 MOV 25H,A                               
  185.                 SETB TR1                                       
  186. D1:     CALL DELAY1                                                  
  187.                 INC 30H
  188.                 JMP NEXT
  189. EN0:    CLR  TR1
  190.                 LJMP START
  191. TIM1:   PUSH ACC
  192.         PUSH PSW
  193.                 MOV TL1,25H
  194.                 MOV TH1,24H
  195.                 CPL P3.0
  196.                 CPL P3.1
  197.                 POP PSW
  198.                 POP ACC
  199.                 RETI
  200. DELAY1: MOV R4,#02                             ;187MS
  201. DELAY2:    MOV R3,#187
  202. DELAY3:    MOV R2,#248
  203.         DJNZ R2,$
  204.                 DJNZ R3,DELAY3
  205.                 DJNZ R4,DELAY2
  206.                 DJNZ R5,DELAY1
  207.                 RET
  208. DELY10MS:MOV R6,#10                              ;10MS
  209. D10:     MOV R7,#248
  210.          DJNZ R7,$
  211.               DJNZ R6,D10
  212.              RET
  213. …………限于本文篇幅 余下代碼請(qǐng)從51黑下載附件…………
復(fù)制代碼

全部資料下載地址:
電子琴仿真及程序代碼.rar (329.4 KB, 下載次數(shù): 84)



作者: 初學(xué)者呆呆    時(shí)間: 2017-5-22 16:56
支持支持,不過(guò)不會(huì)匯編啊,有C語(yǔ)言的嗎?
作者: vampire-22    時(shí)間: 2017-6-8 21:25
還是不太懂啊。。。
作者: 小菜鳥的鳥    時(shí)間: 2018-6-20 09:20
老哥真的厲害




歡迎光臨 (http://m.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: a级免费观看视频 | 国产欧美在线播放 | 毛片免费观看 | 人和拘一级毛片c | 91免费入口| 国产黄色在线观看 | 日韩一二三区 | 久久国产精品视频 | 一区二区免费在线视频 | 激情五月综合 | 免费观看一区二区三区毛片 | 国产精品美女久久久久久免费 | 国产十日韩十欧美 | 欧美成人综合 | 91av精品| 999视频在线播放 | 国产日韩欧美中文 | 亚洲视频免费 | 亚洲国产一区视频 | 黄色片免费看视频 | 一区中文字幕 | 色橹橹欧美在线观看视频高清 | 日韩在线一区二区三区 | 日韩精品极品视频在线观看免费 | 免费高清av | 国产视频精品在线 | 激情自拍偷拍 | 国产午夜精品一区二区三区嫩草 | 日韩最新网站 | 亚洲精品成人av | 国产一区二区在线免费视频 | 龙珠z在线观看 | 精品日韩一区 | www.中文字幕.com | 国产精品美女一区二区 | 一级视频在线免费观看 | 天堂中文在线观看 | 免费看av大片 | 桃色五月 | 日韩精品一区二区三区中文在线 | 欧美黄色性生活视频 |