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

 找回密碼
 立即注冊

QQ登錄

只需一步,快速開始

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

基于單片機做的回放電子琴程序問題

[復制鏈接]
跳轉到指定樓層
樓主
ID:741837 發表于 2020-5-4 23:53 來自手機 | 只看該作者 回帖獎勵 |倒序瀏覽 |閱讀模式
不想用芯片實現回放功能,我想用數組來存放按過的鍵號,實現回放,寫了個程序沒有錯誤和警告,但是仿真的時候沒有按鍵音,也不能回放,不知道是不是哪里沒有出來
請大佬看看,指點迷津
#include<reg51.h>
sbit P14=P1^4;
sbit P15=P1^5;
sbit P16=P1^6;
sbit P17=P1^7;
unsigned char keyval;
sbit sound=P3^0;
sbit P31=P0^0;
sbit P34=P3^4;
sbit P35=P3^5;
unsigned int C;
unsigned int f;
unsigned int s;
//低音的音頻
#define l_dao 262
#define l_re 286
#define l_mi 311
#define l_fa 349
#define l_sao 392
#define l_la 440
#define l_xi 494
//中音的音頻
#define dao 523
#define re 587
#define mi 659
#define fa 698
#define sao 784
#define la 880
#define xi 987
//高音的音頻
#define h_dao 1046
#define h_re 1174
#define h_mi 1318
#define h_fa 1396
#define h_sao 1567
#define h_la 1760
#define h_xi 1975
/**延時子程序函數*/
void delay20ms(void)
{
        unsigned char i,j;
    for(i=0;i<100;i++)
        for(j=0;j<60;j++)
        ;
}
//延時200ms
void delay()
{
        unsigned char i,j;
    for(i=0;i<100;i++)
        for(j=0;j<60;j++)
        ;
}
//輸出音階
void Output_Sound(void)
{
        C=(50000/f)*10;
        TH0=(8192-C)/32;
        TL0=(8192-C)%32;
        TR0=1;
        for(s=0;s<2;s++)
        delay();
        TR0=0;
        sound=1;
        keyval=0xff;
}
//主程序
void main()
{
        unsigned char n,m,k,x,z;
        unsigned char pu[41];
        while(1)
        {
                m=0;
                n=0;
                k=0;
                x=0;
                EA=1;
                ET0=1;
                ET1=1;
        
                TMOD=0x10;
                TH1=(65536-500)/256;
                TL0=(65536-500)%256;
               
                while(n!=1&&m<40)
                {                TR1=1;
                        P34=0;
                        P35=1;
                        switch(keyval)
                        {
                                case 1:f=dao;
                                Output_Sound();
                                pu[m]=dao;
                                m++;
                                break;
                                case 2:f=l_xi;
                                Output_Sound();
                                pu[m]=l_xi;
                                m++;
                                break;
                                case 3:f=l_la;
                                Output_Sound();
                                pu[m]=l_la;
                                m++;
                                break;
                                case 4:f=l_sao;
                                Output_Sound();
                                pu[m]=l_sao;
                                m++;
                                break;
                                case 5:f=sao;
                                Output_Sound();
                                pu[m]=sao;
                                m++;
                                break;
                                case 6:f=fa;
                                Output_Sound();
                                pu[m]=fa;
                                m++;
                                break;
                                case 7:f=mi;
                                Output_Sound();
                                pu[m]=mi;
                                m++;
                                break;
                                case 8:f=re;
                                Output_Sound();
                                pu[m]=re;
                                m++;
                                break;
                                case 9:f=h_dao;
                                Output_Sound();
                                pu[m]=h_dao;
                                m++;
                                break;
                                case 10:f=h_dao;
                                Output_Sound();
                                pu[m]=h_dao;
                                m++;
                                break;
                                case 11:f=xi;
                                Output_Sound();
                                pu[m]=xi;
                                m++;
                                break;
                                case 12:f=la;
                                Output_Sound();
                                pu[m]=la;
                                m++;
                                break;
                                case 13:f=h_la;
                                Output_Sound();
                                pu[m]=h_la;
                                m++;
                                break;
                                case 14:f=h_sao;
                                Output_Sound();
                                pu[m]=h_sao;
                                m++;
                                break;
                                case 15:f=h_fa;
                                Output_Sound();
                                pu[m]=h_fa;
                                m++;
                                break;
                                case 16:f=h_mi;
                                Output_Sound();
                                pu[m]=h_mi;
                                m++;
                                break;
                                case 17:n=1;
                                break;

                        }
                        

                }
        while(pu[k]!=0)
                {
                        P34=1;
                        P35=0;
                        f=pu[k];
                        Output_Sound();
                        k++;
                }
                for(z=0;z<41;z++)
                {
                pu[z]=0;
                }
        }
}
void Time0_serve(void) interrupt 1 using 1
{
    TH0=(8192-C)/32;
        TL0=(8192-C)%32;
        sound=!sound;
}
//定時器t1中斷,進行掃描 判斷健位
void time1_serve(void) interrupt 3 using 2
{
        TR1=0;
        P1=0xf0;
        P2=0xff;
        if((P1&0xf0)!=0xf0)
        {
                delay20ms();
                if((P1&0xf0)!=0xf0)
                {
                        P1=0xfe;//第一行置位低電平
                        if(P14==0)
                        keyval=1;
                        if(P15==0)
                        keyval=2;
                        if(P16==0)
                        keyval=3;
                        if(P17==0)
                        keyval=4;
                        P1=0xfd;//第二行置位低電平
                        if(P14==0)
                        keyval=5;
                        if(P15==0)
                        keyval=6;
                        if(P16==0)
                        keyval=7;
                        if(P17==0)
                        keyval=8;
                        P1=0xfb;//disanhang
                        if(P14==0)
                        keyval=9;
                        if(P15==0)
                        keyval=10;
                        if(P16==0)
                        keyval=11;
                        if(P17==0)
                        keyval=12;
                        P1=0xf7;//dishihang
                        if(P14==0)
                        keyval=13;
                        if(P15==0)
                        keyval=14;
                        if(P16==0)
                        keyval=15;
                        if(P17==0)
                        keyval=16;
                }
        }
        if(P31==0)
        {
                delay20ms();
                if(P31==0)
                keyval=17;

        }
        TR1=1;
        TH1=(65536-500)/256;
        TL1=(65536-500)%256;
}






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

