導航:首頁 > 操作系統 > 單片機簡譜

單片機簡譜

發布時間:2022-01-29 13:21:44

單片機c語言音樂簡譜代碼

代碼的格式,是由編程者設計的,並沒有統一的規范。
下面的鏈接可供參考。
http://hi..com/%D7%F6%B6%F8%C2%DB%B5%C0/blog/item/88bfff323ec42ef21b4cff09.html

⑵ 51單片機曲譜編寫音樂程序,我看不懂曲譜,誰能教下我!

//《世上只有媽媽好》51單片機C語言程序和音樂采燈程序
//此程序在硬體上調試通過
//本程序的單片機晶振採用11.0592MHZ
//此程序的流水燈隨音樂的節拍的快慢而動

#include <reg51.h>
sbit speaker=P2^0; //接音頻放大電路,
//sbit speaker=P3^2;
sbit sw=P3^0; //電後位後,sw合上後就開始放音樂,燈開始閃動,sw斷開,音樂停 止, 燈也同時停止閃動
unsigned char timer0h,timer0l,time,led=1,j=0;
unsigned char flagd=0;
//世上只有媽媽好數據表
code unsigned char 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,3, 3,2,1,
2,2,1, 1,2,1, 6,1,1, 1,2,1, 5,1,6, 0,0,0
} ;
// 音階頻率表 高八位
code unsigned char FREQH[]={
0xF2,0xF3,0xF5,0xF5,0xF6,0xF7,0xF8,
0xF9,0xF9,0xFA,0xFA,0xFB,0xFB,0xFC,0xFC, //1,2,3,4,5,6,7,8,i
0xFC,0xFD,0xFD,0xFD,0xFD,0xFE,
0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFF,
} ;
// 音階頻率表 低八位
code unsigned char FREQL[]={
0x42,0xC1,0x17,0xB6,0xD0,0xD1,0xB6,
0x21,0xE1,0x8C,0xD8,0x68,0xE9,0x5B,0x8F, //1,2,3,4,5,6,7,8,i
0xEE,0x44, 0x6B,0xB4,0xF4,0x2D,
0x47,0x77,0xA2,0xB6,0xDA,0xFA,0x16,
};
void delay(unsigned char t)
{
unsigned char t1;
unsigned long t2;
for(t1=0;t1<t;t1++)
{

for(t2=0;t2<8000;t2++)
{
;
}
}
TR0=0;
}
void t0int() interrupt 1
{
TR0=0;
speaker=!speaker;
TH0=timer0h;
TL0=timer0l;
TR0=1;
}
void song()
{
TH0=timer0h;
TL0=timer0l;
TR0=1;
delay(time);
}
void main(void)
{
unsigned char k,i;
TMOD=1; //置CT0定時工作方式1
EA=1;ET0=1;//IE=0x82 //CPU開中斷,CT0開中斷
while(1)
{
i=0;
time=1;
sw=1;
while(time)
{
if(sw)
{P1=0;i=0;continue;}
if(j==8)
{
//led=1;
j=0;flagd=~flagd;
if(flagd)
{
led=0x80;
}
else
{
led=1;
}
}

else
{
P1=~led;
if(flagd)
{
led=led>>1;
}
else
{
led=le d<<1;
}
j++;
}
k=sszymmh[i]+7*sszymmh[i+1]-1;
timer0h=FREQH[k];
timer0l=FREQL[k];
time=sszymmh[i+2];
i=i+3;
song();
}
}
}

⑶ 單片機音樂的簡譜怎麼寫的代碼數據

首先你要知道你定時器的工作方式,單片機的晶振,這樣你才能計算出具體的需要頻率,因為音樂代碼的話主要還是通過定時器改變蜂鳴器的頻率,使得發出音樂。
你這個18H,30H應該是通過那個定時器頻率計算方法計算出來的。

⑷ 這些單片機代碼根據曲譜怎麼寫出來的,求大神詳細教啊!

哈哈,LZ有求知慾很好嘛!其實原理是這樣的:
首先,音樂有哪幾個最基本的要素?
1,音高(頻率) 2,節拍(音符長度)3,強度。

其次,單片機演奏音樂的原理?
1,硬體方面:以I/o口輸出方波,驅動無源蜂鳴器震動,方波頻率與樂譜中音符的頻率對應(實現了音樂的第1要素)
2,軟體方面,有兩點
(1)如何產生某一頻率的方波?通過定時器產生周期性中斷,在中斷里將IO口的電平翻轉即可,中斷周期(即定時器應賦的初值)可以由需要的頻率計算得到。
(2)如何控制音符的長度(即音樂的第2要素)?從程序結構上來講,有幾種實現途徑,我能想到的:再使用一個定時器,它的中斷周期固定,以它作為長度的基準。比如,定為10ms中斷一次,中斷100次就是1秒,那麼演奏節拍為2/4拍一分鍾60拍的二分音符小字一組A(440Hz),就是200次中斷。定時器0控制I/O口輸出頻率440Hz的方波,並等定時器1中斷 200次之後,就切換到下一音符。這樣就實現了樂音輸出。
3.當然,這樣的音樂是控制不了強弱的,無法實現音樂的要素3。非常簡陋,只能將就。

