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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

基于單片機的矩陣式鍵盤電子琴仿真課程設計 原創作品

[復制鏈接]
跳轉到指定樓層
樓主
電子琴的仿真我在本科階段的一個課程設計題目,以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)


評分

參與人數 2黑幣 +13 收起 理由
小菜鳥的鳥 + 8 很給力!
syl829416534 + 5 共享資料的黑幣獎勵!

查看全部評分

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

使用道具 舉報

沙發
ID:195094 發表于 2017-5-22 16:56 | 只看該作者
支持支持,不過不會匯編啊,有C語言的嗎?
回復

使用道具 舉報

板凳
ID:209348 發表于 2017-6-8 21:25 | 只看該作者
還是不太懂啊。。。
回復

使用道具 舉報

地板
ID:354692 發表于 2018-6-20 09:20 | 只看該作者
老哥真的厲害
回復

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 日韩久久中文字幕 | 亚洲人成在线播放 | 国产视频一区二区 | 天天久| 亚洲精品在线观看视频 | 二区国产 | 日本又色又爽又黄的大片 | 99精品视频在线观看 | 91av国产在线视频 | 亚洲精品视频导航 | 日韩在线播放中文字幕 | 成人精品福利 | 国产盗摄视频 | 国产成人精品一区二区三区视频 | 国产精品免费小视频 | 中午字幕在线观看 | 日韩一级 | 久久久99国产精品免费 | 99视频在线免费观看 | 一区免费| 91久久久久久久久久久 | 狠狠狠干| 欧美v在线观看 | 国产在线精品一区二区 | 欧美久久久网站 | 国产精品一区三区 | 免费在线日韩 | 成人国产精品久久 | 伦理二区 | 日韩在线91 | 久久成人精品视频 | 精品国产免费人成在线观看 | 久久出精品 | 欧美激情一区二区三区 | a欧美| 999视频在线播放 | 国产一区二区在线91 | 日韩欧美网 | 成人免费在线观看 | 久久久精品一区二区三区四季av | 久久久亚洲一区 |