版權(quán)說明:本文檔由用戶提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡介
知識(shí)歸納練習(xí)題任務(wù)二、音樂演奏器的設(shè)計(jì)與實(shí)現(xiàn)任務(wù)一、音樂門鈴的分析與仿真項(xiàng)目四音樂演奏器設(shè)計(jì)
項(xiàng)目目標(biāo)導(dǎo)讀學(xué)習(xí)目標(biāo)技能目標(biāo)熟練掌握51單片機(jī)的定時(shí)/計(jì)數(shù)器的內(nèi)部結(jié)構(gòu)、工作原理。掌握延時(shí)程序、發(fā)音程序的編寫。掌握獨(dú)立式鍵盤和矩陣式鍵盤的使用方法,按鍵的識(shí)別方法。通過學(xué)習(xí)定時(shí)器的過程,誘導(dǎo)學(xué)生思考快速掌握新知識(shí)點(diǎn)的方法。會(huì)運(yùn)用定時(shí)器的幾種工作方式編寫延時(shí)程序,能用定時(shí)器查詢方式和中斷兩種方式編寫控制程序。能利用定時(shí)器的定時(shí)功能產(chǎn)生不同頻率的音符和音調(diào)。會(huì)按照歌譜編寫演奏程序。會(huì)用獨(dú)立式鍵盤和矩陣式鍵盤。能采用查詢或中斷方式編寫鍵盤程序
。1.單片機(jī)定時(shí)器/計(jì)數(shù)器的概念,定時(shí)器/計(jì)數(shù)器工作方式的設(shè)置方法。2.獨(dú)立式鍵盤和矩陣式鍵盤的使用方法(采用查詢或中斷方式)。知識(shí)教學(xué)點(diǎn)
項(xiàng)目目標(biāo)導(dǎo)讀方法切入點(diǎn)
通過音樂門鈴和音樂演奏器的分析與設(shè)計(jì),從簡到繁實(shí)現(xiàn)學(xué)習(xí)目標(biāo),了解單片機(jī)定時(shí)/計(jì)數(shù)器和鍵盤的實(shí)際應(yīng)用。
參考學(xué)時(shí):10學(xué)時(shí)~12學(xué)時(shí)
任務(wù)一音樂門鈴的分析與仿真任務(wù)導(dǎo)入聲音是由物體振動(dòng)產(chǎn)生的,振動(dòng)的頻率不同,發(fā)出的聲音也就不同,有規(guī)律的振動(dòng)發(fā)出的聲音叫“樂音”。如何用單片機(jī)技術(shù)來實(shí)現(xiàn)音樂門鈴呢?任務(wù)分析門鈴按鍵從P1.0端口輸入,聲音信號(hào)從P1.7端口輸出到放大電路,經(jīng)過放大后送入揚(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)音樂門鈴,要求由單片機(jī)演奏任意一首樂曲。任務(wù)一音樂門鈴的分析與仿真相關(guān)知識(shí):定時(shí)/計(jì)數(shù)器1、定時(shí)器0和定時(shí)器1(1)定時(shí)/計(jì)數(shù)器的組成框圖圖4-18051定時(shí)器/計(jì)數(shù)器邏輯結(jié)構(gòu)圖任務(wù)一音樂門鈴的分析與仿真由圖4-1可知,8051單片機(jī)定時(shí)器/計(jì)數(shù)器由定時(shí)器0(T0)、定時(shí)器1(T1)、定時(shí)器方式寄存器TMOD和定時(shí)器控制寄存器TCON組成。
16位的加1計(jì)數(shù)器(高8位、低8位)T0、T1
TMOD-定時(shí)/計(jì)數(shù)器方式寄存器,工作方式設(shè)置;
TCON-定時(shí)/計(jì)數(shù)器控制寄存器,啟動(dòng)、停止及設(shè)置溢出標(biāo)志。任務(wù)一音樂門鈴的分析與仿真(2)定時(shí)/計(jì)數(shù)器的工作原理由TMOD中的控制位(C/T)來決定T0和T1是工作在定時(shí)器方式還是計(jì)數(shù)器方式。1.定時(shí)功能----計(jì)數(shù)脈沖信號(hào):內(nèi)部振蕩電路經(jīng)12分頻后輸出的脈沖進(jìn)行加1計(jì)數(shù)?!嘤?jì)數(shù)頻率是振蕩頻率的1/12—fc=1/12*fosc。2.計(jì)數(shù)功能----計(jì)數(shù)脈沖信號(hào):來自外部輸入引腳-(T0為P3.4,T1為P3.5)的負(fù)跳變信號(hào)進(jìn)行加1計(jì)數(shù)—fc=1/24*fosc。任務(wù)一音樂門鈴的分析與仿真(3)定時(shí)/計(jì)數(shù)器的方式寄存器和控制寄存器1)定時(shí)/計(jì)數(shù)器控制寄存器TCON(88H)D7D6D5D4D3D2D1D0TF1TR1TF0TR0IE1IT1IE0IT0中斷請(qǐng)求標(biāo)志觸發(fā)方式選擇啟動(dòng)定時(shí)/計(jì)數(shù)器0低電平1下降沿0停止1啟動(dòng)任務(wù)一音樂門鈴的分析與仿真2)工作方式控制寄存器TMOD(89H)T1控制T0控制M0M1C/TGATEM0M1C/TGATED0D1D2D3D4D5D6D7GATE——門控位。
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ù)一音樂門鈴的分析與仿真任務(wù)一音樂門鈴的分析與仿真M1M0工作方式功能說明
00方式013位計(jì)數(shù)器
01方式116位計(jì)數(shù)器
10方式2自動(dòng)再裝入8位計(jì)數(shù)器
11方式3定時(shí)器0:分成兩個(gè)8位計(jì)數(shù)器定時(shí)器1:停止計(jì)數(shù)表4-1定時(shí)器方式選擇計(jì)數(shù)脈沖輸入(1)方式0—13位方式
TF0T0TR0GATEINT01≥1&C/T=1振蕩器1/12C/T=0TL0TH08位低5位13位計(jì)數(shù)器定時(shí)器計(jì)數(shù)器中斷TCON01110定時(shí)時(shí)間:t=(213-定時(shí)器初值)×12/fosc(μs)2、定時(shí)器/計(jì)數(shù)器的工作方式任務(wù)一音樂門鈴的分析與仿真任務(wù)一音樂門鈴的分析與仿真例4-1假設(shè)晶振頻率是12MHz,用定時(shí)器1方式0實(shí)現(xiàn)1s的延時(shí)。解:因方式0采用13位計(jì)數(shù)器,其最大定時(shí)時(shí)間為:213×1
s=8192×1
s=8.192ms,因此,可選擇定時(shí)時(shí)間為5ms,再循環(huán)200次。定時(shí)時(shí)間選定后,再確定計(jì)數(shù)值為5000,則定時(shí)器1的初值為:X=M
計(jì)數(shù)值=8192
5000=3192=C78H=0110001111000B
因13位計(jì)數(shù)器中TL1的高3位未用,應(yīng)填寫0,TH1占高8位,所以,X的實(shí)際填寫值應(yīng)為:X=0110001100011000B=6318H即:TH1=63H,TL1=18H,又因采用方式0定時(shí),故TMOD=00H。任務(wù)一音樂門鈴的分析與仿真可編得1s延時(shí)子程序如下:DELAY:MOV R3,#200 ;置5ms計(jì)數(shù)循環(huán)初值MOV TMOD,#00H ;設(shè)定時(shí)器1為方式0MOV TH1,#63H ;置定時(shí)器初值
MOV TL1,#18HSETB TR1 ;啟動(dòng)T1LP1:JBC TF1,LP2 ;查詢計(jì)數(shù)溢出SJMP LP1 ;未到5ms繼續(xù)計(jì)數(shù)LP2:MOV TH1,#63H ;重新置定時(shí)器初值MOV TL1,#18HDJNZ R3,LP1 ;未到1s繼續(xù)循環(huán)RET
(2)方式1—16位方式
定時(shí)時(shí)間:t=(216-定時(shí)器初值)×12/fosc(μs)振蕩器1/12TL0TH0TF01≥1&T0TR0GATEINT0C/T=0C/T=18位8位16位計(jì)數(shù)器中斷任務(wù)一音樂門鈴的分析與仿真(3)方式2—8位自動(dòng)裝入時(shí)間常數(shù)方式TF0振蕩器1/121≥1&T0TR0GATEINT0C/T=0C/T=1TL0TH0中斷定時(shí)時(shí)間:t=(28-定時(shí)器初值)×12/fosc(μs)任務(wù)一音樂門鈴的分析與仿真任務(wù)一音樂門鈴的分析與仿真例4-2假設(shè)晶振頻率是12MHz,試用定時(shí)器1方式2實(shí)現(xiàn)1s的延時(shí)。解:因?yàn)榉绞?是8位計(jì)數(shù)器,其最大定時(shí)時(shí)間為:256×1
s=256
s,為實(shí)現(xiàn)1s延時(shí),可選擇定時(shí)時(shí)間為250
s,再循環(huán)4000次。定時(shí)時(shí)間選定后,可確定計(jì)數(shù)值為250,則定時(shí)器1的初值為:X=M
計(jì)數(shù)值=256
250=6=6H。采用定時(shí)器1方式2工作,因此,TMOD=20H。任務(wù)一音樂門鈴的分析與仿真可編得1s延時(shí)子程序如下:DELAY:MOV R5,#28H ;置25ms計(jì)數(shù)循環(huán)初值MOV R6,#64H ;置250
s計(jì)數(shù)循環(huán)初值MOV TMOD,#20H ;置定時(shí)器1為方式2MOV TH1,#06H ;置定時(shí)器初值MOV TL1,#06HSETB TR1 ;啟動(dòng)定時(shí)器LP1: JBC TF1,LP2 ;查詢計(jì)數(shù)溢出SJMP LP1 ;無溢出則繼續(xù)計(jì)數(shù)LP2: DJNZ R6,LP1 ;未到25ms繼續(xù)循環(huán)MOV R6,#64HDJNZ R5,LP1 ;未到1s繼續(xù)循環(huán)RET
(4)方式3—2個(gè)8位計(jì)數(shù)器方式僅T0可以工作在方式3—此時(shí)T0分成2個(gè)獨(dú)立的計(jì)數(shù)器—TL0和TH0:前者用原來T0的控制信號(hào)(TR0、TF0),后者用原來T1的控制信號(hào)(TR1、TF1)。INT0TF0T0TR0GATE1≥1&C/T=1振蕩器1/12C/T=0TL0中斷振蕩器1/12TF1TH0中斷TR1P3.4P3.2定時(shí)/計(jì)數(shù)器固定為定時(shí)器任務(wù)一音樂門鈴的分析與仿真二者的定時(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ā)生器或不需要中斷的場合。任務(wù)一音樂門鈴的分析與仿真任務(wù)一音樂門鈴的分析與仿真例4-3假設(shè)晶振頻率是12MHz,用定時(shí)器T0方式3實(shí)現(xiàn)1s的延時(shí)。解:根據(jù)題意,定時(shí)器T0中的TH0只能為定時(shí)器,定時(shí)時(shí)間可設(shè)為250
s;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=(256
250)=6=06HTL0計(jì)數(shù)初值為:X=(256
200)=56=38HTMOD=00000111B=07H任務(wù)一音樂門鈴的分析與仿真可編得1s延時(shí)子程序如下:DELAY:MOV R3,#14H ;置100ms計(jì)數(shù)循環(huán)初值MOV TMOD,#07H ;置定時(shí)器0為方式3計(jì)數(shù)MOV TH0,#06H ;置TH0初值MOV TL0,#38H ;置TL0初值SETB TR0 ;啟動(dòng)TL0SETB TR1 ;啟動(dòng)TH0LP1:JBC TF1,LP2 ;查詢TH0計(jì)數(shù)溢出SJMP LP1 ;未到500
s繼續(xù)計(jì)數(shù)LP2: MOV TH0,#06H ;重置TH0初值CLR P3.4 ;T0引腳產(chǎn)生負(fù)跳變NOP ;負(fù)跳變持續(xù)NOPSETB P3.4 ;T0引腳恢復(fù)高電平JBC TF0,LP3 ;查詢TH0計(jì)數(shù)溢出SJMP LP1 ;100ms未到繼續(xù)計(jì)數(shù)LP3: MOV TL0,#38H ;重置TL0初值DJNZ R3,LP1 ;未到1s繼續(xù)循環(huán)RET
3、定時(shí)器/計(jì)數(shù)器的編程和應(yīng)用任務(wù)一音樂門鈴的分析與仿真例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)為:65536
5000=60536=EC78H分別采用查詢方式和中斷方式實(shí)現(xiàn)。任務(wù)一音樂門鈴的分析與仿真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ù)一音樂門鈴的分析與仿真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)
。任務(wù)實(shí)施并行接口AT89C51單片機(jī)電源時(shí)鐘電路復(fù)位電路揚(yáng)聲器圖4-7系統(tǒng)方案設(shè)計(jì)框圖
任務(wù)一音樂門鈴的分析與仿真按鍵2、硬件電路設(shè)計(jì)
任務(wù)實(shí)施圖4-8門鈴電路原理圖電路所用仿真元器件:AT89C51:單片機(jī)RES:電阻CRYSTAL:晶振CAP:電容CAP-ELEC:電解電容BUTTON:按鈕SPEAKER:揚(yáng)聲器任務(wù)一音樂門鈴的分析與仿真2、硬件電路設(shè)計(jì)
任務(wù)實(shí)施圖4-9實(shí)用門鈴電路原理圖
任務(wù)一音樂門鈴的分析與仿真3、源程序設(shè)計(jì)任務(wù)實(shí)施任務(wù)一音樂門鈴的分析與仿真(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ì)任務(wù)實(shí)施圖4-10實(shí)現(xiàn)“滴、滴”報(bào)警聲流程圖
任務(wù)一音樂門鈴的分析與仿真步驟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:CLR FLAG ;標(biāo)志位清零
MOV TCOUNT,#00H ;計(jì)時(shí)計(jì)數(shù)值清零
MOV TMOD,#01H;置T0工作于方式1MOV TH0,#(65536-1000)/256;裝入計(jì)數(shù)初值
MOV TL0,#(65536-1000)MOD256MOV IE,#82H ;開中斷
SETB TR0 ;啟動(dòng)T0定時(shí)器
SJMP $;;等待中斷任務(wù)一音樂門鈴的分析與仿真步驟3:源程序編寫;-------------------------------T0中斷服務(wù)程序---------------------------------INT_T0:MOV TH0,#(65536-1000)/256;重新裝入計(jì)數(shù)值
MOV TL0,#(65536-1000)MOD256INC TCOUNT ;計(jì)時(shí)計(jì)數(shù)值+1MOV A,TCOUNTCJNE A,#250,I1 ;是否計(jì)滿0.25秒
CPL FLAG ;計(jì)時(shí)計(jì)數(shù)值取反
MOV TCOUNT,#00H ;計(jì)時(shí)計(jì)數(shù)值清零I1:JB FLAG,I2 ;檢查標(biāo)志位
CPL P1.7 ;聲音輸出
SJMP RETUNEI2:CLR P1.7 ;關(guān)聲音RETUNE:RETI ;中斷返回END 任務(wù)一音樂門鈴的分析與仿真3、源程序設(shè)計(jì)任務(wù)一音樂門鈴的分析與仿真(2)實(shí)現(xiàn)“滴、滴”報(bào)警門鈴要求:在(1)的基礎(chǔ)上增加按鈕動(dòng)作。按鈕按下一次,“滴、滴”聲持續(xù)約3秒。1)步驟1:定時(shí)參數(shù)的計(jì)算同前面相同。
2)步驟2:流程圖設(shè)計(jì)3)步驟3:源程序編寫圖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:CLR FLAG ;標(biāo)志位清零
MOV TCOUNT,#00H ;計(jì)時(shí)計(jì)數(shù)值清零
MOV TMOD,#01H;置T0工作于方式1MOV TH0,#(65536-1000)/256;裝入計(jì)數(shù)初值
MOV TL0,#(65536-1000)MOD256MOV IE,#82H ;開中斷LOOP:JBP1.0,STOP ;判斷P1.0是否按下
SETB TR0 ;啟動(dòng)T0定時(shí)器ACALLDELAY ;等中斷約3.2sSTOP:CLRP1.7;關(guān)聲音
CLRTR0 ;關(guān)閉T0定時(shí)器
SJMP LOOP;反復(fù)任務(wù)一音樂門鈴的分析與仿真;-------------------------------T0中斷服務(wù)程序---------------------------------INT_T0:MOV TH0,#(65536-1000)/256;重新裝入計(jì)數(shù)值
MOV TL0,#(65536-1000)MOD256INC TCOUNT ;計(jì)時(shí)計(jì)數(shù)值+1MOV A,TCOUNTCJNE A,#250,I1 ;是否計(jì)滿0.25秒
CPL FLAG ;計(jì)時(shí)計(jì)數(shù)值取反
MOV TCOUNT,#00H ;計(jì)時(shí)計(jì)數(shù)值清零I1:JB FLAG,I2 ;檢查標(biāo)志位
CPL P1.7 ;聲音輸出
SJMP RETUNEI2:CLR P1.7 ;關(guān)聲音RETUNE:RETI ;中斷返回DELAY:MOVR1,#0FFH ;延時(shí)約3.2秒DEL1:MOVR2,#0FFHDEL2:MOVR3,#09HDEL3:NOPNOPNOPDJNZR3,DEL3DJNZR2,DEL2DJNZR1,DEL1RETEND 任務(wù)一音樂門鈴的分析與仿真3、源程序設(shè)計(jì)任務(wù)一音樂門鈴的分析與仿真要求:按下一次按鈕,產(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)過3次250us的定時(shí),而“咚”聲500HZ的頻率要經(jīng)過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開始工作,當(dāng)T0工作完畢,回到最初狀態(tài)。③“?!焙汀斑恕甭曇舾髡加?.5秒,因此定時(shí)/計(jì)數(shù)器T0要完成0.5秒的定時(shí),對(duì)于以250us為基準(zhǔn)定時(shí)2000次才可以。
(3)實(shí)現(xiàn)“叮咚”門鈴
任務(wù)一音樂門鈴的分析與仿真
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ā)“?!甭?;1:發(fā)“咚”聲STOPBIT01H ;完成標(biāo)志,1:一次“叮咚”完成KEYBITP1.0 ;按鍵SPEAKERBITP1.7;喇叭;------------------------------主程序-------------------------------------------ORG0000HLJMPSTARTORG000BH ;T0中斷矢量
LJMPINT_T0START:MOVTMOD,#02H ;置T0工作于方式2MOVTH0,#06H ;裝入計(jì)數(shù)初值(250us定時(shí))MOVTL0,#06HSETBET0SETBEA ;開中斷任務(wù)一音樂門鈴的分析與仿真3)步驟3:源程序編寫NSP:CLRSPEAKER ;靜音
JBKEY,NSP ;如果按鈕沒按下,等待
LCALLDELY10MS ;10ms延時(shí)(防抖處理)JBKEY,NSP ;如果按鈕沒按下,等待
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,$ ;若一次“叮咚”沒完成,等待中斷
LJMPNSP ;;------------------------------延時(shí)子程序--------------------------------------DELY10MS:MOVR6,#20;延時(shí)10msD1:MOVR7,#248DJNZR7,$DJNZR6,D1RET;-------------------------------T0中斷服務(wù)程序---------------------------------INT_T0:INCT05SAMOVA,T05SA ;0.5s計(jì)數(shù)1+1CJNEA,#100,NEXT MOVT05SA,#00H任務(wù)一音樂門鈴的分析與仿真
INCT05SB ;0.5s計(jì)數(shù)2+1MOVA,T05SBCJNEA,#20,NEXT ;0.5s沒到,到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,TDING CJNEA,#03H,RETURN ;若“?!庇?jì)時(shí)沒到3,返回
MOVTDING,#00H ;“?!庇?jì)時(shí)清零
CPLSPEAKER ;聲音輸出
LJMPRETURN;發(fā)"咚"聲DONG:INCTDONG ;“咚”計(jì)時(shí)+1MOVA,TDONG CJNEA,#04H,RETURN ;若“咚”計(jì)時(shí)沒到3,返回
MOVTDONG,#00H ;“咚”計(jì)時(shí)清零
CPLSPEAKER ;聲音輸出RETURN:RETIEND任務(wù)一音樂門鈴的分析與仿真4、實(shí)物制作任務(wù)實(shí)施任務(wù)一音樂門鈴的分析與仿真待在Proteus中仿真調(diào)試結(jié)果正常后,用實(shí)際硬件搭建電路。元器件名稱參數(shù)數(shù)量元器件名稱參數(shù)數(shù)量單片機(jī)AT89S511電阻10kΩ3晶體振蕩器12MHz1電解電容47μF2功率放大器LM3861電容30pF2揚(yáng)聲器SPEAKER1IC插座DIP401電源+5v1表4-3元器件清單控制要求:實(shí)現(xiàn)音樂門鈴,由單片機(jī)演奏任意一首樂曲要求:采用單片機(jī),演奏《軍港之夜》樂曲,如圖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í)子程序來完成節(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ù)一音樂門鈴的分析與仿真圖4-14“軍港之夜”樂譜任務(wù)一音樂門鈴的分析與仿真任務(wù)一音樂門鈴的分析與仿真
2)步驟2:流程圖設(shè)計(jì)圖4-15實(shí)現(xiàn)音樂門鈴主程序流程圖圖4-16實(shí)現(xiàn)音樂門鈴中斷服務(wù)程序流程圖知識(shí)拓展:樂音的生成任務(wù)一音樂門鈴的分析與仿真1、調(diào)號(hào)
音樂上指用以確定樂曲主音高度的符號(hào)。用CDEFGAB這些字母來表示固定的音高。比如,A這個(gè)音,標(biāo)準(zhǔn)的音高為每秒鐘振動(dòng)440周,十二平均律各音的頻率見表4-4。表4-4十二平均律各音的頻率
調(diào)號(hào)(音名)CDEFGAB頻率(Hz)262294330349392440494調(diào)號(hào)(音名)#C(升C調(diào))#D(升D調(diào))#F(升F調(diào))#G(升G調(diào))#A(升A調(diào))頻率(Hz)277311369415466任務(wù)一音樂門鈴的分析與仿真2、音調(diào)與節(jié)拍
在音樂中所謂“音調(diào)”,其實(shí)就是我們常說的“音高”。當(dāng)兩個(gè)聲音信號(hào)的頻率相差一倍時(shí),也即f2=2f1時(shí),則稱f2比f1高一個(gè)倍頻程,在音樂學(xué)中稱它相差一個(gè)八度音。在一個(gè)八度音內(nèi),有12個(gè)半音。這12個(gè)音階的分度基本上是以對(duì)數(shù)關(guān)系來劃分的。如果我們只要知道了這十二個(gè)音符的音高,也就是其基本音調(diào)的頻率,我們就可根據(jù)倍頻程的關(guān)系得到其他音符基本音調(diào)的頻率。知道了一個(gè)音符的頻率后,要產(chǎn)生相應(yīng)頻率的聲音信號(hào),只要計(jì)算出該音頻的半周期(1/(2×頻率)),常采用的方法就是通過單片機(jī)的定時(shí)器定時(shí)中斷,來得到這個(gè)半周期時(shí)間。為了讓單片機(jī)發(fā)出不同頻率的聲音,我們只需將定時(shí)器預(yù)置不同的定時(shí)值就可實(shí)現(xiàn)。任務(wù)一音樂門鈴的分析與仿真表4-5C調(diào)各音符、頻率和定時(shí)初值的關(guān)系音符(低音)頻率/Hz定時(shí)初值音符(中音)頻率/Hz定時(shí)初值音符(高音)頻率/Hz定時(shí)初值1DO262F88C1DO523FC441DO1046FE22#1DO#277F8F3#1DO#554FC79#1DO#1109FE3D2RUI294F95B2RUI587FCAC2RUI1175FE56#2RUI#311F9B8#2RUI#622FCDC#2RUI#1245FE6E3MI330FA153MI659FD093MI1318FE854FA349FA674FA698FD344FA1397FE9A#4FA#370FAB9#4FA#740FD5C#4FA#1480FEAE5SO392FB045SO784FD825SO1568FEC1#5SO#415FB4B#5SO#831FDA6#5SO#1661FED36LA440FB906LA880FDC86LA1760FEE4#6LA#466FBCF#6LA#932FDE8#6LA#1865FEF47XI494FC0C7XI988FE067XI1976FF03任務(wù)一音樂門鈴的分析與仿真表4-6各節(jié)拍與時(shí)間的設(shè)定
曲調(diào)值1/4拍時(shí)間(ms)1/8拍時(shí)間(ms)調(diào)4/412562.5調(diào)3/4187.593.75調(diào)2/4250125返回任務(wù)導(dǎo)入任務(wù)二
音樂演奏器的設(shè)計(jì)與實(shí)現(xiàn)上一節(jié)中,應(yīng)用定時(shí)器的工作原理,實(shí)現(xiàn)了固定樂曲的播放。那么,這一節(jié)再加上鍵盤來實(shí)現(xiàn)音樂演奏。任務(wù)分析在音樂門鈴電路基礎(chǔ)上,修改增加硬件(獨(dú)立式或矩陣式鍵盤)和軟件程序,利用定時(shí)器,完成音樂演奏器(簡易電子琴)的設(shè)計(jì)和實(shí)現(xiàn):首先采用獨(dú)立式鍵盤,完成簡易電子琴的設(shè)計(jì)和實(shí)現(xiàn);在采用矩陣式鍵盤,完成簡易電子琴的設(shè)計(jì)和實(shí)現(xiàn)。相關(guān)知識(shí):單片機(jī)鍵盤接口1、鍵盤工作原理
任務(wù)二
音樂演奏器的設(shè)計(jì)與實(shí)現(xiàn)(1)按鍵的分類1)按鍵按照結(jié)構(gòu)原理可分為兩類:①觸點(diǎn)式開關(guān)按鍵,如機(jī)械式開關(guān)、導(dǎo)電橡膠式開關(guān)等;②無觸點(diǎn)開關(guān)按鍵,如電氣式按鍵,磁感應(yīng)按鍵等。前者造價(jià)低,后者壽命長。目前,單片機(jī)系統(tǒng)中最常見的是觸點(diǎn)式開關(guān)按鍵。2)按鍵按照接口原理可分為:①編碼鍵盤。編碼鍵盤主要是用硬件來實(shí)現(xiàn)對(duì)鍵的識(shí)別。②非編碼鍵盤。非編碼鍵盤主要是由軟件來實(shí)現(xiàn)鍵盤的定義與識(shí)別。任務(wù)二
音樂演奏器的設(shè)計(jì)與實(shí)現(xiàn)(2)鍵輸入原理1)鍵盤接口的基本功能①鍵掃描:監(jiān)測有無鍵按下。判別是否有鍵按下的方式有中斷方式和查詢方式兩種:中斷方式:當(dāng)鍵按下時(shí),就向CPU發(fā)出中斷請(qǐng)求。CPU響應(yīng)后,對(duì)鍵盤掃描,進(jìn)行識(shí)別,取出鍵值,作相應(yīng)處理。查詢方式:每隔一定時(shí)間,CPU掃描鍵盤一次,查詢有無鍵按下。若有鍵按下,則再查鍵值,作相應(yīng)處理。②去抖動(dòng):一個(gè)電壓信號(hào)通過機(jī)械觸點(diǎn)的開/關(guān)過程中,由于機(jī)械觸點(diǎn)的彈性作用,在開關(guān)瞬間均有抖動(dòng)過程,會(huì)出現(xiàn)一系列的負(fù)脈沖,圖4-18機(jī)械觸點(diǎn)的開/關(guān)過程
任務(wù)二
音樂演奏器的設(shè)計(jì)與實(shí)現(xiàn)a)硬件去抖硬件消抖可以采用R-S觸發(fā)器或單穩(wěn)電路構(gòu)成去抖電路,分別如圖4-18所示。硬件消抖因?yàn)橐黾佑布_銷,造成電路復(fù)雜,除了在數(shù)字電路里使用外,在單片機(jī)系統(tǒng)中不太采用。b)軟件去抖在檢測到有鍵按下時(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í)際開發(fā)產(chǎn)品中常用的方法。圖4-19硬件去抖電路
任務(wù)二
音樂演奏器的設(shè)計(jì)與實(shí)現(xiàn)③鍵識(shí)別:確定是哪一個(gè)鍵按下,取出鍵值。每一個(gè)按鍵都要確定一個(gè)鍵值,以便實(shí)現(xiàn)按鍵功能的轉(zhuǎn)移。散轉(zhuǎn)指令就是要根據(jù)這個(gè)鍵值來轉(zhuǎn)移。④其它可靠的邏輯處理辦法:一次鎖定:不管一次按鍵的時(shí)間有多長,僅作一次處理。2)鍵輸入操作的基本框圖圖4-20鍵輸入框圖
任務(wù)二
音樂演奏器的設(shè)計(jì)與實(shí)現(xiàn)(1)獨(dú)立式按鍵結(jié)構(gòu)圖4-21獨(dú)立式按鍵電路2、獨(dú)立式鍵盤特點(diǎn):一線一鍵,按鍵識(shí)別(編程)簡單;但占用較多口線,適合8鍵以下使用。任務(wù)二
音樂演奏器的設(shè)計(jì)與實(shí)現(xiàn)(2)獨(dú)立式按鍵的軟件結(jié)構(gòu)獨(dú)立式按鍵的軟件可采用中斷方式和查詢方式,本項(xiàng)目中按鍵程序的編寫采用的就是中斷方式。ORG0000HLJMPSTARTORG 0100HSTART:MOV P1,#0FFH ;設(shè)置P1為輸入口LOOP1: MOVA,P1;讀入P1口的狀態(tài)CJNEA,#0FFH,LOOP2;沒有鍵按下的話,等待SJMPLOOP1LOOP2: LCALLDELY10MS ;延時(shí),防抖MOVB,P1 ;讀入P1口的狀態(tài)CJNEA,B,LOOP1;兩次檢測P1口不同的話,重新檢測JNBACC.0,KEY0;ACC.0=0?若為0則P1.0對(duì)應(yīng)的鍵按下,轉(zhuǎn)KEY0┇JNBACC.7,KEY7;ACC.7=0?若為0則P1.7對(duì)應(yīng)的鍵按下,轉(zhuǎn)KEY7SJMP STARTKEY0: ┇ ;0#鍵功能程序LJMP START ;返回主程序開始,繼續(xù)查詢按鍵狀態(tài)KEY1: ┇ ;1#鍵功能程序LJMP START┇KEY7: ┇ ;7#鍵功能程序LJMP START任務(wù)二
音樂演奏器的設(shè)計(jì)與實(shí)現(xiàn)(1)矩陣式鍵盤的結(jié)構(gòu)及原理
圖4-22矩陣鍵盤電路圖
3、矩陣式按鍵特點(diǎn):按鍵識(shí)別應(yīng)采用掃描法或線路反轉(zhuǎn)法編程較為復(fù)雜,節(jié)省口資源,8鍵以上使用任務(wù)二
音樂演奏器的設(shè)計(jì)與實(shí)現(xiàn)(2)
矩陣式鍵盤按鍵的識(shí)別識(shí)別按鍵的方法很多,其中,最常見的方法是掃描法,其中一種是“行掃描法”。行掃描法又稱為逐行(或列)掃描查詢法,是最常用的按鍵識(shí)別方法。(3)
鍵盤的編碼
對(duì)于矩陣式鍵盤,按鍵的位置由行號(hào)和列號(hào)唯一確定,因此可分別對(duì)行號(hào)和列號(hào)進(jìn)行二進(jìn)制編碼,然后將兩值合成一個(gè)字節(jié),高4位是行號(hào),低4位是列號(hào)。鍵盤編碼可采用依次排列鍵號(hào)的方式對(duì)安排進(jìn)行編碼。(4)
鍵盤的工作方式在單片機(jī)應(yīng)用系統(tǒng)中,鍵盤掃描只是CPU的工作內(nèi)容之一。通常,鍵盤的工作方式有三種,即編程掃描、定時(shí)掃描和中斷掃描。1、確定設(shè)計(jì)方案
選用AT89C51單片機(jī)芯片、時(shí)鐘電路、復(fù)位電路、電源和8個(gè)按鍵,按鍵采用獨(dú)立式鍵盤,8個(gè)按鍵代表do,rui,mi,fa,so,la,xi,do8個(gè)音階,采用查詢方式,可彈奏不同聲音。任務(wù)實(shí)施并行接口AT89C51單片機(jī)電源時(shí)鐘電路復(fù)位電路8鍵查詢式鍵盤圖4-25系統(tǒng)方案設(shè)計(jì)框圖揚(yáng)聲器任務(wù)二
音樂演奏器的設(shè)計(jì)與實(shí)現(xiàn)2、硬件電路設(shè)計(jì)
任務(wù)實(shí)施圖4-26
獨(dú)立式鍵盤簡易電子琴電路原理圖電路所用仿真元器件:AT89C51:單片機(jī)RES:電阻CRYSTAL:晶振CAP:電容CAP-ELEC:電解電容BUTTON:按鍵SPEAKER:揚(yáng)聲器OSCILLOSCOPE:示波器任務(wù)二
音樂演奏器的設(shè)計(jì)與實(shí)現(xiàn)任務(wù)實(shí)施圖4-27獨(dú)立式鍵盤簡易電子琴主程序流程圖步驟1:流程圖設(shè)計(jì)3、源程序設(shè)計(jì)任務(wù)二
音樂演奏器的設(shè)計(jì)與實(shí)現(xiàn)圖4-28簡易電子琴演奏子程序流程圖步驟1:流程圖設(shè)計(jì)圖4-29簡易電子琴中斷服務(wù)程序流程圖
任務(wù)二
音樂演奏器的設(shè)計(jì)與實(shí)現(xiàn)3、源程序設(shè)計(jì);********* 獨(dú)立式鍵盤建議電子琴*********************;程序名:電子琴控制程序xm4_5.asm;程序功能:采用查詢式鍵盤,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 ;開中斷
MOVP1,#0FFH;設(shè)置P1為輸入口任務(wù)實(shí)施步驟2:源程序編寫任務(wù)二
音樂演奏器的設(shè)計(jì)與實(shí)現(xiàn)START:CLRSPEAKER ;靜音
CLRTR0;定時(shí)器T0停止LOOP1:MOVA,P1;讀入P1口的狀態(tài)
CJNEA,#0FFH,LOOP2;沒有鍵按下的話,等待SJMPLOOP1LOOP2:LCALLDELY2MS ;延時(shí),防抖MOVB,P1 ;讀入P1口的狀態(tài)CJNEA,B,LOOP1;兩次檢測P1口不同的話,重新檢測
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,$;等待鍵松開LJMP START;返回,繼續(xù)查詢按鍵KEY2:MOVTUNE,#2 ;rui(2)音調(diào)的定時(shí)初值表的地址偏移值
LCALLSONG ;演奏JNBKEY_2,$;等待鍵松開LJMPSTART;返回,繼續(xù)查詢按鍵任務(wù)二
汽車轉(zhuǎn)向燈控制KEY3:MOVTUNE,#4 ;mi(3)音調(diào)的定時(shí)初值表的地址偏移值
LCALLSONG ;演奏JNBKEY_3,$;等待鍵松開LJMPSTART;返回,繼續(xù)查詢按鍵KEY4:MOVTUNE,#6 ;fa(4)音調(diào)的定時(shí)初值表的地址偏移值
LCALLSONG ;演奏
JNBKEY_4,$;等待鍵松開LJMPSTART;返回,繼續(xù)查詢按鍵KEY5:MOVTUNE,#8 ;so(5)音調(diào)的定時(shí)初值表的地址偏移值
LCALLSONG ;演奏JNBKEY_5,$;等待鍵松開LJMPSTART;返回,繼續(xù)查詢按鍵KEY6:MOVTUNE,#10 ;la(6)音調(diào)的定時(shí)初值表的地址偏移值
LCALLSONG ;演奏JNBKEY_6,$;等待鍵松開LJMPSTART;返回,繼續(xù)查詢按鍵KEY7:MOVTUNE,#12 ;xi(7)音調(diào)的定時(shí)初值表的地址偏移值
LCALLSONG ;演奏JNBKEY_7,$;等待鍵松開
LJMPSTART;返回,繼續(xù)查詢按鍵KEY8:MOVTUNE,#14 ;do高(1)音調(diào)的定時(shí)初值表的地址偏移值
LCALLSONG ;演奏JNBKEY_8,$;等待鍵松開LJMPSTART;返回,繼續(xù)查詢按鍵任務(wù)二
音樂演奏器的設(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ù)二
音樂演奏器的設(shè)計(jì)與實(shí)現(xiàn);------------------------------T0中斷服務(wù)程序---------------------------------INT_T0:PUSHACC;保護(hù)現(xiàn)場
PUSHPSWMOVTH0,R1;定時(shí)器初值
MOVTL0,R0CPLSPEAKER ;聲音輸出POPPSW ;恢復(fù)現(xiàn)場
POPACCRETI ;中斷返回
;決定音調(diào)的定時(shí)初值TABLE:DW0FC44H,0FCACH,0FD09H,0FD34H;中音1,2,3,4DW0FD82H,0FDC8H,0FE06H,0FE22H;中音5,6,7,高音1END任務(wù)二
音樂演奏器的設(shè)計(jì)與實(shí)現(xiàn)4、實(shí)物制作任務(wù)實(shí)施任務(wù)一音樂門鈴的分析與仿真待在Proteus中仿真調(diào)試結(jié)果正常后,用實(shí)際硬件搭建電路。元器件名稱參數(shù)數(shù)量元器件名稱參數(shù)數(shù)量單片機(jī)AT89S511電阻10kΩ3晶體振蕩器12MHz1電解電容47μF2揚(yáng)聲器BUTTON8電容30pF2揚(yáng)聲器SPEAKER1IC插座DIP401電源+5v1表4-8元器件清單自己動(dòng)手:擴(kuò)展到4×4矩陣式鍵盤,采用編程掃描或定時(shí)中斷方式編程,16個(gè)按鍵按下分別演奏C調(diào)的低音的3,4,5,6,7,中音的1,2,3,4,5,6,7,高音的1,2,3,4;并用數(shù)碼管顯示按下的鍵值。技能提高:矩陣式鍵盤簡易電子琴的設(shè)計(jì)與實(shí)現(xiàn)
圖4-30矩陣式鍵盤簡易電子琴電路原理圖返回任務(wù)二
音樂演奏器的設(shè)計(jì)與實(shí)現(xiàn)知識(shí)歸納返回項(xiàng)目四
音樂演奏器設(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ù)決定。按鍵按結(jié)構(gòu)原理可分為觸點(diǎn)式開關(guān)按鍵(如機(jī)械式按鍵)和無觸點(diǎn)開關(guān)按鍵(如電氣式按鍵),其中,機(jī)械式開關(guān)按鍵使用最為頻繁,使用機(jī)械式按鍵時(shí),應(yīng)注意去抖。多個(gè)按鍵組合在一起可構(gòu)成鍵盤,鍵盤可分為獨(dú)立式按鍵和矩陣式(也叫行列式)按鍵兩種,MCS-51可方便地與這兩種鍵盤接口。獨(dú)立式鍵盤配置靈活,軟件結(jié)構(gòu)簡單,但占用I/O口線多,不適合較多按鍵的鍵盤。矩陣式鍵盤占用I/O口線少,節(jié)省資源,軟件相對(duì)復(fù)雜。矩陣鍵盤一般采用掃描方式識(shí)別按鍵,鍵盤掃描工作方式有三種,即編程掃描、定時(shí)掃描和中斷掃描。項(xiàng)目小結(jié)返回項(xiàng)目四
音樂演奏器設(shè)計(jì)一、選擇題(1)?8031單片機(jī)的定時(shí)器T1用作定時(shí)方式時(shí)是
。
A.由內(nèi)部時(shí)鐘頻率定時(shí),一個(gè)時(shí)鐘周期加1
B.由內(nèi)部時(shí)鐘頻率定時(shí),一個(gè)機(jī)器周期加1
C.由外部時(shí)鐘頻率定時(shí),一個(gè)時(shí)鐘周期加1
D.由外部時(shí)鐘頻率定時(shí),一個(gè)機(jī)器周期加1(2)?8031單片機(jī)的定時(shí)器T1用作計(jì)數(shù)方式時(shí)計(jì)數(shù)脈沖是
。
A.外部計(jì)數(shù)脈沖,由T1(P3.5)輸入
B.外部計(jì)數(shù)脈沖,由內(nèi)部時(shí)鐘頻率提供
C.外部計(jì)數(shù)脈沖,由T0(P3.4)輸入
D.由外部計(jì)數(shù)脈沖計(jì)數(shù)(3)若8031的定時(shí)器T1用作定時(shí)方式,模式1,則工作方式控制字為
。
A.01H B.05H C.10H D.50H(4)若8031的定時(shí)器T1用作計(jì)數(shù)方式,模式2,則工作方式控制字為
。
A.60H B.02H C.06HD.20H(5)若8031的定時(shí)器T1用作定時(shí)方式,模式1,則初始化編程為
。
A.MOVTMOD,#01H
B.MOVTMOD,#50H
C.MOVTMOD,#10H
D.MOVTCON,#02H(6)啟動(dòng)定時(shí)器0開始計(jì)數(shù)的指令是使TCON的
。
A.TF0位置1B.TR0位置1 C.TR0位置0
D.TR1位置0
練習(xí)題項(xiàng)目四
音樂演奏器設(shè)計(jì)(7)使8031的定時(shí)器T0停止計(jì)數(shù)的指令是
。
A.CLRTR0 B.CLRTR1 C.SETBTR0D.SETBTR1(8)下列指令中,判斷若定時(shí)器T0計(jì)滿數(shù)就轉(zhuǎn)LP的是
。
A.JBT0,LP B.JNBTF0,LP C.JNBTR0,LPD.
溫馨提示
- 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ì)自己和他人造成任何形式的傷害或損失。
最新文檔
- GB/T 21871-2025橡膠配合劑縮略語
- 2026年新疆建設(shè)職業(yè)技術(shù)學(xué)院單招職業(yè)適應(yīng)性測試題庫及完整答案詳解1套
- 2026年六盤水幼兒師范高等??茖W(xué)校單招職業(yè)傾向性測試題庫及參考答案詳解
- 2026年福建理工大學(xué)單招職業(yè)技能考試題庫及答案詳解1套
- 2026年四川西南航空職業(yè)學(xué)院單招職業(yè)適應(yīng)性考試題庫帶答案詳解
- 2026年安徽冶金科技職業(yè)學(xué)院單招職業(yè)適應(yīng)性考試題庫附答案詳解
- 2026年甘肅農(nóng)業(yè)職業(yè)技術(shù)學(xué)院單招職業(yè)傾向性考試題庫及參考答案詳解
- 2026年遼寧經(jīng)濟(jì)職業(yè)技術(shù)學(xué)院單招職業(yè)技能測試題庫含答案詳解
- 2026年蕪湖職業(yè)技術(shù)學(xué)院單招職業(yè)技能考試題庫及參考答案詳解一套
- 2026年撫州職業(yè)技術(shù)學(xué)院單招職業(yè)傾向性測試題庫含答案詳解
- 節(jié)能環(huán)保安全知識(shí)培訓(xùn)課件
- 鋼結(jié)構(gòu)工程施工質(zhì)量檢查標(biāo)準(zhǔn)
- 2025-2030中國集成電路設(shè)計(jì)行業(yè)人才缺口分析與培養(yǎng)體系建設(shè)及技術(shù)創(chuàng)新評(píng)估
- 工藝流程規(guī)范
- 城市地下綜合管網(wǎng)建設(shè)項(xiàng)目技術(shù)方案
- 運(yùn)城十三縣考試題及答案
- 【書法練習(xí)】中考語文古詩文硬筆字帖(田英章字體)
- DB65-T 4900-2025 新能源發(fā)電升壓站驗(yàn)收技術(shù)規(guī)范
- 貴州省市政工程計(jì)價(jià)定額2025定額說明(重要)
- 車輛日常保養(yǎng)與維護(hù)課件
- 農(nóng)村集體經(jīng)濟(jì)發(fā)展講座
評(píng)論
0/150
提交評(píng)論