找回密碼
 立即注冊(cè)

QQ登錄

只需一步,快速開始

搜索
查看: 10906|回復(fù): 15
打印 上一主題 下一主題
收起左側(cè)

八弦激光豎琴電路圖與單片機(jī)源碼

  [復(fù)制鏈接]
跳轉(zhuǎn)到指定樓層
#
利用C語(yǔ)言實(shí)現(xiàn)八弦激光豎琴圖片詳見(jiàn):http://www.torrancerestoration.com/bbs/dpj-52056-1.html
==============所需元件==========================
激光頭 * 8
5mm光敏電阻 * 8
開關(guān) * 1
輕觸按鍵 * 1
usb座或DC座 * 1
1k電阻 *2
10k電阻 * 10
3mmLED * 1
無(wú)源蜂鳴器 * 1
s8550三極管 * 1
排針(用于下載) * 1
STC89C52單片機(jī) * 1
DIP40的單片機(jī)座 * 1
12M晶振 * 1
30pf瓷片電容 * 2
10uf電解電容 * 1

===============用到的工具=======================
電烙鐵、焊錫絲、助焊劑可選、剪鉗、鑷子、熱熔膠槍與熱熔膠

================================================
===============激光豎琴使用說(shuō)明=================
================================================

8個(gè)激光束 —— 對(duì)應(yīng)中音的1、2、3、4、5、6、7,還有高音1


注意事項(xiàng)  —— 手彈奏時(shí),請(qǐng)選取光線較弱的室內(nèi)。當(dāng)彈奏不靈敏時(shí),請(qǐng)轉(zhuǎn)到更暗的環(huán)境。

電路原理圖如下:


單片機(jī)源程序如下:
  1. //*********            51簡(jiǎn)易電子琴程序              *****************

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

  5. sbit fmq=P0^0;//定義P0.0口為蜂鳴器信號(hào)輸出
  6. uint z;
  7. uint code tone[8]={0xfc44,0xfcac,0xfd09,0xfd34,0xfd82,0xfdc8,0xfe06,0xfe22};//對(duì)應(yīng)每個(gè)單調(diào)的計(jì)數(shù)初值
  8. uchar code keymode[8]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};//按鍵值,對(duì)應(yīng)io:0,1,2,3,4,5,6,7

  9. /************************************
  10. *********按鍵掃描函數(shù)***************/

  11. void anjian()//用整個(gè)P2口作為音調(diào)的輸入按鍵(獨(dú)立按鍵方式)
  12. {
  13.         
  14.         P2=0xff;//讀數(shù)據(jù)先置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;//如果沒(méi)有按鍵按下,就關(guān)閉定時(shí)器中斷
  70.                 fmq=1;//同時(shí)也關(guān)閉蜂鳴器
  71.         }
  72.         else          //否則就進(jìn)入中斷
  73.         {
  74.                 TR1=1;
  75.         }
  76. }
  77. /*************************************************
  78. ****************主函數(shù)****************************
  79. *************************************************/
  80. void main()
  81. {
  82.         EA=1;//開總中斷
  83.         ET1=1;//定時(shí)器T1中斷允許
  84.         TMOD=0x10;//使用定時(shí)器T1的模式1
  85.         TH1=(65536-500)/256;//定時(shí)器T1的高8位重新賦初值
  86.         TL1=(65536-500)%256;//定時(shí)器T1的低8位重新賦初值
  87.         P1=0xff;//先關(guān)所有LED燈

  88.         while(1)
  89.         {
  90.         
  91.           anjian();//按鍵掃描函數(shù)
  92.           zdkg();
  93.                   
  94.         }

  95. }
  96. /*定時(shí)器T1的中斷服務(wù)程序*/
  97. void Time1(void) interrupt 3 using 1//
  98. {        fmq=~fmq; //每進(jìn)入一次中斷就取反一次,快速的進(jìn)入退出中斷,就會(huì)聽(tīng)到蜂鳴器發(fā)出的音調(diào)
  99.         TH1=z/256;//定時(shí)器T1的高8位重新賦初值
  100.         TL1=z%256;//定時(shí)器T1的低8位重新賦初值
  101. }

