項(xiàng)目四 音樂(lè)演奏器設(shè)計(jì)_第1頁(yè)
項(xiàng)目四 音樂(lè)演奏器設(shè)計(jì)_第2頁(yè)
項(xiàng)目四 音樂(lè)演奏器設(shè)計(jì)_第3頁(yè)
項(xiàng)目四 音樂(lè)演奏器設(shè)計(jì)_第4頁(yè)
項(xiàng)目四 音樂(lè)演奏器設(shè)計(jì)_第5頁(yè)
已閱讀5頁(yè),還剩68頁(yè)未讀, 繼續(xù)免費(fèi)閱讀

下載本文檔

版權(quán)說(shuō)明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)

文檔簡(jiǎn)介

知識(shí)歸納,練習(xí)題,項(xiàng)目導(dǎo)讀,任務(wù)二、音樂(lè)演奏器的設(shè)計(jì)與實(shí)現(xiàn),項(xiàng)目小結(jié),任務(wù)一、音樂(lè)門鈴的分析與仿真,項(xiàng)目四音樂(lè)演奏器設(shè)計(jì),項(xiàng)目目標(biāo)導(dǎo)讀,學(xué)習(xí)目標(biāo),熟練掌握51單片機(jī)的定時(shí)/計(jì)數(shù)器的內(nèi)部結(jié)構(gòu)、工作原理。掌握延時(shí)程序、發(fā)音程序的編寫(xiě)。掌握獨(dú)立式鍵盤(pán)和矩陣式鍵盤(pán)的使用方法,按鍵的識(shí)別方法。通過(guò)學(xué)習(xí)定時(shí)器的過(guò)程,誘導(dǎo)學(xué)生思考快速掌握新知識(shí)點(diǎn)的方法。,會(huì)運(yùn)用定時(shí)器的幾種工作方式編寫(xiě)延時(shí)程序,能用定時(shí)器查詢方式和中斷兩種方式編寫(xiě)控制程序。能利用定時(shí)器的定時(shí)功能產(chǎn)生不同頻率的音符和音調(diào)。會(huì)按照歌譜編寫(xiě)演奏程序。會(huì)用獨(dú)立式鍵盤(pán)和矩陣式鍵盤(pán)。能采用查詢或中斷方式編寫(xiě)鍵盤(pán)程序。,1.單片機(jī)定時(shí)器/計(jì)數(shù)器的概念,定時(shí)器/計(jì)數(shù)器工作方式的設(shè)置方法。2.獨(dú)立式鍵盤(pán)和矩陣式鍵盤(pán)的使用方法(采用查詢或中斷方式)。,知識(shí)教學(xué)點(diǎn),項(xiàng)目目標(biāo)導(dǎo)讀,方法切入點(diǎn),通過(guò)音樂(lè)門鈴和音樂(lè)演奏器的分析與設(shè)計(jì),從簡(jiǎn)到繁實(shí)現(xiàn)學(xué)習(xí)目標(biāo),了解單片機(jī)定時(shí)/計(jì)數(shù)器和鍵盤(pán)的實(shí)際應(yīng)用。,參考學(xué)時(shí):10學(xué)時(shí)12學(xué)時(shí),任務(wù)一音樂(lè)門鈴的分析與仿真,聲音是由物體振動(dòng)產(chǎn)生的,振動(dòng)的頻率不同,發(fā)出的聲音也就不同,有規(guī)律的振動(dòng)發(fā)出的聲音叫“樂(lè)音”。如何用單片機(jī)技術(shù)來(lái)實(shí)現(xiàn)音樂(lè)門鈴呢?,任務(wù)分析,門鈴按鍵從P1.0端口輸入,聲音信號(hào)從P1.7端口輸出到放大電路,經(jīng)過(guò)放大后送入揚(yáng)聲器發(fā)聲;首先實(shí)現(xiàn)“滴、滴”報(bào)警聲,要求產(chǎn)生頻率為500Hz,揚(yáng)聲器響0.25s,停0.25s,反復(fù)循環(huán);實(shí)現(xiàn)“滴、滴”報(bào)警門鈴;再實(shí)現(xiàn)“叮咚”門鈴,產(chǎn)生“叮咚”聲;最后實(shí)現(xiàn)音樂(lè)門鈴,要求由單片機(jī)演奏任意一首樂(lè)曲。,任務(wù)一音樂(lè)門鈴的分析與仿真,1、定時(shí)器0和定時(shí)器1,(1)定時(shí)/計(jì)數(shù)器的組成框圖,圖4-18051定時(shí)器/計(jì)數(shù)器邏輯結(jié)構(gòu)圖,任務(wù)一音樂(lè)門鈴的分析與仿真,由圖4-1可知,8051單片機(jī)定時(shí)器/計(jì)數(shù)器由定時(shí)器0(T0)、定時(shí)器1(T1)、定時(shí)器方式寄存器TMOD和定時(shí)器控制寄存器TCON組成。,16位的加1計(jì)數(shù)器(高8位、低8位)T0、T1TMOD-定時(shí)/計(jì)數(shù)器方式寄存器,工作方式設(shè)置;TCON-定時(shí)/計(jì)數(shù)器控制寄存器,啟動(dòng)、停止及設(shè)置溢出標(biāo)志。,任務(wù)一音樂(lè)門鈴的分析與仿真,(2)定時(shí)/計(jì)數(shù)器的工作原理,由TMOD中的控制位(CT)來(lái)決定T0和T1是工作在定時(shí)器方式還是計(jì)數(shù)器方式。,1.定時(shí)功能-計(jì)數(shù)脈沖信號(hào):內(nèi)部振蕩電路經(jīng)12分頻后輸出的脈沖進(jìn)行加1計(jì)數(shù)。計(jì)數(shù)頻率是振蕩頻率的1/12fc=1/12*fosc。,2.計(jì)數(shù)功能-計(jì)數(shù)脈沖信號(hào):來(lái)自外部輸入引腳-(T0為P3.4,T1為P3.5)的負(fù)跳變信號(hào)進(jìn)行加1計(jì)數(shù)fc=1/24*fosc。,任務(wù)一音樂(lè)門鈴的分析與仿真,(3)定時(shí)/計(jì)數(shù)器的方式寄存器和控制寄存器,1)定時(shí)/計(jì)數(shù)器控制寄存器TCON(88H),中斷請(qǐng)求標(biāo)志,觸發(fā)方式選擇,啟動(dòng)定時(shí)/計(jì)數(shù)器,0低電平1下降沿,0停止1啟動(dòng),任務(wù)一音樂(lè)門鈴的分析與仿真,2)工作方式控制寄存器TMOD(89H),T1控制,T0控制,GATE門控位。GATE=0啟動(dòng)由TR0(或TR1)一位控制;GATE=1啟動(dòng)受TR0和/INT0(或TR1和/INT1)兩位控制。,C/T外部計(jì)數(shù)器/定時(shí)器方式選擇位C/T=0定時(shí)方式;C/T=1計(jì)數(shù)方式。,M1M0工作模式選擇位(編程可決定四種工作模式)。,任務(wù)一音樂(lè)門鈴的分析與仿真,任務(wù)一音樂(lè)門鈴的分析與仿真,表4-1定時(shí)器方式選擇,計(jì)數(shù)脈沖輸入,(1)方式013位方式,13位計(jì)數(shù)器,定時(shí)器,計(jì)數(shù)器,中斷,TCON,0,1,1,1,0,定時(shí)時(shí)間:t=(213-定時(shí)器初值)12/fosc(s),2、定時(shí)器計(jì)數(shù)器的工作方式,任務(wù)一音樂(lè)門鈴的分析與仿真,任務(wù)一音樂(lè)門鈴的分析與仿真,例4-1假設(shè)晶振頻率是12MHz,用定時(shí)器1方式0實(shí)現(xiàn)1s的延時(shí)。解:因方式0采用13位計(jì)數(shù)器,其最大定時(shí)時(shí)間為:2131s=81921s=8.192ms,因此,可選擇定時(shí)時(shí)間為5ms,再循環(huán)200次。定時(shí)時(shí)間選定后,再確定計(jì)數(shù)值為5000,則定時(shí)器1的初值為:X=M計(jì)數(shù)值=81925000=3192=C78H=0110001111000B因13位計(jì)數(shù)器中TL1的高3位未用,應(yīng)填寫(xiě)0,TH1占高8位,所以,X的實(shí)際填寫(xiě)值應(yīng)為:X=0110001100011000B=6318H即:TH1=63H,TL1=18H,又因采用方式0定時(shí),故TMOD=00H。,任務(wù)一音樂(lè)門鈴的分析與仿真,可編得1s延時(shí)子程序如下:,DELAY:MOVR3,#200;置5ms計(jì)數(shù)循環(huán)初值MOVTMOD,#00H;設(shè)定時(shí)器1為方式0MOVTH1,#63H;置定時(shí)器初值MOVTL1,#18HSETBTR1;啟動(dòng)T1LP1:JBCTF1,LP2;查詢計(jì)數(shù)溢出SJMPLP1;未到5ms繼續(xù)計(jì)數(shù)LP2:MOVTH1,#63H;重新置定時(shí)器初值MOVTL1,#18HDJNZR3,LP1;未到1s繼續(xù)循環(huán)RET,(2)方式116位方式,定時(shí)時(shí)間:t=(216-定時(shí)器初值)12/fosc(s),任務(wù)一音樂(lè)門鈴的分析與仿真,(3)方式28位自動(dòng)裝入時(shí)間常數(shù)方式,中斷,定時(shí)時(shí)間:t=(28-定時(shí)器初值)12/fosc(s),任務(wù)一音樂(lè)門鈴的分析與仿真,任務(wù)一音樂(lè)門鈴的分析與仿真,例4-2假設(shè)晶振頻率是12MHz,試用定時(shí)器1方式2實(shí)現(xiàn)1s的延時(shí)。解:因?yàn)榉绞?是8位計(jì)數(shù)器,其最大定時(shí)時(shí)間為:2561s=256s,為實(shí)現(xiàn)1s延時(shí),可選擇定時(shí)時(shí)間為250s,再循環(huán)4000次。定時(shí)時(shí)間選定后,可確定計(jì)數(shù)值為250,則定時(shí)器1的初值為:X=M計(jì)數(shù)值=256250=6=6H。采用定時(shí)器1方式2工作,因此,TMOD=20H。,任務(wù)一音樂(lè)門鈴的分析與仿真,可編得1s延時(shí)子程序如下:,DELAY:MOVR5,#28H;置25ms計(jì)數(shù)循環(huán)初值MOVR6,#64H;置250s計(jì)數(shù)循環(huán)初值MOVTMOD,#20H;置定時(shí)器1為方式2MOVTH1,#06H;置定時(shí)器初值MOVTL1,#06HSETBTR1;啟動(dòng)定時(shí)器LP1:JBCTF1,LP2;查詢計(jì)數(shù)溢出SJMPLP1;無(wú)溢出則繼續(xù)計(jì)數(shù)LP2:DJNZR6,LP1;未到25ms繼續(xù)循環(huán)MOVR6,#64HDJNZR5,LP1;未到1s繼續(xù)循環(huán)RET,(4)方式32個(gè)8位計(jì)數(shù)器方式,僅T0可以工作在方式3此時(shí)T0分成2個(gè)獨(dú)立的計(jì)數(shù)器TL0和TH0:前者用原來(lái)T0的控制信號(hào)(TR0、TF0),后者用原來(lái)T1的控制信號(hào)(TR1、TF1)。,P3.4,P3.2,定時(shí)/計(jì)數(shù)器,固定為定時(shí)器,任務(wù)一音樂(lè)門鈴的分析與仿真,二者的定時(shí)時(shí)間分別是:,TL0:t=(28-TL0初值)12/fosc(s),TL1:t=(28-TL1初值)12/fosc(s),此時(shí)定時(shí)器T1仍然可設(shè)置成方式0、1或2,但TR1和TF1被定時(shí)器T0占用,一般用作串行口波特率發(fā)生器或不需要中斷的場(chǎng)合。,任務(wù)一音樂(lè)門鈴的分析與仿真,任務(wù)一音樂(lè)門鈴的分析與仿真,例4-3假設(shè)晶振頻率是12MHz,用定時(shí)器T0方式3實(shí)現(xiàn)1s的延時(shí)。解:根據(jù)題意,定時(shí)器T0中的TH0只能為定時(shí)器,定時(shí)時(shí)間可設(shè)為250s;TL0設(shè)置為計(jì)數(shù)器,計(jì)數(shù)值可設(shè)為200。TH0計(jì)滿溢出后,用軟件復(fù)位的方法使T0(P3.4)引腳產(chǎn)生負(fù)跳變,TH0每溢出一次,T0引腳便產(chǎn)生一個(gè)負(fù)跳變,TL0便計(jì)數(shù)一次。TL0計(jì)滿溢出時(shí),延時(shí)時(shí)間應(yīng)為50ms,循環(huán)20次便可得到1s的延時(shí)。由上述分析可知,TH0計(jì)數(shù)初值為:X=(256250)=6=06HTL0計(jì)數(shù)初值為:X=(256200)=56=38HTMOD=00000111B=07H,任務(wù)一音樂(lè)門鈴的分析與仿真,可編得1s延時(shí)子程序如下:,DELAY:MOVR3,#14H;置100ms計(jì)數(shù)循環(huán)初值MOVTMOD,#07H;置定時(shí)器0為方式3計(jì)數(shù)MOVTH0,#06H;置TH0初值MOVTL0,#38H;置TL0初值SETBTR0;啟動(dòng)TL0SETBTR1;啟動(dòng)TH0LP1:JBCTF1,LP2;查詢TH0計(jì)數(shù)溢出SJMPLP1;未到500s繼續(xù)計(jì)數(shù)LP2:MOVTH0,#06H;重置TH0初值CLRP3.4;T0引腳產(chǎn)生負(fù)跳變NOP;負(fù)跳變持續(xù)NOPSETBP3.4;T0引腳恢復(fù)高電平JBCTF0,LP3;查詢TH0計(jì)數(shù)溢出SJMPLP1;100ms未到繼續(xù)計(jì)數(shù)LP3:MOVTL0,#38H;重置TL0初值DJNZR3,LP1;未到1s繼續(xù)循環(huán)RET,3、定時(shí)器計(jì)數(shù)器的編程和應(yīng)用,任務(wù)一音樂(lè)門鈴的分析與仿真,例4-4用單片機(jī)定時(shí)器/計(jì)數(shù)器設(shè)計(jì)方波發(fā)生器,方波周期為10ms,有P3.0引腳輸出。解:取晶振頻率為12MHz。方波周期為10ms,則半周期為5ms。定時(shí)器T1工作于定時(shí)方式1,產(chǎn)生5ms的定時(shí)。按上述設(shè)計(jì)思路可知:方式寄存器TMOD的控制字應(yīng)為:10H定時(shí)器T1的初值應(yīng)為:655365000=60536=EC78H分別采用查詢方式和中斷方式實(shí)現(xiàn)。,任務(wù)一音樂(lè)門鈴的分析與仿真,1)采用查詢方式,其源程序可設(shè)計(jì)如下:,;程序功能:在P3.0引腳上產(chǎn)生周期為10ms的方波-T1方式1,查詢方式ORG0000HMOVTMOD,#10H;采用T1方式1MOVTH1,#0ECH;裝入初值MOVTL1,#78HSETBTR1;啟動(dòng)定時(shí)器WAIT:JBCTF1,NX;查詢TF1,是否計(jì)滿溢出SJMPWAITNX:CPLP3.0;P3.0引腳電平取反MOVTH1,#0ECH;重裝初值MOVTL1,#78HSJMPWAITEND,任務(wù)一音樂(lè)門鈴的分析與仿真,2)采用采用中斷方式,其源程序可設(shè)計(jì)如下:,;程序功能:在P3.0引腳上產(chǎn)生周期為10ms的方波-T1方式1,中斷方式ORG0000HMOVTMOD,#10H;采用T1方式1MOVTH1,#0ECH;裝入初值MOVTL1,#78HMOVIE,#88H;設(shè)定ET1=1,EA=1SETBTR1;啟動(dòng)定時(shí)器SJMP$ORG001BH;中斷服務(wù)程序CPLP3.0;P3.0引腳電平取反MOVTH1,#0ECH;重裝初值MOVTL1,#78HRETIEND,1、確定設(shè)計(jì)方案,選用AT89C51單片機(jī)芯片、時(shí)鐘電路、復(fù)位電路、電源和按鍵和一個(gè)揚(yáng)聲器構(gòu)成門鈴電路控制的最小系統(tǒng)。,并行接口,AT89C51單片機(jī),電源,時(shí)鐘電路,復(fù)位電路,揚(yáng)聲器,圖4-7系統(tǒng)方案設(shè)計(jì)框圖,任務(wù)一音樂(lè)門鈴的分析與仿真,按鍵,2、硬件電路設(shè)計(jì),圖4-8門鈴電路原理圖,電路所用仿真元器件:AT89C51:?jiǎn)纹瑱C(jī)RES:電阻CRYSTAL:晶振CAP:電容CAP-ELEC:電解電容BUTTON:按鈕SPEAKER:揚(yáng)聲器,任務(wù)一音樂(lè)門鈴的分析與仿真,2、硬件電路設(shè)計(jì),圖4-9實(shí)用門鈴電路原理圖,任務(wù)一音樂(lè)門鈴的分析與仿真,3、源程序設(shè)計(jì),任務(wù)一音樂(lè)門鈴的分析與仿真,(1)實(shí)現(xiàn)“滴、滴”報(bào)警聲,要求:產(chǎn)生頻率為500Hz,揚(yáng)聲器響0.25s,停0.25s,反復(fù)循環(huán)。1)步驟1:定時(shí)參數(shù)的計(jì)算要產(chǎn)生頻率為500Hz的方波信號(hào),方波信號(hào)的周期為2ms。電路采用12MHz的晶振,利用定時(shí)器T0的方式1,產(chǎn)生1ms的定時(shí),在P1.7上輸出周期為2ms的方波。a)T0的方式控制字TMOD:M1M0=01,GATE=0,C/T=0,可取方式控制字為01Hb)計(jì)算計(jì)數(shù)初值X由于晶振為12MHz,機(jī)器周期T=,要產(chǎn)生產(chǎn)生1ms的定時(shí),計(jì)數(shù)初值為將FCH、18H分別預(yù)置給TH0、TL0。或如下計(jì)算:TH0=(65536-1000)/256=0FCH(整數(shù)取商)TL0=(65536-1000)MOD256=18H(取模)揚(yáng)聲器響0.25s,停0.25s。1次定時(shí)中斷時(shí)間為1ms,0.25s為250次中斷時(shí)間。因此0.25s計(jì)時(shí)計(jì)數(shù)值為250。,3、源程序設(shè)計(jì),圖4-10實(shí)現(xiàn)“滴、滴”報(bào)警聲流程圖,任務(wù)一音樂(lè)門鈴的分析與仿真,步驟2:流程圖設(shè)計(jì),3、源程序設(shè)計(jì),;*報(bào)警聲控制程序*;程序名:報(bào)警聲控制程序xm4_1.asm;程序功能:實(shí)現(xiàn)“滴、滴”報(bào)警聲TCOUNTEQU30HFLAGBIT00HORG0000HSJMPSTART;跳轉(zhuǎn)到主程序ORG000BH;T0的中斷入口地址LJMPINT_T0;轉(zhuǎn)向中斷服務(wù)程序;-主程序-START:CLRFLAG;標(biāo)志位清零MOVTCOUNT,#00H;計(jì)時(shí)計(jì)數(shù)值清零MOVTMOD,#01H;置T0工作于方式1MOVTH0,#(65536-1000)/256;裝入計(jì)數(shù)初值MOVTL0,#(65536-1000)MOD256MOVIE,#82H;開(kāi)中斷SETBTR0;啟動(dòng)T0定時(shí)器SJMP$;等待中斷,任務(wù)一音樂(lè)門鈴的分析與仿真,步驟3:源程序編寫(xiě),;-T0中斷服務(wù)程序-INT_T0:MOVTH0,#(65536-1000)/256;重新裝入計(jì)數(shù)值MOVTL0,#(65536-1000)MOD256INCTCOUNT;計(jì)時(shí)計(jì)數(shù)值+1MOVA,TCOUNTCJNEA,#250,I1;是否計(jì)滿0.25秒CPLFLAG;計(jì)時(shí)計(jì)數(shù)值取反MOVTCOUNT,#00H;計(jì)時(shí)計(jì)數(shù)值清零I1:JBFLAG,I2;檢查標(biāo)志位CPLP1.7;聲音輸出SJMPRETUNEI2:CLRP1.7;關(guān)聲音RETUNE:RETI;中斷返回END,任務(wù)一音樂(lè)門鈴的分析與仿真,3、源程序設(shè)計(jì),任務(wù)一音樂(lè)門鈴的分析與仿真,(2)實(shí)現(xiàn)“滴、滴”報(bào)警門鈴,要求:在(1)的基礎(chǔ)上增加按鈕動(dòng)作。按鈕按下一次,“滴、滴”聲持續(xù)約3秒。1)步驟1:定時(shí)參數(shù)的計(jì)算同前面相同。2)步驟2:流程圖設(shè)計(jì)3)步驟3:源程序編寫(xiě),圖4-11實(shí)現(xiàn)“滴、滴”報(bào)警門鈴主程序流程圖,;*報(bào)警門鈴控制程序*;程序名:報(bào)警門鈴控制程序xm4_2.asm;程序功能:按下門鈴按鍵,發(fā)出“滴、滴”報(bào)警聲TCOUNTEQU30HFLAGBIT00HORG0000HSJMPSTART;跳轉(zhuǎn)到主程序ORG000BH;T0的中斷入口地址LJMPINT_T0;轉(zhuǎn)向中斷服務(wù)程序;-主程序-START:CLRFLAG;標(biāo)志位清零MOVTCOUNT,#00H;計(jì)時(shí)計(jì)數(shù)值清零MOVTMOD,#01H;置T0工作于方式1MOVTH0,#(65536-1000)/256;裝入計(jì)數(shù)初值MOVTL0,#(65536-1000)MOD256MOVIE,#82H;開(kāi)中斷LOOP:JBP1.0,STOP;判斷P1.0是否按下SETBTR0;啟動(dòng)T0定時(shí)器ACALLDELAY;等中斷約3.2sSTOP:CLRP1.7;關(guān)聲音CLRTR0;關(guān)閉T0定時(shí)器SJMPLOOP;反復(fù),任務(wù)一音樂(lè)門鈴的分析與仿真,;-T0中斷服務(wù)程序-INT_T0:MOVTH0,#(65536-1000)/256;重新裝入計(jì)數(shù)值MOVTL0,#(65536-1000)MOD256INCTCOUNT;計(jì)時(shí)計(jì)數(shù)值+1MOVA,TCOUNTCJNEA,#250,I1;是否計(jì)滿0.25秒CPLFLAG;計(jì)時(shí)計(jì)數(shù)值取反MOVTCOUNT,#00H;計(jì)時(shí)計(jì)數(shù)值清零I1:JBFLAG,I2;檢查標(biāo)志位CPLP1.7;聲音輸出SJMPRETUNEI2:CLRP1.7;關(guān)聲音RETUNE:RETI;中斷返回DELAY:MOVR1,#0FFH;延時(shí)約3.2秒DEL1:MOVR2,#0FFHDEL2:MOVR3,#09HDEL3:NOPNOPNOPDJNZR3,DEL3DJNZR2,DEL2DJNZR1,DEL1RETEND,任務(wù)一音樂(lè)門鈴的分析與仿真,3、源程序設(shè)計(jì),任務(wù)一音樂(lè)門鈴的分析與仿真,要求:按下一次按鈕,產(chǎn)生一次“叮咚”聲。“?!焙汀斑恕甭曇舾髡加?.5秒1)步驟1:定時(shí)參數(shù)的計(jì)算“?!焙汀斑恕甭暦謩e為667HZ和500HZ的頻率,即聲音信號(hào)周期為1.5ms和2.0ms,P1.7腳輸出信號(hào)的高或低電平的寬度為0.75ms(1.5ms/2)和1.0ms(2.0ms/2)。電路采用12MHz的晶振,利用定時(shí)器T0的方式2,產(chǎn)生250us的定時(shí)。因此,“?!甭?67HZ的頻率要經(jīng)過(guò)3次250us的定時(shí),而“咚”聲500HZ的頻率要經(jīng)過(guò)4次250us的定時(shí)。a)T0的方式控制字TMOD:M1M0=10,GATE=0,C/T=0,可取方式控制字為02H(定時(shí)器T0為工作方式2)b)計(jì)算計(jì)數(shù)初值X由于晶振為12MHz,機(jī)器周期T=,要產(chǎn)生產(chǎn)生250的定時(shí),計(jì)數(shù)初值為只有當(dāng)按下按鈕KEY之后,才啟動(dòng)T0開(kāi)始工作,當(dāng)T0工作完畢,回到最初狀態(tài)。“?!焙汀斑恕甭曇舾髡加?.5秒,因此定時(shí)/計(jì)數(shù)器T0要完成0.5秒的定時(shí),對(duì)于以250us為基準(zhǔn)定時(shí)2000次才可以。,(3)實(shí)現(xiàn)“叮咚”門鈴,任務(wù)一音樂(lè)門鈴的分析與仿真,2)步驟2:流程圖設(shè)計(jì),圖4-12實(shí)現(xiàn)“叮咚”門鈴主程序流程圖,圖4-13實(shí)現(xiàn)“叮咚”門鈴中斷服務(wù)程序流程圖,;*門鈴控制程序*;程序名:門鈴控制程序xm4_3.asm;程序功能:實(shí)現(xiàn)“叮咚”門鈴聲TDONGDATA30H;“咚”計(jì)時(shí)(0-4)4*250us=1msTDINGDATA31H;“?!庇?jì)時(shí)(0-3)4*250us=0.75msT05SADATA32H;0.5s計(jì)數(shù)1:0-100T05SBDATA33H;0.5s計(jì)數(shù)2:0-20100*20*250us=0.5sFLAGBIT00H;聲音標(biāo)志,0:發(fā)“?!甭暎?:發(fā)“咚”聲STOPBIT01H;完成標(biāo)志,1:一次“叮咚”完成KEYBITP1.0;按鍵SPEAKERBITP1.7;喇叭;-主程序-ORG0000HLJMPSTARTORG000BH;T0中斷矢量LJMPINT_T0START:MOVTMOD,#02H;置T0工作于方式2MOVTH0,#06H;裝入計(jì)數(shù)初值(250us定時(shí))MOVTL0,#06HSETBET0SETBEA;開(kāi)中斷,任務(wù)一音樂(lè)門鈴的分析與仿真,3)步驟3:源程序編寫(xiě),NSP:CLRSPEAKER;靜音JBKEY,NSP;如果按鈕沒(méi)按下,等待LCALLDELY10MS;10ms延時(shí)(防抖處理)JBKEY,NSP;如果按鈕沒(méi)按下,等待SETBTR0;啟動(dòng)T0MOVTDONG,#00H;咚計(jì)時(shí)清零MOVTDING,#00H;叮計(jì)時(shí)清零MOVT05SA,#00H;0.5s計(jì)數(shù)1清零MOVT05SB,#00H;0.5s計(jì)數(shù)2清零CLRFLAG;聲音標(biāo)志清零CLRSTOP;停止標(biāo)志清零JNBSTOP,$;若一次“叮咚”沒(méi)完成,等待中斷LJMPNSP;-延時(shí)子程序-DELY10MS:MOVR6,#20;延時(shí)10msD1:MOVR7,#248DJNZR7,$DJNZR6,D1RET;-T0中斷服務(wù)程序-INT_T0:INCT05SAMOVA,T05SA;0.5s計(jì)數(shù)1+1CJNEA,#100,NEXTMOVT05SA,#00H,任務(wù)一音樂(lè)門鈴的分析與仿真,INCT05SB;0.5s計(jì)數(shù)2+1MOVA,T05SBCJNEA,#20,NEXT;0.5s沒(méi)到,到NEXTMOVT05SB,#00H;0.5s計(jì)數(shù)2清零JBFLAG,STP;若FLAG=1,到STPCPLFLAG;否則FLAG翻轉(zhuǎn)LJMPNEXTSTP:SETBSTOP;STOP=1CLRTR0;T0停止LJMPRETURNNEXT:JBFLAG,DONG;發(fā)叮聲INCTDING;“?!庇?jì)時(shí)+1MOVA,TDINGCJNEA,#03H,RETURN;若“?!庇?jì)時(shí)沒(méi)到3,返回MOVTDING,#00H;“?!庇?jì)時(shí)清零CPLSPEAKER;聲音輸出LJMPRETURN;發(fā)咚聲DONG:INCTDONG;“咚”計(jì)時(shí)+1MOVA,TDONGCJNEA,#04H,RETURN;若“咚”計(jì)時(shí)沒(méi)到3,返回MOVTDONG,#00H;“咚”計(jì)時(shí)清零CPLSPEAKER;聲音輸出RETURN:RETIEND,任務(wù)一音樂(lè)門鈴的分析與仿真,4、實(shí)物制作,任務(wù)一音樂(lè)門鈴的分析與仿真,待在Proteus中仿真調(diào)試結(jié)果正常后,用實(shí)際硬件搭建電路。,表4-3元器件清單,控制要求:實(shí)現(xiàn)音樂(lè)門鈴,由單片機(jī)演奏任意一首樂(lè)曲要求:采用單片機(jī),演奏軍港之夜樂(lè)曲,如圖4-14所示。1)步驟1:定時(shí)參數(shù)的計(jì)算T0的方式控制字TMOD:M1M0=01,GATE=0,C/T=0,可取方式控制字為01H(定時(shí)器T0為工作方式1)計(jì)算計(jì)數(shù)初值X晶振為12MHz,軍港之夜為C調(diào),按表4-4各音符確定定時(shí)器T0初值。節(jié)拍時(shí)間計(jì)算軍港之夜為C調(diào)2/4,最小為1/4拍,最小延時(shí)為250ms。采用延時(shí)子程序來(lái)完成節(jié)拍延時(shí)。延時(shí)子程序延時(shí)25ms,則:1/8拍:125ms,5次延時(shí);1/4拍:250ms,10次延時(shí);1/2拍:500ms,20次延時(shí);3/4拍:725ms,30次延時(shí);1拍:1000ms,40次延時(shí);1又1/2拍:1500ms,60次延時(shí);2拍:2000ms,80次延時(shí);4拍:4000ms,160次延時(shí)。只有當(dāng)按下按鈕KEY之后,才啟動(dòng)演奏。,任務(wù)一音樂(lè)門鈴的分析與仿真,圖4-14“軍港之夜”樂(lè)譜,任務(wù)一音樂(lè)門鈴的分析與仿真,任務(wù)一音樂(lè)門鈴的分析與仿真,2)步驟2:流程圖設(shè)計(jì),圖4-15實(shí)現(xiàn)音樂(lè)門鈴主程序流程圖,圖4-16實(shí)現(xiàn)音樂(lè)門鈴中斷服務(wù)程序流程圖,任務(wù)一音樂(lè)門鈴的分析與仿真,1、調(diào)號(hào),音樂(lè)上指用以確定樂(lè)曲主音高度的符號(hào)。用CDEFGAB這些字母來(lái)表示固定的音高。比如,A這個(gè)音,標(biāo)準(zhǔn)的音高為每秒鐘振動(dòng)440周,十二平均律各音的頻率見(jiàn)表4-4。,表4-4十二平均律各音的頻率,任務(wù)一音樂(lè)門鈴的分析與仿真,2、音調(diào)與節(jié)拍,在音樂(lè)中所謂“音調(diào)”,其實(shí)就是我們常說(shuō)的“音高”。當(dāng)兩個(gè)聲音信號(hào)的頻率相差一倍時(shí),也即f2=2f1時(shí),則稱f2比f(wàn)1高一個(gè)倍頻程,在音樂(lè)學(xué)中稱它相差一個(gè)八度音。在一個(gè)八度音內(nèi),有12個(gè)半音。這12個(gè)音階的分度基本上是以對(duì)數(shù)關(guān)系來(lái)劃分的。如果我們只要知道了這十二個(gè)音符的音高,也就是其基本音調(diào)的頻率,我們就可根據(jù)倍頻程的關(guān)系得到其他音符基本音調(diào)的頻率。知道了一個(gè)音符的頻率后,要產(chǎn)生相應(yīng)頻率的聲音信號(hào),只要計(jì)算出該音頻的半周期(1/(2頻率)),常采用的方法就是通過(guò)單片機(jī)的定時(shí)器定時(shí)中斷,來(lái)得到這個(gè)半周期時(shí)間。為了讓單片機(jī)發(fā)出不同頻率的聲音,我們只需將定時(shí)器預(yù)置不同的定時(shí)值就可實(shí)現(xiàn)。,任務(wù)一音樂(lè)門鈴的分析與仿真,表4-5C調(diào)各音符、頻率和定時(shí)初值的關(guān)系,任務(wù)一音樂(lè)門鈴的分析與仿真,表4-6各節(jié)拍與時(shí)間的設(shè)定,返回,任務(wù)二音樂(lè)演奏器的設(shè)計(jì)與實(shí)現(xiàn),上一節(jié)中,應(yīng)用定時(shí)器的工作原理,實(shí)現(xiàn)了固定樂(lè)曲的播放。那么,這一節(jié)再加上鍵盤(pán)來(lái)實(shí)現(xiàn)音樂(lè)演奏。,在音樂(lè)門鈴電路基礎(chǔ)上,修改增加硬件(獨(dú)立式或矩陣式鍵盤(pán))和軟件程序,利用定時(shí)器,完成音樂(lè)演奏器(簡(jiǎn)易電子琴)的設(shè)計(jì)和實(shí)現(xiàn):首先采用獨(dú)立式鍵盤(pán),完成簡(jiǎn)易電子琴的設(shè)計(jì)和實(shí)現(xiàn);在采用矩陣式鍵盤(pán),完成簡(jiǎn)易電子琴的設(shè)計(jì)和實(shí)現(xiàn)。,1、鍵盤(pán)工作原理,任務(wù)二音樂(lè)演奏器的設(shè)計(jì)與實(shí)現(xiàn),(1)按鍵的分類,1)按鍵按照結(jié)構(gòu)原理可分為兩類:觸點(diǎn)式開(kāi)關(guān)按鍵,如機(jī)械式開(kāi)關(guān)、導(dǎo)電橡膠式開(kāi)關(guān)等;無(wú)觸點(diǎn)開(kāi)關(guān)按鍵,如電氣式按鍵,磁感應(yīng)按鍵等。前者造價(jià)低,后者壽命長(zhǎng)。目前,單片機(jī)系統(tǒng)中最常見(jiàn)的是觸點(diǎn)式開(kāi)關(guān)按鍵。2)按鍵按照接口原理可分為:編碼鍵盤(pán)。編碼鍵盤(pán)主要是用硬件來(lái)實(shí)現(xiàn)對(duì)鍵的識(shí)別。非編碼鍵盤(pán)。非編碼鍵盤(pán)主要是由軟件來(lái)實(shí)現(xiàn)鍵盤(pán)的定義與識(shí)別。,任務(wù)二音樂(lè)演奏器的設(shè)計(jì)與實(shí)現(xiàn),(2)鍵輸入原理,1)鍵盤(pán)接口的基本功能鍵掃描:監(jiān)測(cè)有無(wú)鍵按下。判別是否有鍵按下的方式有中斷方式和查詢方式兩種:中斷方式:當(dāng)鍵按下時(shí),就向CPU發(fā)出中斷請(qǐng)求。CPU響應(yīng)后,對(duì)鍵盤(pán)掃描,進(jìn)行識(shí)別,取出鍵值,作相應(yīng)處理。查詢方式:每隔一定時(shí)間,CPU掃描鍵盤(pán)一次,查詢有無(wú)鍵按下。若有鍵按下,則再查鍵值,作相應(yīng)處理。去抖動(dòng):一個(gè)電壓信號(hào)通過(guò)機(jī)械觸點(diǎn)的開(kāi)/關(guān)過(guò)程中,由于機(jī)械觸點(diǎn)的彈性作用,在開(kāi)關(guān)瞬間均有抖動(dòng)過(guò)程,會(huì)出現(xiàn)一系列的負(fù)脈沖,,圖4-18機(jī)械觸點(diǎn)的開(kāi)/關(guān)過(guò)程,任務(wù)二音樂(lè)演奏器的設(shè)計(jì)與實(shí)現(xiàn),a)硬件去抖硬件消抖可以采用R-S觸發(fā)器或單穩(wěn)電路構(gòu)成去抖電路,分別如圖4-18所示。硬件消抖因?yàn)橐黾佑布_(kāi)銷,造成電路復(fù)雜,除了在數(shù)字電路里使用外,在單片機(jī)系統(tǒng)中不太采用。b)軟件去抖在檢測(cè)到有鍵按下時(shí),執(zhí)行一個(gè)10ms的延時(shí)程序后,再確認(rèn)該鍵是否保持閉合狀態(tài)。另外一種方法是連續(xù)判斷按鍵所在線路的電平,如果連續(xù)100次(甚至更多)都出現(xiàn)低電平(一般按鍵都是低電平表示按下),就認(rèn)為按鍵已經(jīng)穩(wěn)定,可以進(jìn)行識(shí)別,這是企業(yè)實(shí)際開(kāi)發(fā)產(chǎn)品中常用的方法。,圖4-19硬件去抖電路,任務(wù)二音樂(lè)演奏器的設(shè)計(jì)與實(shí)現(xiàn),鍵識(shí)別:確定是哪一個(gè)鍵按下,取出鍵值。每一個(gè)按鍵都要確定一個(gè)鍵值,以便實(shí)現(xiàn)按鍵功能的轉(zhuǎn)移。散轉(zhuǎn)指令就是要根據(jù)這個(gè)鍵值來(lái)轉(zhuǎn)移。其它可靠的邏輯處理辦法:一次鎖定:不管一次按鍵的時(shí)間有多長(zhǎng),僅作一次處理。2)鍵輸入操作的基本框圖,圖4-20鍵輸入框圖,任務(wù)二音樂(lè)演奏器的設(shè)計(jì)與實(shí)現(xiàn),(1)獨(dú)立式按鍵結(jié)構(gòu),圖4-21獨(dú)立式按鍵電路,2、獨(dú)立式鍵盤(pán),特點(diǎn):一線一鍵,按鍵識(shí)別(編程)簡(jiǎn)單;但占用較多口線,適合8鍵以下使用。,任務(wù)二音樂(lè)演奏器的設(shè)計(jì)與實(shí)現(xiàn),(2)獨(dú)立式按鍵的軟件結(jié)構(gòu),獨(dú)立式按鍵的軟件可采用中斷方式和查詢方式,本項(xiàng)目中按鍵程序的編寫(xiě)采用的就是中斷方式。,ORG0000HLJMPSTARTORG0100HSTART:MOVP1,#0FFH;設(shè)置P1為輸入口LOOP1:MOVA,P1;讀入P1口的狀態(tài)CJNEA,#0FFH,LOOP2;沒(méi)有鍵按下的話,等待SJMPLOOP1LOOP2:LCALLDELY10MS;延時(shí),防抖MOVB,P1;讀入P1口的狀態(tài)CJNEA,B,LOOP1;兩次檢測(cè)P1口不同的話,重新檢測(cè)JNBACC.0,KEY0;ACC.0=0?若為0則P1.0對(duì)應(yīng)的鍵按下,轉(zhuǎn)KEY0JNBACC.7,KEY7;ACC.7=0?若為0則P1.7對(duì)應(yīng)的鍵按下,轉(zhuǎn)KEY7SJMPSTARTKEY0:;0#鍵功能程序LJMPSTART;返回主程序開(kāi)始,繼續(xù)查詢按鍵狀態(tài)KEY1:;1#鍵功能程序LJMPSTARTKEY7:;7#鍵功能程序LJMPSTART,任務(wù)二音樂(lè)演奏器的設(shè)計(jì)與實(shí)現(xiàn),(1)矩陣式鍵盤(pán)的結(jié)構(gòu)及原理,圖4-22矩陣鍵盤(pán)電路圖,3、矩陣式按鍵,特點(diǎn):按鍵識(shí)別應(yīng)采用掃描法或線路反轉(zhuǎn)法編程較為復(fù)雜,節(jié)省口資源,8鍵以上使用,任務(wù)二音樂(lè)演奏器的設(shè)計(jì)與實(shí)現(xiàn),(2)矩陣式鍵盤(pán)按鍵的識(shí)別,識(shí)別按鍵的方法很多,其中,最常見(jiàn)的方法是掃描法,其中一種是“行掃描法”。行掃描法又稱為逐行(或列)掃描查詢法,是最常用的按鍵識(shí)別方法。,(3)鍵盤(pán)的編碼,對(duì)于矩陣式鍵盤(pán),按鍵的位置由行號(hào)和列號(hào)唯一確定,因此可分別對(duì)行號(hào)和列號(hào)進(jìn)行二進(jìn)制編碼,然后將兩值合成一個(gè)字節(jié),高4位是行號(hào),低4位是列號(hào)。鍵盤(pán)編碼可采用依次排列鍵號(hào)的方式對(duì)安排進(jìn)行編碼。,(4)鍵盤(pán)的工作方式,在單片機(jī)應(yīng)用系統(tǒng)中,鍵盤(pán)掃描只是CPU的工作內(nèi)容之一。通常,鍵盤(pán)的工作方式有三種,即編程掃描、定時(shí)掃描和中斷掃描。,1、確定設(shè)計(jì)方案,選用AT89C51單片機(jī)芯片、時(shí)鐘電路、復(fù)位電路、電源和8個(gè)按鍵,按鍵采用獨(dú)立式鍵盤(pán),8個(gè)按鍵代表do,rui,mi,fa,so,la,xi,do8個(gè)音階,采用查詢方式,可彈奏不同聲音。,并行接口,AT89C51單片機(jī),電源,時(shí)鐘電路,復(fù)位電路,8鍵查詢式鍵盤(pán),圖4-25系統(tǒng)方案設(shè)計(jì)框圖,揚(yáng)聲器,任務(wù)二音樂(lè)演奏器的設(shè)計(jì)與實(shí)現(xiàn),2、硬件電路設(shè)計(jì),圖4-26獨(dú)立式鍵盤(pán)簡(jiǎn)易電子琴電路原理圖,電路所用仿真元器件:AT89C51:?jiǎn)纹瑱C(jī)RES:電阻CRYSTAL:晶振CAP:電容CAP-ELEC:電解電容BUTTON:按鍵SPEAKER:揚(yáng)聲器OSCILLOSCOPE:示波器,任務(wù)二音樂(lè)演奏器的設(shè)計(jì)與實(shí)現(xiàn),圖4-27獨(dú)立式鍵盤(pán)簡(jiǎn)易電子琴主程序流程圖,步驟1:流程圖設(shè)計(jì),3、源程序設(shè)計(jì),任務(wù)二音樂(lè)演奏器的設(shè)計(jì)與實(shí)現(xiàn),圖4-28簡(jiǎn)易電子琴演奏子程序流程圖,步驟1:流程圖設(shè)計(jì),圖4-29簡(jiǎn)易電子琴中斷服務(wù)程序流程圖,任務(wù)二音樂(lè)演奏器的設(shè)計(jì)與實(shí)現(xiàn),3、源程序設(shè)計(jì),;*獨(dú)立式鍵盤(pán)建議電子琴*;程序名:電子琴控制程序xm4_5.asm;程序功能:采用查詢式鍵盤(pán),8個(gè)按鍵代表do(中音),rui,mi,fa,so,la,xi,;do(高音)8個(gè)音階,可彈奏不同聲音;采用定時(shí)器T0工作方式1TUNEDATA22H;22H:暫存音調(diào)的定時(shí)初值表的地址偏移值KEY_1BITP1.0;按鍵1do,0:按下KEY_2BITP1.1;按鍵2rui,0:按下KEY_3BITP1.2;按鍵3mi,0:按下KEY_4BITP1.3;按鍵4fa,0:按下KEY_5BITP1.4;按鍵5so,0:按下KEY_6BITP1.5;按鍵6la,0:按下KEY_7BITP1.6;按鍵7xi,0:按下KEY_8BITP1.7;按鍵8do(高),0:按下SPEAKERBITP3.4;喇叭;-主程序-ORG0000HLJMPMAINORG000BH;T0中斷矢量LJMPINT_T0ORG0030HMAIN:MOVSP,#50HMOVTMOD,#01H;置T0工作于方式1SETBET0SETBEA;開(kāi)中斷MOVP1,#0FFH;設(shè)置P1為輸入口,步驟2:源程序編寫(xiě),任務(wù)二音樂(lè)演奏器的設(shè)計(jì)與實(shí)現(xiàn),START:CLRSPEAKER;靜音CLRTR0;定時(shí)器T0停止LOOP1:MOVA,P1;讀入P1口的狀態(tài)CJNEA,#0FFH,LOOP2;沒(méi)有鍵按下的話,等待SJMPLOOP1LOOP2:LCALLDELY2MS;延時(shí),防抖MOVB,P1;讀入P1口的狀態(tài)CJNEA,B,LOOP1;兩次檢測(cè)P1口不同的話,重新檢測(cè)JNBACC.0,KEY1;ACC.0=0?若為0則P1.0對(duì)應(yīng)的鍵按下,轉(zhuǎn)KEY1JNBACC.1,KEY2;ACC.1=0?若為0則P1.1對(duì)應(yīng)的鍵按下,轉(zhuǎn)KEY2JNBACC.2,KEY3;ACC.2=0?若為0則P1.2對(duì)應(yīng)的鍵按下,轉(zhuǎn)KEY3JNBACC.3,KEY4;ACC.3=0?若為0則P1.3對(duì)應(yīng)的鍵按下,轉(zhuǎn)KEY4JNBACC.4,KEY5;ACC.4=0?若為0則P1.4對(duì)應(yīng)的鍵按下,轉(zhuǎn)KEY5JNBACC.5,KEY6;ACC.5=0?若為0則P1.5對(duì)應(yīng)的鍵按下,轉(zhuǎn)KEY6JNBACC.6,KEY7;ACC.6=0?若為0則P1.6對(duì)應(yīng)的鍵按下,轉(zhuǎn)KEY7JNBACC.7,KEY8;ACC.7=0?若為0則P1.7對(duì)應(yīng)的鍵按下,轉(zhuǎn)KEY8SJMPSTARTKEY1:MOVTUNE,#0;do(1)音調(diào)的定時(shí)初值表的地址偏移值LCALLSONG;演奏JNBKEY_1,$;等待鍵松開(kāi)LJMPSTART;返回,繼續(xù)查詢按鍵KEY2:MOVTUNE,#2;rui(2)音調(diào)的定時(shí)初值表的地址偏移值LCALLSONG;演奏JNBKEY_2,$;等待鍵松開(kāi)LJMPSTART;返回,繼續(xù)查詢按鍵,任務(wù)二汽車轉(zhuǎn)向燈控制,KEY3:MOVTUNE,#4;mi(3)音調(diào)的定時(shí)初值表的地址偏移值LCALLSONG;演奏JNBKEY_3,$;等待鍵松開(kāi)LJMPSTART;返回,繼續(xù)查詢按鍵KEY4:MOVTUNE,#6;fa(4)音調(diào)的定時(shí)初值表的地址偏移值LCALLSONG;演奏JNBKEY_4,$;等待鍵松開(kāi)LJMPSTART;返回,繼續(xù)查詢按鍵KEY5:MOVTUNE,#8;so(5)音調(diào)的定時(shí)初值表的地址偏移值LCALLSONG;演奏JNBKEY_5,$;等待鍵松開(kāi)LJMPSTART;返回,繼續(xù)查詢按鍵KEY6:MOVTUNE,#10;la(6)音調(diào)的定時(shí)初值表的地址偏移值LCALLSONG;演奏JNBKEY_6,$;等待鍵松開(kāi)LJMPSTART;返回,繼續(xù)查詢按鍵KEY7:MOVTUNE,#12;xi(7)音調(diào)的定時(shí)初值表的地址偏移值LCALLSONG;演奏JNBKEY_7,$;等待鍵松開(kāi)LJMPSTART;返回,繼續(xù)查詢按鍵KEY8:MOVTUNE,#14;do高(1)音調(diào)的定時(shí)初值表的地址偏移值LCALLSONG;演奏JNBKEY_8,$;等待鍵松開(kāi)LJMPSTART;返回,繼續(xù)查詢按鍵,任務(wù)二音樂(lè)演奏器的設(shè)計(jì)與實(shí)現(xiàn),;-演奏子程序-SONG:MOVA,TUNE;音調(diào)的定時(shí)初值表的地址偏移值MOVDPTR,#TABLE;音調(diào)的定時(shí)初值表MOVCA,A+DPTRMOVR1,A;音符定時(shí)值高位INCDPTRMOVA,TUNEMOVCA,A+DPTRMOVR0,A;音符定時(shí)值低位MOVTH0,R1;定時(shí)器初值MOVTL0,R0SETBTR0;啟動(dòng)定時(shí)器T0RET;返回;-延時(shí)子程序-DELY2MS:MOVR6,#4;延時(shí)2msD1:MOVR7,#248DJNZR7,$DJNZR6,D1RET,任務(wù)二音樂(lè)演奏器的設(shè)計(jì)與實(shí)現(xiàn),;-T0中斷服務(wù)程序-INT_T0:PUSHACC;保護(hù)現(xiàn)場(chǎng)PUSHPSWMOVTH0,R1;定時(shí)器初值MOVTL0,R0CPLSPEAKER;聲音輸出POPPSW;恢復(fù)現(xiàn)場(chǎng)POPACCRETI;中斷返回;決定音調(diào)的定時(shí)初值TABLE:DW0FC44H,0FCACH,0FD09H,0FD34H;中音1,2,3,4DW0FD82H,0FDC8H,0FE06H,0FE22H;中音5,6,7,高音1END,任務(wù)二音樂(lè)演奏器的設(shè)計(jì)與實(shí)現(xiàn),4、實(shí)物制作,任務(wù)一音樂(lè)門鈴的分析與仿真,待在Proteus中仿真調(diào)試結(jié)果正常后,用實(shí)際硬件搭建電路。,表4-8元器件清單,自己動(dòng)手:擴(kuò)展到44矩陣式鍵盤(pán),采用編程掃描或定時(shí)中斷方式編程,16個(gè)按鍵按下分別演奏C調(diào)的低音的3,4,5,6,7,中音的1,2,3,4,5,6,7,高音的1,2,3,4;并用數(shù)碼管顯示按下的鍵值。,圖4-30矩陣式鍵盤(pán)簡(jiǎn)易電子琴電路原理圖,返回,任務(wù)二音樂(lè)演奏器的設(shè)計(jì)與實(shí)現(xiàn),返回,項(xiàng)目四音樂(lè)演奏器設(shè)計(jì),MCS-51單片機(jī)內(nèi)部有兩個(gè)可編程定時(shí)器/計(jì)數(shù)器T0和T1,每個(gè)定時(shí)器/計(jì)數(shù)器有四種工作方式:方式0方式3。方式0是13位的定時(shí)器/計(jì)數(shù)器,方式1是16位的定時(shí)器/計(jì)數(shù)器,方式2是初值重載的8位定時(shí)器/計(jì)數(shù)器,方式3只適用于T0,將T0分為兩個(gè)獨(dú)立的定時(shí)器/計(jì)數(shù)器,同時(shí)T1可以作為串行接口波特率發(fā)生器。不同位數(shù)的定時(shí)器/計(jì)數(shù)器其最大計(jì)數(shù)值也不同。52系列單片機(jī)內(nèi)部還有程定時(shí)器/計(jì)數(shù)器T2,定時(shí)器2有三種工作方式:捕獲方式、自動(dòng)重載(向下或向上計(jì)數(shù))方式和波特率發(fā)生器方式。對(duì)于定時(shí)器/計(jì)數(shù)器的編程包括設(shè)置方式寄存器、初值及控制寄存器(可位尋址)。初值由定時(shí)時(shí)間及定時(shí)器/計(jì)數(shù)器的位數(shù)決定。按鍵按

溫馨提示

  • 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
  • 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶所有。
  • 3. 本站RAR壓縮包中若帶圖紙,網(wǎng)頁(yè)內(nèi)容里面會(huì)有圖紙預(yù)覽,若沒(méi)有圖紙預(yù)覽就沒(méi)有圖紙。
  • 4. 未經(jīng)權(quán)益所有人同意不得將文件中的內(nèi)容挪作商業(yè)或盈利用途。
  • 5. 人人文庫(kù)網(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ì)自己和他人造成任何形式的傷害或損失。

最新文檔

評(píng)論

0/150

提交評(píng)論