版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
可修編可修編目錄目錄1一、設(shè)計(jì)任務(wù)〔要求〕1二、總體案2三、原理框圖3四、系統(tǒng)模塊詳細(xì)設(shè)計(jì)與調(diào)試4〔一〕鍵盤掃描模塊4〔二〕數(shù)碼管顯示模塊4〔三〕音調(diào)編碼讀取模塊5〔四〕定時(shí)器中斷模塊5五、設(shè)計(jì)總結(jié)6六、參考文獻(xiàn)7七、附件材料7一、設(shè)計(jì)任務(wù)〔要求〕利用51系列單片機(jī)、按鍵、揚(yáng)聲器等器件,設(shè)計(jì)一個(gè)電子琴。具體功能要求如下:設(shè)計(jì)鍵盤電路,使其具有數(shù)字鍵1、2、3、4、5、6、7、8、9作為電子琴按鍵,演示鍵口£乂0,其中1~7號(hào)鍵按下后即發(fā)出相應(yīng)的音調(diào)。8號(hào)鍵按下后依次發(fā)出“1、2、3、4、5、6、7〞音調(diào),9號(hào)鍵按下后依次發(fā)出“7、6、5、4、3、2、1〃音調(diào),按下口£乂0鍵,自動(dòng)演示一首歌曲,用單片機(jī)某一接口發(fā)出音頻脈沖,驅(qū)動(dòng)揚(yáng)聲器發(fā)音。利用定時(shí)器定時(shí),可以發(fā)出不同頻率的脈沖,不同頻率的脈沖經(jīng)揚(yáng)聲器驅(qū)動(dòng)電路放大濾波后,就會(huì)發(fā)出不同的音調(diào).定時(shí)器按設(shè)置的定時(shí)參數(shù)產(chǎn)生中斷,一次中斷發(fā)出脈沖低電平,下一次反轉(zhuǎn)發(fā)出脈沖高電平.由于定時(shí)參數(shù)不同,就發(fā)出了不同頻率的脈沖.按鍵一次,發(fā)50個(gè)脈沖.發(fā)完后繼續(xù)檢測(cè)鍵盤,如果鍵還按下,繼續(xù)發(fā)音,發(fā)脈沖個(gè)數(shù)的多少可以決定節(jié)拍的長(zhǎng)短。二、總體案按照設(shè)計(jì)任務(wù)〔要求〕,電子琴的主要涉及以下幾個(gè)模塊:1、定時(shí)器控制不同頻率發(fā)音;2、矩陣鍵盤的掃描;3、除此以外,我還在本次設(shè)計(jì)中參加了數(shù)碼管顯示,分別顯示當(dāng)前彈奏的音符。于是又多了數(shù)碼管顯示模塊;實(shí)現(xiàn)案:通過不斷地鍵盤進(jìn)展掃描。當(dāng)有按鍵按下時(shí),執(zhí)行該按鍵對(duì)應(yīng)的程序,包括:發(fā)出相應(yīng)的音符或音樂、數(shù)碼管顯示當(dāng)前音符。當(dāng)按鍵松開,將音符停頓發(fā)出,如果是音樂,將進(jìn)展演奏。其中,不同的音符,采用定時(shí)器中斷,從而發(fā)出不同的音符。即改變不同的定時(shí)器初始值。對(duì)于音樂的音符,采用自編的特殊編碼,以便程序的調(diào)用。本程序的設(shè)計(jì)采用了三位數(shù)編碼,即:利用三位數(shù)表示一個(gè)音符。第一位由1-7組成,表示音符1-7;第二位由1-4組成,表示音階的低、中、高和超高;第三位由1-9組成,表示該音階的拍數(shù),計(jì)算式是1/2拍x數(shù)字。例如:6,2,2……表示一拍中音6;4,3,1……表示半拍高音4。關(guān)于對(duì)音符編碼的調(diào)用,設(shè)一個(gè)音的編碼為〃,b,。那么,調(diào)用的頻率參數(shù)為bx7+a,該參數(shù)用于修改定時(shí)器初始值;調(diào)用的時(shí)間參數(shù)為J該參數(shù)用于修改定時(shí)器執(zhí)行時(shí)間。三、原理框圖否是否鍵盤按、,是讀取當(dāng)前第一個(gè)音符各模塊初始化’顯示對(duì)應(yīng)音符,顯示音樂編號(hào)鍵盤掃描開場(chǎng)、,無動(dòng)作按鍵9-13否是否鍵盤按、,是讀取當(dāng)前第一個(gè)音符各模塊初始化’顯示對(duì)應(yīng)音符,顯示音樂編號(hào)鍵盤掃描開場(chǎng)、,無動(dòng)作按鍵9-13播放音樂〔5個(gè)〕按鍵14-16判別按鍵彈奏單音節(jié)〔〔8個(gè)〕按鍵1-8四、系統(tǒng)模塊詳細(xì)設(shè)計(jì)與調(diào)試〔一〕鍵盤掃描模塊1、矩陣鍵盤工作原理矩陣鍵盤的按鍵設(shè)在行、列線的交點(diǎn)上。行線通過上拉電阻接到+5V電源上。無鍵盤按下時(shí),行線出于高電平狀態(tài);當(dāng)有按鍵按下時(shí),行線電平狀態(tài)將由此按鍵相連接的列線的電平?jīng)Q定。2、設(shè)計(jì)思路通過掃描法識(shí)別鍵盤。即,先將某一列線置為低電平,其余各列線置為高電平,檢查各行線電平的變化,如果某行線電平的為低電平,就可以確立此行此列穿插點(diǎn)處的按鍵被按下?!捕硵?shù)碼管顯示模塊1、硬件電路數(shù)碼管的顯示,是通過74LS374鎖存器來實(shí)現(xiàn)的。段選和位選分別是P3.5和P3.4。數(shù)據(jù)的輸出為P0口?!苍斠姼戒浺唬河布韴D〕2、設(shè)計(jì)思路通過分別控制段選、位選鎖存器的導(dǎo)通〔低電平〕、鎖存信號(hào)〔高電平〕。從而分時(shí)給數(shù)碼管寫入數(shù)據(jù)并鎖存?!踩骋粽{(diào)編碼讀取模塊1、編碼規(guī)那么本程序的設(shè)計(jì)采用了三位數(shù)編碼,即:利用三位數(shù)表示一個(gè)音符。第一位由1-7組成,表示音符1-7;第二位由1-4組成,表示音階的低、中、高和超高;第三位由1-9組成,表示該音階的拍數(shù),計(jì)算式是1/2拍x數(shù)字。例如:6,2,2……表示一拍中音6;4,3,1……表示半拍高音4。2、讀取式首先讀取前兩位數(shù),以確定音調(diào)。然后讀取最后一位,以確定拍數(shù)〔時(shí)間〕。然后依次遞增3位。音調(diào)確定后,通過查表獲取定時(shí)器初始值,并調(diào)用定時(shí)器中斷。拍數(shù),即定時(shí)器中斷執(zhí)行的循環(huán)次數(shù),以此來控制聲音的時(shí)間?!菜摹扯〞r(shí)器中斷模塊1、定時(shí)器的調(diào)用本程序的設(shè)計(jì)采用定時(shí)器中斷的法來使蜂鳴器發(fā)出不同的頻率聲音,從而實(shí)現(xiàn)電子琴的音調(diào)。定時(shí)器的初始值不同,產(chǎn)生的頻率也就不同。定時(shí)器的調(diào)用是循環(huán)不斷的,它的循環(huán)包括兩類:一類是一個(gè)音節(jié)頻率的循環(huán),從而控制一個(gè)拍數(shù)的長(zhǎng)短;另一類是下一個(gè)音節(jié)的到來,重新寫入初值,直至完畢標(biāo)志位的到來,即0,0,0。如果再調(diào)用程序中,再參加一個(gè)整體循環(huán),那么可以反復(fù)執(zhí)行音樂播放。即,檢測(cè)到完畢標(biāo)志后,重新播放音樂而不連續(xù)?!脖境绦?,沒有使用該循環(huán)?!?、初始值的生成與寫入定時(shí)器的初始值,是通過網(wǎng)絡(luò)搜索得到的,不同的初值代表著會(huì)發(fā)出不同頻率的音調(diào)。將它制成表,以便程序讀取。五、設(shè)計(jì)總結(jié)我課程設(shè)計(jì)的題目是電子琴的設(shè)計(jì)。主要用的了之前所學(xué)的定時(shí)器中斷、矩陣鍵盤掃描、數(shù)碼管顯示、C51編程等相關(guān)的單片機(jī)及接口技術(shù)的知識(shí)和理論。在課設(shè)中,也充分的做到了學(xué)以致用,把之前所學(xué)的知識(shí)應(yīng)用的實(shí)際當(dāng)中去。同時(shí),也通過實(shí)踐來檢驗(yàn)之前所學(xué)的理論,發(fā)現(xiàn)了很多對(duì)理論知識(shí)的誤解。這些,也都在實(shí)踐中得到了很好的彌補(bǔ)。在設(shè)計(jì)程序的初始階段,我本打算一次性完成任務(wù),但每次嘗試都以失敗告終。后來,我學(xué)會(huì)了分模塊處理問題,逐一突破。這也是我在此次課程設(shè)計(jì)中的一大收獲。讓我充分懂得了,如去處理一個(gè)較大的工程工程。首先,我先實(shí)現(xiàn)了使單片機(jī)發(fā)出不同音調(diào)的根本功能,然后開場(chǎng)考慮鍵盤掃描。但是在調(diào)試時(shí),總是出現(xiàn)BUG。在局部按鍵按下后,蜂鳴器會(huì)一直響,無法終止。這個(gè)問題一直困擾了我很久,嘗試了很多法都沒能成功,終于在一天早上醒來后的第一次嘗試,終于成功了,即在鍵盤掃描中參加一個(gè)程序,當(dāng)音樂執(zhí)行到完畢標(biāo)志后,此時(shí)假設(shè)沒有鍵盤被按下時(shí),令蜂鳴器停頓鳴叫不做任響應(yīng),直至有鍵盤再被按下。最后,我將兩個(gè)模塊進(jìn)展結(jié)合,于是便成功的寫出了電子琴的程序。而且成功進(jìn)展了調(diào)試。第一天驗(yàn)收,教師讓我再參加數(shù)碼管顯示功能。于是,我又寫了數(shù)碼管顯示模塊的程序。數(shù)碼管顯示是通過鎖存器來完成的。當(dāng)我程序?qū)懲曛筮M(jìn)展調(diào)試,數(shù)碼管沒有進(jìn)展顯示,屢次調(diào)試發(fā)現(xiàn):只有長(zhǎng)時(shí)間按下按鍵才會(huì)有相應(yīng)字符顯示。于是我嘗試把段選信號(hào)的選通與鎖存指令和P0數(shù)據(jù)寫在一起,這樣就可以立即顯示當(dāng)前字符了。第二天驗(yàn)收,順利通過。事后,我又采用了外部中斷的法進(jìn)展電子琴的模式切換等其他功能,從而不斷地豐富了電子琴的功能。同時(shí),也對(duì)程序進(jìn)展了整理,使程序更加規(guī)、美觀、易讀。總而言之,此次課設(shè),我學(xué)的東西很多。也深深地懂得理論不進(jìn)展實(shí)際,是不行的。只有通過實(shí)踐才能檢驗(yàn)自己對(duì)理論知識(shí)的理解和掌握。在寫程序的時(shí)候,一定要有良好的習(xí)慣,格式要有自己的排版式,不能混亂。這樣易于檢查和調(diào)整。通過這次課設(shè)。大大提高了我對(duì)單片機(jī)以及編程的能力與信心。我相信,以后通過自己的不斷深入的學(xué)習(xí),我一定能夠熟練的運(yùn)用單片機(jī)到實(shí)際當(dāng)中去。六、參考文獻(xiàn)升,?單片機(jī)原理與接口技術(shù)?,:大學(xué),2011年7月;網(wǎng)友:lv_xiaowei,?音調(diào)與頻率對(duì)應(yīng)關(guān)系表?,wenku.baidu./view/d90a081a6edb6f1aff001f45.html,2012年01月03日;七、附件材料附錄一:硬件原理圖附錄二:程序清單及說明附錄三:元器件清單
附錄四:實(shí)物圖/***********************************************************課程設(shè)計(jì):電子琴〔工程學(xué)院自動(dòng)化學(xué)院〕開發(fā)平臺(tái):AT80C52程序設(shè)計(jì):施國(guó)慶203100423********************************************************/* /oooooooooooo ooo/\/ooooooooooo ooo/// ////////I///LOVE//U/////////___//////////////////////////_//***************************\ \ \_*/******************************/***********************************頭文件***********************************************************#include<reg51.h>#include<stdio.h>#defineucharunsignedchar#defineuintunsignedintsbitspeaker=P3節(jié);sbita0=P2P;sbita1=P21;sbita2=P22sbita3=P23sbita4=P2%;sbitb2=P32sbitb4=P3%;sbitb5=P3巧;unsignedchartimer0h,timer0l;voidjian();// /***********************************************************音調(diào)設(shè)置及數(shù)碼管編碼**************************************************************///頻率-半期數(shù)據(jù)表高八位codeunsignedcharFREQH[]={0xF2,0xF3,0xF5,0xF5,0xF6,0xF7,0xF8,//低音12345670xF9,0xF9,0xFA,0xFA,0xFB,0xFB,0xFC,//1,2,3,4,5,6,70xFC,0xFC,0xFD,0xFD,0xFD,0xFD,0xFE,//高音12345670xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFF};//超高音1234567//頻率-半期數(shù)據(jù)表低八位codeunsignedcharFREQL[]={0x42,0xC1,0x17,0xB6,0xD0,0xD1,0xB6,//低音12345670x21,0xE1,0x8C,0xD8,0x68,0xE9,0x5B,//1,2,3,4,5,6,70x8F,0xEE,0x44,0x6B,0xB4,0xF4,0x2D,//高音12345670x47,0x77,0xA2,0xB6,0xDA,0xFA,0x16};//超高音1234567// unsignedcharconstdisplay[]={0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f};/***********************************************************樂譜及其獨(dú)立音調(diào)***********************************************************// 樂譜 //codeunsignedcharsszymmh[]={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};codeunsignedchardfc[]={5,2,2,6,2,2,5,2,2,3,2,1,2,2,1,1,2,1,2,2,1,1,2,1,6,1,1,5,1,4,6,1,1,6,1,2,5,1,1,6,1,1,6,1,2,5,1,1,5,2,3,3,2,1,2,2,4,5,2,1,6,2,1,5,2,1,3,2,1,2,2,4,1,2,1,2,2,1,6,1,1,1,2,1,2,2,4,2,2,1,2,2,1,2,2,1,3,2,1,5,2,2,5,2,1,6,2,1,1,2,3,6,1,1,1,2,1,0,0,0};codeunsignedcharsheng[]={1,2,2,2,2,2,3,2,2,4,2,2,5,2,2,6,2,2,7,2,2,1,3,2,0,0,0};codeunsignedcharjiang[]={1,3,2,7,2,2,6,2,2,5,2,2,4,2,2,3,2,2,2,2,2,1,2,2,0,0,0};codeunsignedcharsongbie[]={5,2,2,3,2,1,5,2,1,1,3,4,6,2,2,1,3,2,5,2,4,5,2,2,1,2,1,2,2,1,3,2,2,2,2,1,1,2,1,2,2,4,5,2,2,3,2,1,5,2,1,1,3,3,7,2,1,6,2,2,1,3,2,5,2,4,5,2,2,2,2,1,3,2,1,4,2,3,7,2,1,1,2,4,6,2,2,1,3,2,1,3,4,7,2,2,6,2,1,7,2,1,1,3,4,6,2,1,7,2,1,1,3,1,6,2,1,6,2,1,5,2,1,3,2,1,1,2,1,2,2,4,5,2,2,3,2,1,5,2,1,1,3,3,7,2,1,6,2,2,1,3,2,5,2,4,3,2,2,1,2,1,2,2,1,3,2,2,2,2,1,1,2,1,2,2,4,5,2,2,3,2,1,5,2,1,1,3,3,7,2,1,6,2,2,1,3,2,5,2,4,5,2,2,2,2,1,3,2,1,4,2,3,7,2,1,1,2,4,0,0,0};// 單音 //codeunsignedchardou[]={1,2,1,0,0,0};codeunsignedcharre[]={2,2,1,0,0,0};codeunsignedcharmi[]={3,2,1,0,0,0
};codeunsignedcharfa[]={4,2,1,0,0,0,};codeunsignedcharso[]={5,2,1,0,0,0};codeunsignedcharla[]={6,2,1,0,0,0};codeunsignedcharxi[]={7,2,1,0,0,0};codeunsignedchardoo[]={1,3,1,0,0,0};/**************************************************************時(shí)間參數(shù):延時(shí)、定時(shí)器中斷**************************************************************voidt0int()interrupt1//T0中斷程序,控制發(fā)音的音調(diào){TR0=0;〃先關(guān)閉T0speaker=!speaker;//輸出波,發(fā)音TH0=timer0h;//下次的中斷時(shí)間,這個(gè)時(shí)間,控制音調(diào)上下TL0=timer0l;TR0=1;//啟動(dòng)T0}// voiddelay(unsignedchart)//延時(shí)程序,控制發(fā)音的時(shí)間長(zhǎng)度{unsignedchart1;unsignedlongt2;for(t1=0;t1<t;t1++)〃雙重循環(huán),共延時(shí)t個(gè)半拍for(t2=0;t2<8000;t2++);//延時(shí)期間,可進(jìn)入T0中斷去發(fā)音TR0=0;//關(guān)閉T0,停頓發(fā)音}voidjpdelay(void){unsignedchari;for(i=300;i>0;i--);}/***********************************************************聲頻驅(qū)動(dòng)程序***********************************************************voidsong(unsignedchartime)//演奏一個(gè)音符{a3=0;TH0=timer0h;//控制音調(diào)TL0=timer0l;TR0=1;〃啟動(dòng)T0,由10輸出波去發(fā)音delay(time);//控制時(shí)間長(zhǎng)度}/***********************************************************聲頻調(diào)用程序***********************************************************// 單音節(jié) //voidyin1(void){unsignedchark,i,time;TMOD=1;ET0=1;EA=1;i=0;time=1;while(time){k=dou[i]+7*dou[i+1]-1;//第i個(gè)是音符,第i+1個(gè)是第幾個(gè)八度timer0h=FREQH[k];//從數(shù)據(jù)表中讀出頻率數(shù)值timer0l=FREQL[k];//實(shí)際上,是定時(shí)的時(shí)間長(zhǎng)度time=dou[i+2];//讀出時(shí)間長(zhǎng)度數(shù)值i+=3;song(time);//發(fā)出一個(gè)音符}}voidyin2(void){unsignedchark,i,time;TMOD=1;ET0=1;EA=1;i=0;time=1;while(time){k=re[i]+7*re[i+1]-1;//第i個(gè)是音符,第i+1個(gè)是第幾個(gè)八度timer0h=FREQH[k];//從數(shù)據(jù)表中讀出頻率數(shù)值timer0l=FREQL[k];//實(shí)際上,是定時(shí)的時(shí)間長(zhǎng)度time=re[i+2];//讀出時(shí)間長(zhǎng)度數(shù)值i+=3;song(time);//發(fā)出一個(gè)音符}}voidyin3(void){unsignedchark,i,time;TMOD=1;ET0=1;EA=1;i=0;time=1;while(time){k=mi[i]+7*mi[i+1]-1;//第i個(gè)是音符,第i+1個(gè)是第幾個(gè)八度timer0h=FREQH[k];//從數(shù)據(jù)表中讀出頻率數(shù)值timer0l=FREQL[k];//實(shí)際上,是定時(shí)的時(shí)間長(zhǎng)度time=mi[i+2];//讀出時(shí)間長(zhǎng)度數(shù)值i+=3;song(time);//發(fā)出一個(gè)音符}}voidyin4(void){unsignedchark,i,time;TMOD=1;ET0=1;EA=1;i=0;time=1;while(time){k=fa[i]+7*fa[i+1]-1;//第i個(gè)是音符,第i+1個(gè)是第幾個(gè)八度timer0h=FREQH[k];//從數(shù)據(jù)表中讀出頻率數(shù)值timer0l=FREQL[k];//實(shí)際上,是定時(shí)的時(shí)間長(zhǎng)度time=fa[i+2];//讀出時(shí)間長(zhǎng)度數(shù)值i+=3;song(time);//發(fā)出一個(gè)音符}}voidyin5(void){unsignedchark,i,time;TMOD=1;ET0=1;EA=1;i=0;time=1;while(time){k=so[i]+7*so[i+1]-1;//第i個(gè)是音符,第i+1個(gè)是第幾個(gè)八度timer0h=FREQH[k];//從數(shù)據(jù)表中讀出頻率數(shù)值timer0l=FREQL[k];//實(shí)際上,是定時(shí)的時(shí)間長(zhǎng)度time=so[i+2];//讀出時(shí)間長(zhǎng)度數(shù)值i+=3;song(time);//發(fā)出一個(gè)音符}}voidyin6(void){unsignedchark,i,time;TMOD=1;ET0=1;EA=1;i=0;time=1;while(time){k=la[i]+7*la[i+1]-1;//第i個(gè)是音符,第i+1個(gè)是第幾個(gè)八度timer0h=FREQH[k];//從數(shù)據(jù)表中讀出頻率數(shù)值timer0l=FREQL[k];//實(shí)際上,是定時(shí)的時(shí)間長(zhǎng)度time=la[i+2];//讀出時(shí)間長(zhǎng)度數(shù)值i+=3;song(time);//發(fā)出一個(gè)音符}}voidyin7(void){unsignedchark,i,time;TMOD=1;ET0=1;EA=1;i=0;time=1;while(time){k=xi[i]+7*xi[i+1]-1;//第i個(gè)是音符,第i+1個(gè)是第幾個(gè)八度timer0h=FREQH[k];//從數(shù)據(jù)表中讀出頻率數(shù)值timer0l=FREQL[k];//實(shí)際上,是定時(shí)的時(shí)間長(zhǎng)度time=xi[i+2];//讀出時(shí)間長(zhǎng)度數(shù)值i+=3;song(time);//發(fā)出一個(gè)音符}}voidyin8(void){unsignedchark,i,time;TMOD=1;ET0=1;EA=1;i=0;time=1;while(time){k=doo[i]+7*doo[i+1]-1;〃第i個(gè)是音符,第i+1個(gè)是第幾個(gè)八度timer0h=FREQH[k];//從數(shù)據(jù)表中讀出頻率數(shù)值timer0l=FREQL[k];//實(shí)際上,是定時(shí)的時(shí)間長(zhǎng)度time=doo[i+2];//讀出時(shí)間長(zhǎng)度數(shù)值i+=3;song(time);//發(fā)出一個(gè)音符}}// 音樂 //voidmusic1(void){unsignedchark,i,time;TMOD=1;ET0=1;EA=1;i=0;time=1;while(time){k=songbie[i]+7*songbie[i+1]-1;//第》個(gè)是音符,第》+1個(gè)是第幾個(gè)八度timer0h=FREQH[k];//從數(shù)據(jù)表中讀出頻率數(shù)值timer0l=FREQL[k];//實(shí)際上,是定時(shí)的時(shí)間長(zhǎng)度time=songbie[i+2];//讀出時(shí)間長(zhǎng)度數(shù)值i+=3;song(time);//發(fā)出一個(gè)音符}}voidmusic2(void){unsignedchark,i,time;TMOD=1;ET0=1;EA=1;i=0;time=1;while(time){k=dfc[i]+7*dfc[i+1]-1;〃第i個(gè)是音符,第i+1個(gè)是第幾個(gè)八度timer0h=FREQH[k];//從數(shù)據(jù)表中讀出頻率數(shù)值timer0l=FREQL[k];//實(shí)際上,是定時(shí)的時(shí)間長(zhǎng)度time=dfc[i+2];//讀出時(shí)間長(zhǎng)度數(shù)值i+=3;song(time);//發(fā)出一個(gè)音符}}voidmusic3(void){unsignedchark,i,time;TMOD=1;ET0=1;EA=1;i=0;time=1;while(time){k=sheng[i]+7*sheng[i+1]-1;//第i個(gè)是音符,第i+1個(gè)是第幾個(gè)八度timer0h=FREQH[k];//從數(shù)據(jù)表中讀出頻率數(shù)值timer0l=FREQL[k];//實(shí)際上,是定時(shí)的時(shí)間長(zhǎng)度time=sheng[i+2];//讀出時(shí)間長(zhǎng)度數(shù)值i+=3;song(time);//發(fā)出一個(gè)音符}}voidmusic4(void){unsignedchark,i,time;TMOD=1;ET0=1;EA=1;i=0;time=1;while(time){k=jiang[i]+7*jiang[i+1]-1;//第i個(gè)是音符,第i+1個(gè)是第幾個(gè)八度timer0h=FREQH[k];//從數(shù)據(jù)表中讀出頻率數(shù)值timer0l=FREQL[k];//實(shí)際上,是定時(shí)的時(shí)間長(zhǎng)度time=jiang[i+2];//讀出時(shí)間長(zhǎng)度數(shù)值i+=3;song(time);//發(fā)出一個(gè)音符}}voidmusic5(void){unsignedchark,i,time;TMOD=1;ET0=1;EA=1;i=0;time=1;while(time){k=sszymmh[i]+7*sszymmh[i+1]-1;//第i個(gè)是音符,第i+1個(gè)是第幾個(gè)八度timer0h=FREQH[k];//從數(shù)據(jù)表中讀出頻率數(shù)值timer0l=FREQL[k];//實(shí)際上,是定時(shí)的時(shí)間長(zhǎng)度
time=sszymmh[i+2];//讀出時(shí)間長(zhǎng)度數(shù)值i+=3;song(time);//發(fā)出一個(gè)音符/***********************************************************鍵盤掃描***********************************************************/ucharkeyscan(void)//鍵盤掃描函數(shù),使用行列反轉(zhuǎn)掃描法uchar^m』2。辦」;//行列值中間變量P2=0x0f;//行線輸出全為0cord_h=P2&0x0f;//讀入列線值if(cord_h!=0x0f)P2=0x0f;//行線輸出全為0cord_h=P2&0x0f;//讀入列線值if(cord_h!=0x0f)//先檢測(cè)有無按鍵按下//去抖cord_h=P2&0x0f;//讀入列線值P2=cord_h|0xf0;//輸出當(dāng)前列線值cord_l=P2&0xf0;//讀入行線值//去抖cord_h=P2&0x0f;//讀入列線值P2=cord_h|0xf0;//輸出當(dāng)前列線值cord_l=P
溫馨提示
- 1. 本站所有資源如無特殊說明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
- 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒有圖紙預(yù)覽就沒有圖紙。
- 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
- 5. 人人文庫網(wǎng)僅提供信息存儲(chǔ)空間,僅對(duì)用戶上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 聘請(qǐng)專家的協(xié)議書(2篇)
- 南京航空航天大學(xué)《電離輻射探測(cè)學(xué)》2021-2022學(xué)年期末試卷
- 南京工業(yè)大學(xué)浦江學(xué)院《涉稅服務(wù)實(shí)務(wù)》2023-2024學(xué)年第一學(xué)期期末試卷
- 多變的顏色說課稿
- 南京工業(yè)大學(xué)浦江學(xué)院《計(jì)算機(jī)組成原理與匯編語言》2021-2022學(xué)年期末試卷
- 《小青蛙找家》說課稿
- 南京工業(yè)大學(xué)《藥劑學(xué)實(shí)驗(yàn)》2021-2022學(xué)年第一學(xué)期期末試卷
- 南京工業(yè)大學(xué)《數(shù)學(xué)模型與數(shù)學(xué)軟件》2021-2022學(xué)年第一學(xué)期期末試卷
- 南京工業(yè)大學(xué)《深度學(xué)習(xí)應(yīng)用技術(shù)》2022-2023學(xué)年期末試卷
- 南京工業(yè)大學(xué)《綠色交通》2021-2022學(xué)年第一學(xué)期期末試卷
- 社區(qū)警務(wù)工作培訓(xùn)
- 人大代表履職工作總結(jié)
- 難忍之隱-肩頸疼課件
- 屋頂光伏安裝安全施工方案
- 腦梗死的患者的心理護(hù)理
- 《西方經(jīng)濟(jì)學(xué)》-完整全套課件
- 中華律師協(xié)會(huì) 風(fēng)險(xiǎn)代理合同
- 鋰離子電池儲(chǔ)能電站熱失控預(yù)警與防護(hù)研究進(jìn)展
- RIGOL-DS1102CD數(shù)字示波器的使用方法課件
- 自閉兒童創(chuàng)業(yè)計(jì)劃書
- 解決員工沖突和問題的方法
評(píng)論
0/150
提交評(píng)論