找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 9491|回复: 15
收起左侧

八弦激光竖琴电路图与单片机源码

  [复制链接]
ID:334190 发表于 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

单片机源程序如下:
  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, 下载次数: 192)
回复

使用道具 举报

ID:172493 发表于 2018-8-24 21:07 | 显示全部楼层
为啥没人回复?赞一个
回复

使用道具 举报

ID:388655 发表于 2018-8-25 10:42 | 显示全部楼层
枫谷落叶 发表于 2018-8-24 21:07
为啥没人回复?赞一个

很棒,谢谢楼主的分享
回复

使用道具 举报

ID:388655 发表于 2018-8-25 11:14 | 显示全部楼层
每个单调的计数初值是怎么确定的?希望楼主看到回复一下
回复

使用道具 举报

ID:389243 发表于 2018-8-25 12:15 | 显示全部楼层
激光检测的距离会影响发出的声音吗
回复

使用道具 举报

ID:396002 发表于 2018-9-11 08:45 | 显示全部楼层
很棒,谢谢楼主的分享
回复

使用道具 举报

ID:409402 发表于 2018-10-25 21:44 来自手机 | 显示全部楼层
为啥给的是电子琴的程序
回复

使用道具 举报

ID:110278 发表于 2018-11-7 13:52 | 显示全部楼层
创意不错。
回复

使用道具 举报

ID:430492 发表于 2018-11-21 13:35 | 显示全部楼层
这个有点意思哦!!
回复

使用道具 举报

ID:624967 发表于 2019-10-30 16:42 来自手机 | 显示全部楼层
为什么我按照这个原理做了一个竖琴,它发出声音却停不下来一直响的?
回复

使用道具 举报

ID:639167 发表于 2019-12-21 22:08 | 显示全部楼层
非常好,非常棒
回复

使用道具 举报

ID:613217 发表于 2019-12-30 12:19 | 显示全部楼层
感谢楼主,太酷炫了!!!
回复

使用道具 举报

ID:810978 发表于 2020-8-20 21:41 | 显示全部楼层
这个程序不对吧
回复

使用道具 举报

ID:143767 发表于 2021-4-1 16:13 | 显示全部楼层
不错,根据这种方式可以延伸控制电子琴模块发声
回复

使用道具 举报

ID:1042396 发表于 2022-8-19 11:00 | 显示全部楼层
这个音频能转为跟平板上一样逼真的声音嘛?
回复

使用道具 举报

ID:1086134 发表于 2023-6-27 12:41 | 显示全部楼层
很厉害,让我自己仿真试试看
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表