簡易電子琴的設(shè)計(jì)
發(fā)布時(shí)間:2007/8/20 0:00:00 訪問次數(shù):669
一、設(shè)計(jì)題目:
設(shè)計(jì)一簡易電子琴,要求能夠發(fā)出1、2、3、4、5、6、7等七個(gè)音符。
使用元件:AT89C51、LM324,喇叭,按鍵等
二、設(shè)計(jì)目的
(1)能夠?qū)﹄娮与娐贰㈦娮釉骷、印制電路板等方面的知識(shí)有進(jìn)一步的認(rèn)識(shí),獨(dú)立對(duì)其進(jìn)行測試與檢查。
(2)熟悉8051單片機(jī)的內(nèi)部結(jié)構(gòu)和功能,合理使用其內(nèi)部寄存器,能夠完成相關(guān)軟件編程設(shè)計(jì)工作。
(3)為實(shí)現(xiàn)預(yù)期功能,能夠?qū)ο到y(tǒng)進(jìn)行快速的調(diào)試,并能夠?qū)Τ霈F(xiàn)的功能故障進(jìn)行分析,及時(shí)修改相關(guān)軟硬件。
(4)對(duì)軟件編程、排錯(cuò)調(diào)試、焊接技術(shù)、相關(guān)儀器設(shè)備的使用技能等方面得到較全面的鍛煉和提高。
三、系統(tǒng)硬件圖
流程圖:
原理:
(一)音樂產(chǎn)生原理及硬件設(shè)計(jì)
由于一首音樂是許多不同的音階組成的,而每個(gè)音階對(duì)應(yīng)著不同的頻率,這樣我們就可以利用不同的頻率的組合,即可構(gòu)成我們所想要的音樂了,當(dāng)然對(duì)于單片機(jī)來產(chǎn)生不同的頻率非常方便,我們可以利用單片機(jī)的定時(shí)/計(jì)數(shù)器T0來產(chǎn)生這樣方波頻率信號(hào),因此,我們只要把一首歌曲的音階對(duì)應(yīng)頻率關(guān)系弄正確即可。
本次設(shè)計(jì)中單片機(jī)晶振為12MHZ,那么定時(shí)器的計(jì)數(shù)周期為1MHZ,假如選擇工作方式1,那T值便為T=216--5﹡105/相應(yīng)的頻率,那么根據(jù)不同的頻率計(jì)算出應(yīng)該賦給定時(shí)器的計(jì)數(shù)值,列出不同音符與單片機(jī)計(jì)數(shù)T0相關(guān)的計(jì)數(shù)值如下表所示:
采用查表程序進(jìn)行查表時(shí),可以為這個(gè)音符建立一個(gè)表格,有助于單片機(jī)通過查表的方式來獲得相應(yīng)的數(shù)據(jù):
TABLEDW64580,64684,64777,64820,64898,64968,65030
源程序:
方案一:產(chǎn)生按鍵音符
ORG0000H
LJMPMAIN
ORG000BH
LJMPBREAK
MAIN:MOVTMOD,#01H;設(shè)置定時(shí)器0的工作方式
SETBEA
SETBET0;設(shè)置定時(shí)器0中斷
SETBTR0;啟動(dòng)定時(shí)器0
WAIT1:LCALLKEY;調(diào)用KEY子程序,判斷有鍵按下否?第幾個(gè)鍵?
CLREA;屏蔽中斷
CJNER3,#00H,WAIT1;如果R3=0,表示有鍵按下
MOVA,22H;將22H里存放的按鍵號(hào)送給A
RLA;因?yàn)椴楸砝锒际亲,所以得?查得數(shù)據(jù)
MOVDPTR,#TABLE;指向表頭
MOVCA,@A+DPTR;查表
MOVTH0,A;將數(shù)據(jù)高位送TH0
MOV21H,A;將高位備份
MOVA,22H;將22H里存放的按鍵號(hào)送給A
RLA;因?yàn)椴楸砝锒际亲,所以得?查得數(shù)據(jù)
INCA;取低位數(shù)據(jù)
MOVCA,@A+DPTR
MOVTL0,A
MOV20H,A
WAIT2:LCALLKEY
SETBEA
CJNER3,#00H,WAIT1
JMPWAIT2
KEY:MOVR3,#00H;KEY子程序,判斷有鍵按下否?第幾個(gè)鍵?
MOVR1,#0FFH
MOVR0,#00H
MOVA,R1
MOVP2,A
MOVA,P2
CLRC
CPLC;利用標(biāo)志位CY來判斷是哪個(gè)鍵按下
MOVR2,#08H
WAIT3:RLCA;移位判斷
JNCSTORE
INCR0
DJNZR2,WAIT3
STORE:MOV22H,R0;將按鍵號(hào)存22H,R3=0有鍵按下
MOVR3,#00H
RET
BREAK:PUSHACC;中斷產(chǎn)生方波,從P1.0口輸出
PUSHPSW
MOVTL0,20H
MOVTH0,21H
CPLP1.0
POPPSW
POPACC
RETI
TABLE:DW65030,64968,64898,64820,64777,64684,64580;7,6,5,4,3,2,1
END
方案二:產(chǎn)生按鍵音符
ORG0000H
SJMPSTART
ORG000BH
AJMPINT_0
ORG0030H
START:MOVP1,#00H
SETBEA
SETBET0;計(jì)數(shù)器0
MOVTMOD,#02H
MOVTH1,#09CH
MOVTL1,#09CH;定時(shí)器初植
CLRTR0;定時(shí)器不允許
SCAN:;鍵盤掃描
MOVA,P2;判斷鍵盤按下,跳到SCAN_1,若未按,繼續(xù)掃描
CJNEA,#0FFH,SCAN_1
NOP
SJMPSCAN
SCAN_1:ACALLDELAY;是不是真的要按下?如果是,則跳轉(zhuǎn)SU_KEY查詢是哪個(gè)按下?
MOVA,P2
CJNEA,#0FFH,SU_KEY
NOP
SJMPSCAN
SU_KEY:JNBP2.1,MU_1;判斷是哪個(gè)鍵按下?
JNBP2.2,MU_2
JNBP2.3,MU_3
JNBP2.4,MU_4
JNBP2.5,MU_5
JNBP2.6,MU_6
JNBP2.7,MU_7
SJMPSCAN
;R1信號(hào)周期
MU_1:MOVR1,#19;如果第一個(gè)按鍵按下,則R1=19,同時(shí)程序轉(zhuǎn)NEXT
SJMPNEXT
MU_2:MOVR1,#17
SJMPNEXT
MU_3:MOVR1,#15
SJMPNEXT
MU_4:MOVR1,#14
SJMPNEXT
MU_5:MOVR1,#13
SJMPNEXT
MU_6:MOVR1,#11
SJMPNEXT
MU_7:MOVR1,#10
SJMPNEXT
NEXT:MOVA,R1
MOVR0,A
SETBTR0;啟動(dòng)定時(shí)器0
NEXT_1:MOVA,P2;沒鍵按下繼續(xù)執(zhí)行,有鍵按下,返回讀引腳
CJNEA,#0FFH,NEXT_1
ACALLDELAY
MOVA,P2;真的沒鍵按下?
CJNEA,#0FFH,NEXT_1
CLRTR0;不響
AJMPSCAN;掃描鍵盤去
INT_0:;中斷程序
DJNZR0,RE;R0不等于0時(shí),返回
CPLP1.0
MOVA,R1
MOVR0,A
RE:RETI
DELAY:MOVR7,#100;延長時(shí)間等待,鍵盤消抖<
一、設(shè)計(jì)題目:
設(shè)計(jì)一簡易電子琴,要求能夠發(fā)出1、2、3、4、5、6、7等七個(gè)音符。
使用元件:AT89C51、LM324,喇叭,按鍵等
二、設(shè)計(jì)目的
(1)能夠?qū)﹄娮与娐、電子元器件、印制電路板等方面的知識(shí)有進(jìn)一步的認(rèn)識(shí),獨(dú)立對(duì)其進(jìn)行測試與檢查。
(2)熟悉8051單片機(jī)的內(nèi)部結(jié)構(gòu)和功能,合理使用其內(nèi)部寄存器,能夠完成相關(guān)軟件編程設(shè)計(jì)工作。
(3)為實(shí)現(xiàn)預(yù)期功能,能夠?qū)ο到y(tǒng)進(jìn)行快速的調(diào)試,并能夠?qū)Τ霈F(xiàn)的功能故障進(jìn)行分析,及時(shí)修改相關(guān)軟硬件。
(4)對(duì)軟件編程、排錯(cuò)調(diào)試、焊接技術(shù)、相關(guān)儀器設(shè)備的使用技能等方面得到較全面的鍛煉和提高。
三、系統(tǒng)硬件圖
流程圖:
原理:
(一)音樂產(chǎn)生原理及硬件設(shè)計(jì)
由于一首音樂是許多不同的音階組成的,而每個(gè)音階對(duì)應(yīng)著不同的頻率,這樣我們就可以利用不同的頻率的組合,即可構(gòu)成我們所想要的音樂了,當(dāng)然對(duì)于單片機(jī)來產(chǎn)生不同的頻率非常方便,我們可以利用單片機(jī)的定時(shí)/計(jì)數(shù)器T0來產(chǎn)生這樣方波頻率信號(hào),因此,我們只要把一首歌曲的音階對(duì)應(yīng)頻率關(guān)系弄正確即可。
本次設(shè)計(jì)中單片機(jī)晶振為12MHZ,那么定時(shí)器的計(jì)數(shù)周期為1MHZ,假如選擇工作方式1,那T值便為T=216--5﹡105/相應(yīng)的頻率,那么根據(jù)不同的頻率計(jì)算出應(yīng)該賦給定時(shí)器的計(jì)數(shù)值,列出不同音符與單片機(jī)計(jì)數(shù)T0相關(guān)的計(jì)數(shù)值如下表所示:
采用查表程序進(jìn)行查表時(shí),可以為這個(gè)音符建立一個(gè)表格,有助于單片機(jī)通過查表的方式來獲得相應(yīng)的數(shù)據(jù):
TABLEDW64580,64684,64777,64820,64898,64968,65030
源程序:
方案一:產(chǎn)生按鍵音符
ORG0000H
LJMPMAIN
ORG000BH
LJMPBREAK
MAIN:MOVTMOD,#01H;設(shè)置定時(shí)器0的工作方式
SETBEA
SETBET0;設(shè)置定時(shí)器0中斷
SETBTR0;啟動(dòng)定時(shí)器0
WAIT1:LCALLKEY;調(diào)用KEY子程序,判斷有鍵按下否?第幾個(gè)鍵?
CLREA;屏蔽中斷
CJNER3,#00H,WAIT1;如果R3=0,表示有鍵按下
MOVA,22H;將22H里存放的按鍵號(hào)送給A
RLA;因?yàn)椴楸砝锒际亲郑缘贸?查得數(shù)據(jù)
MOVDPTR,#TABLE;指向表頭
MOVCA,@A+DPTR;查表
MOVTH0,A;將數(shù)據(jù)高位送TH0
MOV21H,A;將高位備份
MOVA,22H;將22H里存放的按鍵號(hào)送給A
RLA;因?yàn)椴楸砝锒际亲,所以得?查得數(shù)據(jù)
INCA;取低位數(shù)據(jù)
MOVCA,@A+DPTR
MOVTL0,A
MOV20H,A
WAIT2:LCALLKEY
SETBEA
CJNER3,#00H,WAIT1
JMPWAIT2
KEY:MOVR3,#00H;KEY子程序,判斷有鍵按下否?第幾個(gè)鍵?
MOVR1,#0FFH
MOVR0,#00H
MOVA,R1
MOVP2,A
MOVA,P2
CLRC
CPLC;利用標(biāo)志位CY來判斷是哪個(gè)鍵按下
MOVR2,#08H
WAIT3:RLCA;移位判斷
JNCSTORE
INCR0
DJNZR2,WAIT3
STORE:MOV22H,R0;將按鍵號(hào)存22H,R3=0有鍵按下
MOVR3,#00H
RET
BREAK:PUSHACC;中斷產(chǎn)生方波,從P1.0口輸出
PUSHPSW
MOVTL0,20H
MOVTH0,21H
CPLP1.0
POPPSW
POPACC
RETI
TABLE:DW65030,64968,64898,64820,64777,64684,64580;7,6,5,4,3,2,1
END
方案二:產(chǎn)生按鍵音符
ORG0000H
SJMPSTART
ORG000BH
AJMPINT_0
ORG0030H
START:MOVP1,#00H
SETBEA
SETBET0;計(jì)數(shù)器0
MOVTMOD,#02H
MOVTH1,#09CH
MOVTL1,#09CH;定時(shí)器初植
CLRTR0;定時(shí)器不允許
SCAN:;鍵盤掃描
MOVA,P2;判斷鍵盤按下,跳到SCAN_1,若未按,繼續(xù)掃描
CJNEA,#0FFH,SCAN_1
NOP
SJMPSCAN
SCAN_1:ACALLDELAY;是不是真的要按下?如果是,則跳轉(zhuǎn)SU_KEY查詢是哪個(gè)按下?
MOVA,P2
CJNEA,#0FFH,SU_KEY
NOP
SJMPSCAN
SU_KEY:JNBP2.1,MU_1;判斷是哪個(gè)鍵按下?
JNBP2.2,MU_2
JNBP2.3,MU_3
JNBP2.4,MU_4
JNBP2.5,MU_5
JNBP2.6,MU_6
JNBP2.7,MU_7
SJMPSCAN
;R1信號(hào)周期
MU_1:MOVR1,#19;如果第一個(gè)按鍵按下,則R1=19,同時(shí)程序轉(zhuǎn)NEXT
SJMPNEXT
MU_2:MOVR1,#17
SJMPNEXT
MU_3:MOVR1,#15
SJMPNEXT
MU_4:MOVR1,#14
SJMPNEXT
MU_5:MOVR1,#13
SJMPNEXT
MU_6:MOVR1,#11
SJMPNEXT
MU_7:MOVR1,#10
SJMPNEXT
NEXT:MOVA,R1
MOVR0,A
SETBTR0;啟動(dòng)定時(shí)器0
NEXT_1:MOVA,P2;沒鍵按下繼續(xù)執(zhí)行,有鍵按下,返回讀引腳
CJNEA,#0FFH,NEXT_1
ACALLDELAY
MOVA,P2;真的沒鍵按下?
CJNEA,#0FFH,NEXT_1
CLRTR0;不響
AJMPSCAN;掃描鍵盤去
INT_0:;中斷程序
DJNZR0,RE;R0不等于0時(shí),返回
CPLP1.0
MOVA,R1
MOVR0,A
RE:RETI
DELAY:MOVR7,#100;延長時(shí)間等待,鍵盤消抖<
上一篇:聲反饋及消除方法
熱門點(diǎn)擊
- 惠威分頻器和喇叭單元搭配推薦一覽表
- 十二套歐美著名品牌家庭影院音箱綜合測評(píng)(2)
- 從音響搭配實(shí)例看投資比例
- 解決中低頻駐波的方法
- 集成音頻功放IC應(yīng)用于BTL方法探討與實(shí)驗(yàn)
- 話劇現(xiàn)場調(diào)音&擴(kuò)聲知識(shí):走臺(tái)時(shí)的試音
- 怎樣取舍書架音箱和落地音箱及音色特點(diǎn)
- 立體拾音技術(shù):前言及有效拾音角
- 駐極體話筒極性的判別
- 文藝演出中強(qiáng)大的聲壓級(jí)會(huì)對(duì)人體造成嚴(yán)重的傷害
推薦技術(shù)資料
- 基準(zhǔn)電壓的提供
- 開始的時(shí)候,想使用LM385作為基準(zhǔn),HIN202EC... [詳細(xì)]
- CV/CC InnoSwitch3-AQ 開
- URF1DxxM-60WR3系
- 1-6W URA24xxN-x
- 閉環(huán)磁通門信號(hào)調(diào)節(jié)芯片NSDRV401
- SK-RiSC-SOM-H27X-V1.1應(yīng)
- RISC技術(shù)8位微控制器參數(shù)設(shè)
- 多媒體協(xié)處理器SM501在嵌入式系統(tǒng)中的應(yīng)用
- 基于IEEE802.11b的EPA溫度變送器
- QUICCEngine新引擎推動(dòng)IP網(wǎng)絡(luò)革新
- SoC面世八年后的產(chǎn)業(yè)機(jī)遇
- MPC8xx系列處理器的嵌入式系統(tǒng)電源設(shè)計(jì)
- dsPIC及其在交流變頻調(diào)速中的應(yīng)用研究