欧美极品高清xxxxhd,国产日产欧美最新,无码AV国产东京热AV无码,国产精品人与动性XXX,国产传媒亚洲综合一区二区,四库影院永久国产精品,毛片免费免费高清视频,福利所导航夜趣136

標題: 51單片機 語音芯片YF017 驅動函數以及簡單調用例程 [打印本頁]

作者: 威龍1410    時間: 2019-12-1 11:33
標題: 51單片機 語音芯片YF017 驅動函數以及簡單調用例程








//YF017---語音播報程序
#include <reg52.h>
#include <intrins.h>
sbit MUSIC_REST =P2^0;//語音芯片復位腳                                       
sbit MUSIC_DATA =P2^1;//語音芯片脈沖識別
sbit bus =P2^2;//語音芯片工作狀態識別信號  

void delay_us(unsigned int us)
{
    while(us--)
    {
            _nop_();
            _nop_();
            _nop_();
            _nop_();
    }
}

void Music(unsigned char music_count)
{
    MUSIC_REST=1;
    delay_us(200);
    MUSIC_REST=0;
    delay_us(200);

    while(music_count>0)
    {
        MUSIC_DATA=1;
        delay_us(100);
        MUSIC_DATA=0;
        delay_us(100);
                music_count--;
    }
}

void Msc_Alarm(uchar dis[]) //距離播報
{
    if((dis[0]+dis[1]+dis[2])!=0)                   //當超出測量范圍時不進行播報
        {
                Music(17);                                        //播報:“距離”
                while(!bus);
                if(dis[0]==0){
                              Music(2);                         //播報:“十位數具體值”          0
                        while(!bus);       
                }                   
                   else {
                        Music(dis[0]+2);                         //播報:“十位數具體值”
                        while(!bus);
                }
                if((dis[1]+dis[2])!=0){          
                        Music(14);                                        //播報:“點”
                        while(!bus);
                        Music(dis[1]+2);                                //播報:“十分位的具體值”
                        while(!bus);                               
                        Music(dis[2]+2);                                //播報:“百分位的具體值”
                        while(!bus);                   
                       
                }
                Music(26);                                //播報:“米”
                while(!bus);       
        }          
}


void Msc_temp(uint temp)//溫度播報
{
        temp0=temp/100;
        temp1=temp%10/10;
        temp2=temp%10; //小數
        Music(21);                                        //播報:“溫度”
        while(!bus);
        if((temp[0]+temp[1])!=0)
        {
                if(temp[0]==0){
                        Music(temp[1]+2);                                //播報:“個位的具體值”(不播報十位數了)
                        while(!bus);
                }
                Music(temp[0]+2);                                //播報:“十位的具體值”
                while(!bus);                               
                Music(temp[1]+2);                                //播報:“個位的具體值”
                while(!bus);
        }                   
        else{
                Music(temp[1]+2);                         //播報:“0”
                while(!bus);
        }
        if(temp2!=0){          
                Music(14);                                        //播報:“點”
                while(!bus);
                Music(temp[2]+2);                                //播報:“小數位”
                while(!bus);
                Music(29);                                //播報:“度”
            while(!bus);       
        }
        Music(29);                                //播報:“度”
        while(!bus);       
}

void MscAlarm()
{
        Music(23);                                        //播報:“危險”
        while(!bus);
}

作者: 老農要進城    時間: 2019-12-6 09:33
有辦法做到不阻塞嗎?
作者: 威龍1410    時間: 2019-12-6 14:08
老農要進城 發表于 2019-12-6 09:33
有辦法做到不阻塞嗎?

我頂多算個新手,關于阻塞問題,不太懂




歡迎光臨 (http://m.raoushi.com/bbs/) Powered by Discuz! X3.1