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

立即注冊 登錄
返回首頁

uid:435129的個人空間

日志

單片機制作電子琴

已有 804 次閱讀2018-11-28 17:37 | 單片機電子琴

 #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;                    //發音

}


路過

雞蛋

鮮花

握手

雷人

評論 (0 個評論)

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

Powered by 單片機教程網

返回頂部
主站蜘蛛池模板: 99精品久久久 | 精品不卡| 日韩精品一区二区三区在线观看 | 在线观看黄视频 | 日韩av免费看 | 日韩国产精品一区二区三区 | 国产精品日韩欧美一区二区三区 | 国产一区亚洲二区三区 | 黄页网址在线观看 | 国产精品久久久久久久久久东京 | aaa一区 | 午夜视频免费在线观看 | 日韩欧美一区二区三区免费观看 | 精品网站999 | 婷婷91| 九九在线视频 | 国产一区二区在线播放 | 亚洲日韩中文字幕一区 | 日本视频在线播放 | 三级在线观看 | 久热9 | 本道综合精品 | 亚洲香蕉| 亚洲精品一区中文字幕乱码 | 精品视频国产 | 手机三级电影 | 亚洲精品成人 | 国产一区二区精品在线 | 国产精品成人久久久久 | 欧美视频三区 | 日韩精品1区2区3区 国产精品国产成人国产三级 | 一区二区高清在线观看 | 毛片免费观看 | 91亚洲精品国偷拍自产在线观看 | 视频一区中文字幕 | 日韩高清电影 | www.久久久久久久久 | 操久久| 高清免费av| 日韩一区二区三区在线看 | 午夜影院在线观看版 |