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

標題: 基于單片機的矩陣式鍵盤電子琴仿真課程設計 原創作品 [打印本頁]

作者: 15764334643    時間: 2017-5-19 17:52
標題: 基于單片機的矩陣式鍵盤電子琴仿真課程設計 原創作品
電子琴的仿真我在本科階段的一個課程設計題目,以51單片機為核心,電子琴按鍵是4乘4的矩陣式鍵盤,代碼是用匯編語言寫的,都是原創。


51單片機源程序:
  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                                ;為零無鍵按下轉移
  21.          LCALL DELY10MS
  22.          MOV A,P1                                ;到底有沒有鍵按下啊,去抖
  23.          ANL A,#0FH
  24.          XRL A,#0FH
  25.          JZ KKEY1                               
  26.          MOV A,P1
  27.          ANL A,#0FH
  28.          CJNE A,#0EH,KK1                    ;相等說明這回是真有鍵按下了,不騙人        00001110第一列
  29.          MOV BUFF,#0                        ;給個鍵值
  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.                            ;下面都是一樣的套路掃描第二三四行,復制三遍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                                                ;給數碼管數碼管
  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                                           ;給定時器高低位
  136.           SETB TR0
  137. NDK1A: MOV A,P1                                      ;松手了嗎親 ,不松手繼續出聲
  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            ;準備播放音樂
  157.                 MOV IE,#88H
  158. START0:         MOV 30H,#00
  159. NEXT:        MOV A,30H
  160.                 MOV DPTR,#TAB                         ;拿到簡譜碼表
  161.                 MOVC A,@A+DPTR
  162.                 MOV R2,A
  163.                 JZ EN0
  164.                 ANL A,#0FH
  165.                 MOV R5,A                 ;節拍放入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. …………限于本文篇幅 余下代碼請從51黑下載附件…………
復制代碼

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



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




歡迎光臨 (http://www.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 欧美视频在线一区 | 亚洲综合色视频在线观看 | 国产精品高潮呻吟久久久久 | 国产精品成人在线 | 自拍 亚洲 欧美 老师 丝袜 | 欧美视频一区二区三区 | 狠狠干2020 | 亚洲综合国产精品 | 五月香婷婷 | 精品日韩一区二区三区av动图 | 日本电影韩国电影免费观看 | 成人免费一区二区三区牛牛 | 久久久成人一区二区免费影院 | 国产一区二区三区四区区 | 亚洲成av人片在线观看无码 | 天天干干| 日本成人免费观看 | 美女黄色在线观看 | 欧美亚洲国产一区二区三区 | 黄色国产在线视频 | 国产一级在线观看 | 日本手机看片 | 青娱乐av | 亚洲在线一区二区 | 午夜精品网站 | 欧美二区在线 | 亚洲一区在线免费观看 | 精品视频一区二区三区在线观看 | 午夜精品一区二区三区三上悠亚 | 精品国产一区二区三区性色av | 91av国产在线视频 | 久久综合久 | yeyeav| 国产一区二区三区 | 337p日韩| 国产专区在线 | 福利视频一区二区 | 91大神在线看 | 99国产视频 | 一区二区三区免费 | 91香蕉嫩草|