<meter id="pryje"><nav id="pryje"><delect id="pryje"></delect></nav></meter>
          <label id="pryje"></label>

          新聞中心

          EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > AVR單片機(jī)學(xué)習(xí)程序(音樂(lè)合成)

          AVR單片機(jī)學(xué)習(xí)程序(音樂(lè)合成)

          作者: 時(shí)間:2012-10-23 來(lái)源:網(wǎng)絡(luò) 收藏

          //
          //名稱:
          //硬件:-ATMEGA16實(shí)驗(yàn)板
          //修改日志:
          #includeiom16v.h>
          #include macros.h>

          本文引用地址:http://www.ex-cimer.com/article/170746.htm

          //-------------位拉高--------------------------------------------
          #define ADC0_H PORTA|=BIT(PA0)
          #define ADC1_H PORTA|=BIT(PA1)
          #define LEDLK_H PORTA|=BIT(PA2) //流水燈選通
          #define SEGLK_H PORTA|=BIT(PA3) //數(shù)碼管段碼選通
          #define BITLK_H PORTA|=BIT(PA4) //數(shù)碼管位選通
          //#define 18B20_H PORTA|=BIT(PA5)
          #define BEEP_H PORTA|=BIT(PA6) //蜂鳴器
          #define CUSB_H PORTA|=BIT(PA7)
          //#define ~YY PORTD|=BIT(PD7)
          //-------------位拉低--------------------------------------------
          #define ADC0_L PORTA=~BIT(PA0)
          #define ADC1_L PORTA=~BIT(PA1)
          #define LEDLK_L PORTA=~BIT(PA2)
          #define SEGLK_L PORTA=~BIT(PA3)
          #define BITLK_L PORTA=~BIT(PA4)
          //#define 18B20_L PORTA=~BIT(PA5)
          #define BEEP_L PORTA=~BIT(PA6)
          #define CUSB_L PORTA=~BIT(PA7)
          //#define YY PORTD=~BIT(PD7)

          #define NOP() asm(nop)

          #define uchar unsigned char
          #define uint unsigned int

          uint a,x;

          //====================數(shù)據(jù)表=============================================

          __flash uchar yin[]={
          //《我們從這里起飛》
          119,119,106,94,119,106,119,106,119,159,
          119,119,106,94,89,94,106,142,126,119,94,106,94,89,79,71,79,94,106,
          126,119,106,94,142,159,119,94,71,79,94,119,106,159,106,119,
          119,119,89,79,71,79,71,59,71,89,71,79,79,79,94,71,79,94,119,
          106,159,126,119,106,119,119,89,79,71,59,71,89,71,79,94,
          59,79,94,71,79,94,119,106,159,94,106,119,
          119,119,106,94,119,106,119,106,119,159,
          119,119,106,94,89,94,106,142,126,119,94,106,94,89,79,71,79,94,106,
          126,119,106,94,142,159,119,94,71,79,94,119,106,159,106,119,
          //119,119,106,94,89,94,89,71,89,106,89,94,94,94,119,94,94,119,119,
          //126,159,126,119,106,119,119,106,94,89,71,89,106,89,94,119,
          //79,94,119,94,94,119,119,126,159,142,126,119,
          119,119,89,79,71,79,71,59,71,89,71,79,79,79,94,71,79,94,119,
          106,159,126,119,106,119,119,89,79,71,59,71,89,71,79,94,
          59,79,94,71,79,94,119,106,159,94,106,119,
          59,79,94,71,79,89,94,79,79,71,63,59,0,
          //《你怎么說(shuō)》
          60,60,53,59,71,79,95,80,71,59,80,80,71,59,
          53,53,59,53,47,0,39,47,53,47,47,79,71,
          59,47,53,0,79,39,47,53,79,47,53,59,
          59,53,47,47,39,47,53,59,71,79,59,59,53,47,94,79,94,106,94,
          79,79,71,59,59,59,53,47,39,47,39,47,39,47,53,
          59,53,53,59,53,47,47,53,59,53,47,39,0,79,39,47,
          53,79,47,53,59,
          60,60,53,59,71,79,95,80,71,59,80,80,71,59,
          53,53,59,53,47,0,39,47,53,47,47,79,71,
          59,47,53,0,79,39,47,53,79,47,53,59,
          59,53,47,47,39,47,53,59,71,79,59,59,53,47,94,79,94,106,94,
          79,79,71,59,59,59,53,47,39,47,39,47,39,47,53,
          59,53,53,59,53,47,47,53,59,53,47,39,0,79,39,47,
          53,79,47,53,59,
          0,
          //《八月桂花香》
          59,71,79,71,59,79,71,59,71,79,71,59,79,
          79,71,59,53,71,79,94,79,106,94,79,119,
          79,71,59,79,94,106,119,106,79,71,59,79,94,106,119,106,
          79,71,59,53,71,79,94,79,106,94,79,119,
          79,71,59,53,71,79,94,47,59,53,47,59,0,
          //《阿里山的姑娘》
          94,79,94,106,94,79,71,79,94,106,94,79,94,94,106,106,
          142,119,106,119,142,159,142,71,71,71,79,79,94,94,94,106,106,94,119,
          142,142,106,106,106,94,79,94,94,106,94,106,119,119,106,119,142,159,142,142,
          119,142,142,159,106,94,106,119,106,94,79,94,106,94,106,142,119,106,119,142,
          159,142,71,71,71,79,79,94,94,106,94,106,94,119,142,142,106,106,106,94,
          79,94,94,106,94,106,119,119,106,119,142,159,142,94,106,94,79,71,79,94,
          106,94,79,94,106,142,119,106,119,142,159,142,71,71,71,79,79,94,94,106,
          94,106,94,119,142,142,106,106,94,79,94,79,106,94,79,71,0,
          71,71,71,71,71,59,53,59,71,79,94,71,79,59,71,79,106,94,79,79,106,94,106,142,
          94,106,94,79,106,94,142,119,94,106,119,142,142,142,
          94,106,94,79,71,79,94,
          106,94,79,94,106,142,119,106,119,142,159,142,71,71,71,79,79,94,94,106,
          94,106,94,119,142,142,106,106,94,79,94,79,106,94,79,71,0,
          71,71,71,71,71,59,53,59,71,79,94,71,79,59,71,79,106,94,79,79,106,94,106,142,
          94,106,94,79,106,94,142,119,94,106,119,142,142,142,
          94,106,94,79,71,79,94,

          };

          //---------------------節(jié)拍表------------------------------------------------
          __flash uchar time[]={
          40,40,40,40,160,40,40,40,40,160,
          40,40,40,40,40,40,80,40,40,40,40,160,40,40,40,40,120,20,20,
          40,40,40,40,160,40,40,40,40,40,40,80,40,80,40,160,
          40,40,40,40,120,20,20,40,40,40,40,160,40,40,40,40,40,40,80,
          40,40,40,40,160,40,40,40,40,160,40,40,40,40,80,80,
          40,40,40,40,40,40,80,40,80,20,20,160,
          40,40,40,40,160,40,40,40,40,160,
          40,40,40,40,40,40,80,40,40,40,40,160,40,40,40,40,120,20,20,
          40,40,40,40,160,40,40,40,40,40,40,80,40,80,40,160,
          //40,40,40,40,120,20,20,40,40,40,40,160,40,40,40,40,40,40,80,
          //40,40,40,40,160,40,40,40,40,160,40,40,40,40,80,80,
          //40,40,40,40,40,40,80,40,80,20,20,160,
          40,40,40,40,120,20,20,40,40,40,40,160,40,40,40,40,40,40,80,
          40,40,40,40,160,40,40,40,40,160,40,40,40,40,80,80,
          40,40,40,40,40,40,80,40,80,20,20,160,
          40,40,50,55,60,65,240,40,80,20,20,160,200,//198個(gè)

          120,20,20,80,40,40,40,80,20,20,200,40,40,40,40,40,40,40,160,40,
          40,40,40,40,40,40,40,60,40,80,40,40,40,40,40,40,40,40,255 ,120,
          40,80,40,40,40,40,40,40,160,40,40,40,40,40,20,20,40,40,240,40,
          40,120,40,80,40,20,20,40,40,20,20,20,20,160,40,40,40,40,40,20,
          20,40,20,20,255,40,40,40,40,40,40,40,40,250,//96個(gè)
          120,20,20,80,40,40,40,80,20,20,200,40,40,40,40,40,40,40,160,40,
          40,40,40,40,40,40,40,60,40,80,40,40,40,40,40,40,40,40,255 ,120,
          40,80,40,40,40,40,40,40,160,40,40,40,40,40,20,20,40,40,240,40,
          40,120,40,80,40,20,20,40,40,20,20,20,20,160,40,40,40,40,40,20,
          20,40,20,20,255,40,40,40,40,40,40,40,40,250,255,

          60,20,80,20,20,20,20,80,40,40,40,40,160,60,20,40,40,40,40,80,
          40,40,40,40,160,40,20,20,40,40,40,40,80,40,20,20,40,40,40,40,
          80,60,20,40,40,40,40,80,40,40,40,40,160,60,20,40,40,40,40,80,
          120,40,80,80,160,200,//66個(gè)

          20,10,10,20,20,20,10,10,20,20,120,20,20,30,10,30,10,20,10,10,
          20,20,160,20,20,20,20,20,20,40,20,20,20,20,20,20,40,30,10,20,
          20,20,20,40,30,10,20,20,20,10,10,20,20,160,20,10,10,20,20,20,
          10,10,20,20,120,20,20,20,20,20,20,20,10,10,20,20,160,20,20,20,
          20,20,20,40,20,20,20,20,20,20,40,30,10,20,20,20,20,40,30,10,
          20,20,20,10,10,20,20,160,40,20,20,20,10,10,20,20,120,20,20,60,
          20,20,10,10,20,20,160,30,10,20,20,20,20,40,30,10,30,10,20,20,
          40,40,20,20,40,20,20,80,60,20,255,40,//153個(gè)
          30,10,20,20,20,20,20,20,40,20,20,40,20,20,40,20,20,20,20,20,20,20,
          20,40,40,20,20,40,20,20,20,20,20,10,10,40,40,80,
          40,20,20,20,10,10,20,20,120,20,20,60,
          20,20,10,10,20,20,160,30,10,20,20,20,20,40,30,10,30,10,20,20,
          40,40,20,20,40,20,20,80,60,20,255,
          20,20,10,10,20,20,160,30,10,20,20,20,20,40,30,10,30,10,20,20,
          40,40,20,20,40,20,20,80,60,20,255,
          };
          //===================延時(shí)MS子===========================================
          void delayms(uint m)
          {
          uint i,j;
          for(i=0;im;i++)
          {
          for(j=0;j10000;j++);
          }
          }
          //==============IO初始化=========================
          void IO_init(void)
          {
          DDRA = 0xff;
          PORTA = 0XFF;
          DDRB = 0xff;
          DDRC = 0xff;
          DDRD = 0xff;
          }
          //==============定時(shí)器T0初始化====================
          void timer0_init(void)
          {
          TCCR0 = 0x0B; //64分頻
          TCNT0 = 0x00; //計(jì)數(shù)器清0
          OCR0 = 1; //1*8/8M=8uS
          TIMSK |=0x02; //使能OCIE0
          TIFR |=0x02; //清OCIF0中斷標(biāo)識(shí)位
          }
          //==============使能全局中斷======================
          void Interrupt_init()
          {
          SREG|=0x80;
          }
          //==============初始化============================
          void init(void)
          {
          IO_init();
          timer0_init();
          Interrupt_init();//使能全局中斷
          }
          //===============主函數(shù)===========================
          void main()
          {
          init();
          while(1)
          {
          for(x=0;x820;x++)
          {
          a=yin[x];
          if(a==0){DDRD=0x00;}
          else {DDRD=0xFF;OCR0=a;}
          a=time[x];
          delayms(a);
          DDRD=0x00;
          delayms(1);
          }
          }
          }
          //============定時(shí)器T0中斷服務(wù)子===============
          #pragma interrupt_handler Timer0_Interrupt:20
          void Timer0_Interrupt(void)
          {
          TIFR |=0x02;
          TCNT0 =0x00;
          PORTD^=0x80; //PD7輸出
          }

          蜂鳴器相關(guān)文章:蜂鳴器原理


          評(píng)論


          相關(guān)推薦

          技術(shù)專區(qū)

          關(guān)閉
          看屁屁www成人影院,亚洲人妻成人图片,亚洲精品成人午夜在线,日韩在线 欧美成人 (function(){ var bp = document.createElement('script'); var curProtocol = window.location.protocol.split(':')[0]; if (curProtocol === 'https') { bp.src = 'https://zz.bdstatic.com/linksubmit/push.js'; } else { bp.src = 'http://push.zhanzhang.baidu.com/push.js'; } var s = document.getElementsByTagName("script")[0]; s.parentNode.insertBefore(bp, s); })();