久久久久久久999_99精品久久精品一区二区爱城_成人欧美一区二区三区在线播放_国产精品日本一区二区不卡视频_国产午夜视频_欧美精品在线观看免费

專注電子技術學習與研究
當前位置:單片機教程網 >> MCU設計實例 >> 瀏覽文章

用單片機+PWM來解碼WAV真人聲樂

作者:佚名   來源:本站原創   點擊數:  更新時間:2012年07月25日   【字體:

本程序是51hei單片機開發板所提供一個列子,用單片機解碼wav真人聲音音樂,并用pwm的方法輸出,開發板的p2.2口是接的蜂鳴器,但蜂鳴器的效果實在是太差,在使用中直接把蜂鳴器去掉,接上一個2w的小喇叭效果更佳.wav.h是wav數據請從下面的壓縮包下載: http://m.zg4o1577.cn/f/waefc.rar   下面是主程序部分:

#include<reg52.h>
#include "wav.h"

sbit dataOut = P2^2;
#define maxSize    2060

unsigned char pwmData=0;      
unsigned char pwmCycle=256;        //pwm的頻率 
unsigned int datIndex=0;

void TimerInit() {
 TMOD=0x22;
 TH0=(256-pwmData)%256; 
 TH1=(256-(pwmCycle-pwmData))%256;

 RCAP2H=0xfe; //1
 RCAP2L=0xc7; //199
  TH2=RCAP2H; 
 TL2=RCAP2L;
 
 PT2=0; //高中斷優先級 
   
    TR0=1; TR1=0; TR2=1;  //啟動/停止定時器
 ET0=1; ET1=1; ET2=1;  //打開中斷
 EA=1;
}
                                                                          
///////////////////定時器0中斷//////////////////////
Timer0() interrupt 1 {
 TR0=0;              //turn off Timer0
 dataOut=0; 
 TR1=1;              //turn on Timer1
  

///////////////////定時器1中斷///////////////////////
Timer1() interrupt 3 {
 TR1=0;              //turn off Timer1
 dataOut=1;
 TH0=(256-pwmData)%256;
 TH1=(256-(pwmCycle-pwmData))%256;
 TR0=1;              //turn on Timer0 
}

///////////////////定時器2中斷///////////////////////
Timer2() interrupt 5 {
 TF2=0;
 pwmData=wavdata1[datIndex];
 if(++datIndex==maxSize) {
  datIndex=0; 
 }
}

main(){
 TimerInit();
 while(1);
 { }
}

關閉窗口

相關文章

主站蜘蛛池模板: 三级在线看 | 国产精品2区 | 九九在线观看高清免费 | 一区二区欧美日韩 | 九色在线播放 | 国产中文字幕在线播放 | 国产精品久久久久久久免费看 | 99久久精品国产亚洲 | 日本精品国产 | 最新国产在线视频 | 日韩精品无 | 欧美日韩在线精品 | 国产裸体永久免费视频网站 | 国产在线二区 | 岛国av在线播放 | 五月婷色 | 黄色片小视频 | 欧美一区二区三区的 | 日韩在线视频网站 | 欧美色综合| 91在线免费看 | 亚洲精品一二区 | 成人爱爱| 国产精品一区二区性色av | 狠狠干狠狠干 | 中文字幕自拍 | 国产一区二区免费看 | 一区二区三区在线观看视频 | 伊人网综合 | 全部免费毛片在线播放高潮 | 五月婷婷六月激情 | 国产一区二区精品丝袜 | 成人黄色一级片 | 免费激情网站 | 亚洲精品社区 | 免费黄色小说网站 | 欧美黑人猛交 | 国产激情网站 | 国产视频成人 | 中文在线字幕免费观 | 精品网站999www |