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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 929|回復: 0
打印 上一主題 下一主題
收起左側

程序插入單片機開發板 沒聲音 是我輸出有問題嘛?

[復制鏈接]
跳轉到指定樓層
樓主
ID:939354 發表于 2021-6-17 15:09 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
程序插入開發板 開發板沒聲音 是我輸出有問題嘛?是普中51開發板

#include<REG52.H>
#define sound_amount 5
//位定義
sbit Beep =  P1^5 ;
sbit play_up=P1^3;
sbit play_down=P3^5;
sbit pause=P3^2;
sbit speaker=P1^0;
//全局變量
unsigned char timerOh,timer01,time;
unsigned char music_num ;
unsigned int num;
signed int fre;
bit play_enable;
//函數申明
void delay(unsigned char t);
void delayms (unsigned int t) ;
void music_play (void) ;

//《煙花易冷》
unsigned char code song1[]={
            5,2,1, 3,2,1, 2,2,2, 2,2,4, 3,2,1, 1,2,1, 2,2,1, 3,2,4,
         5,2,1, 3,2,1, 2,2,2, 2,2,2, 5,1,1, 3,2,1, 4,2,1, 3,2,4,
         3,2,1, 3,2,1, 7,2,1, 3,2,1, 2,2,2, 1,2,1, 7,2,1, 1,2,1,
         2,2,1, 3,2,1, 6,2,3, 6,1,1, 1,2,1, 3,2,1, 2,2,1, 6,1,1,
         1,2,1, 7,1,1, 5,1,1, 6,1,6, 5,2,1, 3,2,1, 2,2,2, 2,2,1,
         7,2,3, 3,2,1, 2,2,2, 1,2,1, 7,1,1, 1,2,1, 2,2,1, 3,2,1,
         6,2,3, 6,1,1, 1,2,1, 3,2,1, 2,2,1, 6,1,1, 1,2,1, 7,1,2,
         5,1,2, 6,1,6, 0,0,0 };
//《發如雪》
unsigned char code song2[]={
     5,2,2, 1,1,1, 3,2,2, 2,2,1, 3,2,1, 5,2,1, 6,2,1, 5,2,3, 1,2,1, 2,2,1,
         3,2,1, 6,2,1, 5,2,1, 3,2,1, 5,2,3, 5,2,1, 6,2,1, 1,3,2, 6,2,1, 5,2,1,
         3,2,1, 5,2,1, 3,2,2, 1,2,1, 2,2,1, 3,2,1, 1,2,1, 6,1,1, 3,2,1, 2,2,1,
         5,1,1, 2,2,1, 3,2,2, 2,2,1, 3,2,1, 5,2,1, 6,2,1, 5,2,3, 1,2,1, 2,2,1,
         5,2,1, 3,2,1, 5,2,1, 3,2,2, 1,2,1, 6,1,1, 3,2,1, 2,2,1, 1,2,1, 6,1,1,
         1,2,1, 2,2,1, 2,2,1, 1,2,4, 0,0,0 };
//《簡單愛》
unsigned char code song3[]={
     5,1,1, 1,2,1, 2,2,1, 3,2,1, 2,2,1, 3,2,1, 4,2,1, 5,2,1, 5,2,1, 5,2,1,
         4,2,1, 3,2,1, 2,2,3, 5,1,1, 1,2,1, 2,2,1, 3,2,1, 4,2,1, 5,2,1, 5,2,1,
         5,2,1, 6,2,1, 5,2,2, 2,2,1, 3,2,1, 1,2,2, 1,2,1, 6,1,1, 2,2,1, 2,2,1,
         3,3,1, 3,2,1, 1,2,1, 5,2,1, 1,2,1, 5,2,1, 1,2,1, 7,1,1, 1,2,1, 1,2,1, 6,1,1,
         2,2,1, 2,2,1, 3,2,1, 3,2,1, 5,2,1, 5,2,1,
         4,2,1, 3,2,1, 2,2,3, 5,1,1, 1,2,1, 2,2,1, 3,2,1, 2,2,1, 3,2,1, 4,2,1,
         5,2,1, 5,2,1, 5,2,2, 2,2,1, 3,2,1, 1,2,2, 1,2,1, 6,1,1, 2,2,1, 2,2,1,
         3,2,1, 3,2,1, 1,2,2, 5,2,1, 1,2,1, 5,2,1, 5,2,1, 7,1,1, 1,2,1, 0,0,0 };
//頻率-半周期數據表高八位共保存了四個八度的28個頻率數據
unsigned char code FREQH[]={
     0xF2, 0xF3,0xF5, 0xF5,0xF6, 0xF7, 0xF8, //低音1234567
         0xF9, 0xF9,0xFA, 0xFA,0xFB, 0xFB, 0xFC, 0xFC, //中音1234567
         0xFC, 0xFD,0xFD, 0xFD,0xFD, 0xFE,  //高音234567
         0xFE, 0xFE,0xFE, 0xFE,0xFE, 0xFE, 0xFE, 0xFF};//超高音1234567
