AT89S51制作4X4简易电子琴单片机编程

kuaidi.ping-jia.net  作者:佚名   更新日期:2024-08-29
您好,请问你的那个AT89S51制作4X4简易电子琴单片机的程序,电路图和原理还在吗?

我给你发邮箱了,那个是我以前在网上下的,我没有亲自试过,但那程序我看应该没问题

http://wenku.baidu.com/view/48b17173f242336c1eb95e9c.html


这个肯定适合你!!

Proteus电子琴


整个设计过程,程序电路图都有了

#include <AT89X51.H>
unsigned char temp;
unsigned char key;
unsigned char i,j;
unsigned char STH0;
unsigned char STL0;
unsigned int code tab[]={64021,64103,64260,64400,
64524,64580,64684,64777,
64820,64898,64968,65030,
65058,65110,65157,65178};

void main(void)
{
TMOD=0x01;
ET0=1;
EA=1;

while(1)
{
P3=0xff; //将P3口取出
P3_4=0; //使P3_4为低电平,这样可以判断第一竖排有没有键按下
temp=P3;
temp=temp & 0x0f;
if (temp!=0x0f) //有键按下
{
for(i=50;i>0;i--)
for(j=200;j>0;j--); //延时
temp=P3;
temp=temp & 0x0f;
if (temp!=0x0f) //再判断是否有键按下
{
temp=P3;
temp=temp & 0x0f;
switch(temp) //判断是哪个键按下
{
case 0x0e:
key=0;
break;
case 0x0d:
key=1;
break;
case 0x0b:
key=2;
break;
case 0x07:
key=3;
break;
}
temp=P3;
P1_0=~P1_0;
P0=table[key];
STH0=tab[key]/256; //找出键对应的频率的时间,作为定时器中断初始值
STL0=tab[key]%256;
TR0=1;
temp=temp & 0x0f;
while(temp!=0x0f)
{
temp=P3;
temp=temp & 0x0f;
}
TR0=0;
}
}

P3=0xff;
P3_5=0; //跟上面差不多,现在是判断第二排的按键
temp=P3;
temp=temp & 0x0f;
if (temp!=0x0f)
{
for(i=50;i>0;i--)
for(j=200;j>0;j--);
temp=P3;
temp=temp & 0x0f;
if (temp!=0x0f)
{
temp=P3;
temp=temp & 0x0f;
switch(temp)
{
case 0x0e:
key=4;
break;
case 0x0d:
key=5;
break;
case 0x0b:
key=6;
break;
case 0x07:
key=7;
break;
}
temp=P3;
P1_0=~P1_0;
P0=table[key];
STH0=tab[key]/256;
STL0=tab[key]%256;
TR0=1;
temp=temp & 0x0f;
while(temp!=0x0f)
{
temp=P3;
temp=temp & 0x0f;
}
TR0=0;
}
}

P3=0xff;
P3_6=0;
temp=P3;
temp=temp & 0x0f;
if (temp!=0x0f)
{
for(i=50;i>0;i--)
for(j=200;j>0;j--);
temp=P3;
temp=temp & 0x0f;
if (temp!=0x0f)
{
temp=P3;
temp=temp & 0x0f;
switch(temp)
{
case 0x0e:
key=8;
break;
case 0x0d:
key=9;
break;
case 0x0b:
key=10;
break;
case 0x07:
key=11;
break;
}
temp=P3;
P1_0=~P1_0;
P0=table[key];
STH0=tab[key]/256;
STL0=tab[key]%256;
TR0=1;
temp=temp & 0x0f;
while(temp!=0x0f)
{
temp=P3;
temp=temp & 0x0f;
}
TR0=0;
}
}

P3=0xff;
P3_7=0;
temp=P3;
temp=temp & 0x0f;
if (temp!=0x0f)
{
for(i=50;i>0;i--)
for(j=200;j>0;j--);
temp=P3;
temp=temp & 0x0f;
if (temp!=0x0f)
{
temp=P3;
temp=temp & 0x0f;
switch(temp)
{
case 0x0e:
key=12;
break;
case 0x0d:
key=13;
break;
case 0x0b:
key=14;
break;
case 0x07:
key=15;
break;
}
temp=P3;
P1_0=~P1_0;
P0=table[key];
STH0=tab[key]/256;
STL0=tab[key]%256;
TR0=1;
temp=temp & 0x0f;
while(temp!=0x0f)
{
temp=P3;
temp=temp & 0x0f;
}
TR0=0;
}
}
}
}

