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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

搜索
查看: 2577|回復: 0
打印 上一主題 下一主題
收起左側

單片機8鍵電子琴

[復制鏈接]
跳轉到指定樓層
樓主
#include <reg52.H>
unsigned char temp;
unsigned char key;
unsigned char i,j;
unsigned char STH0;
unsigned char STL0;
unsigned int code tab[]=  {64820,64898,64968,65030,65058,65110,65157,65178};  //音符表 do re mi fa sol la xi duo

unsigned int aa;

sbit K1=P1^0;  //音符按鍵
sbit K2=P1^1;
sbit K3=P1^2;
sbit K4=P1^3;
sbit K5=P1^4;
sbit K6=P1^5;
sbit K7=P1^6;
sbit K8=P1^7;

sbit Speak=P2^0; //喇叭
/***********************1ms*****************************/
void delay_1ms(unsigned int q)
{
        unsigned int i,j;
        for(i=0;i<q;i++)
                for(j=0;j<120;j++);
}

void main(void)   //主程序
{                         
    TMOD=0x01;
        ET0=1;
        EA=1;
        Speak=0;
        while(1)
                {
           if(!K1)               
                    {
                           delay_1ms(20);//延時去抖
                                  if(!K1)
                                  {
                                     aa=0;
                     key=0;//將音樂的值賦值給定時器以便發出對應的聲音
                                         P0=0xC0;//顯示0
                     STH0=tab[key]/256;        //計算音符對應的定時器計數值
                                     STL0=tab[key]%256;
                                     TR0=1;
                                     while(!K1)
                                   ;
                  }
            }
                if(!K2)               
                    {
                           delay_1ms(20);//延時去抖
                                  if(!K2)
                                  {
                                    aa=0;
                    key=1;
                                        P0=0xF9;//顯示1
                    STH0=tab[key]/256;        //計算音符對應的定時器計數值
                                   STL0=tab[key]%256;
                                   TR0=1;
                                   while(!K2)
                                   ;
                  }
           }
                if(!K3)               
                    {
                           delay_1ms(20);//延時去抖
                                  if(!K3)
                                  {
                                   aa=0;
                   key=2;
                                   P0=0xA4;//顯示2
                    STH0=tab[key]/256;        //計算音符對應的定時器計數值
                                   STL0=tab[key]%256;
                                   TR0=1;
                                   while(!K3)
                                   ;
                  }
             }               
                if(!K4)               
                    {
                          delay_1ms(20);//延時去抖
                           if(!K4)
                                 {
                                  aa=0;
                  key=3;
                                  P0=0xB0;//顯示3
                  STH0=tab[key]/256;        //計算音符對應的定時器計數值
                                   STL0=tab[key]%256;
                                   TR0=1;
                                   while(!K4)
                                   ;
                 }
              }               
                if(!K5)               
                    {
                           delay_1ms(20);//延時去抖
                                  if(!K5)
                                  {
                                   aa=0;
                   key=4;
                                        P0=0x99;//顯示4
                   STH0=tab[key]/256;        //計算音符對應的定時器計數值
                                   STL0=tab[key]%256;
                                   TR0=1;
                                   while(!K5)
                                   ;
                  }
              }
                if(!K6)               
                    {
                         delay_1ms(20);//延時去抖
                         if(!K6)
                          {
                            aa=0;
                key=5;
                                P0=0x92;//顯示5
                STH0=tab[key]/256;        //計算音符對應的定時器計數值
                                STL0=tab[key]%256;
                                TR0=1;
                                while(!K6)
                                ;
               }
            }
                if(!K7)               
                    {
                         delay_1ms(20);//延時去抖
                        if(!K7)
                        {
                          aa=0;
              key=6;
                          P0=0x82;//顯示6
              STH0=tab[key]/256;        //計算音符對應的定時器計數值
                          STL0=tab[key]%256;
                          TR0=1;
                          while(!K7)
                          ;
            }
           }
                if(!K8)               
                    {
                         delay_1ms(20);//延時去抖
                         if(!K8)
                                {                                 
                                 aa=0;
                 key=7;
                                 P0=0xF8;//顯示7
                 STH0=tab[key]/256;        //計算音符對應的定時器計數值
                                 STL0=tab[key]%256;
                                 TR0=1;
                                 while(!K8)
                                 ;
                }
             }
                 if(aa<50000)aa++;
                 delay_1ms(20);               
                 if(aa>=150) //延時時間數字越大越久
                    {
                         TR0=0;
                     Speak=0;//當按鍵彈起的時候,蜂鳴器停止發音
                        }       
             }                       
         }

void t0(void) interrupt 1 using 0 {     //定時器T0中斷服務函數
        TH0=STH0;
        TL0=STL0;
        Speak=~Speak;                                  //產生方波
}

TIM截圖20180707124949.png (22.11 KB, 下載次數: 45)

TIM截圖20180707124949.png

評分

參與人數 1黑幣 +50 收起 理由
admin + 50 共享資料的黑幣獎勵!

查看全部評分

分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏1 分享淘帖 頂 踩
回復

使用道具 舉報

您需要登錄后才可以回帖 登錄 | 立即注冊

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表