单片机c语言电子琴程序

我这有一个程序是蜂鸣器依次输出七个音符的,谁能把它改成按一个键输出一音符的程序,有六个键,输出1到6六个音符。按键是p3.2口到p3.7口。标题:蜂鸣器实验-音乐程序效果... 我这有一个程序是蜂鸣器依次输出七个音符的,谁能把它改成按一个键输出一音符的程序,有六个键,输出1到6六个音符。按键是p3.2口到p3.7口。标题: 蜂鸣器实验-音乐程序
效果: 简单输出7个音符响声
工作于:51开发板
作者: 孟庆全
说明: 使用晶振12M
******************************************************************************/

//头文件:
#include "reg51.h"

//引脚定义:
sbit SPK = P1^5; //定义蜂鸣器

//数据定义:
code unsigned int lhj[]={//数组存放音符频率,两个字节组成一个音符数据
0xf8,0x8b, //1 do
0xf9,0x5b, //2 re
0xfa,0x17, //3 mi
0xfa,0x6b, //4 fa
0xfb,0x07, //5 suo
0xfb,0x92, //6 la
0xfc,0x0d, //7 xi
};
unsigned char ly_cc; //用于数组索引

//函数定义:
void init();
void delay(unsigned int time); //延时子函时,

//主函数
void main(void)
{
unsigned char i;
init();
while(1)+++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++++
ly_cc=0;
for(i=0;i<7;i++){ //循环7次输出音符do re mi fa suo la xi
TH0=lhj[ly_cc];
TL0=lhj[ly_cc+1];
TR0=1;
delay(50000);
TR0=0;
SPK=1;
delay(30000);
ly_cc+=2;
}
delay(50000);
delay(50000);
}
}

//初始化
void init()
{
TMOD=0X01;
EA=1;
ET0=1;
TR0=0;
}
//中断函数
void timer0() interrupt 1
{
TH0=lhj[ly_cc];
TL0=lhj[ly_cc+1];
SPK=~SPK;
}
//延时子函数
void delay(unsigned int time)
{
while(time--);
}
展开
 我来答
想当诸侯的小蚂蚁
2011-12-20 · TA获得超过344个赞
知道小有建树答主
回答量:267
采纳率:0%
帮助的人:143万
展开全部
GoldBr
推荐律师服务: 若未解决您的问题,请您详细描述您的问题,通过百度律临进行免费专业咨询

为你推荐:

下载百度知道APP,抢鲜体验
使用百度知道APP,立即抢鲜体验。你的手机镜头里或许有别人想知道的答案。
扫描二维码下载
×

类别

我们会通过消息、邮箱等方式尽快将举报结果通知您。

说明

0/200

提交
取消

辅 助

模 式