#include<reg51.h>
#include<absacc.h>
#include<intrins.h>
#define uchar unsigned char
#define uint unsigned int
#define PA XBYTE[0xff7c]
#define PB XBYTE[0xff7d]
#define PC XBYTE[0xff7e]
#define CTRL XBYTE[0xff7f]
sbit sound=P2^0;
sbit duanma=P2^2;
sbit m=P2^3;
uint tab[]={64400,64580,64684,64777,64820,64898,64968,65030,65058,65110,64994}; //音符的T值
uchar code table[]={
0x3f,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71};
int num=0,savenum[8]={0,0,0,0,0,0,0,0},cnt=0; //存储最近8个按键
int x;
uchar temp;
void anjian();
void music();
void delay(uint z);
void display(int *z);
void main()
{
EA=1;
TMOD=0x01;
ET0=1;
PT0=1;
CTRL=0x90;
while(1)
{
anjian();
music();
}
}
void anjian()
{
temp=PA;
delay(10);
switch(temp)
{
case 0x7f:num=1;
break;
case 0xbf:num=2;
break;
case 0xdf:num=3;
break;
case 0xef:num=4;
break;
case 0xf7:num=5;
break;
case 0xfb:num=6;
break;
case 0xfd:num=7;
break;
case 0xfe:num=8;
break;
}
if(temp!=0xff)
{
delay(5);
for(cnt=0;cnt<7;cnt++)
{
savenum[cnt]=savenum[cnt+1];
}
savenum[cnt++]=(num);
if(cnt==8)
{
cnt=0;
}
TH0=tab[num]/256;
TL0=tab[num]%256;
TR0=1;
delay(15);
temp=PA;
for(x=0;x<=5;x++)
{
display(savenum);
}
}
if(temp==0xff)
{
TR0=0;
display(savenum);
}
sound=1;
}
void delay(uint z)
{
uint x,y;
for(x=z;x>0;x--)
{
for(y=120;y>0;y--);
}
}
void shengyin() interrupt 1
{
TH0=tab[num]/256;
TL0=tab[num]%256;
sound=~sound;
}
void display(int *z)
{
int x;
uchar weixuan;
weixuan=0xfe;
for(x=0;x<=7;x++)
{
PC=weixuan; //位码
PB=table[z[x]]; //段码
duanma=1;
duanma=0;
delay(5);
PC=0xff;//清零
weixuan=_crol_(weixuan,1);
}
}
void music()
{
if(m==0)
{
delay(5);
PC=0x00; //全显示
PB=0x3e; //显示字母U
duanma=1;
duanma=0;
delay(10);
if(m==0)
{
delay(2000);
if(m==0)
{
num=2;
TR0=1;
delay(600);//音符长度
TR0=0;
delay(100);//间隔长度
num=3;
TR0=1;
delay(300);
TR0=0;
delay(100);
num=4;
TR0=1;
delay(600);
TR0=0;
delay(100);
num=5;
TR0=1;
delay(300);
TR0=0;
delay(100);
num=6;
TR0=1;
delay(600);
TR0=0;
delay(100);
num=8;
TR0=1;
delay(150);
TR0=0;
delay(50);
num=10;
TR0=1;
delay(150);
TR0=0;
delay(50);
num=6;
TR0=1;
delay(900);
TR0=0;
delay(200);
num=6;
TR0=1;
delay(600);
TR0=0;
delay(100);
num=10;
TR0=1;
delay(300);
TR0=0;
delay(100);
num=8;
TR0=1;
delay(600);
TR0=0;
delay(100);
num=9;
TR0=1;
delay(150);
TR0=0;
delay(50);
num=10;
TR0=1;
delay(150);
TR0=0;
delay(50);
num=6;
TR0=1;
delay(600);
TR0=0;
delay(100);
num=5;
TR0=1;
delay(300);
TR0=0;
delay(100);
num=6;
TR0=1;
delay(900);
TR0=0;
delay(200);
num=10;
TR0=1;
delay(600);
TR0=0;
delay(100);
num=8;
TR0=1;
delay(300);
TR0=0;
delay(100);
num=6;
TR0=1;
delay(600);
TR0=0;
delay(100);
num=4;
TR0=1;
delay(300);
TR0=0;
delay(100);
num=5;
TR0=1;
delay(600);
TR0=0;
delay(100);
num=10;
TR0=1;
delay(150);
TR0=0;
delay(50);
num=6;
TR0=1;
delay(150);
TR0=0;
delay(50);
num=4;
TR0=1;
delay(600);
TR0=0;
delay(100);
num=2;
TR0=1;
delay(300);
TR0=0;
delay(100);
num=3;
TR0=1;
delay(600);
TR0=0;
delay(100);
num=1;
TR0=1;
delay(300);
TR0=0;
delay(100);
num=0;
TR0=1;
delay(600);
TR0=0;
delay(100);
num=3;
TR0=1;
delay(300);
TR0=0;
delay(100);
num=2;
TR0=1;
delay(1500);
TR0=0;
delay(200);
}
}
}
}
dianziqin.rar_ dianziqin_dianziqin_按键_按键长按
版权申诉
186 浏览量
2022-09-22
18:49:59
上传
评论
收藏 115KB RAR 举报
weixin_42651887
- 粉丝: 79
- 资源: 1万+
最新资源
- Music-Player +PlayerActivity+ rockplayer+ SeeJoPlayer 播放器JAVA源码
- vscode-1.46.0.tar源码文件
- 最近很火植物大战僵尸杂交版2.08苹果+安卓+PC+防闪退工具V2+修改工具+高清工具+通关存档整合包更新
- 超级好用的截图工具PixPin,可录制Gif图
- Screenshot_2024-05-21-17-06-42-64_2332cb9b27b851b548ba47a91682926c.jpg
- 毕业设计参考 - 基于树莓派、OpenCV及Python的人脸识别
- node-v18.20.2-linux-arm64
- 222222222222
- 16张相机标定图片,可复现本文畸变矫正
- dbeaver-ce-23.3.1-x86_64-setup.zip
资源上传下载、课程学习等过程中有任何疑问或建议,欢迎提出宝贵意见哦~我们会及时处理!
点击此处反馈