标题:
八弦激光竖琴电路图与单片机源码
[打印本页]
作者:
383687411
时间:
2018-5-20 14:37
标题:
八弦激光竖琴电路图与单片机源码
利用C语言实现八弦激光竖琴图片详见:
http://www.51hei.com/bbs/dpj-52056-1.html
==============所需元件==========================
激光头 * 8
5mm光敏电阻 * 8
开关 * 1
轻触按键 * 1
usb座或DC座 * 1
1k电阻 *2
10k电阻 * 10
3mmLED * 1
无源蜂鸣器 * 1
s8550三极管 * 1
排针(用于下载) * 1
STC89C52单片机 * 1
DIP40的单片机座 * 1
12M晶振 * 1
30pf瓷片电容 * 2
10uf电解电容 * 1
===============用到的工具=======================
电烙铁、焊锡丝、助焊剂可选、剪钳、镊子、热熔胶枪与热熔胶
================================================
===============激光竖琴使用说明=================
================================================
8个激光束 —— 对应中音的1、2、3、4、5、6、7,还有高音1
注意事项 —— 手弹奏时,请选取光线较弱的室内。当弹奏不灵敏时,请转到更暗的环境。
电路原理图如下:
0.png
(110.9 KB, 下载次数: 129)
下载附件
2018-5-20 14:53 上传
单片机源程序如下:
//********* 51简易电子琴程序 *****************
#include<reg52.h>
#define uint unsigned int
#define uchar unsigned char
sbit fmq=P0^0;//定义P0.0口为蜂鸣器信号输出
uint z;
uint code tone[8]={0xfc44,0xfcac,0xfd09,0xfd34,0xfd82,0xfdc8,0xfe06,0xfe22};//对应每个单调的计数初值
uchar code keymode[8]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};//按键值,对应io:0,1,2,3,4,5,6,7
/************************************
*********按键扫描函数***************/
void anjian()//用整个P2口作为音调的输入按键(独立按键方式)
{
P2=0xff;//读数据先置1
if(P2==~keymode[0]) //1
{
z=tone[0];
P1=keymode[0];
}
/**/
if(P2==~keymode[1]) //2
{
z=tone[1];
P1=keymode[1];
}
/**/
if(P2==~keymode[2]) //3
{
z=tone[2];
P1=keymode[2];
}
/**/
if(P2==~keymode[3]) //4
{
z=tone[3];
P1=keymode[3];
}
/**/
if(P2==~keymode[4]) //5
{
z=tone[4];
P1=keymode[4];
}
/**/
if(P2==~keymode[5]) //6
{
z=tone[5];
P1=keymode[5];
}
/***/
if(P2==~keymode[6]) //7
{
z=tone[6];
P1=keymode[6];
}
/* */
if(P2==~keymode[7]) //1.
{
z=tone[7];
P1=keymode[7];
}
}
/************************************/
void zdkg()
{
if(P2==0xff)
{
P1=0xff;
TR1=0;//如果没有按键按下,就关闭定时器中断
fmq=1;//同时也关闭蜂鸣器
}
else //否则就进入中断
{
TR1=1;
}
}
/*************************************************
****************主函数****************************
*************************************************/
void main()
{
EA=1;//开总中断
ET1=1;//定时器T1中断允许
TMOD=0x10;//使用定时器T1的模式1
TH1=(65536-500)/256;//定时器T1的高8位重新赋初值
TL1=(65536-500)%256;//定时器T1的低8位重新赋初值
P1=0xff;//先关所有LED灯
while(1)
{
anjian();//按键扫描函数
zdkg();
}
}
/*定时器T1的中断服务程序*/
void Time1(void) interrupt 3 using 1//
{ fmq=~fmq; //每进入一次中断就取反一次,快速的进入退出中断,就会听到蜂鸣器发出的音调
TH1=z/256;//定时器T1的高8位重新赋初值
TL1=z%256;//定时器T1的低8位重新赋初值
}
复制代码
所有资料51hei提供下载:
8弦激光竖琴.zip
(157.65 KB, 下载次数: 193)
2018-5-20 14:36 上传
点击文件名下载附件
下载积分: 黑币 -5
作者:
枫谷落叶
时间:
2018-8-24 21:07
为啥没人回复?赞一个
作者:
波波杏仁
时间:
2018-8-25 10:42
枫谷落叶 发表于 2018-8-24 21:07
为啥没人回复?赞一个
很棒,谢谢楼主的分享
作者:
波波杏仁
时间:
2018-8-25 11:14
每个单调的计数初值是怎么确定的?希望楼主看到回复一下
作者:
小小斑鸠
时间:
2018-8-25 12:15
激光检测的距离会影响发出的声音吗
作者:
zhanghan121
时间:
2018-9-11 08:45
很棒,谢谢楼主的分享
作者:
1508330424
时间:
2018-10-25 21:44
为啥给的是电子琴的程序
作者:
linnyshow
时间:
2018-11-7 13:52
创意不错。
作者:
cooleaf
时间:
2018-11-21 13:35
这个有点意思哦!!
作者:
C-Zachary
时间:
2019-10-30 16:42
为什么我按照这个原理做了一个竖琴,它发出声音却停不下来一直响的?
作者:
ther丶
时间:
2019-12-21 22:08
非常好,非常棒
作者:
qq1144030432
时间:
2019-12-30 12:19
感谢楼主,太酷炫了!!!
作者:
51黑科技人
时间:
2020-8-20 21:41
这个程序不对吧
作者:
dj3365191
时间:
2021-4-1 16:13
不错,根据这种方式可以延伸控制电子琴模块发声
作者:
Gavin23
时间:
2022-8-19 11:00
这个音频能转为跟平板上一样逼真的声音嘛?
作者:
test101
时间:
2023-6-27 12:41
很厉害,让我自己仿真试试看
欢迎光临 (http://www.51hei.com/bbs/)
Powered by Discuz! X3.1