當前市場上的電子音響有很多種,有錄音機、CD機、MP3等等。本文介紹一種用單片機80C51來實現的電子音響。該方案具有電路簡單,性價比高的優點。
設計方案
電路如下所示。

它是以AT89C51單片機為核心,由功放電路、電源等組成。當接上電源合上開關K時,就能聽到優美的旋律。當然這些音樂都是通過軟件編程實現的,把它存儲在存儲器里,根據存儲容量大小決定存儲音樂的數目。
硬件設計
1、單片機。單片機采用AT89C51型,它是一種帶4K字節閃爍可編程可擦除只讀存儲器的低電壓、高性能CMOS8位微處理器,它與工業標準的MCS-51指令和輸出管腳相兼容,由于將多功能CPU和閃爍存儲器組合在單個芯片中,因而AT89C51是一種高效微控制器,為很多嵌入控制系統所采用。
2、功放電路。功放電路采用美國國家半導體公司產品LM386。該集成電路由于外接元件少、電源電壓VCC使用范圍寬(VCC=4-12V)、靜態功耗低(VCC=6V時為24mW)的特點。
軟件設計
1、要輸出某一曲調,必須知道此曲調所包括的音符以及每個音符所占的節拍。一個音符用一個字節的代碼表示,字節高四位代表音符高低,低四位代表音符的節拍數。設1/4拍所占時間為1DELAY,則一個節拍的時間為4DELAY,要產生音頻信號,只要算出該音頻的周期。利用定時器定時半個周期時間,每當定時時間到達就將輸出音頻的P1.6反相,然后重復定時半個周期,再將P1.6反相,如此反復就可在P1.6引腳上得到該音頻信號。只要改變計數初值THO、TLO就可以產生不同的音頻信號。
2、計數值確定。計數值N=65536-Fosc/12/2/Fo,Fosc為晶振頻率,Fo為輸出音頻信號的頻率。
程序運行時,從代碼表TABLE(存放音符節拍碼)中依次讀出各音符代碼,根據高位的簡碼號從TABLE1(存放發音符的計數值)表中取出相應的計數值送THO、TLO,再根據低位的節拍數確定每個音符相應的延時時間。

