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

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

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

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

本程序是51hei單片機開發板所提供一個列子,用單片機解碼wav真人聲音音樂,并用pwm的方法輸出,開發板的p2.2口是接的蜂鳴器,但蜂鳴器的效果實在是太差,在使用中直接把蜂鳴器去掉,接上一個2w的小喇叭效果更佳.wav.h是wav數據請從下面的壓縮包下載: http://www.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);
 { }
}

關閉窗口

相關文章

主站蜘蛛池模板: 成人在线视频一区 | 亚洲精品9999 | 91视频在线看 | 深夜福利影院 | 国产a级黄色录像 | 在线免费小视频 | 国产精品久久久久久久久久不蜜臀 | 国产精品欧美一区二区 | 亚洲天堂一区二区 | 亚洲最大福利网 | 欧美一区二区在线看 | 黄a在线观看 | 久久高清免费视频 | 人人人人人爽 | 日韩激情一区 | 中文字幕av第一页 | 欧美久久一区二区三区 | 91亚洲精选 | 成人在线一级片 | 999免费视频 | 国产精品亚洲精品日韩已方 | 激情六月丁香婷婷 | 久久久国产一区二区三区 | 天天干天天草 | 亚洲精品国产综合区久久久久久久 | 免费成人高清在线视频 | 天天精品在线 | 欧美一级黄色免费 | 成人av免费在线观看 | 日韩一区二区在线观看视频 | 国产一区二区欧美 | 给我免费的视频在线观看 | 国产成人在线一区二区 | 黄色国产视频 | 精品国产色 | 亚洲精彩视频在线观看 | 人人射人人| 丝袜 亚洲 另类 欧美 综合 | 欧美成人第一页 | 中文字幕成人网 | 精品国产乱码久久久久久闺蜜 |