1. 设计要求

设计一个电子琴。利用所给键盘的1,2,3,4,5,6,7,8八个键,能够发出8个不同的音调,并且要求按下按键发声,松开延时一段时间停止,中间再按别的键则发另一音调的声音。

2.Proteus仿真

程序

#include "reg52.h"#define uchar unsigned char
#define uint unsigned int sbit Int0 = P3^2;
sbit SPK = P3^3;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
};uchar High,Low; //定时器预装值的高8位和低8位
uchar num;uint delay_flag;void delay(uint i)
{while(i--);
}void delay10ms(void)
{unsigned char a,b,c;for(c=5;c>0;c--)for(b=4;b>0;b--)for(a=248;a>0;a--);
}void Timer0_Init()
{TMOD |= 0x11;EA=1; //总中断打开ET0=1; //定时器中断打开TR0=0; //定时器开关关闭TH1 = 0x0D8;    //定时器1,用作延时。TL1 = 0x0F0;EA = 1;ET1 = 1;TR1 = 0;
}void Int0Init()    //外部中断0
{//设置INT0IT0=1;//跳变沿出发方式(下降沿)EX0=1;//打开INT0的中断允许。   EA=1;//打开总中断
}void into_Int0()
{Int0 = 1;delay10ms();Int0 = 0;
}
void KeyDown()
{char a=0;P1=0xff;if(P1!=0xff)//读取按键是否按下{delay(1000);//延时10ms进行消抖if(P1!=0xff)//再次检测键盘是否按下{  //测试列P1=0xff;switch(P1){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;}while((a<50)&&(P1!=0xff))  //检测按键松手检测{delay(1000);a++;}into_Int0();}}
}void main()
{Timer0_Init();Int0Init();  SPK=0; //在未按键时,蜂鸣器置低while (1){KeyDown();}
}
void Int()  interrupt 0     //外部中断0的中断函数
{High=freq[num-1][1];Low =freq[num-1][0];TH1 = 0x0D8;TL1 = 0x0F0;delay_flag = 0;TR0 = 1;TR1 = 1;
}void Timer0_isr(void) interrupt 1
{TH0=High;TL0=Low;SPK=!SPK;
}void Timer1Interrupt(void) interrupt 3
{TH1 = 0x0D8;TL1 = 0x0F0;delay_flag++;if(delay_flag==100){delay_flag = 0;TR1 = 0;TR0 = 0;}
}

仿真、51工程文件

文件下载

基于51单片机电子琴设计相关推荐

  1. 44、基于51单片机数字电压表设计电流电压功率表

    毕设帮助.开题指导.技术解答(有偿)见文末. 目录 摘要 一.硬件方案 二.设计功能 三.实物图 四.原理图 五.PCB图 六.Protues仿真 七.程序 部分代码 八.资料包括 摘要 本次设计要求 ...

  2. 基于51单片机+SHT30设计的环境温度与湿度检测设备(IIC模拟时序)

    一.项目介绍 当前文章介绍基于51单片机和SHT30传感器设计的环境温度与湿度检测设备.设备采用IIC模拟时序通信协议,能够实时监测环境的温度和湿度,并将数据通过LCD显示屏显示出来:可以广泛应用于室 ...

  3. 51单片机用c语言写音符代码,51单片机电子琴设计C语言程序实例

    51单片机C程序实例,电子琴设计 #define uchar unsigned char //定义一下方便使用 #define uint unsigned int #define ulong unsi ...

  4. 基于51单片机火灾报警器设计智能火灾报警系统(水泵灭火功能)项目设计与制作

    背景: 以51单片机为主控芯片,以DS18B20为温度传感器,利用红色led灯代表空调加热,绿色led灯作为空调降温的控制.lcd1602显示温度值. 要求: [1]控制芯片使用51单片机(STC89 ...

  5. 单片机多功能电子琴课设_基于51单片机电子琴的设计(附源码及论文)

    单片机最小系统 单片机最小系统 单片机最小系统说明: 时钟信号的产生:在MCS-51芯片内部有一个高增益反相放大器,其输入端为芯片引脚XTAL1,其输出端为引脚XTAL2.而在芯片的外部,XTAL1和 ...

  6. 基于51单片机密码锁设计LCD1602液晶仿真DIY电子制作智能

    演示视频:https://www.bilibili.com/video/BV1my4y1U7kP/ 功能操作说明: 本设计为4*4矩阵按键输入,显示为1602液晶的简易电子密码锁. 按键为下列布局 1 ...

  7. 基于51单片机 电子琴程序

    源程序 /*----------------------------------------------- 名称:电子琴 --------------------------------------- ...

  8. 基于51单片机的电子琴设计

    目录 一.项目介绍 二.原理图 三.仿真 四.程序 五.设计资料 资料下载地址:基于51单片机电子琴 一.项目介绍 1.使用7个独立按键对应7个音符 2.有高中低三个音阶,并有显示电路. 3.可以播放 ...

  9. 基于51单片机的多功能八路抢答器

    1.功能介绍 多功能八路抢答器是基于51单片机来设计的,除了可以实现最基本功能--8路抢答外,还具有自动处理犯规选手,抢答时间调整,还可以进行答题,计分,并且可以查询或修改分数. 2.硬件设计 该抢答 ...

最新文章

  1. CVE-2016-0095提权漏洞学习笔记
  2. bzoj 4880 [Lydsy1705月赛]排名的战争 贪心
  3. 打游戏提示计算机丢失,Windows7电脑运行某游戏提示“计算机丢失mxvcp120.dll”怎么办...
  4. linux 删除提示没有那个文件或目录,rm 无法删除没有那个文件或目录
  5. 炸裂!万字长文拿下HTTP!
  6. day15 java接口在开发中的作用
  7. matlab谐波分析fft,fft谐波分析_matlab进行fft谐波分析_交流电谐波?
  8. C语言定时器按键消抖程序,按键消抖方法(中断与定时器配合使用)
  9. java清除不掉cookie,java清除cookie
  10. 创易手机--真正DIY手机
  11. 现货K线图知识之五:北坡炮兵并排跑
  12. ajax将监听器值赋值servlet,Java面试问题
  13. 他们是公众号界的一股清流!
  14. 愚人节的幽默感,我只服阿里云......
  15. 魔兽UI跟随鼠标移动
  16. 保护环境的画用计算机怎么画,保护环境的画简笔画
  17. 用大数据提升食品安全
  18. 研发团队管理激励机制
  19. NIST数字测试套件使用说明
  20. Why and How zk-SNARK Works 1: Introduction the Medium of a Proof

热门文章

  1. 为什么面试总倒在复试上?
  2. windows上帝模式是什么:一键开启windows7上帝模式、windows10上帝模式、win11上帝模式的小工具,无需windows上帝模式代码
  3. 方法:vivado提示 “由于找不到vcomp140.dll,无法继续执行代码。重新安装程序可能会解决此问题”的解决办法
  4. Kafka学习笔记——Kafka原理与使用详解
  5. 智慧商贸销售退货操作
  6. 数理逻辑 Review
  7. android 触摸屏驱动分析,Android 触摸屏驱动代码分析(ADC 类型触摸屏 CPU:s3c
  8. (Inside Out) Web地图坐标系——TDT的神奇
  9. SIGCOMM 2020 Topic Preview: Video + Machine Learning
  10. 济南计算机考研培训班,济南高数考研培训(考研要不要报考研班)