标题: 八弦激光竖琴电路图与单片机源码 [打印本页]

作者: 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


注意事项  —— 手弹奏时,请选取光线较弱的室内。当弹奏不灵敏时,请转到更暗的环境。

电路原理图如下:


单片机源程序如下:
  1. //*********            51简易电子琴程序              *****************

  2. #include<reg52.h>
  3. #define uint unsigned int
  4. #define uchar unsigned char

  5. sbit fmq=P0^0;//定义P0.0口为蜂鸣器信号输出
  6. uint z;
  7. uint code tone[8]={0xfc44,0xfcac,0xfd09,0xfd34,0xfd82,0xfdc8,0xfe06,0xfe22};//对应每个单调的计数初值
  8. uchar code keymode[8]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};//按键值,对应io:0,1,2,3,4,5,6,7

  9. /************************************
  10. *********按键扫描函数***************/

  11. void anjian()//用整个P2口作为音调的输入按键(独立按键方式)
  12. {
  13.         
  14.         P2=0xff;//读数据先置1
  15.         if(P2==~keymode[0]) //1
  16.         {
  17.                 z=tone[0];
  18.                 P1=keymode[0];
  19.         }
  20. /**/
  21.         if(P2==~keymode[1]) //2
  22.         {
  23.                 z=tone[1];
  24.                 P1=keymode[1];
  25.         }
  26. /**/
  27.          if(P2==~keymode[2]) //3
  28.         {
  29.                 z=tone[2];
  30.                 P1=keymode[2];
  31.         }
  32. /**/
  33.         if(P2==~keymode[3]) //4
  34.         {
  35.                 z=tone[3];
  36.                 P1=keymode[3];
  37.         }
  38. /**/
  39.         if(P2==~keymode[4]) //5
  40.         {
  41.                 z=tone[4];
  42.                 P1=keymode[4];
  43.         }
  44. /**/
  45.          if(P2==~keymode[5]) //6
  46.         {
  47.                 z=tone[5];
  48.                 P1=keymode[5];
  49.         }
  50. /***/
  51.         if(P2==~keymode[6]) //7
  52.         {
  53.                 z=tone[6];
  54.                 P1=keymode[6];
  55.         }
  56. /* */
  57.         if(P2==~keymode[7]) //1.
  58.         {
  59.                 z=tone[7];
  60.                 P1=keymode[7];
  61.         }


  62. }
  63. /************************************/
  64. void zdkg()
  65. {
  66.         if(P2==0xff)
  67.         {
  68.                 P1=0xff;
  69.                 TR1=0;//如果没有按键按下,就关闭定时器中断
  70.                 fmq=1;//同时也关闭蜂鸣器
  71.         }
  72.         else          //否则就进入中断
  73.         {
  74.                 TR1=1;
  75.         }
  76. }
  77. /*************************************************
  78. ****************主函数****************************
  79. *************************************************/
  80. void main()
  81. {
  82.         EA=1;//开总中断
  83.         ET1=1;//定时器T1中断允许
  84.         TMOD=0x10;//使用定时器T1的模式1
  85.         TH1=(65536-500)/256;//定时器T1的高8位重新赋初值
  86.         TL1=(65536-500)%256;//定时器T1的低8位重新赋初值
  87.         P1=0xff;//先关所有LED灯

  88.         while(1)
  89.         {
  90.         
  91.           anjian();//按键扫描函数
  92.           zdkg();
  93.                   
  94.         }

  95. }
  96. /*定时器T1的中断服务程序*/
  97. void Time1(void) interrupt 3 using 1//
  98. {        fmq=~fmq; //每进入一次中断就取反一次,快速的进入退出中断,就会听到蜂鸣器发出的音调
  99.         TH1=z/256;//定时器T1的高8位重新赋初值
  100.         TL1=z%256;//定时器T1的低8位重新赋初值
  101. }

复制代码

所有资料51hei提供下载:
8弦激光竖琴.zip (157.65 KB, 下载次数: 193)



作者: 枫谷落叶    时间: 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