void t0(void) interrupt 1 using 0
{
TH0=STH0;
TL0=STL0;
P1_0=~P1_0;
}
电路图和原理我都有,刚好我也在做这个。 你自己看下程序吧,我也不愿意注释。
这个是能发出16个音符声音的

  • 求关于单片机的电子琴C程序
    答:1. 实验任务 (1. 由4X4 组成16 个按钮矩阵,设计成16 个音。(2. 可随意弹奏想要表达的音乐。2. 电路原理图 图4.22.1 3. 系统板硬件连线 (1. 把“单片机系统”区域中的P1.0 端口用导线连接到“音频放大模块”区 域中的SPK IN 端口上;102 (2. 把“单片机系统“区域中的P3.0...
  • 电子琴的设计原理
    答:22. 电子琴 1. 实验任务 (1. 由4X4组成16个按钮矩阵,设计成16个音。 (2. 可随意弹奏想要表达的音乐。 2. 电路原理图 图4.22.1 3. 系统板硬件连线 (1. 把“单片机系统”区域中的P1.0端口用导线连接到“音频放大模块”区域中的SPK IN端口上; (2. 把“单片机系统“区域中的P3.0-P3.7端口用8芯排线...
  • 电子信息工程毕业论文题目参考
    答:47.基于USB接口的步进电机控制的研究与实现 48.基于单片机的电子琴设计 49.基于FPGA的直序扩频通信研究与设计 50.基于单片机的发射机控制系统 51.声光报警器的设计与研究 52.单片机电源 53.基于P87LPC768的电机控制系统 54.基于单片机的LCD电子钟设计 55.音响放大器的设计 56.超外差收音机制作及分析...
  • 单片机原理、应用与PROTEUS仿真的章节目录
    答:15.14 基于单片机、DS1302的电子时钟的设计与仿真15.15 带存储播放功能的简易电子琴的设计与仿真*15.16 基于单片机、DS18B20的数字温度计的设计与仿真15.17 基于单片机的LED点阵显示屏的设计与仿真*15.18 基于单片机的纯水机控制板的设计与仿真 附录A AT89S51相对AT89C51 增加的功能附录A.1 AT89S51单片机内部结构、引脚图和...
  • 单片机 简易电子琴的设计?
    答:22. 电子琴 (1. 由4X4组成16个按钮矩阵,设计成16个音。(2. 可随意弹奏想要表达的音乐。2. 电路原理图 图4.22.1 3. 系统板硬件连线 (1. 把“单片机系统”区域中的P1.0端口用导线连接到“音频放大模块”区域中的SPK IN端口上;(2. 把“单片机系统“区域中的P3.0-P3.7端口用...
  • 51单片机c语言程序,求大虾帮忙改下让每次按键后step的值加大一点_百度...
    答:22. 电子琴 1. 实验任务 (1. 由4X4组成16个按钮矩阵,设计成16个音。(2. 可随意弹奏想要表达的音乐。2. 电路原理图 图4.22.1 3. 系统板硬件连线 (1. 把“单片机系统”区域中的P1.0端口用导线连接到“音频放大模块”区域中的SPK IN端口上;(2. 把“单片机系统“区域中的P3.0...
  • 单片机简易电子琴程序
    答:22. 电子琴 1. 实验任务 (1. 由4X4组成16个按钮矩阵,设计成16个音。 (2. 可随意弹奏想要表达的音乐。 2. 电路原理图 图4.22.1 3. 系统板硬件连线 (1. 把“单片机系统”区域中的P1.0端口用导线连接到“音频放大模块”区域中的SPK IN端口上; (2. 把“单片机系统“区域中的P3.0-P3.7端口用8芯排线连...
  • 电子信息工程专业毕业论文题目怎么选
    答:3. 智能型充电器的电源和显示设计 4. 基于单片机的电子时钟设计及应用 5. 基于单片机的智能电子时钟的设计及应用 6. 超外差中波调幅收音机组装及调试 7. 基于USB接口的步进电机控制的研究与实现 8. 基于单片机的电子琴设计 9. 基于FPGA的直序扩频通信研究与设计 10. 基于单片机的发射机控制系统 11...