haoDIY创好电子音响电脑科技DIY小制作发明移动版

主页 > 电子DIY > 单片机 >

使用51单片机diy制作玩具电子琴

这是一款用51单片机控制的玩具电子琴,用到了51的定时器和键盘技术,它的汇编程序流程如下,很适合初学者学习制作。

        说明:由单片机的P1.0口输出音频信号,在P1.0口接三极管以驱动喇叭,最好用两个三极管构成达林顿结构。P2口连接8个一端接地的按键作为输入,当然也需要连接8只10K的电阻至电源作为上拉电阻。P2.0~P2.7依次为Do、Re、Mi、Fa、So、La、Si、Do(高)音。

 

       BUZZ     EQU P1.0
       ORG      0000H
       LJMP     MAIN
       ORG      000BH
       LJMP     INT_T0
       ORG      0100H
MAIN:  
       MOV      SP,#60H        ;初始化堆栈指针
       MOV      30H,#00        ;定时器初值清零
       MOV      31H,#00
       MOV      P1,#0FFH       ;设置P1口为输入模式
       MOV      TMOD,#01H      ;设置定时器0为工作模式1
       SETB     ET0            ;开定时器0中断
       SETB     EA             ;开总中断
       CLR      TR0            ;关闭定时器0
START: 
       MOV      R0,P2      
       CJNE     R0,#0FFH,KEY1  ;键盘扫描
       CLR      TR0
       SJMP     START
KEY1:
       CJNE     R0,#0FEH,KEY2  ;K1键按下
       MOV      30H,#0FBH      ;设置音阶1
       MOV      31H,#0E9H
       LJMP     SET_TIMER
KEY2:  
       CJNE     R0,#0FDH,KEY3  ;K2键按下
       MOV      30H,#0FCH      ;设置音阶2
       MOV      31H,#5CH
       LJMP     SET_TIMER
KEY3:
       CJNE     R0,#0FBH,KEY4  ;K3键按下
       MOV      30H,#0FCH      ;设置音阶3
       MOV      31H,#0C1H
       LJMP     SET_TIMER
KEY4:
       CJNE     R0,#0F7H,KEY5  ;K4键按下
       MOV      30H,#0FCH      ;设置音阶4
       MOV      31H,#0EFH
       LJMP     SET_TIMER
KEY5:
       CJNE     R0,#0EFH,KEY6  ;K5键按下
       MOV      30H,#0FDH      ;设置音阶5
       MOV      31H,#045H
       LJMP     SET_TIMER
KEY6:
       CJNE     R0,#0DFH,KEY7  ;K6键按下
       MOV      30H,#0FDH      ;设置音阶6
       MOV      31H,#92H
       LJMP     SET_TIMER
KEY7:
       CJNE     R0,#0BFH,KEY8  ;K7键按下
       MOV      30H,#0FDH      ;设置音阶7
       MOV      31H,#0D6H
       LJMP     SET_TIMER
KEY8: 
       CJNE R0,#7FH,NOKEY  ;K8按下
       MOV      30H,#0FDH      ;设置音阶8
       MOV      31H,#0FBH
SET_TIMER:
       SETB     TR0            ;发声
       SJMP     START
NOKEY:
       CLR      TR0            ;无键按下
       SJMP     START
INT_T0:                        ;T0中断服务程序
       MOV      TH0,30H        ;定时器赋初值
       MOV      TL0,31H (责任编辑:admin)

haoDIY创好电子 版权所有,电话微信13977534587