久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费
標題:
電子琴設計代碼
[打印本頁]
作者:
ycy456
時間:
2016-6-3 22:37
標題:
電子琴設計代碼
#include <reg51.h>
sbit speaker = P0^0;
sbit K0=P2^0;
sbit K1=P2^1;
sbit K2=P2^2;
sbit K3=P2^3;
sbit K4=P2^4;
sbit K5=P2^5;
sbit K6=P2^6;
sbit K7=P2^7;
sbit green=P0^2;
sbit yello=P0^3;
sbit red=P0^4;
unsigned char timer0h, timer0l, time,YG=0,j,k,l=-1;
unsigned long i;
//--------------------------------------
// 頻率-半周期數據表 高八位 本軟件共保存了四個八度的28個頻率數據
unsigned char code Hmusic[32] = {
0xCC,0xF2, 0xF3, 0xF5, 0xF5, 0xF6, 0xF7, 0xF8, //低音1234567
0xCC,0xF9, 0xF9, 0xFA, 0xFA, 0xFB, 0xFB, 0xFC, //1,2,3,4,5,6,7,i
0xCC,0xFC, 0xFC, 0xFD, 0xFD, 0xFD, 0xFD, 0xFE, //高音 234567
0xCC,0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFE, 0xFF //超高音 1234567
};
// 頻率-半周期數據表 低八位
unsigned char code Lmusic[32] = {
0xCC,0x42, 0xC1, 0x17, 0xB6, 0xD0, 0xD1, 0xB6, //低音1234567
0xCC,0x21, 0xE1, 0x8C, 0xD8, 0x68, 0xE9, 0x5B, //1,2,3,4,5,6,7,i
0xCC,0x8F, 0xEE, 0x44, 0x6B, 0xB4, 0xF4, 0x2D, //高音 234567
0xCC,0x47, 0x77, 0xA2, 0xB6, 0xDA, 0xFA, 0x16 //超高音 1234567
};
unsigned char code deng[13]={2
0xFD,0xFB,0xF7,0xEF,0xDF,0xBF,0x7F,0xBF,0xDF,0xEF,0xF7,0xFB,0xFD
};
void delay(unsigned char t) //延時程序,控制發音的時間長度
{
unsigned char t1;
unsigned long t2;
for(t1 = 0; t1 < t; t1++) //雙重循環, 共延時t個半拍
for(t2 = 0; t2 < 3000; t2++); //延時期間, 可進入T0中斷去發音
TR0 = 0; //關閉T0, 停止發音
}
void delay1(unsigned int T) //延時程序,控制發音的時間長度
{
while(T--);
}
//一個音符有三個數字。前為第幾個音、中為第幾個八度、后為時長(以半拍為單位)。
//6, 2, 3 分別代表:6, 中音, 3個半拍;
//5, 2, 1 分別代表:5, 中音, 1個半拍;
//3, 2, 2 分別代表:3, 中音, 2個半拍;
//5, 2, 2 分別代表:5, 中音, 2個半拍;
//1, 3, 2 分別代表:1, 高音, 2個半拍;
///////////////////////////////////世上只有媽媽好////////////////////////////////////////////
unsigned char code sszymmh[] ={
6, 2, 3, 5, 2, 1, 3, 2, 2, 5, 2, 2, 1, 3, 2, 6, 2, 1, 5, 2,1,
6, 2, 4, 3, 2, 2, 5, 2, 1, 6, 2, 1, 5, 2, 2,3, 2, 2, 1, 2, 1,
6, 1, 1, 5, 2, 1, 3, 2, 1, 2, 2, 4, 2, 2, 3, 3, 2, 1, 5,2, 2,
5, 2, 1, 6, 2, 1, 3, 2, 2, 2, 2, 2, 1, 2, 4,5,2,6,3,2,2,2,2,2,
1,2,2,6,1,2,1,2,2,5,1,8,0,0,0
};
///////////////////////////////////////////新年好/////////////////////////////////////////////////////////
unsigned char code xnh[] ={
1,2,1,1,2,1,1,2,2,5,1,2,3,2,1,3,2,1,3,2,2,1,2,2,1,2,1,3,2,1,5,2,2,
5,2,2,4,2,1,3,2,1,2,2,4,2,2,1,3,2,1,4,2,2,4,2,2,3,2,1,2,2,1,3,2,2,
1,2,2,1,2,1,3,2,1,2,2,2,5,1,2,7,1,1,2,2,1,1,2,4,0,0,0
};
//////////////////////////////////////外婆的澎湖灣//////////////////////////////////////////////////////
unsigned char code wpdphw[]={
3,1,2,5,1,2,5,1,2,5,1,2,6,1,1,1,2,3,6,1,2,5,1,2,1,2,2,1,2,2,6,1,2,
6,1,2,5,1,8,3,2,2,3,2,2,3,2,2,3,2,2,4,2,2,3,2,2,2,2,1,1,2,3,2,2,1,
2,2,1,2,2,1,2,2,1,2,2,2,3,2,2,2,2,8,3,2,2,3,2,2,3,2,2,3,2,1,3,2,1,
4,2,2,3,2,2,2,2,1,1,2,3,6,1,2,1,2,2,1,2,2,6,1,2,5,1,8,3,2,2,3,2,2,
3,2,2,3,2,1,3,2,1,4,2,2,3,2,2,2,2,1,1,2,3,5,1,1,5,1,1,5,1,1,5,1,1,
2,2,1,1,2,1,7,1,2,1,2,8,3,1,2,5,1,2,5,1,2,5,1,2,6,1,1,1,2,3,6,1,2,
5,1,2,1,2,2,1,2,1,1,2,1,6,1,2,6,1,2,5,1,8,3,2,2,3,2,2,3,2,2,3,2,2,
4,2,2,3,2,2,2,2,2,1,2,2,2,2,1,2,2,2,2,2,1,2,2,2,3,2,2,2,2,8,3,2,2,
3,2,2,3,2,2,3,2,1,3,2,1,4,2,2,3,2,2,2,2,2,1,2,2,6,1,2,1,2,1,1,2,1,
6,1,2,6,1,2,5,1,8,3,2,2,3,2,2,3,2,2,3,2,2,4,2,2,3,2,2,2,2,2,1,2,2,
5,1,2,5,1,2,2,2,1,1,2,1,7,1,2,1,2,8,7,1,4,7,1,2,1,2,2,2,2,4,5,1,4,
1,2,2,5,1,2,1,2,2,2,2,2,3,2,4,1,2,4,4,2,2,4,2,4,3,2,2,2,2,2,1,2,2,
7,1,2,1,2,2,2,2,6,3,2,2,2,2,8,3,2,6,3,2,2,4,2,4,4,2,3,4,2,1,3,2,3,
2,2,1,1,2,2,7,1,2,6,2,8,5,1,2,5,1,2,0,1,2,1,2,2,1,2,2,0,1,2,2,2,4,
1,2,4,2,2,4,1,2,2,2,2,2,3,2,8,5,2,4,4,2,4,3,2,6,1,2,2,7,1,4,1,2,2,
2,2,2,0,0,0
};
//////////////////////////////////時間煮雨///////////////////////////////////////////////////////////
unsigned char code sjzy[]={
0,1,4,3,2,2,3,2,2,2,2,6,7,1,2,7,1,2,1,2,2,1,2,4,0,1,1,0,1,1,0,1,1,
3,2,2,3,2,2,2,2,2,1,2,2,2,2,2,5,2,2,5,2,2,3,2,2,3,2,8,0,1,1,0,1,1,
6,2,2,6,2,2,5,2,4,3,2,2,2,2,2,3,2,4,2,2,4,1,2,8,3,2,4,2,2,2,1,2,2,
2,2,6,7,1,2,7,1,2,6,1,2,6,1,8,0,1,1,0,1,1,3,2,2,3,2,2,2,2,6,7,1,2,
7,1,2,1,2,2,1,2,8,0,1,1,0,1,1,3,2,2,3,2,2,2,2,2,1,2,2,2,2,2,5,2,2,
5,2,2,3,2,2,3,2,8,0,1,2,0,1,1,6,2,2,6,2,2,5,2,4,3,2,2,2,2,2,3,2,4,
2,2,4,1,2,8,3,2,4,2,2,2,1,2,2,2,2,6,1,2,2,1,2,8,0,1,1,0,1,1,3,2,2,
5,2,2,6,2,4,1,3,4,7,2,6,5,2,2,3,2,4,0,1,1,1,2,2,1,2,6,6,2,2,6,2,2,
5,2,2,3,2,2,2,2,2,3,2,8,0,1,1,0,1,1,0,1,1,3,2,2,5,2,2,6,2,4,1,3,4,
7,2,6,3,2,2,1,3,4,0,1,1,3,2,2,2,2,6,6,2,2,6,2,2,5,2,2,3,2,2,2,2,2,
1,2,2,1,2,2,1,2,8,0,1,1,1,2,6,6,2,2,6,2,2,5,2,2,3,2,2,2,2,2,2,2,2,
3,2,2,0,1,2,3,2,2,5,2,2,6,2,6,1,3,2,7,2,4,3,2,4,1,3,4,0,1,1,3,2,2,
2,2,6,6,2,2,6,2,2,5,2,2,3,2,2,2,2,2,1,2,2,1,2,2,1,2,8,0,1,1,0,1,4,
3,2,2,5,2,2,6,2,4,1,3,4,7,2,6,3,2,2,2,3,2,1,3,2,0,1,1,3,2,2,2,2,6,
6,2,2,6,2,2,5,2,2,3,2,4,2,2,1,1,2,1,1,2,2,1,2,8,0,2,2,0,0,0
};
//////////////////////////////豬八戒背媳婦/////////////////////////////////
unsigned char code zbjbxf[]={
6,2,4,3,3,3,5,3,1,3,3,2,6,2,2,1,3,4,6,2,1,1,3,1,6,2,1,1,3,1,
3,3,4,3,3,1,2,3,1,3,3,1,1,3,1,6,2,4,3,3,3,5,3,1,6,3,2,6,3,2,
6,3,2,3,3,2,5,3,4,3,3,1,5,3,1,3,3,1,5,3,1,6,3,2,6,3,2,6,3,2,
3,3,2,5,3,4,5,3,2,6,2,2,5,3,2,6,2,2,3,3,1,2,3,1,3,3,1,1,3,4,
2,3,4,2,3,4,2,3,2,1,3,1,2,3,1,3,3,2,5,3,2,6,3,4,3,4,4,3,3,4,
3,4,4,3,3,2,3,4,2,3,3,2,3,4,2,3,3,1,2,3,1,3,3,1,1,3,4,2,3,4,
2,3,4,2,3,2,1,3,1,2,3,1,3,3,2,5,3,2,6,3,8,0,0,0
};
////////////////////////////////賓克斯的酒///////////////////////////////
unsigned char code bksdj[]={
3,2,4,5,2,2,5,2,2,5,2,8,6,2,2,5,2,2,3,2,4,5,2,8,3,2,4,5,2,2,
5,2,2,5,2,8,6,2,2,5,2,2,3,2,4,1,2,8,3,2,4,5,2,2,5,2,2,5,2,8,
6,2,2,5,2,2,3,2,4,5,2,8,3,2,4,5,2,2,5,2,2,5,2,8,6,2,2,5,2,2,
3,2,4,1,2,8,5,2,3,3,2,1,2,2,2,1,2,2,6,1,3,7,1,1,1,2,4,5,2,3,
3,2,1,2,2,2,1,2,2,6,1,3,1,2,1,5,1,4,6,1,3,1,2,1,5,1,4,6,1,3,
7,1,1,1,2,4,3,2,4,3,2,3,3,2,1,2,2,4,1,2,3,2,2,1,5,2,3,3,2,1,
2,2,2,1,2,2,6,1,3,7,1,1,1,2,4,5,2,3,3,2,1,2,2,2,1,2,2,6,1,3,
1,2,1,5,1,4,6,1,3,1,2,1,5,1,4,6,1,3,7,1,1,1,2,4,3,2,4,3,2,3,
1,2,1,2,2,4,1,2,12,0,0,0
};
void yingao();
void keyscan();
void dupu();
void song();
void panduan();
void zanting();
void liushui();
void xuange();
void main()
{
TMOD = 1; //置T0定時工作方式1
ET0 = 1; //開T0中斷
EA = 1; //開CPU中斷
IT0=1;
EX0=1;
while(1)
{
keyscan();
dupu();
}
}
void ex0_int() interrupt 0
{
time=0;
}
void t0int() interrupt 1 //T0中斷程序,控制發音的音調
{
TR0 = 0; //先關閉T0
if(timer0h ==0xcc&&timer0l==0xcc)
speaker=1;
else
speaker = !speaker; //輸出方波, 發音
TH0 = timer0h; //下次的中斷時間, 這個時間, 控制音調高低
TL0 = timer0l;
TR0 = 1; //啟動T0
}
void panduan()
{
if(YG==1)
{
green=0;
yello=1;
red=1;
}
if(YG==2)
{
green=1;
yello=0;
red=1;
}
if(YG==3)
{
green=1;
yello=1;
red=0;
}
if(YG==4)
{
red=0;
green=1;
yello=0;
}
}
void keyscan()
{
if(!K0) //判斷按下的是否是按鍵0
{
delay1(200); //消抖
if(!K0) //再次判斷按鍵0是否確實按下
{
YG++; //如果是LED1亮
panduan();
while(!K0); //等待按鍵0彈起
}
}
///////////////////////////////////////////////////////////////////////
if((!K1)&&(YG<=4)) //判斷按下的是否是按鍵0
{
delay1(200); //消抖
if(!K1) //再次判斷按鍵0是否確實按下
{
j=1;
yingao();
while(!K1); //等待按鍵0彈起
TR0=0;
}
}
/////////////////////////////////////////////////////////////////////
if((!K2)&&(YG<=4)) //判斷按下的是否是按鍵0
{
delay1(200); //消抖
if(!K2) //再次判斷按鍵0是否確實按下
{
j=2;
yingao();
while(!K2); //等待按鍵0彈起
TR0=0;
}
}
/////////////////////////////////////////////////////////
if((!K3)&&(YG<=4)) //判斷按下的是否是按鍵0
{
delay1(200); //消抖
if(!K3) //再次判斷按鍵0是否確實按下
{
j=3;
yingao();
while(!K3); //等待按鍵0彈起
TR0=0;
}
}
//////////////////////////////////////////////////////////////
if((!K4)&&(YG<=4)) //判斷按下的是否是按鍵0
{
delay1(200); //消抖
if(!K4) //再次判斷按鍵0是否確實按下
{
j=4;
yingao();
while(!K4); //等待按鍵0彈起
TR0=0;
}
}
////////////////////////////////////////////////////////////
if((!K5)&&(YG<=4)) //判斷按下的是否是按鍵0
{
delay1(200); //消抖
if(!K5) //再次判斷按鍵0是否確實按下
{
j=5;
yingao();
while(!K5); //等待按鍵0彈起
TR0=0;
}
}
///////////////////////////////////////////////////////////
if((!K6)&&(YG<=4)) //判斷按下的是否是按鍵0
{
delay1(200); //消抖
if(!K6) //再次判斷按鍵0是否確實按下
{
j=6;
yingao();
while(!K6); //等待按鍵0彈起
TR0=0;
}
}
////////////////////////////////////////////////////////////////
if((!K7)&&(YG<=4)) //判斷按下的是否是按鍵0
{
delay1(200); //消抖
if(!K7) //再次判斷按鍵0是否確實按下
{
j=7;
yingao();
while(!K7); //等待按鍵0彈起
TR0=0;
}
}
}
void yingao()
{
timer0l=Lmusic[j+8*(YG-1)];
timer0h=Hmusic[j+8*(YG-1)];
TH0=timer0h;
TL0=timer0l;
TR0=1;
}
void song() //演奏一個音符
{
TH0 = timer0h; //控制音調
TL0 = timer0l;
TR0 = 1; //啟動T0, 由T0輸出方波去發音
delay(time); //控制時間長度
}
void dupu()
{
while(YG>4)
{
green=0;
yello=0;
red=0;
YG++;
if(YG==12)
{
YG=0;
time=0;
P0=0X1D;
P2=0XFF;
}
else
time=1;
delay1(40000);
i = 0;
while(time)
{
xuange();
//第i個是音符, 第i+1個是第幾個八度
timer0h = Hmusic[k]; //從數據表中讀出頻率數值
timer0l = Lmusic[k]; //實際上, 是定時的時間長度
//讀出時間長度數值
i=i+3;
song(); //發出一個音符
zanting();
liushui();
}
}
}
void zanting()
{
if(!K0) //判斷按下的是否是按鍵0
{
delay1(200); //消抖
if(!K0) //再次判斷按鍵0是否確實按下
{
while(!K0);
while(1)
{
if(!K0) //判斷按下的是否是按鍵0
{
delay1(200); //消抖
if(!K0) //再次判斷按鍵0是否確實按下
{
while(!K0);
break;
}
}
}
}
}
}
void liushui()
{
l++;
if(l==13)
l=0;
P2=deng[l];
}
void xuange()
{
if(YG==6)
{
k = sszymmh[i] + 8 * (sszymmh[i+1] - 1);
time = sszymmh[i + 2];
}
if(YG==7)
{
k = xnh[i] + 8 * (xnh[i+1] - 1);
time = xnh[i + 2];
}
if(YG==8)
{
k = zbjbxf[i] + 8 * (zbjbxf[i+1] - 1);
time = zbjbxf[i + 2];
}
if(YG==9)
{
k =bksdj[i] + 8 * (bksdj[i+1] - 1);
time = bksdj[i + 2];
}
if(YG==10)
{
k = wpdphw[i] + 8 * (wpdphw[i+1] - 1);
time = wpdphw[i + 2];
}
if(YG==11)
{
k = sjzy[i] + 8 * (sjzy[i+1] - 1);
time = sjzy[i + 2];
}
}
作者:
qzhyjd
時間:
2016-6-4 10:06
先頂一個
作者:
天上人間
時間:
2017-12-12 15:36
大神有proteus仿真電路圖嗎?
作者:
pok
時間:
2019-12-4 18:14
能提供一下頭文件嗎?
作者:
愛自由O
時間:
2019-12-8 21:38
38行多了個字符2,需要刪除。
歡迎光臨 (http://www.zg4o1577.cn/bbs/)
Powered by Discuz! X3.1
主站蜘蛛池模板:
你懂的在线视频播放
|
久久久综合精品
|
日韩一区二区三区在线播放
|
亚洲一区视频在线
|
国产 欧美 日韩 一区
|
国产精品污www在线观看
|
午夜一区
|
亚洲国产精久久久久久久
|
国产精品精品视频一区二区三区
|
狠狠草视频
|
免费99精品国产自在在线
|
国产高清精品网站
|
精品久久久久久久久久
|
亚洲精品久
|
久久这里有精品
|
国产成人精品在线播放
|
日韩不卡一区二区
|
色婷婷综合久久久中字幕精品久久
|
情侣黄网站免费看
|
国产精品久久网
|
国产电影精品久久
|
在线观看中文字幕视频
|
日日干日日操
|
av在线免费观看网站
|
97偷拍视频
|
欧美 日韩 国产 成人 在线 91
|
国内精品一区二区三区
|
美女视频网站久久
|
久久久噜噜噜久久中文字幕色伊伊
|
天天干天天爽
|
黄色av免费网站
|
伊人免费在线观看高清
|
亚洲精品一二区
|
91黄在线观看
|
日本视频免费
|
久久精品国产一区二区电影
|
精品免费视频
|
日韩欧美国产一区二区三区
|
www.成人.com
|
超碰日韩
|
久久在线
|