精华内容
下载资源
问答
  • 2021-06-05 09:26:27

    安徽财贸职业学院毕业设计

    26 -

    26 -

    PAGE I

    基于51单片机简易电子琴设计

    摘 要

    随着社会的发展进步,音乐逐渐成为我们生活中很重要的一部分,有人曾说喜欢音乐的人不会向恶。我们都会抽空欣赏世界名曲,作为对精神的洗礼。本论文设计一个基于单片机的简易电子琴。我们对于电子琴如何实现其功能,如音色选择、声音强弱控制、节拍器等等也很好奇。

    电子琴是现代电子科技与音乐结合的产物,是一种新型的键盘乐器。它在现代音乐扮演着重要的角色,单片机具有强大的控制功能和灵活的编程实现特性,它已经溶入现代人们的生活中,成为不可替代的一部分。本文的主要内容是用STC89C51单片机为核心控制元件,设计一个电子琴。以单片机作为主控核心,与键盘、扬声器等模块组成核心主控制模块,在主控模块上设有8个按键和扬声器。本系统运行稳定,其优点是硬件电路简单,软件功能完善,控制系统可靠,性价比较高等,具有一定的实用和参考价值。

    在电子行业高速发展的今天,单片机已经广泛的应用到了各个行业之中,其中也就包括了我所设计的娱乐项目,随意的弹奏音乐并且伴着灯光的闪烁,这就是我所以利用89C51单片机所设计的简易电子琴,电子琴的设计理念完全是利用89c51单片机的功能的研究和理解以及延伸拓展。以下我会详细介绍电路的设计和程序的编制过程。

    关键词:89c51单片机 电路 程序

    PAGE II

    目 录

    TOC \o "1-3" \h \z \u HYPERLINK \l "_Toc369901753" 目 录 PAGEREF _Toc369901753 \h II

    HYPERLINK \l "_Toc369901754" 第一章 绪论 PAGEREF _Toc369901754 \h - 1 -

    HYPERLINK \l "_Toc369901755" 1.1 课题背景 PAGEREF _Toc369901755 \h - 1 -

    HYPERLINK \l "_Toc369901756" 1.2 设计依据 PAGEREF _Toc369901756 \h - 1 -

    HYPERLINK \l "_Toc369901757" 第二章 系统方案设计及主控芯片介绍 PAGEREF _Toc369901757 \h - 2 -

    HYPERLINK \l "_Toc369901758" 2.1 系统基本设计思路 PAGEREF _Toc369901758 \h - 2 -

    HYPERLINK \l "_Toc369901759" 2.2 单元电路方案论证 PAGEREF _Toc369901759 \h - 2 -

    HYPERLINK \l "_Toc369901760" 2.2.1 控制器模块 PAGEREF _Toc369901760 \h - 2 -

    HYPERLINK \l "_Toc369901761" 2.2.2 发声模块 PAGEREF _Toc369901761 \h - 2 -

    HYPERLINK \l "_Toc369901762" 2.2.3 编程软件模块 PAGEREF _Toc369901762 \h - 3 -

    HYPERLINK \l "_Toc369901763" 2.2.4 最终方案 PAGEREF _Toc369901763 \h - 3 -

    HYPERLINK \l "_Toc369901764" 2.3 STC89C51单片机 PAGEREF _Toc369901764 \h - 4 -

    HYPERLINK \l "_Toc369901765" 第三章 硬件电路设计 PAGEREF _Toc369901765 \h - 7 -

    HYPERLINK \l "_Toc369901766" 3.1系统总体框图 PAGEREF _Toc369901766 \h - 7 -

    HYPERLINK \l "_Toc369901767" 3.2 最小系统设计 PAGEREF _Toc369901767 \h - 7 -

    HYPERLINK \l "_Toc369901768" 3.3 时钟电路 PAGEREF _Toc369901768 \h - 8 -

    HYPERLINK \l "_Toc369901769" 3.4 复位电路 PAGEREF _Toc369901769 \h - 8 -

    HYPERLINK \l "_Toc369901770" 3.5 按键控制模块 PAGEREF _Toc369901770 \h - 9 -

    HYPERLINK \l "_Toc369901771" 3.6 播放模块 PAGEREF _Toc369901771 \h

    更多相关内容
  • #include#define KeyPort P1unsigned char High,Low; //定时器预装值的高8位和低8位sbit SPK=P3^7; //定义蜂鸣器接口sbit playSongKey=P0^0; //功能键sbit RS=P2^0;//液晶数据命令选择sbit RW=P2^1;...

    #include

    #define KeyPort P1

    unsigned char High,Low; //定时器预装值的高8位和低8位

    sbit SPK=P3^7;          //定义蜂鸣器接口

    sbit playSongKey=P0^0;          //功能键

    sbit RS=P2^0;//液晶数据命令选择

    sbit RW=P2^1;//液晶读写选择

    sbit EN=P2^2;//液晶使能端

    unsigned char code freq[][2]={

    0xD8,0xF7,//00440HZ 1

    0xBD,0xF8,//00494HZ 2

    0x87,0xF9,//00554HZ 3

    0xE4,0xF9,//00587HZ 4

    0x90,0xFA,//00659HZ 5

    0x29,0xFB,//00740HZ 6

    0xB1,0xFB,//00831HZ 7

    0xEF,0xFB,//00880HZ `1

    };

    unsigned char Time;

    unsigned char code YINFU[9][1]={{' '},{'1'},{'2'},{'3'},{'4'},{'5'},{'6'},{'7'},{'8'}};

    //世上只有妈妈好数据表

    unsigned char code MUSIC[]={ 6,2,3,      5,2,1,      3,2,2,    5,2,2,    1,3,2,    6,2,1,    5,2,1,

    6,2,4,      3,2,2,      5,2,1,    6,2,1,           5,2,2,         3,2,2,           1,2,1,

    6,1,1,      5,2,1,      3,2,1,         2,2,4,           2,2,3,         3,2,1,    5,2,2,

    5,2,1,      6,2,1,      3,2,2,         2,2,2,    1,2,4,         5,2,3,           3,2,1,

    2,2,1,      1,2,1,      6,1,1,         1,2,1,           5,1,6,         0,0,0

    };

    // 音阶频率表 高八位

    unsigned char code FREQH[]={

    0xF2,0xF3,0xF5,0xF5,0xF6,0xF7,0xF8,

    0xF9,0xF9,0xFA,0xFA,0xFB,0xFB,0xFC,0xFC, //1,2,3,4,5,6,7,8,i

    0xFC,0xFD,0xFD,0xFD,0xFD,0xFE,

    0xFE,0xFE,0xFE,0xFE,0xFE,0xFE,0xFF,

    } ;

    // 音阶频率表 低八位

    unsigned char code FREQL[]={

    0x42,0xC1,0x17,0xB6,0xD0,0xD1,0xB6,

    0x21,0xE1,0x8C,0xD8,0x68,0xE9,0x5B,0x8F, //1,2,3,4,5,6,7,8,i

    0xEE,0x44, 0x6B,0xB4,0xF4,0x2D,

    0x47,0x77,0xA2,0xB6,0xDA,0xFA,0x16,

    };

    void Init_Timer0(void);//定时器初始化

    //延时函数大约约2*z+5us

    void delay2xus(unsigned char z)

    {

    while(z--);

    }

    // 延时函数大约约1ms

    void delayms(unsigned char x)

    {

    while(x--)

    {

    delay2xus(245);

    delay2xus(245);

    }

    }

    /*------------------------------------------------

    节拍延时函数

    各调1/4节拍时间:

    调4/4  125ms

    调2/4  250ms

    调3/4  187ms

    ------------------------------------------------*/

    void delayTips(unsigned char t)

    {

    unsigned char i;

    for(i=0;i

    {

    delayms(250);

    }

    TR0=0;

    }

    //播放音乐的函数

    void PlaySong()

    {

    TH0=High;//赋值定时器时间,决定频率

    TL0=Low;

    TR0=1;      //打开定时器

    delayTips(Time); //延时所需要的节拍

    }

    //定时器T0初始化子程序

    void Init_Timer0(void)

    {

    TMOD |= 0x01;          //使用模式1,16位定时器,使用"|"符号可以在使用多个定时器时不受影响

    EA=1;            //总中断打开

    ET0=1;           //定时器中断打开

    }

    //定时器T0中断子程序

    void Timer0_isr(void) interrupt 1

    {

    TH0=High;

    TL0=Low;

    SPK=!SPK;

    }

    //主函数

    void main (void)

    {

    unsigned char num,k,i;

    Init_Timer0();    //初始化定时器0,主要用于数码管动态扫描

    SPK=0;                        //在未按键时,喇叭低电平,防止长期高电平损坏喇叭

    while (1)

    {

    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;

    }

    P2 = KeyPort;

    if(num==0)

    {

    TR0=0;

    SPK=0;   //在未按键时,喇叭低电平,防止长期高电平损坏喇叭

    }

    else

    {

    High=freq[num-1][1];

    Low =freq[num-1][0];

    TR0=1;

    }

    if(playSongKey==0)        //如果播放音乐按键被按下

    {

    delayms(10);

    if(playSongKey==0)

    {

    i=0;

    while(i<100)

    {

    k=MUSIC[i]+7*MUSIC[i+1]-1;//去音符振荡频率所需数据

    High=FREQH[k];

    Low=FREQL[k];

    Time=MUSIC[i+2];          //节拍时长

    i=i+3;

    if(P1!=0xff)//长按任意8音键退出播放

    {

    delayms(10);

    if(P1!=0xff)

    i=101;

    }

    PlaySong();

    }

    TR0=0;

    }

    }

    }

    }

    展开全文
  • 51单片机电子琴

    2017-09-07 10:18:10
    基于51单片机 ,用C语言编程, 矩阵键盘 ,演奏曲子,即实现电子琴功能。并且可以通过LED阵显示音阶
  • 2.2 电子琴系统的组成 4 2.4 系统框图 4 第三章 硬件简介 5 3.1 AT89C51 6 3.2 矩阵式键盘的识别和显示 8 3.3 LED数码管 9 3.4 硬件设计图 10 第四章 软件设计 12 4.1 整体程序处理流程图 12 4.2 I/O并行口直接驱动...
  • 138-电子琴(51单片机C语言实例Proteus仿真和代码)138-电子琴(51单片机C语言实例Proteus仿真和代码)138-电子琴(51单片机C语言实例Proteus仿真和代码)138-电子琴(51单片机C语言实例Proteus仿真和代码)138-电子琴(51...
  • 51单片机超级电子琴C语言

    千次阅读 2021-05-20 08:37:10
    然后通过判断键值而分配各种音符,从而得到电子琴效果!硬件连接!硬键连接:P1口接矩阵键盘,P3.5接蜂鸣器引脚*/#include //头文件#define uint unsigned int//宏定义#define uchar unsigned char//宏定义void delay...

    /*说明:此程序是用矩阵按键和音乐实验组合而成的,先是写出矩阵键盘程序,得出键值。然后通过判断键值而分配各种音符,从而得到电子琴效果!硬件连接!

    硬键连接:P1口接矩阵键盘,P3.5接蜂鸣器引脚*/

    #include //头文件

    #define uint unsigned int//宏定义

    #define uchar unsigned char//宏定义

    void delay(uchar);//延时子函数声明

    void bbtt (uchar);//声音处理子函数声明

    void pan();//按键子函数声明

    uint code table[]={

    0xfd,0x12,0xfd,0x80, 0xfd,0xc6, 0xfe,0x07,0xfe,0x25,0xfe,0x57,

    0xfe,0x84,0xfe,0x98,0xfe,0xc0,0xfe,0xe3,0xff,0x01, 0xff,0x10, 0xff,0x29,0xff,0x42

    };/*音符代码 低音3,低音5,低音6,低音7,中音1,中音2,中音3,中音4,中音5,中音6,

    中音7,高音1,高音2,高音3,基中一个音用两个数表示。*/

    sbit bbt=P3^5;//定义蜂鸣器引脚为P3.5脚。

    uchar num,lui,a,temp,num1,num2,numm,aa,bb;//定义行变量

    void main()//主程序开始

    {

    TMOD=01;//设置定时器工作在方式0下

    IE=0X82;//开总中断与中断允许

    num=17;//定义初值,开机使它不亮

    while(1)

    {

    pan();//按键识别子函数

    TR0=0;//将定时器关掉

    /

    bbt=1;//将蜂鸣器关掉

    //

    /*将各按键得出键值码,也就是让每个键得到相应的音符*/

    if(num!=17)//判断num是否不等于17,不等就执行以下语句,否则跳过

    {

    switch(num)//执行开关语句

    {

    case 0://0x00与num值是否相等?

    {

    TR0=1;//打开定时器

    bbtt (0);//调用声音处理子函数,并赋值0

    num=17;// 将num值装回,使按键按下时只响一声

    }

    break;//返回开关语句

    /

    case 1://0x01与num值是否相等?

    {

    TR0=1;//打开定时器

    bbtt (2);//调用声音处理子函数,并赋值2

    num=17;// 将num值装回,使按键按下时只响一声

    }

    break;//返回

    //

    case 2://0x08与num值是否相等?

    {

    TR0=1;//打开定时器

    bbtt (4); //调用声音处理子函数,并赋值4

    num=17;// 将num值装回,使按键按下时只响一声

    }

    break;//返回

    //

    case 3://0x00与num值是否相等?

    {

    TR0=1;//打开定时器

    bbtt (6);//调用声音处理子函数,并赋值6

    num=17;// 将num值装回,使按键按下时只响一声

    }

    break;//返回继续判断是否有键按下

    /

    case 4://0x04与num值是否相等?

    {

    TR0=1;//打开定时器

    bbtt (8);//调用声音处理子函数,并赋值8

    num=17;// 将num值装回,使按键按下时只响一声

    }

    break;//返回

    //

    case 5://0x08与num值是否相等?

    {

    TR0=1;//打开定时器

    bbtt (10);//调用声音处理子函数,并赋值10

    num=17;// 将num值装回,使按键按下时只响一声

    }

    break;//返回

    case 6://0x00与num值是否相等?

    {

    TR0=1;//打开定时器

    bbtt (12);//调用声音处理子函数,并赋值12

    num=17;// 将num值装回,使按键按下时只响一声

    }

    break;//返回继续判断是否有键按下

    /

    case 7://0x04与num值是否相等?

    {

    TR0=1;//打开定时器

    bbtt (14);//调用声音处理子函数,并赋值14

    num=17;// 将num值装回,使按键按下时只响一声

    }

    break;//返回

    case 8://0x08与num值是否相等?

    {

    TR0=1;//打开定时器

    bbtt (16);//调用声音处理子函数,并赋值16

    num=17;// 将num值装回,使按键按下时只响一声

    }

    break;//返回

    //

    case 9://0x00与num值是否相等?

    {

    TR0=1;//打开定时器

    bbtt (18);//调用声音处理子函数,并赋值18

    num=17;// 将num值装回,使按键按下时只响一声

    }

    break;//返回继续判断是否有键按下

    /

    case 10://0x04与num值是否相等?

    {

    TR0=1;//打开定时器

    bbtt (20);//调用声音处理子函数,并赋值20

    num=17;// 将num值装回,使按键按下时只响一声

    }

    break;//返回

    //

    case 11://0x08与num值是否相等?

    {

    TR0=1;//打开定时器

    bbtt (22);//调用声音处理子函数,并赋值22

    num=17;// 将num值装回,使按键按下时只响一声

    }

    break;//返回

    case 12://0x00与num值是否相等?

    {

    TR0=1;//打开定时器

    bbtt (24);//调用声音处理子函数,并赋值24

    num=17;// 将num值装回,使按键按下时只响一声

    }

    break;//返回继续判断是否有键按下

    /

    case 13://0x04与num值是否相等?

    {

    TR0=1;//打开定时器

    bbtt (26); //调用声音处理子函数,并赋值26

    num=17; // 将num值装回,使按键按下时只响一声

    }

    break;//返回

    }

    }

    }

    }

    /*矩阵键盘扫描程序*/

    void pan()

    {

    ///扫第一行

    P1=0xfe;//先扫第一行

    temp=P1;//将它值给temp

    temp=temp&0xf0;//与门比较

    if(temp!=0xf0)//如果它不等于0xf0,就执行括号语句

    {

    delay(100);//延时

    temp=P1;//再赋值

    temp=temp&0xf0;//再与门比较

    if(temp!=0xf0)//再判断是否为不等于0xf0?如果确实不等则说明有键按下

    {

    temp=P1;//将值重新给temp,以便下次再判断!否则找不到合适值

    switch(temp)//判断出了第一行有键按下了,还要判断具体哪个键

    {

    case 0xee:num=0;//0xee和temp比较,如果相等就将它编码定义为0

    break;//确定了就跳出switch语句

    case 0xde:num=1;//0xde和temp比较,如果相等就将它编码定义为1

    break;//确定了就跳出switch语句

    case 0xbe:num=2;//0xbe和temp比较,如果相等就将它编码定义为2

    break;//确定了就跳出switch语句

    case 0x7e:num=3;//0x7e和temp比较,如果相等就将它编码定义为3

    break;//确定了就跳出switch语句

    }

    if(temp!=0xf0)//按键识放判断,如果不等于0xf0就一直执行括号语句

    {

    temp=P1;//重新赋值

    temp=temp&0xf0;//重新与门

    }

    }

    }

    ///扫第二行

    P1=0xfd;

    temp=P1;

    temp=temp&0xf0;

    if(temp!=0xf0)

    {

    delay(100);

    temp=P1;

    temp=temp&0xf0;

    if(temp!=0xf0)

    {

    temp=P1;

    switch(temp)

    {

    case 0xed:num=4;

    break;

    case 0xdd:num=5;

    break;

    case 0xbd:num=6;

    break;

    case 0x7d:num=7;

    break;

    }

    if(temp!=0xf0)

    {

    temp=P1;

    temp=temp&0xf0;

    }

    }

    }

    /扫第三行

    P1=0xfb;

    temp=P1;

    temp=temp&0xf0;

    if(temp!=0xf0)

    {

    delay(100);

    temp=P1;

    temp=temp&0xf0;

    if(temp!=0xf0)

    {

    temp=P1;

    switch(temp)

    {

    case 0xeb:num=8;

    break;

    case 0xdb:num=9;

    break;

    case 0xbb:num=10;

    break;

    case 0x7b:num=11;

    break;

    }

    if(temp!=0xf0)

    {

    temp=P1;

    temp=temp&0xf0;

    }

    }

    }

    扫第四行

    P1=0xf7;

    temp=P1;

    temp=temp&0xf0;

    if(temp!=0xf0)

    {

    delay(100);

    temp=P1;

    temp=temp&0xf0;

    if(temp!=0xf0)

    {

    temp=P1;

    switch(temp)

    {

    case 0xe7:num=12;

    break;

    case 0xd7:num=13;

    break;

    case 0xb7:num=14;

    break;

    case 0x77:num=15;

    break;

    }

    if(temp!=0xf0)

    {

    temp=P1;

    temp=temp&0xf0;

    }

    }

    }

    }

    void delay(uchar z)//延时函数

    {

    uchar x,y;

    for(x=100;x>0;x--)

    for(y=z;y>0;y--);

    }

    /*扫描得到音乐代码,赋值给定时器*/

    void bbtt (uchar aa)

    {

    numm=table[aa];//得到音乐码高位

    aa++;//将计数器加1,以便取下一个代码

    num1=table[aa];//得到音乐码低位

    TH0=numm;//将高位赋值

    TL0=num1;//将低位赋值

    }

    /*中断服务子程序*/

    void zhong() interrupt 1

    {

    TH0=numm;//将高位赋值

    TL0=num1;//将低位赋值

    bbt=~bbt;//将蜂鸣器取反发声

    }

    展开全文
  • 51单片机C程序实例,电子琴设计#define uchar unsigned char //定义一下方便使用#define uint unsigned int#define ulong unsigned long#include //包括一个 52 标准内核的头文件//char code dx516[3] _at_ 0x003b;...

    51单片机C程序实例,电子琴设计

    #define uchar unsigned char //定义一下方便使用

    #define uint unsigned int

    #define ulong unsigned long

    #include //包括一个 52 标准内核的头文件

    //char code dx516[3] _at_ 0x003b;//这是为了仿真设置的

    sbit BEEP=P1^7; //喇叭输出脚

    //sbit K1= P3^2;

    sbit K2= P3^5;

    sbit K3= P2^4;

    sbit K4= P2^5;

    uchar th0_f; //在中断中装载的 T0 的值高 8 位

    uchar tl0_f; //在中断中装载的 T0 的值低 8 位

    //T0 的值,及输出频率对照表

    uchar code freq[36*2]={

    0xA9,0xEF,//00220HZ ,1 //0

    0x93,0xF0,//00233HZ ,1#

    0x73,0xF1,//00247HZ ,2

    0x49,0xF2,//00262HZ ,2#

    0x07,0xF3,//00277HZ ,3

    0xC8,0xF3,//00294HZ ,4

    0x73,0xF4,//00311HZ ,4#

    0x1E,0xF5,//00330HZ ,5

    0xB6,0xF5,//00349HZ ,5#

    0x4C,0xF6,//00370HZ ,6

    0xD7,0xF6,//00392HZ ,6#

    0x5A,0xF7,//00415HZ ,7

    0xD8,0xF7,//00440HZ 1 //12

    0x4D,0xF8,//00466HZ 1# //13

    0xBD,0xF8,//00494HZ 2 //14

    0x24,0xF9,//00523HZ 2# //15

    0x87,0xF9,//00554HZ 3 //16

    0xE4,0xF9,//00587HZ 4 //17

    0x3D,0xFA,//00622HZ 4# //18

    0x90,0xFA,//00659HZ 5 //19

    0xDE,0xFA,//00698HZ 5# //20

    0x29,0xFB,//00740HZ 6 //21

    0x6F,0xFB,//00784HZ 6# //22

    0xB1,0xFB,//00831HZ 7 //23

    0xEF,0xFB,//00880HZ `1

    0x2A,0xFC,//00932HZ `1#

    0x62,0xFC,//00988HZ `2

    0x95,0xFC,//01046HZ `2#

    0xC7,0xFC,//01109HZ `3

    0xF6,0xFC,//01175HZ `4

    0x22,0xFD,//01244HZ `4#

    0x4B,0xFD,//01318HZ `5

    0x73,0xFD,//01397HZ `5#

    0x98,0xFD,//01480HZ `6

    0xBB,0xFD,//01568HZ `6#

    0xDC,0xFD,//01661HZ `7 //35

    };

    //定时中断 0,用于产生唱歌频率

    timer0() interrupt 1

    {

    TL0=tl0_f;TH0=th0_f; //调入预定时值

    BEEP=~BEEP; //取反音乐输出 IO

    }

    //按键控制音阶声音输出(电子琴)

    void main(void) // 主程序

    {

    ulong n;

    uchar code jie8[8]={12,14,16,17,19,21,23,24};//1234567`1 八个音符在频率表中的位置

    TMOD = 0x01; //使用定时器 0 的 16 位工作模式

    TR0 = 0;

    ET0 = 1;

    EA = 1;

    while(1)

    {

    if(!K1)

    {

    tl0_f=freq[jie8[0]*2]; //置一个音符的值

    th0_f=freq[jie8[0]*2+1];

    TR0 = 1;

    for(n=0;n<10000;n++); //延时

    }

    if(!K2)

    {

    tl0_f=freq[jie8[1]*2]; //置一个音符的值

    th0_f=freq[jie8[1]*2+1];

    TR0 = 1;

    for(n=0;n<10000;n++); //延时

    }

    if(!K3)

    {

    tl0_f=freq[jie8[2]*2]; //置一个音符的值

    th0_f=freq[jie8[2]*2+1];

    TR0 = 1;

    for(n=0;n<10000;n++); //延时

    }

    if(!K4)

    {

    tl0_f=freq[jie8[3]*2]; //置一个音符的值

    th0_f=freq[jie8[3]*2+1];

    TR0 = 1;

    for(n=0;n<10000;n++); //延时

    }

    TR0 = 0;

    }

    }

    /*******************************新的好用的电子琴*************************/

    #include

    #include

    #include

    #defineuchar unsigned char

    //#define uchar unsigned char //定义一下方便使用

    #define uint unsigned int

    #d

    efine ulong unsigned long

    sbit BEEP=P3^0;

    uchar rr;

    uchar k;

    uchar keydata;

    uchar th0_f; //在中断中装载的 T0 的值高 8 位

    uchar tl0_f; //在中断中装载的 T0 的

    展开全文
  • 345-简易电子琴(51单片机C语言实例Proteus仿真和代码)345-简易电子琴(51单片机C语言实例Proteus仿真和代码)345-简易电子琴(51单片机C语言实例Proteus仿真和代码)345-简易电子琴(51单片机C语言实例Proteus仿真和代码)...
  • 已通过编程调试,能正确实现各项功能 #define l_dao 262 //将“l_dao”宏定义为低音“1”的频率262Hz #define l_re 286 //将“l_re”宏定义为低音“2”的频率286Hz #define l_mi 311 //将“l_mi”宏定义为低音“3”...
  • 。本系统设计是以51系列单片机AT89S52为主芯片,附有矩阵键盘、LED显示管、扬声器组成,系统完成显示输入信息、播放相应音符等基本功能。 附件为C代码。
  • 51单片机基础应用设计C语言实例(400例)合集: 10-LED循环左移 100-24c02记忆开机次数 101-24c02存储上次使用中状态 102-DS1302 时钟原理 103-DS1302可调时钟 104-DS1302时钟串口自动更新时间 105-1602液晶显示DS...
  • 使用C语言51单片机进行控制,模拟电子琴发音源代码
  • 使用C语言51单片机进行控制,模拟电子琴发音源代码,通过本程序你可以学习一下如何定义键消抖延时函数、键扫描函数、定时器0中断服务子程序等,还可了解一下 调用键盘扫描函数、产生输出脉冲、设置计数初值等相关...
  • 本设计是通过51单片机上的按键不同来发出不同的音,从而实现电子琴的目的,里面附带接线图片
  • 基于51单片机电子琴设计

    千次阅读 2021-12-09 18:32:15
    设计一个电子琴。利用所给键盘的1,2,3,4,5,6,7,8八个键,能够发出8个不同的音调,并且要求按下按键发声
  • 基于51单片机的简易电子琴源码

    千次阅读 2021-05-20 05:24:33
    /*********************************************************************************************程序名: 8键电子琴C程序编写人: 杜洋编写时间: 2009年5月18日硬件支持: STC系列单片机 12MHz接口说明:修改...
  • 资料下载地址:基于51单片机电子琴 一、项目介绍 1、使用7个独立按键对应7个音符 2、有高中低三个音阶,并有显示电路。 3、可以播放音乐 二、原理图 三、仿真 四、程序 #include<reg51.h> #...
  • 51单片机模拟电子琴+Proteus仿真 Proteus仿真 示例程序 #include<reg51.h> #include<intrins.h> #define uchar unsigned char //无符号字符型 宏定义 变量范围0~255 #define uint unsigned int /...
  • 51单片机c语言编写电子琴+音乐播放器.doc
  • 155-51单片机12864大液晶屏proteus仿真 156-流水灯B 157-数码管显示 158-12864LCD显示计算器键盘按键实验 159-数码管显示(锁存器) 16-共阳数码管静态显示 160-数码管动态显示 161-数码管滚动显示 162-数码管字符...
  • 51单片机c语言编写电子琴音乐播放器.doc此程序是51单片机c语言编写的电子琴+音乐播放器,当用杜邦线将P1^0管脚接地时,单片机就会放出《世上只有妈妈好》,将P1^1管脚接地时单片机就播放《祝你生日快乐》,两者为高...
  • 通过按键进行谱曲,并将谱曲结果存入到at2401中,并能播放所谱歌曲 使用51单片机 C语言编写
  • 51单片机电子琴制作

    2021-05-21 17:05:08
    //头文件#define uchar unsigned char#define uint unsigned int //宏定义uchar STH0; //定时器变量uchar STL0; //定时器变量bit FY=0; ...
  • 电子琴c语言程序

    2013-05-28 10:04:24
    电子琴c语言程序 txt文档,初级,单片机
  • 基于单片机的简易电子琴C语言编程基于单片机的简易电子琴设计摘 要电子琴是现代电子科技与音乐结合的产物,是一种新型的键盘乐器。它在现代音乐扮演着重要的角色,单片机具有强大的控制功能和灵活的编程实现特性,它...
  • 第一章:AVR单片机C语言程序设计概述 1.1 AVR单片机简介 1.2 AVR Studio+WinAVR开发环境安装及应用 1.3 AVR-GCC程序设计基础 1.4 程序与数据内存访问 1.5 I/O端口编程 1.6 外设相关寄存器及应用 1.7 中断服务...
  • 作为一名应用电子的应届毕业生来说,理解和掌握单片机的工作原理和使用技巧是必备的技能,基于这种考虑,我这次毕业设计的题目为声光电子琴。钢琴,自从它发明的那天起,就成为人类的朋友,有的...
  • 硬件设计 仿真图1: 总共二十几个按键,高中低音阶,同时可以播放歌曲,开机可设置显示学号 仿真图2: 7个音符按键,切换高中低音阶,同时可以播放歌曲 程序设计 #include<reg52.h> #define keyport P1 ...
  • 其中有个现代电子设计的实验课,老师给了一些课题,由于我跟我的小伙伴基础不太好所以就选择了比较简单的课题——基于单片机电子琴设计。下面来记录一下最终的成果。基于单片机的简易电子琴的设计与制作一、摘要...
  • 简易电子琴C语言代码

    2014-09-23 23:26:44
    单片机学习,STC90C51开发版简易电子琴制作C语言版代码。

空空如也

空空如也

1 2 3 4 5 ... 11
收藏数 202
精华内容 80
关键字:

51单片机电子琴c语言