freepeople性欧美熟妇, 色戒完整版无删减158分钟hd, 无码精品国产vα在线观看DVD, 丰满少妇伦精品无码专区在线观看,艾栗栗与纹身男宾馆3p50分钟,国产AV片在线观看,黑人与美女高潮,18岁女RAPPERDISSSUBS,国产手机在机看影片

正文內(nèi)容

基于51單片機(jī)的電子琴設(shè)計(jì)【附原理圖pcb和程序】(參考版)

2025-01-21 14:45本頁(yè)面
  

【正文】 } } }【實(shí)物圖】:【原理圖、PCB、程序下載地址】: (百度網(wǎng)盤(pán))【版權(quán)聲明】:共享文檔、可自由轉(zhuǎn)載,但僅限于學(xué)習(xí)交流! 最后建議同學(xué)們,課設(shè)最好認(rèn)真做,不可完全照搬他人。 TR0 = 0。 play()。 TR0 = 1。 display()。amp。amp。 /*設(shè)置定時(shí)器0為高優(yōu)先級(jí),避免被定時(shí)器1干擾,造成聲音失真 */ while(1) { key_check()。 /*定時(shí)器0 定時(shí)器1 都采用方式1(16位定時(shí)器方式) */ IE = 0x8a。 P2 = 0xff。 goto nochoose。 /*歌曲序號(hào)自動(dòng)+1 自動(dòng)播放下一首歌*/ which = 2。 //一秒后從第一首開(kāi)始播放 goto nochoose。 which = 2。 // 每首歌的最開(kāi)始的一個(gè)音 break。 /*播放鍵引腳置高電平,播放結(jié)束的標(biāo)志 */ song_id = 1。 if(x == 0) break。 P2 = led_table[0]。 out = 0。 //下一個(gè)音 } /*已經(jīng)放完一首歌,或者停止播放 ,接下來(lái)判斷是停止播放還是播放下一首 */ TR0 = 0。 P2 = led_table[0]。 /*唱完一個(gè)音停xx ms(決定每個(gè)音調(diào)之間的時(shí)間間隔 根據(jù)個(gè)人喜好節(jié)奏來(lái)定 */ TR1 = 0。 out = 0。 /*延時(shí) = 節(jié)拍數(shù) x 125ms (決定著1個(gè)音的發(fā)聲時(shí)間) */ TR0 = 0。 } pai2 = (2400/qusu)*jiepai。 flash = 0。 TR1 = 0。 /*正在發(fā)聲的標(biāo)志,定時(shí)器1得以控制led燈按一定的時(shí)間間隔 逐個(gè)點(diǎn)亮 */ } else { TR0 = 0。 /*開(kāi)啟定時(shí)器1 ,led開(kāi)始閃動(dòng)*/ display()。 TR0 = 1。(當(dāng)音調(diào)為0時(shí)表示這個(gè)音不響 但依舊要占這個(gè)音的播放時(shí)間)*/ { song_h = chuzhi[yindiao*2]。 /* 高四位 。 /*如果既沒(méi)有選歌 又沒(méi)有停止 返回去做選擇*/ }/********************************************************************************************/ yindiao_l = yindiao % 16。 } else { key_play = 1。 }/******************************************************************************/ else if(song_id == 16 ) { which = 2。 yindiao = test[which]。 if(test[which] == 0xff) /* 遇到結(jié)束符 跳出循環(huán) 停止播放*/ break。 // jiepai = dl[which+1]。 qusu = dl[0]。 //節(jié)拍 } else if(song_id == 2) { key_play = 0。 yindiao = ymt[which]。 if(ymt[which] == 0xff) /* 遇到結(jié)束符 跳出循環(huán)(內(nèi)循環(huán)) 停止播放 */ break。 //音調(diào) jiepai = srkl[which+1]。 qusu = srkl[0]。 } /**************************************************************************************/ nochoose: //不用選歌 當(dāng)正常放完一首歌時(shí),跳到這里 if(song_id == 3) { key_play = 0。 temp_id = allsong) //選了另一首歌曲 { which = 2。 } else if(temp_id != song_id amp。 //播放第一首 else ++song_id。 } else if(temp_id == 15) //下一首 { which = 2。 if(song_id == 1) song_id = allsong 。 } same = 0。 break。 temp_id = allsong)/*選了另一首歌曲 屏蔽掉了未定義的按鍵 */ { which = 2。 } else if(temp_id != song_id amp。 //播放第一首 else ++song_id。 } else if(temp_id == 15) //下一首 { which = 2。//播放最后一首 else song_id。 } else if(temp_id == 13) //上一首 { which = 2。 } else if(temp_id == 16)/*按下停止鍵 ,功能表現(xiàn)為:暫停播放時(shí)也能停止播放,回到播放前狀態(tài)*/ { song_id = 16。 //延時(shí)500ms while(1) { temp_id = choose2()。 送到delay()函數(shù)*/ while(1) { while(1) { choose_id: temp_id = choose()。//歌曲播放速度 (拍/分) uint pai2。 /*不按鍵選歌時(shí),返回原歌曲的序號(hào)*/ return(i)。 i 13) /*如果按鍵號(hào) 在 最大歌曲序號(hào) 和 功能鍵 之間,返回原歌曲序號(hào)*/ i = song_id。 /*選了同一首歌時(shí),重播這首歌 (0,1用來(lái)存曲速了 故從2開(kāi)始) */ } else if(i allsong amp。 //用作停止播放 if(i == song_id) { same = 1。amp。 y == 3) //下一首 i = 15。 else if(x == 4 amp。amp。 y == 1) // 上一首 i = 13。 else if(x == 4 amp。amp。 y == 4) i = 4。 else if(x == 1 amp。amp。 y == 2) //選第二首 i = 2。 else if(x == 1 amp。amp。 y = key_y()。}uchar choose2() /*選歌 不用放開(kāi)按鍵 在暫停的狀態(tài)下使用 */{ uchar i = 0。 j 13)) /*釋放按鍵 或者按鍵號(hào) 在 最大歌曲序號(hào) 和 功能鍵 之間時(shí) 跳出循環(huán)*/ break。 if(x == 0 || (j allsong amp。 else if(x == 3) j = 8 + y。 if(x == 1) j = y。 //不按鍵選歌時(shí),返回原歌曲的序號(hào) while(1) //釋放按鍵時(shí)才進(jìn)行下一步 { x = key_x()。 i 13) /*如果按鍵號(hào) 在 最大歌曲序號(hào) 和 功能鍵 之間,返回原歌曲序號(hào)*/ i = song_id。 //選同一首歌時(shí),重播這首歌 } else if(i allsong amp。 y == 4) i = 16。 else if(x == 4 amp。amp。 y == 2)//用作暫停播放 i = 14。 else if(x == 4 amp。amp。 y == 1) i = 5。 else if(x == 2 amp。amp。 y == 3) i = 3。 //選第二首 else if(x == 1 amp。amp。 y == 1) i = 1。 if(x == 1 amp。 x = key_x()。 } }uchar choose() //播放狀態(tài)下 選歌{ uchar i = 0。 flash 0) flash。 else if(out == 0 amp。amp。amp。 P2 = led_table[flash]。amp。amp。 flash 8 ) //最大加到8 ++flash。 y != 0 amp。控制led燈的起落快慢(數(shù)值不嚴(yán)格)*/ if(key_play == 1) //不播放歌曲時(shí) { if(x != 0 amp。 TH1 = 0x54。 // beep = ~beep。 key_play == 1)/*當(dāng)有矩陣按鍵按下,并且不播放歌曲時(shí) */ { TL0 = f_l。 y != 0 amp。 } else if(x != 0 amp。 TH0 = song_h。 //高音2 5 f_l = chuzhi[(33+y)*2 + 1]。 //高音1 f_l = chuzhi[67]。 //中音 5 7 f_l = chuzhi[(20+y)*2 + 1]。 //中音 1 4 f_l = chuzhi[(16+y)*2 +1]。 //低音4 7 f_l = chuzhi[2*y + 6 + 1]。 else if(yindiao_h == 2) //高音 P0 = num[yindiao_l + 14]。 } else //播放音樂(lè)時(shí) { if(yindiao_h == 0) /* yindiao變量的高四位表示 低(0) 中(1) 高(2) 音 */ P0 = num[yindiao_l]。 //中音5 7 和 高音 1 else if(x == 4) P0 = num[15 + y]。 //低音4 7 else if(x == 2) P0 = num[7 + y]。amp。 /*保持播放鍵引腳低電平,讓其作為歌曲正在播放的標(biāo)志*/ else key_play = 1。 y = key_y()。 return (j)。 if(P1_7 == 0) j = 4。 if(P1_6 == 0) j = 3。 if(P1_5 == 0) j = 2。 if(P1_4 == 0) j = 1。 P1 = 0xf0。 return (i)。 if(P1_3 == 0) i = 4。 if(P1_2 == 0) i = 3。 if(P1_1 == 0) i = 2。 //延時(shí)5ms 去抖動(dòng) if(P1_0 == 0) i = 1。 P1 = 0x0f。a)。b) // 1*(1+28*2) =57 for(a=110。c) // 1+2=3 for(b=28。 while(pai) //延遲pai 個(gè) { for(c=1。 // 142*(1+2*2) = 710 }}void delay(uint pai) /*pai 是節(jié)拍 pai若定義成uchar類型,當(dāng)節(jié)拍0x0c時(shí),會(huì)造成數(shù)據(jù)溢出,產(chǎn)生失真。a0。b0。c0。void delayms(uint ms) /*ms 等于1時(shí),延時(shí)1ms 等于2時(shí),延時(shí)2ms,以此類推*/{ uchar a,b,c。uchar code srkl[]={//生日快樂(lè)0x78,0x00, //曲速 1200x15,0x02,0x15,0x02,0x16,0x04,0x15,0x04,0x21,0x04,0x17,0x04,0x00,0x04,0x15,0x02,0x15,0x02,0x16,0x04,0x15,0x04,0x22,0x04,0x21,0x08,0x15,0x02,0x15,0x02,0x25,0x04,0x23,0x04,0x21,0x04,0x17,0x04,0x16,0x08,0x16,0x04,0x00,0x04,0x24,0x02,0x24,0x02,0x23,0x04,0x21,0x04,0x22,0x04,0x21,0x08,0x21,0x08,0x00,0x08,0x15,0x02,0x15,0x02,//第二遍0x16,0x04,0x15,0x04,0x21,0x04,0x17,0x04,0x00,0x04,0x15,0x02,0x15,0x02,0x16,0x04,0x15,0x04,0x22,0x04,0x21,0x08,0x
點(diǎn)擊復(fù)制文檔內(nèi)容
高考資料相關(guān)推薦
文庫(kù)吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1