電路介紹:
1.此項目采用51單片機實現音樂盒的功能,同時電路中采用模擬示波器,可以實時查看波形的變動。
2.通過一個可調電阻實現音頻信號的音量大小
3.基于8歐姆/1w的喇叭作為音頻輸出部件
proteus仿真原理圖:
源代碼:
#include #include #define uchar unsigned char #define uint unsigned int sbit SPK = P2^7; uchar tone_h; //高音 uchar tone_l; //低音 uint note = 1; //音符 uchar beat; //節拍 uchar code chuzhi[3][16]={ //音調對應的計數初值 0xff,0xff,//占0位 0xf8,0x8c,//低1 0xf9,0x5b,// 2 0xfa,0x15,// 3 0xfa,0x67,// 4 0xfb,0x04,// 5 0xfb,0x90,// 6 0xfc,0x0c,//低7 0xff,0xff,//占0位 0xfc,0x44,//中1 0xfc,0xac,// 2 0xfd,0x09,// 3 0xfd,0x34,// 4 0xfd,0x82,// 5 0xfd,0xc8,// 6 0xfe,0x06,//中7 0xff,0xff,//占0位 0xfe,0x22,//高1 0xfe,0x56,// 2 0xfe,0x85,// 3 0xfe,0x9a,// 4 0xfe,0xc1,// 5 0xfe,0xe4,// 6 0xff,0x03 //高7 }; //****** 測試曲譜 ****** 個位:音調 ,十位:低中高音 對應 0 1 2,千百位:節拍 1~16 uint code test2[] = { 120, //曲速 暫時未用到 401,402,403,404,405,406,407, 611,612,613,614,615,616,617, 821,822,823,824,825,826,827, 0xffff //0xffff表示結尾 }; //****** 生日快樂 ****** uint code test[] = { 120, 205,205,406,405,411,807, 205,205,406,405,412,811, 205,205,415,413,411,407,406, 314,114,413,411,413,812, 305,105,406,405,411,807, 305,105,406,405,412,811, 305,105,415,413,411, 407,406,314,114,413,411,412,811,410, 0xffff }; void delayms(uint ms) /*ms 等于1時,延時1ms 等于2時,延時2ms,以此類推*/ { uchar a,b,c; //+3 while(ms--) { for(c=1;c>0;c--) // 1+2 = 3 for(b=142;b>0;b--) // 1*( 1+142*2)) = 285 for(a=2;a>0;a--); // 142*(1+2*2) = 710 } } void delay125ms(uint pai) //延時 ?*125ms 即?個節拍 { uchar a,b,c; while(pai--) { for(c=239;c>0;c--) for(b=104;b>0;b--) for(a=1;a>0;a--); } } void timer0() interrupt 1 { TH0 = tone_h; TL0 = tone_l; SPK = ~SPK; } void timer_init() { EA = 1; ET0 = 1; PT0 = 1; TMOD = 0x11; TH0 = 255; TL0 = 255; } void main() { timer_init(); note = 1; while(1) { if(test[note] == 0xffff) { note = 1; } if(test[note]%10 != 0) //音調不為0 【音調為0時表示不發聲,但有節拍】 { tone_h = TH0 = chuzhi[test[note]%100/10][(test[note]%10)*2 ]; //音調高位 【二維數組 第1維表示低中高音,第二維表示音調】 tone_l = TL0 = chuzhi[test[note]%100/10][(test[note]%10)*2 + 1]; //音調低位 TR0 = 1; } delay125ms(test[note]/100); //節拍 TR0 = 0; delayms(30); note++; //下一個音符 } }
上一篇:單片機籃球比賽計分器設計方案與程序詳解
下一篇:51單片機匯編學習例程(5)——USART串口篇
推薦閱讀
史海拾趣
進入21世紀,AIRPAX開始積極拓展全球市場。通過與各國企業的合作與交流,AIRPAX的產品逐漸進入歐洲、亞洲等地區,服務于更多國家的客戶。同時,AIRPAX還積極尋求與其他行業領先企業的戰略合作,共同推動電氣保護技術的發展。這些合作不僅提升了AIRPAX的品牌影響力,也為其帶來了更多的商業機會。
為了進一步擴大市場份額和增強技術實力,DATASENSOR公司積極進行收購和擴張。2004年,公司成功收購INFRA和SPECIALVIDEO公司,這兩家公司在工業自動化領域擁有豐富的經驗和先進的技術,為DATASENSOR公司帶來了更多的市場機會和技術優勢。此外,公司還在法國、德國、英國和西班牙等國家和地區設立了子公司,實現了全球化的戰略布局。
奇力新公司自創立之初,就專注于電感器的研發與生產。創始人憑借對電感技術的深入理解和市場需求的敏銳洞察,確定了公司的發展方向。在創業初期,奇力新積極引進先進的生產設備和技術人才,建立了一套完整的技術研發和生產體系。通過不斷的技術積累和創新,奇力新逐漸在電感器領域取得了領先地位。
Centellax Inc公司自成立以來,一直致力于電子通信技術的研發與創新。在成立初期,公司憑借其獨特的測試測量技術,在光通信行業中嶄露頭角。隨著技術的不斷迭代和市場的擴大,Centellax逐漸積累了大量的專利和知識產權,為公司的長期發展奠定了堅實的基礎。
在技術創新方面,Centellax不斷投入研發資源,推出了一系列高性能的測試測量設備。這些設備不僅滿足了客戶對高速器件深入分析的需求,還提升了公司在行業內的競爭力。同時,Centellax還積極與高校、研究機構等合作,共同推動電子通信技術的進步。
Cristek Interconnects Inc公司自成立以來,一直致力于電子連接器技術的研發與創新。在早期的發展階段,公司憑借其出色的研發團隊,成功開發出一種新型的高性能連接器,這種連接器具有更高的導電性和更低的信號衰減,極大地提高了電子設備的性能。這一技術突破為公司贏得了市場的廣泛認可,也奠定了Cristek在電子行業中的重要地位。
隨著技術的不斷進步,DAICO公司成功研發出一系列高可靠性的定制產品。這些產品以其卓越的性能和穩定性,贏得了客戶的廣泛認可。DAICO開始將業務擴展到商用飛機和其他高端商業行業,為衛星、雷達、導航、通信、電子戰和導彈系統提供復雜操作不可或缺的一部分。
日本質量協會(JQA)宣布從2001年12月20日開始進行藍牙產品的標志認證試驗。標志認證是將藍牙嵌入產品時證明其符合標準的手續。日本質量協會(JQA)對已經安裝有通過認證的模塊的產品進行試驗。認證試驗由BQB(Bluetooth Qualification Body)認 ...… 查看全部問答∨ |
美國CDE電容模塊在緩沖電路中的應用 眾所周知,在電力電子器件的應用電路中,無一例外地都要設置緩沖電路,即吸收電路。一些初次應用全控型器件的讀者或許有這樣的感受:器件莫名其妙地損壞了。雖然損壞的原因頗多,但緩沖電路和緩沖電容選擇不當是 ...… 查看全部問答∨ |
xilinx 的用的最多,優點是 1、芯片用EPROM 配置,調試成本低,升級容易。 2、開發系統---Foundation Series 的電路輸入部分可以脫離 軟件狗運行,只有時事仿真和布線時需要狗。 3、干的人多,有 ...… 查看全部問答∨ |
|
驅動開發分為WINDOWS,LINUX,WINCE等,為什么在UCOS下面就不用進行驅動開發呢? 驅動開發分為WINDOWS,LINUX,WINCE等,為什么在UCOS下面就不用進行驅動開發呢… 查看全部問答∨ |
本帖最后由 ddllxxrr 于 2016-1-7 17:16 編輯 贈送一個Maxim測風儀,也是當時剛出來的時候論壇贈送的,一直閑置著,沒發揮它的功用 覺得這東西可以在學校研究研究搞個小課題啥的,有需要請跟帖申請(希望不要再讓它閑置了哈) ...… 查看全部問答∨ |
MLCC(片狀多層陶瓷電容)現在已經成為了電子電路最常用的元件之一。MLCC表面看來,非常簡單,可是,很多情況下,設計工程師或生產、工藝人員對MLCC的認識卻有不足的地方。有些公司在MLCC的應用上也會有一些誤區, ...… 查看全部問答∨ |