历史上的今天
返回首页

历史上的今天

今天是: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                for(j=0;j<120;j++);

}


/******************按键程序*************************/

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];//使数码管显示该音调的字符

推荐阅读

史海拾趣

Easy Magnet Corp公司的发展小趣事

Easy Magnet Corp公司深知人才是企业发展的核心动力。因此,公司注重人才培养和引进,建立了一支高素质、专业化的研发团队。同时,公司还为员工提供了良好的工作环境和福利待遇,激发了员工的工作热情和创造力。这些举措为公司的发展提供了坚实的人才保障。

Golledge Electronics公司的发展小趣事

Easy Magnet Corp公司深知人才是企业发展的核心动力。因此,公司注重人才培养和引进,建立了一支高素质、专业化的研发团队。同时,公司还为员工提供了良好的工作环境和福利待遇,激发了员工的工作热情和创造力。这些举措为公司的发展提供了坚实的人才保障。

FILTRAN公司的发展小趣事

随着环保意识的提高,Easy Magnet Corp公司开始关注产品的环保性能。公司采用环保材料和生产工艺,减少了对环境的污染。同时,公司还积极参与环保公益活动,倡导绿色消费理念。这些举措不仅提升了公司的社会形象,也吸引了更多注重环保的消费者。

Data Delay Devices公司的发展小趣事

在竞争激烈的电子行业中,质量管理是企业生存和发展的关键。DDD公司高度重视产品质量管理,建立了完善的质量管理体系和检测机制。公司从原材料采购、生产过程到成品检验都实行严格的质量控制,确保每一件产品都符合客户的要求和行业标准。这种对质量的执着追求使得DDD公司的产品在市场上赢得了良好的口碑和信誉。

DOMINANT公司的发展小趣事

随着公司业务的不断发展,统明亮开始积极拓展全球市场。它通过与国内外知名企业的合作,不断提升自身的品牌影响力和市场竞争力。同时,统明亮还积极参加各类国际展会和交流活动,与全球各地的客户建立了紧密的合作关系。这些努力使得统明亮在全球LED市场中的份额不断扩大,其品牌影响力也得到了进一步提升。

请注意,由于篇幅限制,以上仅为三个简要故事。如果需要更多关于DOMINANT公司的发展故事,建议查阅相关报道和资料。

Elytone Electronics Co Ltd公司的发展小趣事

进入XXXX年代,随着电子技术的飞速发展,Elytone公司意识到技术创新是企业持续发展的关键。公司投入大量资金引进先进设备和研发人才,成功开发出一系列具有竞争力的电子产品。这些产品在市场上获得了良好的口碑,为公司的快速发展奠定了坚实基础。

问答坊 | AI 解惑

请帮忙分析下这个双稳态电路

如图所示,这是我从网上看到的一个双稳态电路(图中要实现的话应该把电容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…

查看全部问答>

紧急求救

各位高手: 我现遇到俩个问题,紧急请教:1、我用I/O口下降沿中断触发方式进入中断服务程序后,需要将出发方式改为上升沿触发,这时I/O口输入还是0,在我改后,程序就跑飞; 2、我现在用的复位电路是用的电阻(100K)与二级管并联后和一电容 ...…

查看全部问答>

请高手给自动泊车探头能探测5M设计方案

本帖最后由 paulhyde 于 2014-9-15 03:42 编辑    请高手给自动泊车探头能探测5M设计方案!  …

查看全部问答>

两个运算符号" |= "和" &= "的问题,谢谢

PWM输出里面的两句: PCA0CPM0 |= 0x40;          // Set ECOM0 if it is \'0\' ............ PCA0CPM0 &= ~0x40;         // Clear ECOM0 帮我解析一下两个运算的意思吧,谢谢了…

查看全部问答>

想学习USB协议

想学习USB协议,有没有什么开发板及资料…

查看全部问答>

Debug介面

我手邊有三種Stellaris開發板,分別是LM3S9B92,LM3S1968以及LM3S811(811還兩塊==)。1968是自己花錢買得,9B92是原廠送的(機器人套件^^a),811則是參加活動送的。我的問題在於是LM3S9B92,LM3S1968這兩塊都是用FT2232和一堆邏輯閘或CPLD來做J ...…

查看全部问答>

新手求助。51单片机怎么判断连续按键啊

就是说条件判断里是一个特定的按键串。…

查看全部问答>

视频采集项目获奖感言

这一半年来,从一名学生转变成了研发工程师,项目比较紧,涉足的领域也是全新的,也没有什么人带,靠自己不断折腾和琢磨终于把公司的项目做完了。 由于自己一贯喜欢DIY点自己感兴趣的东西,而恰好eeworld提供了这样一个机会,于是我毫不犹豫的参加 ...…

查看全部问答>