使用道具 舉報

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

本版積分規則

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

Powered by 單片機教程網

快速回復 返回頂部 返回列表
主站蜘蛛池模板: 日韩免费中文字幕 | 精品国产三级 | 妞干网av | 亚洲福利精品 | 日韩成人在线看 | av网站免费 | 一区二区三区四区在线免费观看 | 免费成人在线网站 | 成人国产免费视频 | 日韩一区二区福利视频 | 欧美日韩久久久久 | 国产一区二区 | 成人精品鲁一区一区二区 | 国产一区二区三区视频免费观看 | 日韩成人免费视频 | 日韩久草| 欧美日韩不卡合集视频 | 国产毛片av | 国产精品免费一区二区三区 | 99久久中文字幕三级久久日本 | 91免费入口| 美女在线观看av | 日韩在线视频免费观看 | 男人的天堂久久 | 一级黄色片在线免费观看 | 国产精品波多野结衣 | 天天操天天插 | 欧美成人免费在线视频 | 精品1区 | 欧美不卡视频 | 国产一二区视频 | 日韩精品 电影一区 亚洲 | 毛片免费看的 | 伊人伊人 | 青青草在线视频免费观看 | 亚洲精品一区国产精品 | 国产性色视频 | 欧美天堂| 国产在线观看一区二区 | 精品久久久久一区二区国产 | 97狠狠干 |