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

標題: 單片機電子琴設計 [打印本頁]

作者: wy1326682790    時間: 2018-7-3 23:15
標題: 單片機電子琴設計
#include<reg52.h>
#define keyport P1
#define uchar unsigned char
#define uint unsigned int
uchar high,low;           //定時器預裝值的高8位和低8位
sbit speak=P3^0;
sbit gao=P3^5;
sbit di=P3^6;
sbit zdbf=P3^7;
uchar yinjie=1;
uchar time;
uchar n=0;
uchar bo=0;
uchar code fre[][2]= {   
                                                0x8c,0xf8,
                                                0x5b,0xf9,
                                                0x15,0xfa,
                                                0x67,0xfa,
                                                0x90,0xfb,
                                                0xae,0xfb,
                                                0x0c,0xfc,        //低音
                                                  0x44,0xfc,
                                                0xac,0xfc,
                                                0x09,0xfd,
                                                0x34,0xfd,
                                                0x82,0xfd,
                                                0xc2,0xfd,
                                                0x06,0xfe,         //中音
                                                0x22,0xfe,
                                                0x56,0xfe,
                                                0x85,0xfe,
                                                0x9a,0xfe,
                                                0xc1,0xfe,
                                                0xe4,0xfe,
                                                0x03,0xff,                  //高音
                                          };
void delay(uint );
void ITimer0(void);//定時器初始化
void key(void);
void dtxs(int,int);
void song()
{
TH0=high;
TL0=low;
TR0=1;
delay(time*240);                       
}
void yinyue()
{
uchar code hls[]={  5,2,2, 3,2,1, 5,2,1, 1,3,4, 6,2,2, 1,3,2, 5,2,4, 5,2,2, 1,2,1, 2,2,1 ,3,2,2 ,2,2,1,
                                        1,2,1 ,2,2,6, 5,2,2, 3,2,1, 5,2,1, 1,3,3, 7,2,1, 6,2,2, 1,3,2, 5,2,4, 5,2,2,
                    2,2,1, 3,2,1, 4,2,3, 7,1,1, 1,2,6, 6,2,2, 1,3,2, 1,3,4, 7,2,2, 6,2,1, 7,2,1, 1,3,4 ,6,2,1,
                                        7,2,1, 1,3,1 ,6,2,1, 6,2,1 ,5,2,1 ,3,2,1, 1,2,1, 2,2,6, 5,2,2, 3,2,1,
                                           1,2,1, 1,3,3, 7,2,1, 6,2,2, 1,3,2, 5,2,4, 5,2,2, 2,2,1, 3,2,1, 4,2,3, 7,1,1, 1,2,6  
                                };
        uchar m;
        n=0;
      while(n<174)
          {
                  m=hls[n]+7*(hls[n+1]-1)-1;
                high=fre[m][1];
                low=fre[m][0];
                time=hls[n+2];
                n=n+3;
                song();               
           }
}                                       
void main (void)
{
        uchar num;
        ITimer0();
        speak=0;
        while(1)
        {
                key();
                switch(keyport)
                {
                        case 0xfe:num=1;break;
                        case 0xfd:num=2;break;
                        case 0xfb:num= 3;break;
            case 0xf7:num= 4;break;
            case 0xef:num= 5;break;
            case 0xdf:num= 6;break;
            case 0xbf:num= 7;break;
            case 0x7f:num= 8;break;
            default:num= 0;break;
                }
                if(num==0)
                {
                        TR0=0;
                        speak=0;
                }
                else
                {
                        high=fre[7*yinjie+num-1][1];
                        low=fre[7*yinjie+num-1][0];
                        TR0=1;
                }
                dtxs(yinjie,num);
        }
}
void ITimer0(void)
{
TMOD |= 0x01;          //使用模式1,16位定時器,使用"|"符號可以在使用多個定時器時不受影響                    
EA=1;            //總中斷打開
ET0=1;           //定時器中斷打開
TR0=1;           //定時器開關打開
}
void Timer0_isr(void) interrupt 1
{
TH0=high;
TL0=low;
speak=!speak;
if(zdbf==0)
     {
                 delay(100);
                if(zdbf==0)
                {
                           bo++;
                          if(bo/2==1)
                                {        delay(100);
                                        if(n<174)n=500;                        //n賦值大于174,跳出while,停止音樂
                                        else n=0;
                                        dtxs(3,0);
                                }
                                if(bo%2==0)
                                {        delay(100);
                                        n=500;                        //n賦值大于174,跳出while,停止音樂
                                }
                }
        }/**/
}
void key()
{
        if(zdbf==0)
               {delay(100);
                  if(zdbf==0)       
                        yinyue();
                }
        if(gao==0)
        {
                delay(100);
                if(gao==0)
                {
                        delay(100);
                        if(yinjie==2)
                                yinjie=1;
                        else yinjie=2;
                }
        }
    if(di==0)
        {
                delay(100);
                if(di==0)
                {
                        delay(100);
                        if(yinjie==0)
                                yinjie=1;
                        else yinjie=0;
                }
        }
}
void delay(unsigned int x)
{      
                int a,b;
                   for(a=x;a>0;a--)
                   for(b=110;b>0;b--);
}
void dtxs(k,l)//k是按鍵號,l是工作方式
{
char seg[14]={0x6f,0x0a,0xe3,0xcb,0x8e,0xcd,
                           0xed,0x0b,0xef,0xcf,0xaf,0xec,0x65,0xea};
  P2=0x01;//選擇第一個數碼管
  P0=seg[l];//顯示按鍵號
  delay(4);
  P2=0x02;//選擇第二個數碼管
  P0=seg[k+10];//顯示工作方式
  delay(4);
                        }


hjkh.png (10.51 KB, 下載次數: 39)

hjkh.png

作者: faridzled    時間: 2018-7-4 08:08
thanks for sharing




歡迎光臨 (http://www.zg4o1577.cn/bbs/) Powered by Discuz! X3.1
主站蜘蛛池模板: 日本成人片在线观看 | 日韩中文字幕免费在线观看 | 性色综合 | av性色全交蜜桃成熟时 | 91 久久 | 美日韩免费视频 | 日韩一区二区免费视频 | 国产精品一区二区三区在线 | 欧美无乱码久久久免费午夜一区 | 欧美一级欧美三级在线观看 | 一区二区日韩 | 日韩av在线一区二区 | 毛片久久久 | 亚洲成人三级 | 成人av高清| 特a毛片| 国产高清视频 | 日韩图区 | 综合色播 | 国产成人精品一区二区三区在线观看 | 亚洲精品三级 | 在线观看亚洲专区 | 国产精品高潮呻吟久久aⅴ码 | 成人免费观看男女羞羞视频 | 在线一区| 免费天天干 | 国产色婷婷精品综合在线手机播放 | 蜜桃传媒一区二区 | 日韩在线免费播放 | 久久99精品久久久久久狂牛 | 天天天天操 | 欧美国产精品一区二区三区 | 国产日韩欧美在线观看 | 国产精品久久久久久久久免费软件 | 丝袜美腿av | 全免费a级毛片免费看视频免费下 | 国产一伦一伦一伦 | 婷婷久久五月 | 久久精品国产亚洲夜色av网站 | 亚洲一区二区三区免费视频 | 亚洲欧美bt |