程序最下面的數組就是單片機的「樂譜」,每一對元素,前面是音高(對應的宏給其對應的在音階里的位置進行了編號,後面是音符長度)。m_note數組存儲的就是演奏某一頻率的樂音對應的定時器中斷周期。

⑸ 單片機對面的女孩看過來簡譜

要程序嗎?

⑹ 簡譜的數據怎麼轉化為單片機代碼(節拍和頻率)最主要是節拍,頻率已明白

其實就是時間,也就是定時器定時的時間,需要根據節拍計算定時器定時的時間常數。
你需要知道節拍的時間長短,然後轉換為定時常數,然後做成一個表格就可以了。

⑺ 51單片機簡譜編碼

// 8鍵電子琴C程序 自己根據音節做個與簡譜對應的表就可以了。
#include <AT89X51.H>
sbit SPEAKER = P3^7;
#define KEY P1
unsigned char MUSIC;
unsigned char STH0;
unsigned char STL0;
unsigned int code tab[]={
64021,64103,64260,64400,//低音3開始
64524,64580,64684,64777,
64820,64898,64968,65030,
65058,65110,65157,65178
};
void main(void){
TMOD=0x01;
ET0=1;
EA=1;
KEY = 0xff;
while(1){
if(KEY != 0xff){
switch (~KEY){//顯示的列位置
case 0x01://
MUSIC = 7;
break;//
case 0x02://
MUSIC = 6;
break;//
case 0x04://
MUSIC = 5;
break;//
case 0x08://
MUSIC = 4;
break;//
case 0x10://
MUSIC = 3;
break;//
case 0x20://
MUSIC = 2;
break;//
case 0x40://
MUSIC = 1;
break;//
case 0x80://
MUSIC = 0;
break;//
}
STH0=tab[MUSIC]/256;
STL0=tab[MUSIC]%256;
TR0=1;
}else{
SPEAKER = 1;
TR0=0;
}
}
}
void t0(void) interrupt 1 using 0{
TH0=STH0;
TL0=STL0;
SPEAKER=~SPEAKER;
}

⑻ 求幾首單片機經典歌曲樂譜,及蜂鳴器驅動原理和 C語言程序。

建議用小喇叭,效果比蜂鳴器好很多,驅動就是正負極啊,一接就好了,當時做這個不是難點。C語言程序網上可以搜到的,這里歌曲樂譜都是一些數組組成,你換歌相當於換數組里的數,所以意思就是程序模板是不變的。定時器可能會用到,你說的中斷切換歌曲也是可以實現的。

⑼ 請問單片機音樂樂譜怎麼看

哈哈 我看懂了,就是看懂了幾個單詞加點簡譜知識。
首先你把這張曲譜下載下來對著看,
Timer0_H,Timer0_L,Time ,如6,2,3 第一、二、三位分別代表唱名、音高、每個音的時值(就是每個音演奏多長,幾拍),即第一個6代表簡譜6,第二個2代表是6是中音(若是1則代表6是低音),第三個3代表6演奏是3個半拍
,你照著曲譜看看,就知道啦

⑽ 誰能講解一下用51單片機寫音樂樂譜

用51單片機寫音樂樂譜 的單片機音樂代碼生成器,可以參考一下,下載附件 有 模擬實例可以模擬試試。


閱讀全文

與單片機簡譜相關的資料

熱點內容
康佳電視伺服器異常怎麼解決 瀏覽:838
怎麼用c語言編譯簡單的小游戲 瀏覽:814
伺服器如何以域用戶登錄 瀏覽:602
安卓os14怎麼默認桌面 瀏覽:549
應用市場下載在哪個文件夾 瀏覽:895
安卓上的谷歌地圖怎麼用 瀏覽:183
安卓命令行打包 瀏覽:516
編程文字與數字教學視頻 瀏覽:817
如何看手機號碼注冊哪些app 瀏覽:413
linux查看總內存 瀏覽:852
python進程間共享 瀏覽:438
js如何獲取本地伺服器地址 瀏覽:70
gfx什麼時候支持安卓十一系統 瀏覽:942
壓縮機90兆帕 瀏覽:932
程序員調侃語句 瀏覽:582
不是php函數的是 瀏覽:1002
壓縮文件好處 瀏覽:787
3d266期神童三膽計演算法 瀏覽:190
通過愛思助手怎麼下載app 瀏覽:323
vi命令將文件創在桌面上 瀏覽:925