復(fù)制代碼

所有資料51hei提供下載:
8弦激光豎琴.zip (157.65 KB, 下載次數(shù): 193)


分享到:  QQ好友和群QQ好友和群 QQ空間QQ空間 騰訊微博騰訊微博 騰訊朋友騰訊朋友
收藏收藏12 分享淘帖 頂6 踩
回復(fù)

使用道具 舉報(bào)

15#
ID:1086134 發(fā)表于 2023-6-27 12:41 | 只看該作者
很厲害,讓我自己仿真試試看
回復(fù)

使用道具 舉報(bào)

14#
ID:1042396 發(fā)表于 2022-8-19 11:00 | 只看該作者
這個(gè)音頻能轉(zhuǎn)為跟平板上一樣逼真的聲音嘛?
回復(fù)

使用道具 舉報(bào)

13#
ID:143767 發(fā)表于 2021-4-1 16:13 | 只看該作者
不錯(cuò),根據(jù)這種方式可以延伸控制電子琴模塊發(fā)聲
回復(fù)

使用道具 舉報(bào)

12#
ID:810978 發(fā)表于 2020-8-20 21:41 | 只看該作者
這個(gè)程序不對(duì)吧
回復(fù)

使用道具 舉報(bào)

11#
ID:613217 發(fā)表于 2019-12-30 12:19 | 只看該作者
感謝樓主,太酷炫了!。
回復(fù)

使用道具 舉報(bào)

10#
ID:639167 發(fā)表于 2019-12-21 22:08 | 只看該作者
非常好,非常棒
回復(fù)

使用道具 舉報(bào)

9#
ID:624967 發(fā)表于 2019-10-30 16:42 來(lái)自手機(jī) | 只看該作者
為什么我按照這個(gè)原理做了一個(gè)豎琴,它發(fā)出聲音卻停不下來(lái)一直響的?
回復(fù)

使用道具 舉報(bào)

8#
ID:430492 發(fā)表于 2018-11-21 13:35 | 只看該作者
這個(gè)有點(diǎn)意思哦!!
回復(fù)

使用道具 舉報(bào)

7#
ID:110278 發(fā)表于 2018-11-7 13:52 | 只看該作者
創(chuàng)意不錯(cuò)。
回復(fù)

使用道具 舉報(bào)

6#
ID:409402 發(fā)表于 2018-10-25 21:44 來(lái)自手機(jī) | 只看該作者
為啥給的是電子琴的程序
回復(fù)

使用道具 舉報(bào)

5#
ID:396002 發(fā)表于 2018-9-11 08:45 | 只看該作者
很棒,謝謝樓主的分享
回復(fù)

使用道具 舉報(bào)

地板
ID:389243 發(fā)表于 2018-8-25 12:15 | 只看該作者
激光檢測(cè)的距離會(huì)影響發(fā)出的聲音嗎
回復(fù)

使用道具 舉報(bào)

板凳
ID:388655 發(fā)表于 2018-8-25 11:14 | 只看該作者
每個(gè)單調(diào)的計(jì)數(shù)初值是怎么確定的?希望樓主看到回復(fù)一下
回復(fù)

使用道具 舉報(bào)

沙發(fā)
ID:388655 發(fā)表于 2018-8-25 10:42 | 只看該作者
楓谷落葉 發(fā)表于 2018-8-24 21:07
為啥沒(méi)人回復(fù)?贊一個(gè)

很棒,謝謝樓主的分享
回復(fù)

使用道具 舉報(bào)

樓主
ID:172493 發(fā)表于 2018-8-24 21:07 | 只看該作者
為啥沒(méi)人回復(fù)?贊一個(gè)
回復(fù)

使用道具 舉報(bào)

本版積分規(guī)則

手機(jī)版|小黑屋|51黑電子論壇 |51黑電子論壇6群 QQ 管理員QQ:125739409;技術(shù)交流QQ群281945664

Powered by 單片機(jī)教程網(wǎng)

快速回復(fù) 返回頂部 返回列表