新聞中心

        EEPW首頁 > 嵌入式系統 > 設計應用 > 單片機實現簡單音樂發生器

        單片機實現簡單音樂發生器

        作者: 時間:2016-11-18 來源:網絡 收藏
        /*主程序*/

        void main()

        本文引用地址:http://www.104case.com/article/201611/315961.htm

        {

        uchar key,k;

        TMOD = 0x01;// T0,工作方式1

        ET0 = 1;

        EA = 1;

        while(1)

        {

        P1 = 0xf0;//發全0行掃描碼

        if ((P1&0xf0)!=0xf0)//若有鍵按下

        {

        delay();//延時去抖動

        if ((P1&0xf0)!=0xf0)//延時后再判斷一次,去除抖動影響

        {

        key = getkey();//調用鍵盤掃描函數

        //根據獲取的按鍵位置得到k值

        switch(key)

        {

        case 0x11:// 1行1列

        k = 0;

        break;

        case 0x21:// 1行2列

        k = 1;

        break;

        case 0x41:// 1行3列

        k = 2;

        break;

        case 0x81:// 1行4列

        k = 3;

        break;

        case 0x12:// 2行1列

        k = 4;

        break;

        case 0x22:// 2行2列

        k = 5;

        break;

        case 0x42:// 2行3列

        k = 6;

        break;

        case 0x82:// 2行4列

        k = 7;

        break;

        case 0x14:// 3行1列

        k = 8;

        break;

        case 0x24:// 3行2列

        k = 9;

        break;

        case 0x44:// 3行3列

        k = 10;

        break;

        case 0x84:// 3行4列

        k = 11;

        break;

        case 0x18:// 3行4列

        k = 12;

        break;

        case 0x28:// 3行4列

        k = 13;

        break;

        case 0x48:// 3行4列

        k = 14;

        break;

        case 0x88:// 3行4列

        k = 15;

        break;

        default:

        break;

        }

        P20 = ~P20;//反相

        /*根據所得的k值設定計數器1的計數初值*/

        STH0 = tab[k]/256;

        STL0 = tab[k]%256;

        TR0 = 1;//開始計數

        P1 = 0xf0;//發全0行掃描碼

        while ((P1&0xf0)!=0xf0)//若沒有松開按鍵

        {

        P1 = 0xf0;

        }

        TR1 = 0;//若按鍵松開,則停止計數,不產生脈沖輸出

        }

        }

        }

        }



        關鍵詞: 單片機音樂發生

        評論


        技術專區

        關閉
        主站蜘蛛池模板: 乐亭县| 湖口县| 察隅县| 当阳市| 松原市| 即墨市| 西平县| 常德市| 榆林市| 福海县| 无为县| 温泉县| 正定县| 公主岭市| 石屏县| 民勤县| 汽车| 滦平县| 迁西县| 繁昌县| 沭阳县| 新干县| 无为县| 吉安市| 秦皇岛市| 托克托县| 刚察县| 永安市| 外汇| 蓝田县| 固镇县| 日喀则市| 兖州市| 祁连县| 潜山县| 谷城县| 科尔| 新河县| 柘荣县| 平远县| 天峻县|