|
利用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)境。
電路原理圖如下:
0.png (110.9 KB, 下載次數(shù): 129)
下載附件
2018-5-20 14:53 上傳
單片機(jī)源程序如下:
- //********* 51簡(jiǎn)易電子琴程序 *****************
- #include<reg52.h>
- #define uint unsigned int
- #define uchar unsigned char
- sbit fmq=P0^0;//定義P0.0口為蜂鳴器信號(hào)輸出
- uint z;
- uint code tone[8]={0xfc44,0xfcac,0xfd09,0xfd34,0xfd82,0xfdc8,0xfe06,0xfe22};//對(duì)應(yīng)每個(gè)單調(diào)的計(jì)數(shù)初值
- uchar code keymode[8]={0xfe,0xfd,0xfb,0xf7,0xef,0xdf,0xbf,0x7f};//按鍵值,對(duì)應(yīng)io:0,1,2,3,4,5,6,7
- /************************************
- *********按鍵掃描函數(shù)***************/
- void anjian()//用整個(gè)P2口作為音調(diào)的輸入按鍵(獨(dú)立按鍵方式)
- {
-
- P2=0xff;//讀數(shù)據(jù)先置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;//如果沒(méi)有按鍵按下,就關(guān)閉定時(shí)器中斷
- fmq=1;//同時(shí)也關(guān)閉蜂鳴器
- }
- else //否則就進(jìn)入中斷
- {
- TR1=1;
- }
- }
- /*************************************************
- ****************主函數(shù)****************************
- *************************************************/
- void main()
- {
- EA=1;//開總中斷
- ET1=1;//定時(shí)器T1中斷允許
- TMOD=0x10;//使用定時(shí)器T1的模式1
- TH1=(65536-500)/256;//定時(shí)器T1的高8位重新賦初值
- TL1=(65536-500)%256;//定時(shí)器T1的低8位重新賦初值
- P1=0xff;//先關(guān)所有LED燈
- while(1)
- {
-
- anjian();//按鍵掃描函數(shù)
- zdkg();
-
- }
- }
- /*定時(shí)器T1的中斷服務(wù)程序*/
- void Time1(void) interrupt 3 using 1//
- { fmq=~fmq; //每進(jìn)入一次中斷就取反一次,快速的進(jìn)入退出中斷,就會(huì)聽(tīng)到蜂鳴器發(fā)出的音調(diào)
- TH1=z/256;//定時(shí)器T1的高8位重新賦初值
- TL1=z%256;//定時(shí)器T1的低8位重新賦初值
- }
-
復(fù)制代碼
所有資料51hei提供下載:
8弦激光豎琴.zip
(157.65 KB, 下載次數(shù): 193)
2018-5-20 14:36 上傳
點(diǎn)擊文件名下載附件
下載積分: 黑幣 -5
|
|