//頻率-半周期數據表低八位
unsigned char code  FREQL[]={
     0x42, 0xC1,0x17, 0xB6, //低音1234567
         0x21, 0xE1,0x8C, 0xD8,0x68, 0xE9, 0x5B, 0x8F, //中音1234567
         0xEE, 0x44,0x6B, 0xB4,0xF4, 0x2D,  //高音234567
         0x47, 0x77,0xA2, 0xB6,0xDA, 0xFA, 0x16}; //超高音1234567



void main(void)
{
        TMOD=0x11;
        ET0 =1;
        EA=1;
        while(1)
        {
                music_play();
                if(!pause)
                {
                        if(!pause)
                        {
                                if(music_num==0)
                                {
                                        music_num=1;
                                        num=0;
                                        play_enable=1;
                                }
                                else
                                {
                                        play_enable=~play_enable;
                                        speaker=1;
                                }                                       
                                while(!pause)
                                {
                                        if(play_enable==0){}
                                }
                        }
                }
                if((!play_up)&&(music_num!=0))
                {
                                delayms(5);
                                if((!play_up)&&(music_num!=0))
                                {  speaker=1;
                                music_num-=1;
                                if(music_num<=0)
                                music_num=3;
                                num=0;
                                if(music_num==(sound_amount+1))
                                music_num=1;
                                delayms(500);
                                }
                }
                if((!play_down)&&(music_num!=0))
                {
                                delayms(5);
                                if((!play_down)&&(music_num!=0))
                                {  speaker=1;
                                music_num-=1;
                                num=0;
                                if(music_num==0)
                                music_num=sound_amount;
                                delayms(500);
                                }
                }        
        }
}

//延時函數(毫秒)
void delayms(unsigned int t)
{
        unsigned int i,j;
        for(i=0;i<t;i++)
        {
                for(j=0;j<123;j++);
        }
}


//延時函數
void delay(unsigned char t)
{
        unsigned char t1;
        unsigned char t2;
        for(t1=0;t1<t;t1++)
        {
                for(t2=0;t2<8000;t2++)
                {
                        ;
                }
        }
        TR0=0;
}

//定時器0中斷函數
void timer0(void) interrupt 1
{
        speaker=!speaker;
        TH0= timerOh;
        TL0=timer01;
}


void song(void)
{
        TH0= timerOh;
        TR0=1;
        delay(time);
}



void music_play(void)
{
        if((music_num==1)&&(play_enable==1))
        {
                fre=song1[num]+7*song1[num+1]-1;
                 timerOh=FREQH[fre];
                timer01=FREQL[fre];
                time=song1[num+2];
                num+=3;
                if(fre<0)
                {
                        num=0;
                        music_num=2;
                }
                song();
        }
        if((music_num==2)&&(play_enable==1))
        {
                fre=song2[num]+7*song2[num+1]-1;
                 timerOh=FREQH[fre];
                num+=3;
                if(fre<0)
                {        
                        num=0;
                        music_num=3;
                }
                        song();
        }
        if((music_num==3)&&(play_enable==1))
        {
                fre=song3[num]+7*song3[num+1]-1;
                 timerOh=FREQH[fre];
                num+=3;
                if(fre<0)
                {
                        num=0;
                        music_num=3;
                }
                song();
        }
}



分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏 分享淘帖 頂 踩
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術交流QQ群281945664

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 国产乱码精品1区2区3区 | 综合成人在线 | 午夜影视 | 日本精品一区 | 欧美日韩黄色一级片 | 在线欧美亚洲 | 日本一区二区三区在线观看 | 中文字幕在线观看一区 | 欧美福利一区 | 中文字幕在线一区二区三区 | 国产午夜精品久久久 | 黄色毛片免费看 | 国产欧美精品 | 亚洲人成人网 | 一区二区三区欧美大片 | 国产激情亚洲 | 国产精品成人久久久久 | 国产成人精品一区二区三区四区 | 日本在线综合 | 欧美美女被c | 久久久入口 | 国产伦精品一区二区三毛 | 伊人伊成久久人综合网站 | 日韩免费高清视频 | 一区二区av在线 | www.日本三级 | 欧一区二区 | 人人叉| 九九九久久国产免费 | 91av在线不卡 | 精品在线一区二区三区 | 久久久网 | 欧美乱做爰xxxⅹ久久久 | 午夜影院在线观看 | 免费观看www | 日韩欧美一区在线 | 五月激情综合 | 欧美区日韩区 | 久久久久久久亚洲精品 | 亚洲视频在线观看免费 | 99re热精品视频国产免费 |