找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 1691|回复: 1
收起左侧

求单片机七键式电子琴

[复制链接]
ID:235585 发表于 2017-11-28 12:48 | 显示全部楼层 |阅读模式
20黑币
要求用汇编或者C语言基于51单片机开发板写一个七键式电子琴程序,按下4*4矩阵键盘里面的七个键发出duo,rui,mi..........的音调开发板信息如下,用的是STC89C52,无源蜂鸣器接口是P2^3,4*4矩阵键盘接口是P3口,晶振 11.0592MHZ

回复

使用道具 举报

ID:162360 发表于 2017-11-28 18:32 | 显示全部楼层
#include<reg51.h>
#include<math.h>
#define u8 unsigned char
#define u16 unsigned int
#define u32 unsigned long
sbit led0=P1^0;
sbit P11=P1^1;
sbit P12=P1^2;
sbit P13=P1^3;
sbit P14=P1^4;
sbit P15=P1^5;
sbit P16=P1^6;
sbit P17=P1^7;
#define _debug 1
code u16 fout[7]={262,294,330,349,392,440,494};

u16 _f=262;
u8 bufTL0,bufTH0;

void interrupt0 (void) interrupt 0 using 0
{
        static u8 cnt=0;
        u8 bai=0,ge=0,shi=0;
        if(P11==0)
                cnt=0;
        else if(P12==0)
                cnt=1;
        else if(P13==0)
                cnt=2;
        else if(P14==0)
                cnt=3;
        else if(P15==0)
                cnt=4;
        else if(P16==0)
                cnt=5;
        else if(P17==0)
                cnt=6;
        _f=fout[cnt];
        bai=_f/100;
        shi=_f/10%10;
        ge=_f%10;
        P3=(bai<<4)+0x0f;
        P2=shi;
        P2<<=4;
        P2+=ge;
        bufTL0=(65536-1000000*1/_f/1/2)%256;
        bufTH0=(65536-1000000*1/_f/1/2)/256;
}

void timer0(void) interrupt 1 using 0
{
        TL0=bufTL0;
        TH0=bufTH0;
        led0=!led0;
}

void main(void)
{
        u8 bai=0,ge=0,shi=0;
        bai=_f/100;
        shi=_f/10%10;
        ge=_f%10;
        P3=(bai<<4)+0x0f;
        P2=shi;
        P2<<=4;
        P2+=ge;
        EA=1;
        EX0=1;
        IT0=1;
        ET0=1;
        TMOD=0X01;
        bufTL0=(65536-1000000*1/_f/1/2)%256;
        bufTH0=(65536-1000000*1/_f/1/2)/256;
        TL0=bufTL0;
        TH0=bufTH0;
        TR0=1;
        while(1);
}

没有用矩阵键盘,用了个七个管脚的与门,实现

评分

参与人数 1黑币 +40 收起 理由
admin + 40 回帖助人的奖励!

查看全部评分

回复

使用道具 举报

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

本版积分规则

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

Powered by 单片机教程网

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