找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 2791|回复: 0
打印 上一主题 下一主题
收起左侧

单片机汇编语言简易电子琴仿真设计与源码

[复制链接]
跳转到指定楼层
楼主
使用汇编语言的简易电子琴仿真原理图如下(proteus仿真工程文件可到本帖附件中下载)


单片机源程序如下:
  1. LINE        EQU                30H
  2. ROW                EQU                31H
  3. VAL                EQU                32H
  4.                 ORG                00H
  5.                 SJMP        START
  6.                 ORG                0BH
  7.                 LJMP        INT_T0
  8. START:        MOV                P0,#00H
  9.                 MOV                TMOD,#01H
  10. ;******************************************
  11. ;按键扫描程序
  12. ;******************************************
  13. LSCAN:        MOV                P3,#0F0H       
  14. L1:                JNB                P3.0,L2
  15.                 LCALL        DELAY
  16.                 JNB                P3.0,L2
  17.                 MOV                LINE,#00H
  18.                 LJMP        RSCAN
  19. L2:                JNB                P3.1,L3
  20.                 LCALL        DELAY
  21.                 JNB                P3.1,L3
  22.                 MOV                LINE,#01H
  23.                 LJMP        RSCAN
  24. L3:                JNB                P3.2,L4
  25.                 LCALL        DELAY
  26.                 JNB                P3.2,L4
  27.                 MOV                LINE,#02H
  28.                 LJMP        RSCAN
  29. L4:                JNB                P3.3,L1
  30.                 LCALL        DELAY
  31.                 JNB                P3.3,L1
  32.                 MOV                LINE,#03H

  33. RSCAN:        MOV                P3,#0FH
  34. C1:                JNB                P3.4,C2
  35.                 MOV                ROW,#00H
  36.                 LJMP        CALCU
  37. C2:                JNB                P3.5,C3
  38.                 MOV                ROW,#01H
  39.                 LJMP        CALCU
  40. C3:                JNB                P3.6,C4
  41.                 MOV                ROW,#02H
  42.                 LJMP        CALCU
  43. C4:                JNB                P3.7,C1
  44.                 MOV                ROW,#03H               

  45. CALCU:        MOV                A,LINE                        ;计算键号
  46.                 MOV                B,#04H
  47.                 MUL                AB
  48.                 ADD                A,ROW
  49.                 MOV                VAL,A
  50. ;*******************************************
  51. ;根据键号查表得到定时器的定时常数,
  52. ;从而发出不同频率的声音
  53. ;*******************************************
  54.                 MOV                DPTR,#TABLE2       
  55.                 MOV                B,#2
  56.                 MUL                AB
  57.                 MOV                R1,A
  58.                 MOVC        A,@A+DPTR
  59.                 MOV                TH0,A
  60.                 INC                R1
  61.                 MOV                A,R1
  62.                 MOVC        A,@A+DPTR
  63.                 MOV                TL0,A
  64.                 MOV                IE,#82H
  65.                 SETB        TR0

  66.                 MOV                A,VAL                        ;显示键号
  67.                 MOV                DPTR,#TABLE1
  68.                 MOVC        A,@A+DPTR
  69.                 MOV                P0,A
  70. ;*******************************************
  71. ;等待按键释放
  72. ;*******************************************
  73.         W0:        MOV                A,P3                       
  74.                 CJNE        A,#0FH,W1
  75.                 MOV                P0,#00H
  76.                 CLR                TR0
  77.                 LJMP        LSCAN
  78.         W1:        MOV                A,P3
  79.                 CJNE        A,#0F0H,W2
  80.                 MOV                P0,#00H
  81.                 CLR                TR0
  82.                 LJMP        LSCAN
  83.         W2:        SJMP        W0       
  84. ;****************************************
  85. ;定时器0中断服务程序,输出特定频率的方波,
  86. ;驱动扬声器发声
  87. ;****************************************
  88. INT_T0:        MOV                DPTR,#TABLE2
  89.                 MOV                A,VAL
  90.                 MOV                B,#2
  91.                 MUL                AB
  92.                 MOV                R1,A
  93.                 MOVC        A,@A+DPTR
  94.                 MOV                TH0,A
  95.                 INC                R1
  96.                 MOV                A,R1
  97.                 MOVC        A,@A+DPTR
  98.                 MOV                TL0,A
  99.                 CPL                P1.0
  100.                 RETI       

  101. DELAY:        MOV                R6,#10
  102. D1:                MOV                R7,#250
  103.                 DJNZ        R7,$
  104.                 DJNZ        R6,D1
  105.                 RET

  106. TABLE1: DB                 3FH,06H,5BH,4FH,66H,6DH,7DH,07H
  107.                 DB                 7FH,6FH,77H,7CH,39H,5EH,79H,71H
  108. TABLE2:        DW                 64021,64103,64260,64400
  109.                 DW                 64524,64580,64684,64777
  110.                 DW                 64820,64898,64968,65030
  111.                 DW                 65058,65110,65157,65178
  112.                 END
复制代码

所有资料51hei提供下载:
简易电子琴设计.zip (50.22 KB, 下载次数: 43)



分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏 分享淘帖 顶 踩
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表