历史上的今天
今天是:2024年12月03日(星期二)
2019年12月03日 | 基于51单片机的简易电子琴课程设计
2019-12-03 来源:51hei
1.本设计采用51单片机作为主控制器
2.外部加上放音设备如喇叭等,来实现音乐演奏控制器的硬件电路
3.用8个手工的按键发出八个音阶
制作出来的电子琴实物图如下:
仿真原理图如下(proteus仿真工程文件可到本帖附件中下载)
视频讲解:
电子琴原件清单
1.8欧0.25w小喇叭
2.8050三极管*2
3.10k电阻*2
4.30欧姆电阻
5.40脚座
6.STC89c51
7.10uf电容
8.30pf电容*2
9.小按键*8
10.自锁开关
11.DC电源座
12.12m晶振
13.7*9万用板
14.导线若干
15.焊锡若干
16.usb电源线或电池盒+DC电源插头
单片机源程序如下:
#include #define uint unsigned int //宏定义 #define uchar unsigned char //宏定义 sbit speaker=P1^4;//喇叭接口 uchar a,b; //定义ab变量 void check_key() //按键函数 { P3=0xff;//先赋给P2组口高电平 switch(P3)//按下一个键 { case 0xfe:a=0xfb;b=0xe9;EA=1;break;//根据不同按键ab的值不同 case 0xfd:a=0xfc;b=0x5c;EA=1;break;//注意:EA不能改为TR0 case 0xfb:a=0xfc;b=0xc1;EA=1;break; case 0xf7:a=0xfc;b=0xef;EA=1;break; case 0xef:a=0xfd;b=0x45;EA=1;break; case 0xdf:a=0xfd;b=0x92;EA=1;break; case 0xbf:a=0xfd;b=0xd0;EA=1;break; case 0x7f:a=0xfd;b=0xee;EA=1;break; default:EA=0;speaker=0; //没有按键按下,关闭定时器和喇叭 } } void main() { TMOD=0x01; //定时器0工作方式1 TH0=a; TL0=b; //赋初值 ET0=1;//打开定时器,但是未允许中断 TR0=1;//打开定时器0 while(1) //主循环 { check_key(); //扫描按键函数 } } void time0() interrupt 1//定时器0的工作函数 { TH0=a; TL0=b; //将ab的值做为定时器的初值 speaker=~speaker; //喇叭电平取反喇叭根据不同的频率震动就可以发声了 }
史海拾趣
|
1、我想创建或添加一个新项(两者一样吗,好像我有看到那种不是列表形式的),现在还不时很清楚,所以请高手指点一下。 2、memswatch这个例子在vs2005下怎么用。 我用的时候并没有像它说得一样会创建一个.cab文件,是不是我还要创建一个应用程序 ...… 查看全部问答> |
|
An application targeting a Standard SDK for windows CE.NET and built for the ARMV4T CPU cannot be run on the Emulator device.In order to run this application on any cpu other than the emulator,you\'ll have to install an SDK tha ...… 查看全部问答> |
|
1.一定要是主机驱动 2.NXP LPC 24XX 系列以下的,我都看过,是模拟设备的,和我们的任务开发板处理设备数据不符。 留下我的联系方式 msn:lvz89871037@163.com … 查看全部问答> |
|
在Win7下,以前很正常,最近在进入调试的时候会突然退出,不知道大家有没有遇到过这种情况?用的是LM3S8962评估板。 [ 本帖最后由 academic 于 2011-1-6 19:09 编辑 ]… 查看全部问答> |
|
一个网上下载的C51的FFT程序,有些不懂,好象没有处理输入数据 程序内容如下 #include <reg52.h> #include <math.h> #include <stdio.h> #include <stdlib.h> #include <absacc.h> #define uchar unsigned char #define uint unsi ...… 查看全部问答> |




