历史上的今天
今天是:2024年12月06日(星期五)
2020年12月06日 | 单片机8键电子琴设计
2020-12-06 来源:51hei



单片机源程序如下:
#include #define uchar unsigned char //无符号字符型 宏定义 变量范围0~255 #define uint unsigned int //无符号整型 宏定义 变量范围0~65535 sbit beep = P2^5; //蜂鸣器定义 sbit K1=P1^0;//给P1^0定义,控制DO的发音 sbit K2=P1^1;//给P1^1定义,控制XI的发音 sbit K3=P1^2;//给P1^2定义,控制LA的发音 sbit K4=P1^3;//给P1^3定义,控制SO的发音 sbit K5=P3^4;//给P3^4定义,控制FA的发音 sbit K6=P3^5;//给P3^5定义,控制MI的发音 sbit K7=P3^6;//给P3^6定义,控制RE的发音 sbit K8=P3^7;//给P3^7定义,控制DO的发音 sbit K9=P2^0;//音乐播放按键 uchar flag_en = 0; //开始放歌 uchar flag_i = 0; //数码管段选定义 0 1 2 3 4 5 6 7 8 9 uchar code smg_du[]={0xde,0x90,0xcd,0xd9,0x93,0x5b,0x5f,0xd0,0xdf,0xdb // A B C D E F 不显示 }; //断码 uchar m,n; uchar code T[49][2]={{0,0}, {0xF8,0x8B},{0xF8,0xF2},{0xF9,0x5B},{0xF9,0xB7},{0xFA,0x14},{0xFA,0x66},{0xFA,0xB9},{0xFB,0x03},{0xFB,0x4A},{0xFB,0x8F},{0xFB,0xCF},{0xFC,0x0B}, {0xFC,0x43},{0xFC,0x78},{0xFC,0xAB},{0xFC,0xDB},{0xFD,0x08},{0xFD,0x33},{0xFD,0x5B},{0xFD,0x81},{0xFD,0xA5},{0xFD,0xC7},{0xFD,0xE7},{0xFE,0x05}, {0xFE,0x21},{0xFE,0x3C},{0xFE,0x55},{0xFE,0x6D},{0xFE,0x84},{0xFE,0x99},{0xFE,0xAD},{0xFE,0xC0},{0xFE,0x02},{0xFE,0xE3},{0xFE,0xF3},{0xFF,0x02}, {0xFF,0x10},{0xFF,0x1D},{0xFF,0x2A},{0xFF,0x36},{0xFF,0x42},{0xFF,0x4C},{0xFF,0x56},{0xFF,0x60},{0xFF,0x69},{0xFF,0x71},{0xFF,0x79},{0xFF,0x81} }; uchar code music1[][2]={{0,4}, //青花瓷 {0,4},{24,4},{24,4},{21,4},{19,4},{21,4},{14,8},{19,4},{21,4},{24,4},{21,4},{19,16},{0,4},{24,4},{24,4},{21,4},{19,4},{21,4},{12,8},{19,4},{21,4},{24,4},{19,4},{17,16},{0,4},{17,4},{19,4},{21,4}, {24,4},{26,4},{24,4},{22,4},{24,4},{21,4},{21,4},{19,4},{19,16},{0,4}, {17,4},{19,4},{17,4},{17,4},{19,4},{17,4},{19,4},{19,4},{21,8},{24,4},{21,4},{21,12},{0,4},{24,4},{24,4},{21,4},{19,4},{21,4},{14,8},{19,4},{21,4},{24,4},{21,4},{19,16},{0,4},{24,4},{24,4},{21,4}, {19,4},{21,4},{12,8},{19,4},{21,4},{24,4},{19,4},{17,16},{0,4},{17,4},{19,4},{21,4},{24,4},{26,4},{24,4},{22,4},{24,4},{21,4},{21,4},{19,4},{19,12},{12,4},{21,8},{19,4},{19,8},{17,16}, {0xFF,0xFF}}; uchar code music2[][2]={{0,4}, //生日快乐 {17,6},{17,2},{19,8},{17,8},{22,8},{21,16}, {17,6},{17,2},{19,8},{17,8},{24,8},{22,16},{17,6},{17,2},{29,8},{26,8},{22,8},{21,8},{19,8},{27,6},{27,2},{26,8},{22,8},{24,8},{22,16}, {0xFF,0xFF}}; uchar code music3[][2]={{0,4}, //爱情买卖 {22,4},{22,4},{17,4},{15,4},{15,4},{17,12}, {15,4},{15,2},{17,2},{15,4},{13,4},{13,4},{15,12},{0,4}, {20,4},{20,4},{20,4},{17,4},{20,4},{20,4},{20,4},{17,4}, {22,4},{17,4},{17,4},{15,4},{15,4},{17,12}, {22,4},{22,4},{17,4},{15,4},{15,4},{17,12}, {15,4},{15,2},{17,2},{15,4},{13,4},{13,4},{15,12}, {20,4},{20,4},{20,2},{17,2},{17,4},{20,4},{20,4},{20,2},{17,2},{17,2},{17,2}, {24,4},{20,4},{20,2},{17,2},{17,4},{20,4},{22,12}, {17,4},{22,4},{25,4},{25,4},{17,4},{22,4},{25,8}, {24,4},{22,2},{24,2},{22,4},{20,4},{15,4},{17,12}, {15,4},{15,4},{15,4},{10,4},{15,4},{17,4},{20,8}, {17,4},{24,4},{24,4},{20,4},{15,4},{17,12}, {17,4},{22,4},{25,4},{25,4},{17,4},{22,4},{25,8}, {29,4},{27,2},{29,2},{27,4},{25,4},{25,4},{27,12}, {29,4},{29,2},{27,4},{25,4},{27,6},{27,2},{25,4},{24,4}, {20,4},{20,2},{17,2},{20,4},{20,2},{22,2},{22,16}, {0xFF,0xFF}}; void delay(uchar p) { uchar i,j; for(;p>0;p--) for(i=181;i>0;i--) for(j=181;j>0;j--); } void pause() { uchar i,j; for(i=150;i>0;i--) for(j=150;j>0;j--); } /***********************1ms延时函数*****************************/ void delay_1ms(uint q) { uint i,j; for(i=0;i } /******************按键程序*************************/ void key() //按键程序 { if(K1==0) { delay_1ms(10); //按键去抖动 if(K1==0) { P0=smg_du[0];//使数码管显示该音调的字符 while(!K1) { m = 8; TR0 = 1; //打开定时器 }//使蜂鸣器发出相应频率的声音; TR0 = 0; //关闭定时器 } } if(K2==0) { delay_1ms(10); //按键去抖动 if(K2==0) { P0=smg_du[1];//使数码管显示该音调的字符 while(!K2) { m = 9; TR0 = 1; //打开定时器 }//使蜂鸣器发出相应频率的声音; TR0 = 0; //关闭定时器 } } if(K3==0) { delay_1ms(10); //按键去抖动 if(K3==0) { P0=smg_du[2];//使数码管显示该音调的字符 while(!K3) { m = 10; TR0 = 1; //打开定时器 }//使蜂鸣器发出相应频率的声音; TR0 = 0; //关闭定时器 } } if(K4==0) { delay_1ms(10); //按键去抖动 if(K4==0) { P0=smg_du[3];//使数码管显示该音调的字符 while(!K4) { m = 11; TR0 = 1; //打开定时器 }//使蜂鸣器发出相应频率的声音; TR0 = 0; //关闭定时器 } } if(K5==0) { delay_1ms(10); //按键去抖动 if(K5==0) { P0=smg_du[4];//使数码管显示该音调的字符 for(j=0;j<120;j++);
史海拾趣
|
如图所示,这是我从网上看到的一个双稳态电路(图中要实现的话应该把电容C1加大),有附带解释如下:《假设Q1的G极输入是高电平,Q1导通,输出低电平,低电平接到Q2的G极,Q2截止,Q2输出高电平,所以Q3也截止,LED灯灭。此时由于Q1输出端D极为低电平 ...… 查看全部问答> |
|
问一下,用干一个电池将电压升到3.3V,电流为200mA,用什么芯片为好! 用干一个电池将电压升到3.3V,电流为200mA,用什么芯片为好?以前一直在用max1795,max856之类,但总感觉MAXIM公司的芯片太贵,想找一个性价比好的芯片,有谁用过,麻烦告诉一下,谢谢!… 查看全部问答> |
|
多路相关时钟产生器 任务描述 产生出4~6路不同的时钟 输出频率最高达1GHz 输出频率可编程设置,多路时钟之间相位具有参考性 时钟单端输出,幅度不小于1Vpp… 查看全部问答> |
|
PWM输出里面的两句: PCA0CPM0 |= 0x40; // Set ECOM0 if it is \'0\' ............ PCA0CPM0 &= ~0x40; // Clear ECOM0 帮我解析一下两个运算的意思吧,谢谢了… 查看全部问答> |
|
这一半年来,从一名学生转变成了研发工程师,项目比较紧,涉足的领域也是全新的,也没有什么人带,靠自己不断折腾和琢磨终于把公司的项目做完了。 由于自己一贯喜欢DIY点自己感兴趣的东西,而恰好eeworld提供了这样一个机会,于是我毫不犹豫的参加 ...… 查看全部问答> |




