资源简介

输入为4*4按键,每个按键代表不同的音符,预先已经设置好音符表,即使蜂鸣器发出不同频率的声音

资源截图

代码片段和文件信息

#include

#define uint unsigned int
#define uchar unsigned char
uchar temp;
uchar key;
uchar ij;
uchar STH0;
uchar STL0;
sbit beer=P1^0;
sbit P34=P3^4;sbit P35=P3^5;
sbit P36=P3^6;sbit P37=P3^7;
uint code tab[]={64021641036426064400645246458064684647776482064898649686503065058651106515765178}; //音符表

/**********************主函数*******************/
void main(void)
{
TMOD=0x01;       //设置定时器为工作方式1,16位定时/计数器模式
ET0=1;       //打开定时器0
EA=1;     //允许所有中断
while(1)
{
  P3=0xff;
P34=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=0;break;
case 0x0d: key=1;break;
case 0x0b: key=2;break;
case 0x07: key=3;break;
}
temp=P3;
beer=~beer;
STH0=tab[key]/256;
STL0=tab[key]%256;
TR0=1;             //开定时器0
temp=temp&0x0f;
while(temp!=0x0f)
{temp=P3;
   temp=temp&0x0f; 
 }
 TR0=0; 
}
}
P3=0xff;
P35=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;
beer=~beer;
STH0=tab[key]/256;
STL0=tab[key]%256;
TR0=1;             //开定时器0
temp=temp&0x0f;
while(temp!=0x0f)
{temp=P3;
   temp=temp&0x0f; 
 }
 TR0=0; 
}
}
P3=0xff;
P36=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;
beer=~beer;
STH0=tab[key]/256;
STL0=tab[key]%256;
TR0=1;             //开定时器0
temp=temp&0x0f;
while(temp!=0x0f)
{temp=P3;
   temp=temp&0x0f; 
 }
 TR0=0; 
}
}
P3=0xff;
P37=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;
beer=~beer;
STH0=tab[key]/256;
STL0=tab[key]%256;
TR0=1;             //开定时器0
temp=temp&0x0f;
while(temp!=0x0f)
{temp=P3;
   temp=temp&0x0f; 
 }
 TR0=0; 
}
}
 }
}
/*****************定时器T0中断服务函数*********************/
void to(voi

 属性            大小     日期    时间   名称
----------- ---------  ---------- -----  ----
     目录           0  2018-11-01 18:58  简易电子琴设计\
     文件       17525  2018-08-25 16:15  简易电子琴设计\Backup Of 新工程.pdsbak
     文件        1852  2018-08-25 15:47  简易电子琴设计\Last Loaded 新工程.pdsbak
     文件       18168  2018-08-27 15:35  简易电子琴设计\Last Loaded 简易电子琴.pdsbak
     目录           0  2018-11-01 18:58  简易电子琴设计\Listings\
     文件       14537  2018-08-28 15:15  简易电子琴设计\Listings\STARTUP.lst
     文件        7121  2018-08-28 15:15  简易电子琴设计\Listings\简易电子琴.lst
     文件       10748  2018-08-28 15:15  简易电子琴设计\Listings\简易电子琴.m51
     目录           0  2018-11-01 18:58  简易电子琴设计\objects\
     文件         828  2018-08-28 15:15  简易电子琴设计\objects\STARTUP.obj
     文件        6696  2018-08-28 15:15  简易电子琴设计\objects\简易电子琴
     文件        1030  2018-08-28 15:15  简易电子琴设计\objects\简易电子琴.build_log.htm
     文件        1768  2018-08-28 15:15  简易电子琴设计\objects\简易电子琴.hex
     文件         133  2018-08-28 15:15  简易电子琴设计\objects\简易电子琴.lnp
     文件        7237  2018-08-28 15:15  简易电子琴设计\objects\简易电子琴.obj
     文件        6376  2016-04-01 17:01  简易电子琴设计\STARTUP.A51
     文件         328  2018-08-25 16:15  简易电子琴设计\新工程.pdsprj.ODM.ggg.workspace
     文件        3214  2018-08-28 16:12  简易电子琴设计\简易电子琴.c
     文件       17649  2018-08-28 15:18  简易电子琴设计\简易电子琴.pdsprj
     文件        2200  2018-08-28 15:39  简易电子琴设计\简易电子琴.pdsprj.ODM.ggg.workspace
     文件       85192  2018-08-28 16:12  简易电子琴设计\简易电子琴.uvgui.ggg
     文件        5476  2018-08-25 17:28  简易电子琴设计\简易电子琴.uvopt
     文件       14062  2018-08-25 17:28  简易电子琴设计\简易电子琴.uvproj

评论

共有 条评论