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

正文內(nèi)容

基于51單片機(jī)簡易電子琴設(shè)計(jì)報(bào)告(編輯修改稿)

2024-09-30 20:06 本頁面
 

【文章內(nèi)容簡介】 據(jù)的高 4位代表音符對應(yīng)的序列號,低 4 位代表節(jié)拍數(shù) //例如 0x82,表示第八個音符 ,延時兩個節(jié)拍 uchar code Music_One[]={ 0x02,0x82,0x16,0x32,0x54,0x02,0x52,0xA6,0x32,0x54,0x02,0x52,0x64,0x74,0xB6,0x64,0x52,0x5C,0x32,0x22,0x16,0x12,0x14,0x32,0x22,0x26,0x12,0x94,0x22,0x32,0x2C,0x32,0x52,0x36,0x22,0x14,0x54,0xAC,0x92,0xA2,0x96,0xA2,0x96,0x82,0x3C,0x54,0x36,0x22,0x14,0x54,0xAC,0x92,0xA2,0x16,0x12,0x14,0x22,0x32,0x2C,0x02,0x82,0x16,0x32,0x56,0x12,0xA6,0x32,0x56,0x52,0x66,0x72,0xB6,0x62,0x1C, 0xff}。 void PlayMusic(void) { uchar yinfu,jiepai,yinfu_led。 uchar i,j。 //循環(huán)變量 uchar *p1=Music_One,*p2=MusicYinFu。 //p1 開始指向第一首歌 //p2 去歌曲的音符和節(jié)拍 for(i=0。*(p1+i)!=0XFF。i++) { yinfu=((*(p1+i))4)。 //取出音符對應(yīng)的序號 ,如 //Music_One[2]=0x82, 音符代表MusicYinFu[8] jiepai=((*(p1+i))amp。0X0F)。//取出節(jié)拍數(shù) yinfu_led=yinfu%7。 //音符對應(yīng) LED 顯示號 if(yinfu!=0) { th0=*(p2+(yinfu1)*2)。 tl0=*(p2+(yinfu1)*2+1)。 TR0=1。 ET0=1。 } else //如 Music_One[1]=0x02,這里的音符為 0,表停頓 18 { TR0=0。 Beep=1。 } for(j=jiepai。j0。j) { led=LED_Dis[yinfu_led1]。 Delayms(180)。//一 拍延時時間 key_scan()。 if(KeyNo==23) //退出播放 {ET0=1。break。} else if(KeyNo==22)//下一曲 { if(p1==Music_One) 若正在播放第一首,那么下一曲就是第二首 {ET0=0。p1=Music_Two。} else if(p1==Music_Two)//若是第二首,下一首是第三首 {ET0=0。p1=Music_Three。} else {ET0=0。p1=Music_One。}//同理 i=0。 KeyNo=26。 //一定要改變 KeyNo 的值,否則只播放一個音符 Delayms(1000)。//歌曲切換,停頓一下 break。//跳出之前播放的歌曲,以使播放下一曲 } } if(*(p1+i+1)==0XFF) //判斷歌曲是否播放完畢 { 19 ET0=0。 Beep=0。//暫停一下 if(p1==Music_One) //如果剛剛結(jié)束第一首歌,播放第二首歌 { i=0。 p1=Music_Two。 Delayms(2020)。 } else if(p1==Music_Two) //如果剛剛結(jié)束第二首歌,播放第三首歌 { i=0。 p1=Music_Three。 Delayms(2020)。 } else //如果剛剛結(jié)束第三首歌,播放第一首歌 { i=0。 p1=Music_One。 Delayms(3000)。 } } TR0=0。 ET0=0。 if(KeyNo==23) { ET0=1。 20 break。 } } ET0=1。 } : N Y KeyNo21 KeyNo21 KeyNo==23 程序框圖: 5 程序?qū)崿F(xiàn): void Record_yinfu() { uchar keystate,i=0。 主程序 檢測是否有按鍵按下 LED指示燈亮 按鍵掃描 關(guān)定時器關(guān) 定時器開啟,播放按鍵所對應(yīng)的音符,同時 LED燈顯示那個音符按下 播放已按下的鍵,播放完畢后,綠色LED指示燈滅 存儲按下鍵的鍵值,以及按下鍵的時間 21 uchar history[100]={0}。 //記錄按下的鍵音 ,初始化 led_zhishi=1。 //開燈 while(KeyState())。//等待按鍵釋放 while(1) { keystate=KeyState()。//按鍵狀態(tài)檢測 if(keystate) { key_scan()。 if(KeyNo==23) Recordonoff=~Recordonoff。//退出錄音 else if(KeyNo21)//音符鍵 { do //這里用 do while 循環(huán)能使音符播放隨按鍵松開而停止,//同時計(jì)時也是隨按鍵松開而停止計(jì)時,這樣能比較準(zhǔn)確計(jì)算按鍵按下的時間 { key_scan()。 if(KeyNo21) { yuzhi=(KeyNo+3)%7。 //判斷 DO RE MI FA... YinFu_DiZhongGao_Flag(KeyNo)。 th0=Tone_Delay_Table[KeyNo]/256。 tl0=Tone_Delay_Table[KeyNo]%256。 TR0=1。 TR1=1。 history[i*2]=KeyNo。//存儲按鍵的鍵的音符 history[i*2+1]=Record_Timer。//存儲按鍵按下不松的時間 22 } keystate=KeyState()。 }while(keystate)。//如果按鍵松開,表示按下的一個音符結(jié)束 i++。 //接下來按的鍵就是下一個音符 } } else//表示沒鍵按下,那得關(guān)閉定時器, led 滅 { led=0x00。 Record_Timer=0。 //按鍵按下定時數(shù)清零,下一個按鍵按下后從新計(jì)時 TR0=0。 TR1=0。 } if(!Recordonoff)//按下錄音播放鍵,回放按下的音符 { for(i=0。history[i*2+1]!=0。i++)//history[i*2+1]存的是按鍵對//應(yīng)的音符 { yuzhi=(history[i*2]+3)%7。 //判斷 DO RE MI FA... YinFu_DiZhongGao_Flag(history[i*2])。//判斷是中高低音 th0=Tone_Delay_Table[history[i*2]]/256。 tl0=Tone_Delay_Table[history[i*2]]%256。TR0=1。TR1=1。 for(history[i*2+1]。history[i*2+1]0。history[i*2+1]) Delayms(10)。//history[i*2+1]中存放的是按鍵按 //下的時間次數(shù),一次表示一個 10ms,因?yàn)橹袛鄷r間是 10ms Delayms(10)。//音符之間延時一下 led=0x00。 } TR0=0。//回放完了就關(guān)掉定時器 23 TR1=0。 for(i=0。i100。i++) //清除錄音數(shù)據(jù) history[i]=0。 led_zhishi=0。//關(guān)閉指示燈 while(KeyState())。 //等待按鍵釋放 break。//跳出死循環(huán),回到主程序 } } } 硬件調(diào)試主要是針對單片機(jī)部分進(jìn)行的調(diào)試。 在上電之前,先確保電路中不存在斷路或短路情況,這一工作是整個調(diào)試工作的第一步,也是非常重要的一個步驟。在這部分調(diào)試中主要使用的工具是萬用表,用來完成檢測電路中是否存在斷路或者短路情況的任務(wù)。注意焊點(diǎn)之間,確保焊點(diǎn)沒有短接在一起,同時注意焊點(diǎn)的美觀,確保沒有開路以及短路的現(xiàn)象出現(xiàn)。 在確保硬件
點(diǎn)擊復(fù)制文檔內(nèi)容
教學(xué)課件相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1