• <li id="00i08"><input id="00i08"></input></li>
  • <sup id="00i08"><tbody id="00i08"></tbody></sup>
    <abbr id="00i08"></abbr>
  • 新聞中心

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

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

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

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

    本文引用地址:http://www.czjhyjcfj.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個(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)識位
    }
    //==============使能全局中斷======================
    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)文章:蜂鳴器原理


    評論


    相關(guān)推薦

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

    關(guān)閉
    主站蜘蛛池模板: 云南省| 宁国市| 卢湾区| 兰州市| 湖北省| 芜湖县| 昂仁县| 中方县| 沂水县| 叶城县| 家居| 开鲁县| 龙岩市| 顺昌县| 铁岭市| 宜兴市| 江源县| 留坝县| 安义县| 汶川县| 鹤壁市| 崇礼县| 湄潭县| 龙游县| 海门市| 沙洋县| 响水县| 招远市| 临沂市| 凤凰县| 托克逊县| 安福县| 翁源县| 太和县| 东丽区| 铜川市| 郧西县| 孟连| 静海县| 辰溪县| 叶城县|