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

正文內容

基于c53單片機的音樂播放器的設計(編輯修改稿)

2025-07-21 18:51 本頁面
 

【文章內容簡介】 單。其中,DS1302與單片機只需要連接三根線就能實現(xiàn)兩者間的通信。DS18B20與單片機的連線更簡單,只需要連接一根線就足以實現(xiàn)兩者間數(shù)據(jù)與指令的傳遞。圖4為DS1302和DS18B20與單片機的硬件連接電路圖。圖4 DS1302和DS18B20與單片機的硬件連接電路圖。 放音模塊設計利用單片機設計的音樂播放器,外圍電路只需要配合簡單的蜂鳴器就可以實現(xiàn)對音樂的播放。圖5為放音模塊硬件電路圖。圖5 放音模塊硬件電路圖 系統(tǒng)整體硬件電路設計各模塊設計完成后,組合在一起即為系統(tǒng)的整體硬件電路。如圖6所示。圖6 系統(tǒng)整體硬件電路圖4 系統(tǒng)軟件原理及設計本設計為多功能音樂播放器,主要分為按鍵控制模塊、液晶顯示模塊、放音模塊三部分,可以實現(xiàn)播放音樂功能、顯示實時時鐘信息功能、顯示溫度值功能、瀏覽電子書功能。液晶顯示模塊主要用來顯示實時時鐘信息、顯示溫度值、顯示電子書內容及當前所播放曲目的名稱。液晶顯示器采用LCD1602。按鍵控制模塊控制曲目的選擇及電子書的翻頁。放音模塊用來播放已經存儲好的音樂。在軟件設計過程中,采用分模塊進行設計的方法,逐步實現(xiàn)播放器的各功能。 放音模塊設計樂曲中不同的音符,實質就是不同頻率的聲音。通過單片機產生不同的頻率的脈沖信號,由蜂鳴器放出,就產生了美妙和諧的樂曲。一般來說單片機不像其他專業(yè)樂器那樣能奏出多種音色的聲音,即不包含相應幅度的諧波頻率,單片機演奏的音樂基本都是單音頻率。要想使用單片機演奏音樂,就需要弄清楚音調和節(jié)拍兩個概念。音調表示一個音符唱多高的頻率。節(jié)拍表示一個音符唱多長的時間。 音調的形成所謂音調是音樂學中的名詞,與平時所說的音高十分類似。在音樂中常把中音C上方的A音定為標準音高,其頻率f=440Hz,其余音均與其進行比較。f1和f2為兩個音符,如果這兩個音符的頻率相差一倍時,也即f2=2*f1時,則稱f2比f1高一個倍頻程。在音樂中音符1(do)與音符,音符2(來)與音符等等之間正好相差一個倍頻程,在音樂學中稱它相差一個八度音。在一個八度音內,有12個伴音。以1——八音區(qū)為例,12個伴音是:1——1——2——2——3——4——4——5——5——6——6——7——。由于人耳聽覺的效果,這12個音階的分度基本上是以對數(shù)關系來劃分的。只要知道了這12個音符的音高,也就是其基本音調的頻率,就可根據(jù)音符之間的倍頻程關系得到其他音符基本音調的頻率。知道了一個音符的頻率后,便可以讓單片機發(fā)出相應頻率的振蕩信號,從而產生相應的音符聲音。一般說來,常采用的方法就是通過單片機的定時器進行定時中斷,在中斷服務程序中將單片機上外接揚聲器的I/O口來回置高電平或置低電平,從而讓蜂鳴器發(fā)出聲音。為了讓單片機發(fā)出不同頻率音符的聲音,只需要將定時器預置不同的定時值就可實現(xiàn)。以標準音高A為例,介紹如何確定一個頻率所對應的定時器的定時值。標準音高A的頻率f=440Hz,其對應的周期為:T=1/f=1/440=2272us因此需要在單片機I/O端口輸出周期為T=2272us的方波脈沖。單片機輸出高電平和低電平信號均為t=T/2=2272/2=1136us也就是說,單片機上定時器的中斷觸發(fā)時間為1136us。如果單片機采用定時器為工作方式1,它以振蕩器的十二分頻信號為計數(shù)脈沖。設外接晶振的振蕩器頻率為f,則定時器的預置初值由下式來確定: t=12*(countTHL)/f式中,count=65536,THL為定時器待確定的計數(shù)初值。因此定時器的高低計數(shù)器的初值為 TH=THL/256=(countt*f/12)/256 TL=THL%256=(countt*f/12)%256 如果單片機外接12MHz的晶振,則f=12MHz。將t=1136us和f=12MHz代入上面兩式,即可求出標準音高A在單片機定時器工作方式1下的定時器高低計數(shù)器的初值為 TH0=(655361136*12/12)/256=FBH TL0=(655361136*12/12)%256=90H根據(jù)上面的求解方法,我們就可以求出其他音調相應的計數(shù)器的預置初值。 節(jié)拍的產生在一張完整樂譜的開頭,都有如1= C 4/1=G 3/4等等的標識。這里1=C,1=G表示樂譜的曲調,簡單地說就是跟音調有關系;這里4/3/4用來表示節(jié)拍。對于音符的節(jié)拍,這里以3/4為例加以說明。它表示樂譜中以四分音符為節(jié)拍,每一小節(jié)有三拍。對于一拍的發(fā)音時間,如果樂曲沒有特殊說明,一般說來,一拍的時長大約為400~450ms。如果這里規(guī)定一拍的時長為400ms,那么以四分音符為節(jié)拍時,四分音符的時長為400ms,八分音符的時長為200ms,十六分音符的時長為100ms。從而,在單片機上可以采用循環(huán)延時的方法來實現(xiàn)控制一個音符唱多長的時間。首先,需要編寫一個精確的基本時長的延時程序,比如說以十六分音符的時長為基本的延時時間,那么,對于一個音符,如果它為十六分音符,則只需要用一次延時程序,如果它為四分音符,則只需要調用四次延時程序,如果它為二分音符,則只需要調用八次延時程序,依次類推。 單片機演奏音樂的方法前面介紹了基本音符的音調和節(jié)拍,并詳細講解了如何在單片機系統(tǒng)中來實現(xiàn)一個基本的音符。在單片機上實現(xiàn)音樂播放,一般只需要逐個播放音符即可。用單片機播放音樂的方法如下:(1)初始化單片機定時器;(2)將樂譜中的每個音符的音調及節(jié)拍變換成相應的音調參數(shù)和節(jié)拍參數(shù);(3)將樂譜中音符的參數(shù)做成數(shù)據(jù)表格,存放在存儲器中;(4)通過程序取出一個音符的相關參數(shù),驅動蜂鳴器播放該音符;(5)該音符唱完后,接著取出下一個音符的相關參數(shù),如此直到播放完畢最好一個音符,根據(jù)需要也可循環(huán)不停地播放整個樂曲。需要注意的是,對于一個樂曲中的休止符,一般將其音調參數(shù)設為FFH,而其節(jié)拍參數(shù)為00H來表示即可。 液晶顯示模塊設計 在本設計中,液晶顯示器采用LCD1602。它是字符型液晶顯示模塊。通過微處理器對液晶顯示器寫入相應的命令,就可以實現(xiàn)液晶屏顯示數(shù)字和字符。本設計采用液晶顯示器顯示曲目名稱及電子書內容和實時時鐘信息與溫度值。下圖為液晶顯示器通用的操作流程圖:設置模式清屏寫入命令設置顯示位置寫數(shù)據(jù)初始化檢測忙信號圖7液晶顯示器操作流程圖在液晶顯示字符之前,需要先將要顯示的內容存入數(shù)據(jù)存儲器,當液晶顯示器接受到相應的指令時,自動從數(shù)據(jù)存儲器中讀取已存在的內容送往液晶顯示器顯示。下面的程序是液晶顯示模塊的軟件設計:includeinclude/************定義液晶顯示器與單片機的引腳連接**********/sbit rs=P2^0。sbit rw=P2^1。sbit e=P2^2。/***********將需要顯示的內容寫入程序存儲器*************/unsigned char code dis1[]={ZuiLangManDeShi}。 unsigned char code dis2[]={Ye Qu}。/**********************延時1ms************************/void dely(unsigned char ms){unsigned char i。while(ms){for(i=0。i100。i++){_nop_()。_nop_()。_nop_()。_nop_()。}}}/****************檢測液晶顯示器忙信號*****************/bit lcd_bz(){bit result。rs=0。rw=1。e=1。_nop_()。_nop_()。_nop_()。_nop_()。 result=(bit)(P0amp。0x80)。e=0。return result。}/************************寫命令******************************/ void lcd_wcmd(unsigned char cmd){ while(lcd_bz())。rs=0。rw=0。e=0。_nop_()。_nop_()。P0=cmd。_nop_()。_nop_()。_nop_()。_nop_()。e=1。_nop_()。_nop_()。_nop_()。_nop_()。e=0。} /*********************設置顯示位置*********************/ void lcd_pos(unsigned char pos){ lcd_wcmd(pos|0x80)。} /***********************寫數(shù)據(jù)*************************/void lcd_wdat(unsigned char dat){while(lcd_bz())。rs=1。rw=0。e=0。P0=dat。_nop_()。_nop_()。_nop_()。_nop_()。e=1。_nop_()。_nop_()。_nop_()。_nop_()。e=0。}/**********************初始化**************************/void lcd_init(){lcd_wcmd(0x38)。dely(1)。lcd_wcmd(0x0c)。dely(1)。lcd_wcmd(0x80)。dely(1)。lcd_wcmd(0x06)。dely(1)。lcd_wcmd(0x01)。dely(1)。}/***********************液晶顯示主函數(shù)******************/void main(void){unsigned char i。lcd_init()。// 初始化LCDdelay(10)。lcd_pos(0x01)。//設置顯示位置i = 0。while(dis1[i] != 39。\039。){lcd_wdat(dis1[i])。//顯示字符i++。}lcd_pos(0x42)。// 設置顯示位置i = 0。while(dis2[i] != 39。\039。){lcd_wdat(dis2[i])。// 顯示字符i++。}while(1)。}將以上程序燒錄到主芯片后,就可以通過單片機控制液晶顯示器顯示字符及數(shù)字。 實時時鐘信息采集模塊此款音樂播放器不僅能夠播放音樂,還能顯示實時時鐘信息。本設計采用DS1302實時時鐘芯片采集時鐘信息。DS
點擊復制文檔內容
規(guī)章制度相關推薦
文庫吧 www.dybbs8.com
備案圖片鄂ICP備17016276號-1