中文字幕 另类精品,亚洲欧美一区二区蜜桃,日本在线精品视频免费,孩交精品乱子片免费

<sup id="3hn2b"></sup>

    1. <sub id="3hn2b"><ol id="3hn2b"></ol></sub><legend id="3hn2b"></legend>

      1. <xmp id="3hn2b"></xmp>

      2. 新聞中心

        EEPW首頁(yè) > 嵌入式系統(tǒng) > 設(shè)計(jì)應(yīng)用 > 簡(jiǎn)單電子琴程序-用蜂鳴器發(fā)聲

        簡(jiǎn)單電子琴程序-用蜂鳴器發(fā)聲

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

        /*
        程序效果:顯示輸入,為遞增顯示,即像
            手機(jī)打電話時(shí)輸入號(hào)碼一樣,同時(shí)蜂鳴器發(fā)出
            不同的音律程序簡(jiǎn)單緊湊理解相對(duì)困難,但
            只要把上一程序弄懂,本程序即可理解
        */
        #includereg52.h> //頭文件
        #includeintrins.h>
        #define uchar unsigned char //宏定義
        #define uint unsigned int
        sbit fmq=P3^4; //位聲明,驅(qū)動(dòng)蜂鳴器管腳
        code uchar table[]={0x3f,0x06,0x5b,//顯示的數(shù)值
        0x4f,0x66,0x6d,0x7d,0x07,0x7f,0x6f,
        0x77,0x7c,0x39,0x5e,0x79,0x71};
        code uchar key_tab[17]={ //此數(shù)組為鍵盤(pán)編碼
        0xed,0x7e,0x7d,0x7b, // 0,1,2,3,
        0xbe,0xbd,0xbb,0xde, // 4,5,6,7,
        0xdd,0xdb,0x77,0xb7, // 8,9,a, b,
        0xee,0xeb,0xd7,0xe7,0xff}; // c,d,e,f,
        uchar l_tmpdata[8]={0,0,0,0,0,0,0,0};
        uchar code freq[16*2]={
        0xf8,0x8c,//DO
        0xf9,0x58,//RE
        0xfa,0x14,//MI
        0xfa,0x67,//FA
        0xfb,0x04,//SO
        0xfb,0x8f,//LA
        0xfc,0x0b,//SI

        0x4D,0xF8,//00466HZ 1# //13
        0xBD,0xF8,//00494HZ 2 //14
        0x24,0xF9,//00523HZ 2# //15
        0x87,0xF9,//00554HZ 3 //16
        0xE4,0xF9,//00587HZ 4 //17
        0x3D,0xFA,//00622HZ 4# //18
        0x90,0xFA,//00659HZ 5 //19
        0xDE,0xFA,//00698HZ 5# //20
        0x29,0xFB,//00740HZ 6 //21

        };
        uchar l_key=0xff; //定義變量,存放鍵值
        uchar l_keyold=0xff;//作為按鍵松開(kāi)否的憑證
        uint th,tl;
        void readkey(); //獲取鍵值的子函數(shù)
        void display(uchar *lp,uchar lc); //顯示子函數(shù)
        void delay(); //延時(shí)子函數(shù)
        void init(); //初始化子函數(shù)
        void main() //主函數(shù)
        {
        init(); //調(diào)用初始化子函數(shù)
        }
        void init()
        {
        uchar i,j; //定義局部變量
        TMOD = 0x01; //使用定時(shí)器0的16位工作模式
        TR0 = 0;
        ET0 = 1;
        EA = 1;
        while(1)
        {
        readkey(); //調(diào)用獲取鍵值子函數(shù),即掃描鍵盤(pán),獲取鍵值
        if((l_keyold!=0xff)(l_key16)) //只有按下0-9的按鍵才處理
        {
        if(j8) //用j來(lái)表示按下的按鍵個(gè)數(shù),最多不超過(guò)8個(gè)
        j++;
        for(i=j-1;i>0;i--) //循環(huán)移位數(shù)據(jù)
        l_tmpdata[i]=l_tmpdata[i-1];
        l_tmpdata[0]=l_key; //移完數(shù)據(jù),尾上補(bǔ)上新輸入的數(shù)據(jù)
        l_key=0xff;
        }
        display(l_tmpdata,j); //輸出獲取的鍵碼值
        }
        }
        void readkey() //獲取按鍵值的子函數(shù)
        {
        uchar i,j,key;
        j=0xfe; //設(shè)定初值
        key=0xff;
        for(i=0;i4;i++) //P0口的低4位循環(huán)輸出0,掃描鍵盤(pán)
        {
        P0=j;
        if((P00xf0)!=0xf0) //判斷是否有按鍵按下,有則:高4位不可能全為1
        {
        key=P0; //讀取P0的值,退出循環(huán),否則繼續(xù)循環(huán)
        break;
        }
        j=_crol_(j,1); //此函數(shù)的功能為:左移循環(huán)移位
        }
        if(key==0xff) //讀取不到P0口的值 比如干擾,則不作任何處理
        {
        l_keyold=0xff;
        TR0=0;
        fmq=1; //按鍵松開(kāi),蜂鳴器停止響
        return;
        }
        if(l_keyold==key) //檢查按鍵是否松開(kāi),相等的話則沒(méi)有松開(kāi)
        return;
        th=freq[2*i];
        tl=freq[2*i+1];
        TR0=1;
        l_keyold=key; //獲取鍵碼,作為放開(kāi)的憑證
        for(i=0;i17;i++) //查表獲取相應(yīng)的16進(jìn)制值存放l_key中
        {
        if(key==key_tab[i])
        {
        l_key=i;
        break;
        }
        }
        }
        void display(uchar *lp,uchar lc)//顯示子函數(shù)
        {
        uchar i;
        P2=0;
        P1=0x07; //點(diǎn)亮第八個(gè)數(shù)碼管
        for(i=0;ilc;i++)
        {
        P2=table[lp[i]];
        delay();
        P2=0;
        if(i==7)
        break;
        P1--;
        }
        }
        void delay()//延時(shí)子函數(shù),即五個(gè)空指令
        {
        _nop_();_nop_();_nop_();_nop_();_nop_();
        }
        void timer0() interrupt 1
        {
        TL0=th;

        TH0=tl; //調(diào)入預(yù)定時(shí)值
        fmq=~fmq; //取反音樂(lè)輸出IO
        }
        您可從 http://www.51hei.com/ziliao/file/dianzq.rar 下載本程序的完整版本
        已經(jīng)測(cè)試成功.

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


        評(píng)論


        相關(guān)推薦

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

        關(guān)閉