- #include "music.h"
- unsigned int code Freq[3][8] = {
- // 0 1 2 3 4 5 6 7
- {63627,63627,63835,64020,64103,64260,64399,64523},
- {64579,64579,64684,64777,64819,64898,64967,65029},
- {65058,65058,65110,65156,65160,65217,65251,65281},
- }; //用于發(fā)出do re mi聲音的頻率第一階為低音 第二階為中音 第二階為高音 元素0湊數(shù)而已為了1為do 2為re
- unsigned char code GePu[114] = {
- 13,13,14,13,12,13,
- 6,12,11,6,11,
- 12,12,12,13,12,11,12,
- 13,11,6,11,11,
- 6,13,13,14,13,12,11,
- 13,13,6,6,11,
- 11,7,7,13,12,
- 11,
- 5,
- 15,13,12,11,12,13,11,
- 12,5,6,5,4,5,
- 13,13,12,13,5,
- 5,5,
- 15,12,12,11,12,13,11,
- 12,5,6,5,4,5,
- 13,13,12,13,21,
- 17,15,6,7,
- 11,11,7,11,12,
- 12,12,11,12,7,
- 11,11,7,11,5,
- 6,6,7,
- 11,11,7,11,12,
- 12,12,12,11,12,7,
- 11,
- }; //歌譜 1代表低音do 11代表中音do 21代表高音do
- unsigned char code Time[114] = {
- 1,1,1,1,1,1,
- 2,1,1,2,2,
- 2,1,1,1,1,1,1,
- 2,1,1,2,2,
- 2,1,1,1,1,1,1,
- 2,1,2,1,1,
- 2,1,1,2,2,
- 8,
- 1,
- 2,1,1,1,1,1,1,
- 4,1,1,1,1,1,
- 2,1,1,2,2,
- 4,1,
- 2,1,1,1,1,1,1,
- 2,1,1,1,1,1,
- 2,1,1,2,2,
- 2,2,2,2,
- 2,1,1,2,2,
- 2,1,1,2,2,
- 2,1,1,2,2,
- 4,1,1,
- 2,1,1,1,2,
- 1,1,1,1,2,2,
- 8,
- }; //節(jié)拍數(shù)1代表1/2拍 2代表1拍 4代表2拍 8代表4拍
- bit gBuzFlag = 0;
- void OutCtrl()
- {
- if(gBuzFlag) //標(biāo)志位置1響蜂鳴器
- {
- DATAB ^= 0x01;
- }
- else
- {
- DATAB &= ~0x01;
- }
- }
- unsigned char gRunCount = 0; //樂(lè)譜跑到第幾個(gè)音
- unsigned char gSystemMode = 0; //系統(tǒng)模式 0賦值模式 1響蜂鳴器 2停止
- unsigned char gOpenTime = 0; //開(kāi)的時(shí)間
- unsigned char gCloseTime = 0; //關(guān)的時(shí)間
- void TimeCtrl()
- {
- if(gSystemMode == 0) //賦值
- {
- TH0_Reload = (unsigned char)(Freq[GePu[gRunCount] / 10][GePu[gRunCount] % 10] >> 8); //給16位定時(shí)器賦值
- TL0_Reload = (unsigned char)(Freq[GePu[gRunCount] / 10][GePu[gRunCount] % 10] & 0x00ff); //給16位定時(shí)器賦值
- gOpenTime = Time[gRunCount]*10; //響的時(shí)間Time[gRunCount]*10*125*100 us
- gCloseTime = Time[gRunCount]*10; //停止等待的時(shí)間
- gSystemMode = 1; //跳轉(zhuǎn)到響
- gBuzFlag = 0; //蜂鳴器關(guān)閉
- }
- if(gSystemMode == 1) //響
- {
- if(gOpenTime > 0) //響的時(shí)間大于0
- {
- gBuzFlag = 1; //響
- gOpenTime--; //時(shí)間--
- }
- else
- {
- gBuzFlag = 0; //關(guān)閉
- gSystemMode = 2; //跳轉(zhuǎn)到等待
- }
- }
- if(gSystemMode == 2) //停止
- {
- if(gCloseTime > 0) //停的時(shí)間大于0
- {
- gBuzFlag = 0;
- gCloseTime--;
- }
- else
- {
- gBuzFlag = 0;
- gSystemMode = 0; //跳轉(zhuǎn)到賦值
- gRunCount++; //樂(lè)譜第幾個(gè)音++
- if(gRunCount >= 114) //跑完整個(gè)樂(lè)譜從頭開(kāi)始跑
- {
- gRunCount = 0;
- }
- }
- }
- }
復(fù)制代碼
51hei.png (46.97 KB, 下載次數(shù): 48)
下載附件
2021-7-9 17:51 上傳
keil代碼下載:
熱愛(ài)105度的你.zip
(606.83 KB, 下載次數(shù): 29)
2021-7-9 16:02 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
|