版權(quán)說(shuō)明:本文檔由用戶(hù)提供并上傳,收益歸屬內(nèi)容提供方,若內(nèi)容存在侵權(quán),請(qǐng)進(jìn)行舉報(bào)或認(rèn)領(lǐng)
文檔簡(jiǎn)介
1、單片機(jī)課程設(shè)計(jì)項(xiàng)目名稱(chēng) 紅外遙控音樂(lè)播放器設(shè)計(jì) 專(zhuān)業(yè)班級(jí) 通信091班 學(xué)生姓名 指導(dǎo)教師 2012年 12 月 21 日摘 要隨著計(jì)算機(jī)技術(shù)的發(fā)展, 單片機(jī)的應(yīng)用范圍也不斷擴(kuò)大,目前單片機(jī)滲透到工作和生活的各個(gè)領(lǐng)域。在以單片機(jī)為核心的控制系統(tǒng)中,紅外遙控成為目前使用比較廣泛的一種無(wú)線(xiàn)通信和遙控手段。本課程設(shè)計(jì)提出一種基于單片機(jī)的紅外遙控音樂(lè)播放器的設(shè)計(jì)方法。主要采用單片機(jī)為控制核心,以紅外信號(hào)為通信手段,通信蜂鳴器發(fā)聲,來(lái)完成音樂(lè)播放器的功能。本設(shè)計(jì)具有無(wú)線(xiàn)、非接觸控制,抗干擾能力強(qiáng),信息傳輸可靠,功耗低,成本低,易實(shí)現(xiàn)等顯著優(yōu)點(diǎn)及特色。通過(guò)本設(shè)計(jì)可以完成簡(jiǎn)單的音樂(lè)播放器的功能,包括播放及更
2、換歌曲等內(nèi)容。通過(guò)本次課程設(shè)計(jì),我對(duì)單片機(jī)中斷系統(tǒng)等知識(shí)有了進(jìn)一步的了解,對(duì)單片機(jī)的相關(guān)知識(shí)做到理論聯(lián)系實(shí)際。關(guān)鍵詞:?jiǎn)纹瑱C(jī);紅外遙控;中斷系統(tǒng); 該單片機(jī)程序設(shè)計(jì)基于HOT-51型單片機(jī)開(kāi)發(fā)板電路編寫(xiě),故可在其開(kāi)發(fā)板上使用。本設(shè)計(jì)中未使用HOT-51單片機(jī)開(kāi)發(fā)板配套紅外遙控器,使用的紅外遙控器的按鍵對(duì)應(yīng)碼值已在表4-1中寫(xiě)出,根據(jù)自已紅外遙控器的按鍵對(duì)應(yīng)碼值修改代碼中按鍵碼值部分即可使用。AbstractWith the development of computer technology, the application range of the microcontroller expan
3、ding microcontroller penetrated into various fields of work and life. Microcontroller as the core of the control system, infrared remote control to use a wireless communication and remote control means. This course is designed infrared remote control music player based microcontroller design method.
4、 Mainly using SCM as the control center, the infrared signal as a means of communication, communication buzzer sound to complete the functionality of the music player. The design of wireless, non-contact control, anti-interference ability, reliable transmission of information, low power consumption,
5、 low cost, easy to realize significant advantages and characteristics. Through this design can be completed simple music player functions, including play and change songs. Design through the course, I interrupt timer, external knowledge have a better understanding, to do the theory with actual knowl
6、edge of the microcontroller.Keywords: Microcontroller Unit;Infrared Remote Control;Interrupt System; 目 錄摘 要IAbstractII第1章 緒論11.1 概述11.2 主要功能1第2章 電路設(shè)計(jì)22.1 整體電路設(shè)計(jì)22.2 電路模塊設(shè)計(jì)3單片機(jī)最小系統(tǒng)電路3紅外解碼電路4顯示及播放電路5第3章 程序設(shè)計(jì)83.1 紅外解碼程序83.2 播放及顯示程序12第4章 硬件調(diào)試17結(jié)論19參考文獻(xiàn)20附錄1 整體電路圖及實(shí)物圖21附錄2 電路元件22附錄3 程序源碼23致謝32第1章 緒論1.1 概
7、述利用單片機(jī)演奏音樂(lè)是單片機(jī)愛(ài)好者的興趣之一,應(yīng)用的范圍也比較廣泛。所謂音樂(lè)播放器,由單片機(jī)進(jìn)行信息處理,再經(jīng)過(guò)信號(hào)放大,由蜂鳴器發(fā)出樂(lè)曲聲。我們知道,振動(dòng)產(chǎn)生聲音,振動(dòng)頻率不同所發(fā)出的聲音也就不同。有規(guī)律的振動(dòng)發(fā)出的聲音叫“樂(lè)音”。音樂(lè)由音頻和節(jié)拍構(gòu)成,音頻即發(fā)聲的頻率;節(jié)拍即延時(shí)的長(zhǎng)短。因此利用單片機(jī)的定時(shí)器,產(chǎn)生一定頻率的方波,即可以產(chǎn)生一定頻率的聲音。再利用單片機(jī)軟件延時(shí)的方法來(lái)產(chǎn)生不同的節(jié)拍。把音頻和節(jié)拍結(jié)合起來(lái),進(jìn)行合理的排列,即可播放出比較悅耳的音樂(lè)。本文比較詳細(xì)地介紹了音樂(lè)播放器的工作原理、設(shè)計(jì)思路、硬件的選擇及相關(guān)作用、軟件的實(shí)現(xiàn)方法以及詳細(xì)的程序清單??刂茊纹瑱C(jī)播放音樂(lè)的方
8、式有很多,多數(shù)使用者利用單片機(jī)存儲(chǔ)音樂(lè)與控制播放。本設(shè)計(jì)利用AT89S52單片機(jī)及少數(shù)外圍電路控制音樂(lè)播放,產(chǎn)生兩首不同的歌曲。 對(duì)于單片機(jī)產(chǎn)生音樂(lè),關(guān)鍵是控制頻率的輸出。本設(shè)計(jì)采用了定時(shí)器T0中斷的方法產(chǎn)生不同頻率的脈沖,從而產(chǎn)生不同頻率的聲音。此外,使用紅外一體化頭SM0038接收紅外信號(hào),通過(guò)外部中斷INT1來(lái)進(jìn)行對(duì)紅外信號(hào)的解碼,由單片機(jī)內(nèi)部程序?qū)Σ煌逆I值完成不同的操作。并且使用常用的無(wú)源蜂鳴器進(jìn)行發(fā)聲,實(shí)現(xiàn)了一個(gè)簡(jiǎn)單的遙控音樂(lè)播放器的功能。1.2 主要功能本設(shè)計(jì)以單片機(jī)為核心實(shí)現(xiàn)紅外遙控音樂(lè)播放器功能,主要完成功能為兩首歌曲的選擇播放、暫停、暫停后斷點(diǎn)播放、結(jié)束播放歌曲,播放下一曲
9、,播放上一曲等功能。同時(shí),使用數(shù)碼管顯示紅外信號(hào)解碼后的鍵值。其中為了方便,將32位的二進(jìn)制紅外信號(hào)編碼解碼為8位16進(jìn)制編碼。其中,本設(shè)計(jì)只顯示紅外信號(hào)解碼后8位16進(jìn)制編碼中的兩位數(shù)據(jù)碼,其它的用戶(hù)編碼與數(shù)據(jù)碼的反碼共6位不予顯示。本設(shè)計(jì)中使用常見(jiàn)的家用紅外遙控器進(jìn)行控制,使用其中的1、2兩個(gè)數(shù)字鍵(對(duì)應(yīng)功能選擇1、2兩首歌曲),音量加、減兩個(gè)按鍵(對(duì)應(yīng)功能上一曲、下一曲),頻道加、減兩個(gè)按鍵(對(duì)應(yīng)功能暫停、結(jié)束播放),以及確定鍵(對(duì)應(yīng)功能播放歌曲)。第2章 電路設(shè)計(jì)2.1 整體電路設(shè)計(jì)根據(jù)設(shè)計(jì)要求,紅外遙控音樂(lè)播放器可以分為三個(gè)模塊進(jìn)行設(shè)計(jì):1.單片機(jī)最小系統(tǒng)電路:?jiǎn)纹瑱C(jī)最小系統(tǒng),或者稱(chēng)
10、為最小應(yīng)用系統(tǒng),是指用最少的元件組成的單片機(jī)可以工作的最小的系統(tǒng)單元。對(duì)51系列單片機(jī)來(lái)說(shuō),最小系統(tǒng)一般應(yīng)該包括:?jiǎn)纹瑱C(jī)、時(shí)鐘電路、復(fù)位電路。本設(shè)計(jì)中使用的單片機(jī)為AT89S52,晶振電路使用12MHZ的晶振。復(fù)位電路:由電容串聯(lián)電阻構(gòu)成,當(dāng)系統(tǒng)一上電,RST腳將會(huì)出現(xiàn)高電平,當(dāng)RST腳的高電平持續(xù)兩個(gè)機(jī)器周期以上就將復(fù)位。2.紅外解碼電路:本電路主要用于對(duì)紅外遙控器發(fā)出的紅外信號(hào)進(jìn)行解碼,然后程序根據(jù)解碼后的不同鍵值相應(yīng)完成不同的功能。3.顯示及播放電路:本部分電路用于顯示紅外遙控器不同按鍵所對(duì)應(yīng)的不同按鍵值,實(shí)物中用兩位16進(jìn)制數(shù)在數(shù)碼管上進(jìn)行顯示。播放電路主要用蜂鳴器來(lái)播放不同的音樂(lè)曲目
11、。分析各模塊電路的功能,畫(huà)出原理框圖如圖2-1所示:AT89S52單片機(jī)復(fù)位電路單片機(jī)時(shí)鐘電路紅外解碼 電路紅外解碼顯示電路音樂(lè)播放電路圖2-1 紅外遙控音樂(lè)播放器原理框圖2.2 電路模塊設(shè)計(jì)2.2.1 單片機(jī)最小系統(tǒng)電路單片機(jī)最小系統(tǒng)電路如圖2-2所示:圖2-2 單片機(jī)最小系統(tǒng)電路圖由圖2-2可以知道,單片機(jī)最小系統(tǒng)主要由復(fù)位電路、時(shí)鐘電路等組成。1.復(fù)位電路:由電容串聯(lián)電阻構(gòu)成,并結(jié)合"電容電壓不能突變"的性質(zhì),可以知道,當(dāng)系統(tǒng)一上電,RST腳將會(huì)出現(xiàn)高電平,并且,這個(gè)高電平持續(xù)的時(shí)間由電路的RC值來(lái)決定。典型的51單片機(jī)當(dāng)RST腳的高電平持續(xù)兩個(gè)機(jī)器周期以上就將復(fù)位,
12、所以,適當(dāng)組合RC的取值就可以保證可靠的復(fù)位。一般教科書(shū)推薦C 取10uF,R取8.2K左右。當(dāng)然也有其他取法的,原則就是要讓RC組合可以在RST腳上產(chǎn)生不少于2個(gè)機(jī)周期的高電平。單片機(jī)復(fù)位電路就好比電腦的重啟部分,當(dāng)電腦在使用中出現(xiàn)死機(jī),按下重啟按鈕電腦內(nèi)部的程序從頭開(kāi)始執(zhí)行。單片機(jī)也一樣,當(dāng)單片機(jī)系統(tǒng)在運(yùn)行中,受到環(huán)境干擾出現(xiàn)程序跑飛的時(shí)候,按下復(fù)位按鈕內(nèi)部的程序自動(dòng)從頭開(kāi)始執(zhí)行。2.時(shí)鐘電路:?jiǎn)纹瑱C(jī)內(nèi)部有一個(gè)高增益反相放大器,引腳XTAL1 和XTAL2 分別是該放大器的輸入端和輸出端,如果引腳XTAL1 和XTAL2 兩端跨接上晶體振蕩器(晶振)或陶瓷振蕩器就構(gòu)成了穩(wěn)定的自激振蕩電路,
13、該振蕩電路的輸出可直接送入內(nèi)部時(shí)序電路。單片機(jī)的時(shí)鐘可由兩種方式產(chǎn)生,即內(nèi)部時(shí)鐘方式和外部時(shí)鐘方式。(1)內(nèi)部時(shí)鐘方式。內(nèi)部時(shí)鐘方式即是由單片機(jī)內(nèi)部的高增益反相放大器和外部跨接的晶振、微調(diào)電容構(gòu)成時(shí)鐘電路產(chǎn)生時(shí)鐘的方法。外接晶振(陶瓷振蕩器)時(shí),C1、C2 的值通常選擇為30Pf左右;C1、C2 對(duì)頻率有微調(diào)作用,晶振或陶瓷諧振器的頻率范圍可在1.2MHz 12MHz之間選擇。為了減小寄生電容,更好地保證振蕩器穩(wěn)定、可靠地工作,振蕩器和電容應(yīng)盡可能安裝得與單片機(jī)引腳XTALl 和XTAL2 靠近。由于內(nèi)部時(shí)鐘方式外部電路接線(xiàn)簡(jiǎn)單,單片機(jī)應(yīng)用系統(tǒng)中大多采用這種方式。內(nèi)部時(shí)鐘方式產(chǎn)生的時(shí)鐘信號(hào)的頻
14、率就是晶振的固有頻率,常用fsoc 來(lái)表示。(2)外部時(shí)鐘方式。外部時(shí)鐘方式即完全用單片機(jī)外部電路產(chǎn)生時(shí)鐘的方法,外部電路產(chǎn)生的時(shí)鐘信號(hào)被直接接到單片機(jī)的XTAL1引入,此時(shí)XTAL2 開(kāi)路。3.內(nèi)外程序存儲(chǔ)器選擇控制端EA/Vpp,決定了單片機(jī)訪(fǎng)問(wèn)內(nèi)部或外部的程序存儲(chǔ)器。EA高電平時(shí),訪(fǎng)問(wèn)內(nèi)部程序存儲(chǔ)器,但當(dāng)程序計(jì)數(shù)器(PC)值超過(guò)0FFFFH時(shí),單片機(jī)自動(dòng)轉(zhuǎn)向外部程序存儲(chǔ)器。當(dāng)EA低電平時(shí),不管單片機(jī)有無(wú)內(nèi)部存儲(chǔ)器,只訪(fǎng)問(wèn)外部存儲(chǔ)器1。紅外解碼電路如圖2-3所示:圖2-3 紅外解碼電路圖由圖2-3知道,紅外解碼電路中主要元件為紅外一體化接收頭SM0038。一體化紅外接收頭SM0038是集信
15、號(hào)放大、濾波、檢波、整形于一體的紅外接收器,電路內(nèi)置PIN二極管和前置放大器,采用可以紅外濾波的環(huán)氧樹(shù)脂材料封裝,可靠性高,不易受環(huán)境影響并可以防止非控制信號(hào)的輸出脈沖出現(xiàn)。內(nèi)部結(jié)構(gòu)如圖2-4所示:圖2-4 SM0038內(nèi)部結(jié)構(gòu)圖SM0038內(nèi)置帶通濾波器、積分器、和自動(dòng)增益控制電路以抑制各種干擾和噪音。數(shù)據(jù)信號(hào)和干擾信號(hào)的主要區(qū)別在于載波頻率、脈沖波長(zhǎng)和工作周期上。所以數(shù)據(jù)信號(hào)應(yīng)該滿(mǎn)足載波信號(hào)的頻率盡量接近帶通濾波器的中心頻率(38KHZ);脈沖長(zhǎng)度在300us以上;數(shù)據(jù)的編碼類(lèi)型相兼容。而本系統(tǒng)選用的SM0038在這三方面和NEC編碼格式是相配的顯示及播放電路如圖2-5所示:圖2-5 顯示
16、及播放電路圖1.74HC573:八進(jìn)制3態(tài)非反轉(zhuǎn)透明鎖存器。其真值表如表2-1所示:表2-1 74HC573真值表輸入輸出LEDQLHLLLHHHLLXQ0HXXZ由真值表可知:當(dāng)0、LE1時(shí),輸出端數(shù)據(jù)等于輸入端數(shù)據(jù);當(dāng)0、LE0時(shí),輸出端保持不變;當(dāng)1時(shí),無(wú)論LE、D為何,輸出端為高阻態(tài)。74HC573與74HC138在電路中主要用于由數(shù)碼管組成的顯示電路。在數(shù)碼管顯示時(shí),如果要維持一個(gè)數(shù)據(jù)的顯示,往往要持續(xù)的快速的刷新。尤其是在四段八位數(shù)碼管等這些要選通的顯示設(shè)備上。在人類(lèi)能夠接受的刷新頻率之內(nèi),大概每三十毫秒就要刷新一次。這就大大占用了處理器的處理時(shí)間,消耗了處理器的處理能力,還浪費(fèi)了
17、處理器的功耗。鎖存器的使用可以大大的緩解處理器在這方面的壓力。當(dāng)處理器把數(shù)據(jù)傳輸?shù)芥i存器并將其鎖存后,鎖存器的輸出引腳便會(huì)一直保持?jǐn)?shù)據(jù)狀態(tài)直到下一次鎖存新的數(shù)據(jù)為止。這樣在數(shù)碼管的顯示內(nèi)容不變之前,處理器的處理時(shí)間和I/O引腳便可以釋放??梢钥闯觯幚砥魈幚淼臅r(shí)間僅限于顯示內(nèi)容發(fā)生變化的時(shí)候,這在整個(gè)顯示時(shí)間上只是非常少的一個(gè)部分。而處理器在處理完后可以有更多的時(shí)間來(lái)執(zhí)行其他的任務(wù)。這就是鎖存器數(shù)碼管顯示方面的作用:節(jié)省了寶貴的MCU時(shí)間。鎖存器就是把當(dāng)前的狀態(tài)鎖存起來(lái),使CPU送出的數(shù)據(jù)在接口電路的輸出端保持一段時(shí)間鎖存后狀態(tài)不再發(fā)生變化,直到解除鎖定。還有一些芯片具有鎖存器,比如芯片74L
18、S244 (3態(tài)8位緩沖器)就具有鎖存器的功能,它可以通過(guò)把一個(gè)引腳置高電平后,輸出就會(huì)保持現(xiàn)有的狀態(tài),直到把該引腳清0后才能繼續(xù)變化。 緩沖寄存器又稱(chēng)緩沖器,它分輸入緩沖器和輸出緩沖器兩種。前者的作用是將外設(shè)送來(lái)的數(shù)據(jù)暫時(shí)存放,以便處理器將它取走;后者的作用是用來(lái)暫時(shí)存放處理器送往外設(shè)的數(shù)據(jù)。有了數(shù)控緩沖器,就可以使高速工作的CPU與慢速工作的外設(shè)起協(xié)調(diào)和緩沖作用,實(shí)現(xiàn)數(shù)據(jù)傳送的同步。由于緩沖器接在數(shù)據(jù)總線(xiàn)上,故必須具有三態(tài)輸出功能。2.74HC138:三通道輸入、八通道輸出譯碼器。其真值表如表2-2所示:表2-2 74HC138真值表EnableAddressOutputE3E2E1A2A
19、1A0Y0Y1Y2Y3Y4Y5Y6Y7XXHXXXHHHHHHHHLXXXXXHHHHHHHHXHXXXXHHHHHHHHHLLLLLLHHHHHHHHLLLLHHLHHHHHHHLLLHLHHLHHHHHHLLLHHHHHLHHHHHLLHLLHHHHLHHHHLLHLHHHHHHLHHHLLHHLHHHHHHLHHLLHHHHHHHHHHL74HC138譯碼器可接受3位二進(jìn)制加權(quán)地址輸入(A0, A1和A2),并當(dāng)使能時(shí),提供8個(gè)互斥的低有效輸出(Y0至Y7)。74HC138特有3個(gè)使能輸入端:兩個(gè)低電平有效(E1和E2)和一個(gè)高電平有效(E3)。除非E1和E2置低且E3置高,否則74HC
20、138將保持所有輸出為高。利用這種復(fù)合使能特性,74HC138充當(dāng)一個(gè)8輸出多路分配器,本設(shè)計(jì)中用于進(jìn)行數(shù)碼管的位選。3.ULN2003:高壓大電流達(dá)林頓晶體管陣列,由七個(gè)硅NPN復(fù)合晶體管組成。電路特點(diǎn): ULN2003的每一對(duì)達(dá)林頓都串聯(lián)一個(gè)2.7K的基極電阻,在5V的工作電壓下它能與TTL和CMOS電路 直接相連,可以直接處理原先需要標(biāo)準(zhǔn)邏輯緩沖器來(lái)處理的數(shù)據(jù)。具有電流增益高、工作電壓高、溫度范圍寬、帶負(fù)載能力強(qiáng)等特點(diǎn),適應(yīng)于各類(lèi)要求高速大功率驅(qū)動(dòng)的系統(tǒng)。本設(shè)計(jì)中用于無(wú)源蜂鳴器的驅(qū)動(dòng),同時(shí)可以為再次擴(kuò)展時(shí)提供驅(qū)動(dòng)電路。第3章 程序設(shè)計(jì)分析紅外遙控音樂(lè)播放的功能,包括選擇播放兩首歌曲、暫停
21、、暫停后斷點(diǎn)播放、結(jié)束播放歌曲,播放下一曲,播放上一曲,并且使用數(shù)碼管顯示紅外信號(hào)解碼后的兩位16進(jìn)制的數(shù)據(jù)碼。根據(jù)以上功能,可心得出結(jié)論:該程序設(shè)計(jì)的主要工作,即核心問(wèn)題是紅外信號(hào)的解碼。因?yàn)?,無(wú)論是播放音樂(lè)的哪一個(gè)操作,還是顯示紅外信號(hào)的數(shù)據(jù)碼,都是建立在對(duì)紅外信號(hào)的正確解碼下的。首先進(jìn)行正確的紅外解碼,然后根據(jù)解碼后的鍵值進(jìn)行播放歌曲與顯示按鍵值。按照以上得出的結(jié)論,畫(huà)出程序流程圖如圖3-1所示:開(kāi)始主函數(shù)判斷有無(wú)紅外信號(hào)收到紅外信號(hào)未收到紅外信號(hào)處理紅外信號(hào)顯示解碼鍵值播放選擇歌曲暫停與結(jié)束曲播放上一曲播放下一曲圖3-1 程序流程圖結(jié)合程序流程圖,可以知道:將整個(gè)程序的設(shè)計(jì)分為兩個(gè)模塊
22、,即:紅外解碼、播放及顯示。3.1 紅外解碼程序在進(jìn)行程序設(shè)計(jì)之前,先分析一下紅外信號(hào)的波形。每當(dāng)次按鍵按下,紅外發(fā)射器會(huì)發(fā)出一串脈沖,紅外接收器會(huì)收到這一串脈沖寬度不等的脈沖波形流,其脈沖流包括:(1)前導(dǎo)碼:第1個(gè)脈沖波形;(2)用戶(hù)碼1:第2到第9個(gè)脈沖波形;(3)用戶(hù)碼2:第10到第17個(gè)脈沖波形;(4)數(shù)據(jù)碼:第18到第25個(gè)脈沖波形;(5)數(shù)據(jù)反碼:第26到第33個(gè)脈沖波形;(6) 連續(xù)按鍵脈沖:第34和第35個(gè)脈沖為結(jié)束脈沖,在每次按鍵結(jié)束后會(huì)有兩個(gè)結(jié)束脈沖,如果一直按鍵不放的話(huà),會(huì)一直發(fā)送連續(xù)按鍵脈沖,并可以認(rèn)為在收到10個(gè)連續(xù)按鍵脈沖后是下一個(gè)按鍵(本次設(shè)計(jì)中不考慮連續(xù)按鍵脈
23、沖)。其碼型結(jié)構(gòu)如圖3-2所示:圖3-2 紅外信號(hào)碼型圖由圖3-2可知:紅外信號(hào)碼型中本次設(shè)計(jì)中要使用的部分,即是圖3-2中的8位鍵數(shù)據(jù)碼。下面分析具體的怎樣進(jìn)行紅外信號(hào)的解碼。紅外信號(hào)為采用脈寬調(diào)制的串行碼,以脈寬為0.565ms、間隔0.56ms、周期為1.125ms的組合表示二進(jìn)制的“0”;以脈寬為0.565ms、間隔1.685ms、周期為2.25ms的組合表示二進(jìn)制的“1”,其波形如圖3-3所示。圖3-3 紅外信號(hào)脈沖寬度圖上述“0”和“1”組成的32位二進(jìn)制碼經(jīng)38kHz的載頻進(jìn)行二次調(diào)制以提高發(fā)射效率,達(dá)到降低電源功耗的目的。然后再通過(guò)紅外發(fā)射二極管產(chǎn)生紅外線(xiàn)向空間發(fā)射,即產(chǎn)生了如
24、圖3-2所示的有效碼組序列。在圖3-3中同樣可以看到引導(dǎo)碼脈寬為9ms,間隔4.5ms。在紅外信號(hào)經(jīng)過(guò)解碼電路后,原碼型中的高低電平進(jìn)行反轉(zhuǎn)。在得到的新碼型中,去掉第一個(gè)下降沿(引導(dǎo)碼),第二個(gè)下降沿開(kāi)始即為有效碼序列,應(yīng)該進(jìn)行解碼并記錄。在本設(shè)計(jì)中,將解碼后的信號(hào)引入外部中斷1,由于是下降沿有效,故IT1=12。紅外解碼源碼如下:unsigned char irtime; /脈沖寬度時(shí)間值unsigned char startflag;/接收開(kāi)始標(biāo)志unsigned char bitnum; /碼組位數(shù)unsigned char irreceok; /接收完成標(biāo)志unsigned char
25、irprocok; /解碼完成標(biāo)志unsigned char irdata33;/脈沖寬度數(shù)組unsigned char ircode4; /解碼值數(shù)組void timer0init(void) TMOD=0x02; /定時(shí)器0 定時(shí)方式2 8位自動(dòng)重裝TH0=0x00; /初值為0 實(shí)現(xiàn)定時(shí)256usTL0=0x00;ET0=1; /開(kāi)定時(shí)器0中斷EA=1; /開(kāi)總中斷TR0=1; /啟動(dòng)定時(shí)器0void int1init(void)IT1=1; /外部中斷1負(fù)跳變沿有效EX1=1; /開(kāi)外部中斷1中斷EA=1; /開(kāi)總中斷void irproc(void)/解碼函數(shù) uchar k,val
26、ue,m,j;k=1;for(j=0;j<4;j+)/4組二進(jìn)制碼for(m=0;m<8;m+)/每組8位value=value>>1;/由于低位在前,所以右移到正常順序if(irdatak>6)/irtime大于6*256us 則解碼數(shù)據(jù)為1value=value | 0x80;/解碼數(shù)據(jù)為1 則高位或1 則高位置1k+;/所有二進(jìn)制碼的位ircodej=value;/每組解碼后的值存入ircodeirprocok=1;/解碼完成void main()timer0init();/定時(shí)器初始化int1init();/外部中斷初始化while(1)if(irrece
27、ok) /接收完成 irproc(); /解碼irreceok=0;if(irprocok) /解碼完成irwork(); /把解碼后的數(shù)據(jù)轉(zhuǎn)成16進(jìn)制的兩位數(shù)irprocok=0;void timer0() interrupt 1irtime+;void int1() interrupt 2if(startflag=1)if(irtime>32)/檢測(cè)9ms引導(dǎo)碼bitnum=0;irdatabitnum=irtime;irtime=0;bitnum+;if(bitnum=33)/接收結(jié)束bitnum=0;irreceok=1;/接收完成elsestartflag=1;/接收開(kāi)始標(biāo)志位
28、irtime=0;3.2 播放及顯示程序分析音樂(lè)播放的過(guò)程,其為不同頻率聲音的組合,當(dāng)一組恰當(dāng)頻率聲音組合按照一定的先后順序與節(jié)拍播放時(shí),即可產(chǎn)生音樂(lè)。故要產(chǎn)生音頻信號(hào),只要算出某一音頻的周期,將此周期除以2即為半周期的時(shí)間,利用定時(shí)器計(jì)時(shí)此半周期時(shí)間,計(jì)時(shí)到后取反輸出,重復(fù)此過(guò)程即得到此頻率的聲音信號(hào)。此信號(hào)從P2.3腳輸出,用ULN2003驅(qū)動(dòng)蜂鳴器播放音樂(lè)。其中每個(gè)音符使用兩個(gè)字節(jié)表示:低位字節(jié)(偶地址)代表音級(jí),表示的音級(jí)為c、c、d、d、e、f、a3、a3、b3;高位字節(jié)(奇地址)代表音符的時(shí)值(節(jié)拍),表示拍數(shù)為1/8拍(0.10s)8拍(6.40s)。程序設(shè)計(jì)中用軟件延時(shí)程序來(lái)控
29、制音級(jí), 與紅外解碼共用定時(shí)器0進(jìn)行節(jié)拍的控制,并在播放和暫停播放中隨時(shí)判斷是否有紅外信號(hào)的改變,以便隨時(shí)更換或結(jié)束音樂(lè)。本設(shè)計(jì)中歌曲的音符存在一個(gè)數(shù)組中,以在開(kāi)始位置和在中間位置播放不同的曲目。紅外信號(hào)解碼后,用兩位共陰數(shù)碼管顯示其中的數(shù)據(jù)碼3。顯示電路的74HC573用于數(shù)碼管的驅(qū)動(dòng),74HC138用于數(shù)碼管動(dòng)態(tài)掃描時(shí)的位選,蜂鳴器播放音樂(lè)源碼如下:#define uchar unsigned char#define uint unsigned intsbit FM=P23; /定義蜂鳴器引腳uchar count;unsigned char code song = /祝你平安0x26,0
30、x20,0x20,0x20,0x20,0x20,0x26,0x10,0x20,0x10,0x20,0x80,0x26,0x20,0x30,0x20,0x30,0x20,0x39,0x10,0x30,0x10,0x30,0x80,0x26,0x20,0x20,0x20,0x20,0x20,0x1c,0x20,0x20,0x80,0x2b,0x20,0x26,0x20,0x20,0x20,0x2b,0x10,0x26,0x10,0x2b,0x80,0x26,0x20,0x30,0x20,0x30,0x20,0x39,0x10,0x26,0x10,0x26,0x60,0x40,0x10,0x39,0
31、x10,0x26,0x20,0x30,0x20,0x30,0x20,0x39,0x10,0x26,0x10,0x26,0x80,0x26,0x20,0x2b,0x10,0x2b,0x10,0x2b,0x20,0x30,0x10,0x39,0x10,0x26,0x10,0x2b,0x10,0x2b,0x20,0x2b,0x40,0x40,0x20,0x20,0x10,0x20,0x10,0x2b,0x10,0x26,0x30,0x30,0x80,0x18,0x20,0x18,0x20,0x26,0x20,0x20,0x20,0x20,0x40,0x26,0x20,0x2b,0x20,0x30,0
32、x20,0x30,0x20,0x1c,0x20,0x20,0x20,0x20,0x80,0x1c,0x20,0x1c,0x20,0x1c,0x20,0x30,0x20,0x30,0x60,0x39,0x10,0x30,0x10,0x20,0x20,0x2b,0x10,0x26,0x10,0x2b,0x10,0x26,0x10,0x26,0x10,0x2b,0x10,0x2b,0x80,0x18,0x20,0x18,0x20,0x26,0x20,0x20,0x20,0x20,0x60,0x26,0x10,0x2b,0x20,0x30,0x20,0x30,0x20,0x1c,0x20,0x20,0
33、x20,0x20,0x80,0x26,0x20,0x30,0x10,0x30,0x10,0x30,0x20,0x39,0x20,0x26,0x10,0x2b,0x10,0x2b,0x20,0x2b,0x40,0x40,0x10,0x40,0x10,0x20,0x10,0x20,0x10,0x2b,0x10,0x26,0x30,0x30,0x80,0x00, /八月桂花遍地開(kāi)0x18,0x30,0x1C,0x10,0x20,0x40,0x1C,0x10,0x18,0x10,0x20,0x10,0x1C,0x10,0x18,0x40,0x1C,0x20,0x20,0x20,0x1C,0x20,0x
34、18,0x20,0x20,0x80,0xFF,0x20,0x30,0x1C,0x10,0x18,0x20,0x15,0x20,0x1C,0x20,0x20,0x20,0x26,0x40,0x20,0x20,0x2B,0x20,0x26,0x20,0x20,0x20,0x30,0x80,0xFF,0x20,0x20,0x1C,0x10,0x18,0x10,0x20,0x20,0x26,0x20,0x2B,0x20,0x30,0x20,0x2B,0x40,0x20,0x20,0x1C,0x10,0x18,0x10,0x20,0x20,0x26,0x20,0x2B,0x20,0x30,0x20,0x
35、2B,0x40,0x20,0x30,0x1C,0x10,0x18,0x20,0x15,0x20,0x1C,0x20,0x20,0x20,0x26,0x40,0x20,0x20,0x2B,0x20,0x26,0x20,0x20,0x20,0x30,0x80,0x20,0x30,0x1C,0x10,0x20,0x10,0x1C,0x10,0x20,0x20,0x26,0x20,0x2B,0x20,0x30,0x20,0x2B,0x40,0x20,0x15,0x1F,0x05,0x20,0x10,0x1C,0x10,0x20,0x20,0x26,0x20,0x2B,0x20,0x30,0x20,0x
36、2B,0x40,0x20,0x30,0x1C,0x10,0x18,0x20,0x15,0x20,0x1C,0x20,0x20,0x20,0x26,0x40,0x20,0x20,0x2B,0x20,0x26,0x20,0x20,0x20,0x30,0x30,0x20,0x30,0x1C,0x10,0x18,0x40,0x1C,0x20,0x20,0x20,0x26,0x40,0x13,0x60,0x18,0x20,0x15,0x40,0x13,0x40,0x18,0x80,0x00;void delay_50us(uint t) /延時(shí)50微秒uchar j;for(;t>0;t-)for
37、(j=19;j>0;j-);void timer0init(void) TMOD = 0x01;/定時(shí)器0 定時(shí)方式1IE = 0x82;/開(kāi)定時(shí)器中斷 開(kāi)總中斷TH0 = 0xDC;/定時(shí)10msTL0 = 0x00;/定時(shí)10msvoid play(uchar i)/音樂(lè)播放函數(shù)uchar temp1,temp2;uint addr;/song播放位置count = 0;/中斷計(jì)數(shù)清0addr = i * 217;while(1)temp1 = songaddr+; if (temp1 = 0xFF) /休止符 TR0 = 0;/關(guān)閉定時(shí)器0 delay_50us(100); els
38、e if (temp1 = 0x00)/歌曲結(jié)束符 return; else temp2 = songaddr+; TR0 = 1;/啟動(dòng)定時(shí)器0 while(1) FM = FM; delay_50us(temp1); if(temp2 = count)/節(jié)拍 count = 0; break; void main()timer0init();/定時(shí)器初始化while(1)play(0);/ play(0)為祝你平安 play(1)為八月桂花遍地開(kāi)void timer0() interrupt 1TH0 = 0xDC;TL0 = 0x00;count+;/長(zhǎng)度加1數(shù)碼管顯示紅外解碼值源碼如下
39、:#define uchar unsigned charuchar table16 = 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71;/數(shù)碼管顯示編碼uchar disp2; /送往數(shù)碼管的數(shù)void irwork(void)/把解碼后的數(shù)據(jù)轉(zhuǎn)成16進(jìn)制的兩位數(shù)disp0=ircode2/16;/取出ircode中的兩位“數(shù)據(jù)碼”disp1=ircode2%16;/取出ircode中的兩位“數(shù)據(jù)碼”void display(void)/數(shù)碼管顯示函數(shù)P0=tabledisp0;/P
40、0口送數(shù)據(jù)P2=0x06;/數(shù)據(jù)管位選delay_50us(2);/顯示數(shù)值保持100usP2=0x00;/關(guān)閉位選P0=tabledisp1;/P0口送數(shù)據(jù)P2=0x07;/數(shù)據(jù)管位選delay_50us(2);/顯示數(shù)值保持100usP2=0x00;/關(guān)閉位選void main()while(1)display();第4章 硬件調(diào)試根據(jù)上述設(shè)計(jì)電路畫(huà)出電路原理圖,根據(jù)原理圖焊接電路板,實(shí)物圖如圖4-1所示:圖4-1 實(shí)物圖在本設(shè)計(jì)中使用的紅外遙控器如圖4-2所示,遙控器各按鍵相應(yīng)碼值如圖4-3所示: 1b 1817 16 1514 13 1211 10 0f1a 0e 1900 08020
41、7 06 050a1d 031f 04 0b圖4-2 紅外遙控器 圖4-3 遙控器按鍵碼值 紅外遙控音樂(lè)播放器的設(shè)計(jì)中,對(duì)于紅外遙控器未將全部的按鍵設(shè)計(jì)功能,本設(shè)計(jì)使用按鍵對(duì)應(yīng)碼值及功能如表4-1所示:表4-1 遙控器按鍵、碼值及功能表遙控器按鍵按鍵對(duì)應(yīng)碼值功能數(shù)字鍵117曲目1數(shù)字鍵216曲目2頻道“+”02暫停音量“-” 07上一曲確認(rèn)06確認(rèn)音量“+”05下一曲頻道“-”0a停止根據(jù)設(shè)計(jì)功能進(jìn)行硬件調(diào)試,調(diào)試過(guò)程如下:(1)單片機(jī)上電,此時(shí)無(wú)按鍵按鍵,數(shù)碼管顯示00,蜂鳴器不工作。(2)按下數(shù)字鍵1,對(duì)應(yīng)碼值17,數(shù)碼管顯示17,蜂鳴器工作,實(shí)現(xiàn)播放曲目1:祝你平安。(3) 按下數(shù)字鍵2
42、,對(duì)應(yīng)碼值16,數(shù)碼管顯示16,蜂鳴器工作,實(shí)現(xiàn)播放曲目2:八月桂花遍地開(kāi)。(4) 按下頻道“+”,對(duì)應(yīng)碼值02,數(shù)碼管顯示02,蜂鳴器暫停播放曲目2。按下確認(rèn)鍵,對(duì)應(yīng)碼值06,數(shù)碼管顯示06,蜂鳴器繼續(xù)工作,實(shí)現(xiàn)斷點(diǎn)播放曲目2。(5) 按下頻道“+”,對(duì)應(yīng)碼值02,數(shù)碼管顯示02,蜂鳴器暫停播放曲目2。按下音量“-”,對(duì)應(yīng)碼值07,數(shù)碼管顯示07,蜂鳴器播放曲目1,實(shí)現(xiàn)暫停時(shí)更換曲目。(6) 按下音量“+”,對(duì)應(yīng)碼值05,數(shù)碼管顯示05,蜂鳴器播放曲目2,實(shí)現(xiàn)播放時(shí)更換曲目。(7) 按下頻道“-”,對(duì)應(yīng)碼值0a,數(shù)碼管顯示0a,蜂鳴器停止工作,實(shí)現(xiàn)停止播放功能。結(jié)論通過(guò)此次課程設(shè)計(jì),我對(duì)單片
43、機(jī)的相關(guān)知識(shí)有了進(jìn)一步的了解和認(rèn)識(shí),在單片機(jī)外圍電路的設(shè)計(jì)過(guò)程中也學(xué)到了許多課本上沒(méi)有的知識(shí),并且學(xué)會(huì)了使用Proteus仿真軟件,可以讓我們?cè)谔摂M的環(huán)境中進(jìn)行仿真,可以先通過(guò)它來(lái)檢驗(yàn)電路的正確性和程序的可行性,而不需要真實(shí)電路環(huán)境的介入,不必顧及儀器設(shè)備的短缺與環(huán)境的限制,能夠極大的提高實(shí)驗(yàn)的效率。本次設(shè)計(jì)讓我學(xué)到的知識(shí)有很多,提高了我的邏輯思維能力,使我在邏輯電路的分析與程序的設(shè)計(jì)上有了更大的進(jìn)步。加深了我對(duì)組合邏輯電路、時(shí)序邏輯電路以及單片機(jī)程序設(shè)計(jì)方面的認(rèn)識(shí),也進(jìn)一步增進(jìn)了對(duì)一些常見(jiàn)邏輯器件的了解。另外,我還在焊接單片機(jī)電路的過(guò)程中,學(xué)到了許多焊接方面的知識(shí)與技巧。并且,培養(yǎng)了我查閱參
44、考書(shū)和獨(dú)立思考的能力。這次課程設(shè)計(jì)使我真正懂得了理論與實(shí)際相結(jié)合的重要性。參考文獻(xiàn)1 張毅剛MCS-51單片機(jī)應(yīng)用設(shè)計(jì)哈爾濱:哈爾濱工業(yè)大學(xué)出版社,20032 求是科技8051系列單片機(jī)C程序設(shè)計(jì)完全手冊(cè)北京:人民郵電出版社,20063 李升單片機(jī)原理與接口技術(shù)北京:北京大學(xué)出版社,2011附錄1 整體電路圖及實(shí)物圖附錄2 電路元件1單片機(jī)AT89S521片2鎖存器74HC5731片3三八譯碼器74HC1381片4達(dá)林頓晶體管ULN20031片5紅外一體接收頭SM00381個(gè)6電容30PF2個(gè)7電容1041個(gè)8電解電容10UF2個(gè)9電阻10K1個(gè)10電阻1002個(gè)11排阻10K1個(gè)12晶振12
45、MHz1個(gè)13兩位共陰數(shù)碼管1個(gè)14蜂鳴器1個(gè)15按鍵1個(gè)附錄3 程序源碼#include<reg52.h>#define uchar unsigned char#define uint unsigned intsbit FM=P23; /定義蜂鳴器引腳uchar table16 = 0x3f,0x06,0x5b,0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,0x77,0x7c,0x39,0x5e,0x79,0x71;/數(shù)碼管顯示編碼uchar irtime,startflag,bitnum,irreceok,irprocok,shuaxin,n;uchar
46、 i,count;uchar irdata33;/所有irtimeuchar ircode4; /解碼后數(shù)據(jù)uchar disp2; /送往數(shù)碼管的數(shù)uchar qumu2 =0,1;/曲目數(shù)組unsigned char code song = /祝你平安0x26,0x20,0x20,0x20,0x20,0x20,0x26,0x10,0x20,0x10,0x20,0x80,0x26,0x20,0x30,0x20,0x30,0x20,0x39,0x10,0x30,0x10,0x30,0x80,0x26,0x20,0x20,0x20,0x20,0x20,0x1c,0x20,0x20,0x80,0x
47、2b,0x20,0x26,0x20,0x20,0x20,0x2b,0x10,0x26,0x10,0x2b,0x80,0x26,0x20,0x30,0x20,0x30,0x20,0x39,0x10,0x26,0x10,0x26,0x60,0x40,0x10,0x39,0x10,0x26,0x20,0x30,0x20,0x30,0x20,0x39,0x10,0x26,0x10,0x26,0x80,0x26,0x20,0x2b,0x10,0x2b,0x10,0x2b,0x20,0x30,0x10,0x39,0x10,0x26,0x10,0x2b,0x10,0x2b,0x20,0x2b,0x40,0x
48、40,0x20,0x20,0x10,0x20,0x10,0x2b,0x10,0x26,0x30,0x30,0x80,0x18,0x20,0x18,0x20,0x26,0x20,0x20,0x20,0x20,0x40,0x26,0x20,0x2b,0x20,0x30,0x20,0x30,0x20,0x1c,0x20,0x20,0x20,0x20,0x80,0x1c,0x20,0x1c,0x20,0x1c,0x20,0x30,0x20,0x30,0x60,0x39,0x10,0x30,0x10,0x20,0x20,0x2b,0x10,0x26,0x10,0x2b,0x10,0x26,0x10,0x
49、26,0x10,0x2b,0x10,0x2b,0x80,0x18,0x20,0x18,0x20,0x26,0x20,0x20,0x20,0x20,0x60,0x26,0x10,0x2b,0x20,0x30,0x20,0x30,0x20,0x1c,0x20,0x20,0x20,0x20,0x80,0x26,0x20,0x30,0x10,0x30,0x10,0x30,0x20,0x39,0x20,0x26,0x10,0x2b,0x10,0x2b,0x20,0x2b,0x40,0x40,0x10,0x40,0x10,0x20,0x10,0x20,0x10,0x2b,0x10,0x26,0x30,0x
50、30,0x80,0x00, /八月桂花遍地開(kāi)0x18,0x30,0x1C,0x10,0x20,0x40,0x1C,0x10,0x18,0x10,0x20,0x10,0x1C,0x10,0x18,0x40,0x1C,0x20,0x20,0x20,0x1C,0x20,0x18,0x20,0x20,0x80,0xFF,0x20,0x30,0x1C,0x10,0x18,0x20,0x15,0x20,0x1C,0x20,0x20,0x20,0x26,0x40,0x20,0x20,0x2B,0x20,0x26,0x20,0x20,0x20,0x30,0x80,0xFF,0x20,0x20,0x1C,0x10,0x18,0x10,0x20,0x20,0x26,0x20,0x2B,0x20,0x30,0x20,0x2B,
溫馨提示
- 1. 本站所有資源如無(wú)特殊說(shuō)明,都需要本地電腦安裝OFFICE2007和PDF閱讀器。圖紙軟件為CAD,CAXA,PROE,UG,SolidWorks等.壓縮文件請(qǐng)下載最新的WinRAR軟件解壓。
- 2. 本站的文檔不包含任何第三方提供的附件圖紙等,如果需要附件,請(qǐng)聯(lián)系上傳者。文件的所有權(quán)益歸上傳用戶(hù)所有。
- 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ì)用戶(hù)上傳內(nèi)容的表現(xiàn)方式做保護(hù)處理,對(duì)用戶(hù)上傳分享的文檔內(nèi)容本身不做任何修改或編輯,并不能對(duì)任何下載內(nèi)容負(fù)責(zé)。
- 6. 下載文件中如有侵權(quán)或不適當(dāng)內(nèi)容,請(qǐng)與我們聯(lián)系,我們立即糾正。
- 7. 本站不保證下載資源的準(zhǔn)確性、安全性和完整性, 同時(shí)也不承擔(dān)用戶(hù)因使用這些下載資源對(duì)自己和他人造成任何形式的傷害或損失。
最新文檔
- 《化工制圖基本知識(shí)》課件
- 甘肅政法大學(xué)《先進(jìn)復(fù)合材料》2023-2024學(xué)年第一學(xué)期期末試卷
- 企業(yè)培訓(xùn)課件題目
- 三年級(jí)數(shù)學(xué)上冊(cè)四兩位數(shù)除以一位數(shù)的除法兩位數(shù)除以一位數(shù)說(shuō)課稿西師大版
- 《考試習(xí)慣指導(dǎo)》課件
- 三年級(jí)科學(xué)上冊(cè)第1單元水8它們發(fā)生了什么變化教案2教科版
- 《作文復(fù)習(xí)分析論據(jù)》課件
- 化工生產(chǎn)安全用電課件
- 動(dòng)物解剖生理學(xué)-25體溫
- 初一安全食品課件
- 2024縣級(jí)應(yīng)急廣播系統(tǒng)技術(shù)規(guī)范
- 一年級(jí)道德與法治無(wú)紙筆期末檢測(cè)質(zhì)量分析
- 視頻剪輯師工作總結(jié)
- 新疆維吾爾自治區(qū)巴音郭楞蒙古自治州2023-2024學(xué)年二年級(jí)上學(xué)期期末數(shù)學(xué)試卷
- 華為公司服務(wù)流程
- 干細(xì)胞修復(fù)神經(jīng)損傷
- ZPW-2000A四線(xiàn)制改變運(yùn)行方向電路
- 中醫(yī)跟師總結(jié)論文3000字(通用3篇)
- 電動(dòng)三輪車(chē)監(jiān)理細(xì)則
- 《鋁及鋁合金厚板殘余應(yīng)力測(cè)試方法 切縫翹曲法》
- GB/T 43218-2023煤炭測(cè)硫儀性能驗(yàn)收導(dǎo)則
評(píng)論
0/150
提交評(píng)論