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

標題: 單片機制作簡易電子琴 [打印本頁]

作者: qinchen    時間: 2018-11-28 17:39
標題: 單片機制作簡易電子琴
#include <reg51.h>
#include <intrins.h>

#define uint unsigned int
#define uchar unsigned char


sbit SPK = P3^7;                  //P3.7外接揚聲器
uint FreqTemp;
unsigned int code Freqtab[] = { //定時半周期的初始值
     64021,64103,64260,64400,      //低音3 4 5 6
     64524,64580,64684,64777,      //低音7,中音1 2 3
     64820,64898,64968,65030,      //中音4 5 6 7
     65058,65110,65157,65178};     //高音1 2 3 4



uchar Keyscan(void)             /* 按鍵掃描程序 */
{
     uchar i, j, temp, Buffer[4] = {0xfe, 0xfd, 0xfb, 0xf7};
     for(j = 0; j < 4; j++) {    //循環四次,掃描四行
       P1 = Buffer[j];           //在低四位分別輸出一個低電平
       _nop_();
       temp = 0x80;              //計劃先讀出P1.7位
       for(i = 0; i < 4; i++) { //循環四次,檢查四列
         if(!(P1 & temp)) {      //從高四位,截取1位
           return (i + j * 4); //返回取得的按鍵值
         }
         temp >>= 1;             //換右邊一位
     } }
     return 16;                  //沒有鍵按下就返回16
}



void Display(uchar k)
{
     P2 = ((k / 10) << 4) + (k % 10);
}

void main()
{
     uchar Key_Value = 16, Key_Temp1, Key_Temp2;//讀出的鍵值
     TMOD = 0x01;                   //T0定時方式1
     ET0 = 1;                       //允許T0中斷
     EX0 = 1;                       //允許X0中斷

     EA = 1;


     while(1)

{
       TR0 = 0;                     //暫不發音
       Key_Temp1 = Keyscan();       //讀入按鍵

       if(Key_Temp1 != 16)

{        
         Display(Key_Value);        //顯示鍵值、延時消抖
         Key_Temp2 = Keyscan();     //再讀一次

         if (Key_Temp1 == Key_Temp2) //兩次相等

{


           Key_Value = Key_Temp1; //就確認下來
           FreqTemp = Freqtab[Key_Value]; //根據鍵值,取出定時半周期的初始值
           Display(Key_Value);      //顯示
           TR0 = 1;                 //啟動定時器,發音
           while (Keyscan() < 16); //等待釋放
           SPK = 1;                 //停止發音

}

}

}

}



void T0_INT(void) interrupt 1      /* 按鍵中斷 */
{
     TL0 = FreqTemp;                //載入定時半周期的初始值
     TH0 = FreqTemp >> 8;
     SPK = ~SPK;                    //發音

}







歡迎光臨 (http://www.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 日韩精品一区二区三区中文字幕 | 成人国产精品 | 成人免费在线观看 | 日韩三级在线 | 精品视频在线播放 | 国产亚洲精品美女久久久久久久久久 | www国产亚洲精品久久网站 | 国产成人精品一区二区三区四区 | 国产精品成人在线观看 | 影视一区| 超碰97免费在线 | 久久亚洲春色中文字幕久久久 | 久久999| 91精品久久久久久综合五月天 | 国产在线一区观看 | 亚洲激情在线视频 | 国产乱人伦 | 黄网站在线观看 | 久久在线 | 手机在线观看 | 正在播放亚洲 | 少妇精品久久久久久久久久 | 久久精品国产v日韩v亚洲 | 中文字幕精品一区久久久久 | 日韩在线播放网址 | 久久久精品国产 | 久久精品国产精品青草 | 国产99视频精品免视看9 | 日韩精品久久久久久 | 日韩中文字幕 | 九九热在线精品视频 | 国产97人人超碰caoprom | 日韩色视频 | 本地毛片| 国产精品99久久久久久动医院 | 精品一区二区三区在线观看国产 | 香蕉视频91 | 一级毛片免费视频 | 亚洲高清在线 | 成人a免费 | 特级黄一级播放 |