久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费
標題:
自己在51單片機開發板上弄得七音電子琴程序
[打印本頁]
作者:
934253430
時間:
2019-6-6 16:49
標題:
自己在51單片機開發板上弄得七音電子琴程序
大致功能為在一定的按鍵時間內記一次數,并且會發出音符。記錄20個播放該段音樂。
單片機源程序如下:
#include <reg52.h>
#define uint unsigned int
#define uchar unsigned char
sbit dula=P2^6;
sbit wela=P2^7;
sbit beep=P2^3;
uint a,b;
uchar key,shu[20];
int i=-1;
uint code Freqtab[] = {
64580,64684,64777,
64820,64898,64968,65030};
uchar code table[]={
0x00,0x06,0x5b,0x4f,
0x66,0x6d,0x7d,0x07,
0x7f,0x6f,0x77,0x7c,
0x39,0x5e,0x79,0x71};
void delay(uint x)
{
uint i,j;
for(i=x;i>0;i--)
for(j=110;j>0;j--);
}
void send(uchar x)
{
SBUF=x;
while(!TI);
;
TI=0;
}
void display(uchar num)
{
dula=1;
P0=table[num];
dula=0;
P0=0xff;
wela=1;
P0=0xfe;
wela=0;
delay(5);
}
uchar matrixkeyscan()
{
uchar temp;
P3=0xfb;
temp=P3;
temp=temp&0xf0;
if(temp!=0xf0)
{
delay(10);
temp=P3;
temp=temp&0xf0;
if(temp!=0xf0)
{
temp=P3;
switch(temp)
{
case 0xeb:
key=1;
// beep=1;
a=Freqtab[0]/256;
b=Freqtab[0]%256;
TR0=1; i++;
shu[i]=1;
delay(150);
send(key);
break;
case 0xdb:
key=2;
// beep=1;
a=Freqtab[1]/256;
b=Freqtab[1]%256;
TR0=1; i++;
shu[i]=2;
delay(150);
send(key);
break;
case 0xbb:
key=3;
TR0=1;
// beep=1;
a=Freqtab[2]/256;
b=Freqtab[2]%256; i++;
shu[i]=3;
delay(150);
send(key);
break;
case 0x7b:
key=4;
// beep=1;
a=Freqtab[3]/256;
b=Freqtab[3]%256;
TR0=1; i++;
shu[i]=4;
delay(150);
send(key);
break;
}
display(key);
}
}
/* switch(i)
{
case 0:shu[i]=0;break;
case 1:shu[i]=1;break;
case 2:shu[i]=2;break;
case 3:shu[i]=3;break;
case 4:shu[i]=4;break;
case 5:shu[i]=5;break;
case 6:shu[i]=6;break;
}
*/
P3=0xf7;
temp=P3;
temp=temp&0xf0;
if(temp!=0xf0)
{
delay(10);
temp=P3;
temp=temp&0xf0;
if(temp!=0xf0)
{
temp=P3;
switch(temp)
{
case 0xe7:
key=5;
// beep=1;
a=Freqtab[4]/256;
b=Freqtab[4]%256;
TR0=1;
shu[i]=5;
delay(150);
i++;
send(key);
break;
case 0xd7:
key=6;
// beep=1;
a=Freqtab[5]/256;
b=Freqtab[5]%256;
TR0=1; i++;
shu[i]=6;
delay(150);
send(key);
break;
case 0xb7:
key=7;
// beep=1;
a=Freqtab[6]/256;
b=Freqtab[6]%256;
TR0=1; i++;
shu[i]=7;
delay(150);
send(key);
break;
/* case 0x77:
wela=1;
P0=0x00;
wela=0;
break;*/
}
display(key);
}
}
/* switch(i)
{
case 0:shu[i]=0;break;
case 1:shu[i]=1;break;
case 2:shu[i]=2;break;
case 3:shu[i]=3;break;
case 4:shu[i]=4;break;
case 5:shu[i]=5;break;
case 6:shu[i]=6;break;
}
*/
P3=0x0f;
temp=P3;
temp=temp&0xf0;
switch(temp)
{
case 0x00:
beep=1;
TR0=0;
break;
}
return key;
}
/*
uchar keyscan()
{
uchar temp;
P3=0xfe;
temp=P3;
temp=temp&0xf0;
while(temp!=0xf0)
{
delay(5);
temp=P3;
temp=temp&0xf0;
while(temp!=0xf0)
{
temp=P3;
switch(temp)
{
case 0xee:
key=1;
break;
case 0xde:
key=2;
break;
case 0xbe:
key=3;
break;
case 0x7e:
key=4;
break;
}
while(temp!=0xf0)
{
temp=P3;
temp=temp&0xf0;
}
}
}
P3=0xfd;
temp=P3;
temp=temp&0xf0;
while(temp!=0xf0)
{
delay(5);
temp=P3;
temp=temp&0xf0;
while(temp!=0xf0)
{
temp=P3;
switch(temp)
{
case 0xed:
key=5;
break;
case 0xdd:
key=6;
break;
case 0xbd:
key=7;
break;
}
while(temp!=0xf0)
{
temp=P3;
temp=temp&0xf0;
}
}
}
return key;
}
*/
void main()
{
uint j;
TMOD |= 0x01;
EA=1;
ET0=1;
TMOD |= 0x20;
SCON=0x40;
PCON=0x00;
TH1=0xfd;
TL1=0xfd;
TR1=1;
// k=matrixkeyscan();
while(1)
{
matrixkeyscan();
if(i==19)
break;
}
for(i=0;i<20;i++)
{
j=shu[i];
switch(j)
{
case 0:
a=Freqtab[0]/256;
b=Freqtab[0]%256;
TR0=1;
delay(350);
display(j);
TR0=0;
delay(30);
beep=1;
break;
case 1:
a=Freqtab[1]/256;
b=Freqtab[1]%256;
TR0=1;
delay(350);
display(j);
TR0=0;
delay(30);
beep=1;
break;
case 2:
a=Freqtab[2]/256;
b=Freqtab[2]%256;
TR0=1;
delay(350);
display(j);
TR0=0;
delay(30);
beep=1;
break;
case 3:
a=Freqtab[3]/256;
b=Freqtab[3]%256;
TR0=1;
delay(350);
display(j);
TR0=0;
delay(30);
beep=1;
break;
case 4:
a=Freqtab[4]/256;
b=Freqtab[4]%256;
TR0=1;
delay(350);
display(j);
TR0=0;
delay(30);
beep=1;
break;
case 5:
a=Freqtab[5]/256;
b=Freqtab[5]%256;
TR0=1;
delay(350);
display(j);
TR0=0;
delay(30);
beep=1;
break;
case 6:
a=Freqtab[6]/256;
b=Freqtab[6]%256;
TR0=1;
delay(350);
display(j);
TR0=0;
delay(30);
beep=1;
break;
}
}
}
void T0_time() interrupt 1
{
TH0=a;
TL0=b;
beep=~beep;
}
復制代碼
所有程序51hei提供下載:
程序.docx
(17.07 KB, 下載次數: 7)
2019-6-6 16:48 上傳
點擊文件名下載附件
下載積分: 黑幣 -5
作者:
admin
時間:
2019-6-7 01:46
本帖需要重新編輯補全電路原理圖,源碼,詳細說明與圖片即可獲得100+黑幣(帖子下方有編輯按鈕)
歡迎光臨 (http://www.zg4o1577.cn/bbs/)
Powered by Discuz! X3.1
主站蜘蛛池模板:
91久久精品
|
久久久激情
|
偷拍自拍网站
|
久久国产精品久久久久久
|
久久久精品影院
|
欧美视频1区
|
色婷婷久久久亚洲一区二区三区
|
av一区在线
|
成人在线免费电影
|
国外成人在线视频网站
|
毛片a级
|
男女羞羞在线观看
|
九九在线精品视频
|
精品小视频
|
久久综合国产精品
|
久久久久久久久中文字幕
|
视频1区2区
|
97精品超碰一区二区三区
|
精品一区二区三区在线视频
|
国产丝袜一区二区三区免费视频
|
日韩在线视频免费观看
|
欧美日韩专区
|
久久久久国色av免费观看性色
|
欧美日韩亚洲一区
|
久久小视频
|
99久久婷婷国产精品综合
|
91免费看片
|
国产成人精品午夜
|
亚洲欧洲成人
|
999免费网站
|
女生羞羞网站
|
国产又爽又黄的视频
|
亚洲国产精品久久久
|
日日操视频
|
欧美精品一区二区三区在线四季
|
国产美女在线观看
|
亚洲精品成人网
|
天天操网
|
天天看天天爽
|
日日夜夜91
|
成人精品一区二区三区中文字幕
|