新聞中心

        EEPW首頁 > 嵌入式系統(tǒng) > 設計應用 > AVR單片機學習程序(音樂合成)

        AVR單片機學習程序(音樂合成)

        作者: 時間:2012-10-23 來源:網(wǎng)絡 收藏

        //
        //名稱:
        //硬件:-ATMEGA16實驗板
        //修改日志:
        #includeiom16v.h>
        #include macros.h>

        本文引用地址:http://www.104case.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,
        //《你怎么說》
        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個

        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個
        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個

        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個
        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,
        };
        //===================延時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;
        }
        //==============定時器T0初始化====================
        void timer0_init(void)
        {
        TCCR0 = 0x0B; //64分頻
        TCNT0 = 0x00; //計數(shù)器清0
        OCR0 = 1; //1*8/8M=8uS
        TIMSK |=0x02; //使能OCIE0
        TIFR |=0x02; //清OCIF0中斷標識位
        }
        //==============使能全局中斷======================
        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);
        }
        }
        }
        //============定時器T0中斷服務子===============
        #pragma interrupt_handler Timer0_Interrupt:20
        void Timer0_Interrupt(void)
        {
        TIFR |=0x02;
        TCNT0 =0x00;
        PORTD^=0x80; //PD7輸出
        }

        蜂鳴器相關文章:蜂鳴器原理


        評論


        相關推薦

        技術專區(qū)

        關閉
        主站蜘蛛池模板: 阿城市| 沙坪坝区| 岑溪市| 特克斯县| 吉隆县| 陆河县| 惠州市| 兴安盟| 泰安市| 祁东县| 黄平县| 南投县| 塔城市| 疏勒县| 新晃| 昌宁县| 黄平县| 醴陵市| 广德县| 平陆县| 大厂| 清新县| 铁力市| 裕民县| 随州市| 康保县| 雷波县| 哈尔滨市| 运城市| 宣汉县| 永年县| 沙洋县| 阿图什市| 沂源县| 宕昌县| 阿克苏市| 通榆县| 江阴市| 霍邱县| 中牟县| 乡城县|