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

正文內(nèi)容

基于51單片機(jī)簡易電子琴設(shè)計(jì)報(bào)告(存儲(chǔ)版)

2025-10-05 20:06上一頁面

下一頁面
  

【正文】 5. 課程設(shè)計(jì)體會(huì) 總體來說,此次單片機(jī)課程設(shè)計(jì)使我們收獲良多,雖然課程設(shè)計(jì)的過程中遇到了很多困難與問題,如起初對(duì)音樂的一點(diǎn)不懂開始,到器件難找,到硬件焊好后在完善等等,但我們最終還是完成了設(shè)計(jì)的任務(wù)及要求。 //函數(shù)聲明 void Delayms(uint x)。 //同一首歌的音符序列號(hào)和節(jié)拍 uchar code Music_Two[]={0X88,0X14,0X24,0X36,0X42,0X34,0X14,0X28,0X14,0X94,0X1d,0X88,0X14,0X24,0X34,0X32,0X42,0X54,0X14,0X46,0X32,0X54,0X22,0X32,0X32,0X22,0X2C,0X38,0X54,0X74,0X76,0X62,0X68,0X54,0X52,0X62,0X74,0X62,0X52,0X3f,0X46,0X42,0X54,0X64,0X54,0X42,0X32,0X28,0Xa4,0Xa2,0X92,0X84,0X94,0X1e,0Xb8,0X68,0X46,0X52,0X68,0X74,0X72,0X72,0X74,0X62,0X52,0X 26 3f,0Xb8,0X68,0X46,0X52,0X68,0X64,0X62,0X62,0X64,0X42,0X32,0X2e,0X58,0X14,0X24,0X36,0X42,0X34,X12,0X12,0X26,0X22,0X24,0X22,0X12,0X94,0X9c,0Xa8,0Xa6,0X92,0X84,0X64,0X54,0X22,0X22,0X46,0X42,0X44,0X32,0X22,0X5f, 0XFF}。 27 Timer_Init()。 YinFu_DiZhongGao_Flag(KeyNo)。 //關(guān)閉定時(shí)器 TR1=0。 TL0=tl0。 } void key_scan(void) //按鍵行列掃描 { uchar i,j,temp。j4。 if(temp!=0x0f) { Delayms(6)。Beep=~Beep。 } if(flag_yinfu_dizhonggao==2) 31 { if(cont1) //控制占空比為 1/2 { cont1=~cont1。 //循環(huán)變量 uchar *p1=Music_One,*p2=MusicYinFu。 tl0=*(p2+(yinfu1)*2+1)。 Delayms(180)。} else {ET0=0。 if(p1==Music_One) { i=0。 Delayms(3000)。 //記錄按下的鍵音 led_zhishi=1。 th0=Tone_Delay_Table[KeyNo]/256。 i++。 //判斷 DO RE MI FA... YinFu_DiZhongGao_Flag(history[i*2])。 Delayms(10)。 while(KeyState())。i++) //清除錄音數(shù)據(jù) history[i]=0。history[i*2+1]0。history[i*2+1]!=0。 } keystate=KeyState()。 if(KeyNo21) { yuzhi=(KeyNo+3)%7。 } void Record_yinfu() { uchar keystate,i=0。 } else { i=0。 } } if(*(p1+i+1)==0XFF) { ET0=0。} else if(p1==Music_Two) {ET0=0。j0。//取出節(jié)拍數(shù) yinfu_led=yinfu%7。 } void PlayMusic(void) { uchar yinfu,jiepai,yinfu_led。flag_yinfu_dizhonggao==1)||flag_yinfu_dizhonggao==3) { led=LED_Dis[yuzhi]。 //高音 } void play_Tone() interrupt 1 using 0//定時(shí)器 T0溢出中斷,產(chǎn)生不同頻率的矩形波 { TH0=th0。 temp=P1amp。0x0f。i120。 //10ms 中斷一次 TL1=0xF0。 Record_yinfu()。 //判斷 DO RE MI FA... th0=Tone_Delay_Table[KeyNo]/256。 // 送 P2值 uchar code IO_Input[] = {0x0e,0x0d,0x0b,0x07}。 //音樂的頻率所對(duì)應(yīng)的 T值 //包含了低音 SO,LA,SI,中音 DO,RE,MI, FA,SO,RE,SI,高音 DO,LA,MI uchar code MusicYinFu[]={0XFc,0X44,0XFc,0Xac,0XFd,0X09,0XFd,0X34, 0XFD,0X82,0XFD,0Xc8,0XFD,0X06,0XFb,0X04,0Xfb,0X90,0Xfc,0X0c,0Xfe, 0X22,0Xf9,0X5b,0Xfa,0x15}。 25 //控制占空比變量、錄音開啟標(biāo)志、錄音音符延時(shí) uchar cont=0,cont1=0xff,Recordonoff=0,Record_Timer=0。實(shí)際中往往一個(gè)小小的變量沒賦予正確的值,其功能完全出不來,當(dāng)中我花費(fèi)了大量的時(shí)間去調(diào)試代碼,而且是在 PROTEUS 上調(diào)試,這種仿真比較靠譜,但 24 與實(shí)際有小小的區(qū)別。//跳出死循環(huán),回到主程序 } } } 硬件調(diào)試主要是針對(duì)單片機(jī)部分進(jìn)行的調(diào)試。 } TR0=0。 tl0=Tone_Delay_Table[history[i*2]]%256。 Record_Timer=0。 TR0=1。//等待按鍵釋放 while(1) { keystate=KeyState()。 ET0=0。 Delayms(2020)。}//同理 i=0。 if(KeyNo==23) //退出播放 {ET0=1。 ET0=1。*(p1+i)!=0XFF。//控制占空比變量,讓 LED 以不同頻率閃爍 } Delayms(2)。 } else if(KeyNo==21) //進(jìn)入播放歌曲狀態(tài) { PlayMusic()。指示 LED 滅(進(jìn)入演奏狀態(tài),若進(jìn)入錄音狀態(tài)則亮) while(1) { Keystate=KeyState()。 } } cont++。 } if(flag_yinfu_dizhonggao==1||flag_yinfu_dizhonggao==3)//低音或高音 { if((cont==3amp。 IP=0x02。 。64580,低音區(qū) :1 2 3 4 5 6 7 DW 64580,64671,64777,64820,64898,64968,65030 65058 中音區(qū) :1 2 3 4 5 6 7 DW 65058,65110,65157,65178,65217,65252,65283 65312 高音區(qū) :1 2 3 4 5 6 7 把這個(gè)數(shù)據(jù)表,放在程序中,需要播音的時(shí)候,就從表中取出一個(gè)數(shù)據(jù)送到定時(shí)器,當(dāng)定時(shí)器溢出中斷的時(shí)候,再 對(duì)輸出引腳取反,那么,在揚(yáng)聲器中,即可聽到上表中頻率的聲音。 fr= 65536- 1000000247。計(jì)數(shù)脈沖值與頻率的關(guān)系式是: N= fi247。根據(jù)這個(gè)原理就能 設(shè)計(jì)出,對(duì)于單片機(jī)來說要產(chǎn)生一定頻率的方波大致是先將某口線輸出高電平然后延遲一段時(shí)間再輸出低電平,如此循環(huán)的輸出就會(huì)產(chǎn)生一定頻率的方波,通過改變延遲的時(shí)間就可以改變輸出方波的頻率。而在主程序中時(shí),代表演奏狀態(tài),當(dāng)按下 23號(hào)鍵時(shí),進(jìn)入錄音狀態(tài),此時(shí)有個(gè)綠色的指示燈會(huì)亮。而利用單片機(jī)就可以產(chǎn)生不同的頻率的方波,因此選擇單片機(jī)為為主來設(shè)計(jì)。利用單片 機(jī)產(chǎn)生不同頻率來獲得我們要求的音階,實(shí)現(xiàn)高、中、低共 21 個(gè)音符的發(fā)音和顯示和音樂播放時(shí)的控制顯示,并且能自動(dòng)播放程序中編排的音樂,同時(shí)還有保存兵播放已按下的音符。其軟件部分主要有主程序模塊、定時(shí)中斷程序、定時(shí)計(jì)數(shù)程序、顯示程序。 ( 2)按鍵系統(tǒng)模塊:本設(shè)計(jì)采用 24 個(gè)按鍵,其中 21個(gè)按鍵用來顯示 21個(gè)音調(diào),其它 3個(gè)按鍵可以進(jìn)行功能的切換。并且可以進(jìn)行一定的功能擴(kuò)展。 本設(shè)計(jì)的主要工作是程序編寫,通過程序讓電子琴實(shí)現(xiàn)音樂演奏,歌曲播放以及記錄已按下的音符,并播放,最后實(shí)現(xiàn) led顯示。同時(shí)為了區(qū)分高中低音,三個(gè)八度 LED 顯示不同,當(dāng)?shù)鸵粢舴シ艜r(shí), LED 閃亮,當(dāng)是中音時(shí), LED 也閃亮,但是閃亮的頻率更快,當(dāng)是高音時(shí), LED 全亮,這是通過調(diào)節(jié) LED 亮滅時(shí)間來實(shí)現(xiàn),也可以說是 PWM 吧。音樂中各個(gè)音符的頻 率表如下: 8 音符頻率表 3 弄懂后開始程序的實(shí)現(xiàn) 9 N Y KeyNo==21 KeyNo21 KeyNo==23
點(diǎn)擊復(fù)制文檔內(nèi)容
教學(xué)課件相關(guān)推薦
文庫吧 www.dybbs8.com
備案圖鄂ICP備17016276號(hào)-1