历史上的今天
今天是:2024年11月07日(星期四)
2019年11月07日 | 八弦激光竖琴电路图与单片机源码
2019-11-07 来源:51hei
==============所需元件==========================
激光头 * 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
注意事项 —— 手弹奏时,请选取光线较弱的室内。当弹奏不灵敏时,请转到更暗的环境。
电路原理图如下:
单片机源程序如下:
//********* 51简易电子琴程序 *****************
#include #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位重新赋初值 }
史海拾趣
|
现希望在ppc上写一个程序能和一个蓝牙模块通信,我在ppc上查找到了该设备,并且在ppc的蓝牙管理器中为其设置了COM7发送端口。然后在软件中是这样写的: PORTEMUPortParams pp; HANDLE hDev; i=7; hDev=RegisterDevice(L\"COM\",i,L\"btd.dll\", ...… 查看全部问答> |
|
VxWorks zbuf socket使用问题,急、急、急! 大家好,为什么我使用zbufSockSend或zbufSockBufSend调用代替send发送数据,CPU总体消耗反而高了呢? zbuf socket不是可以减少一次数据拷贝吗? 处理数据码率100Mbps左右。 使用时有没有注意事项,比如缓冲设置长度之类的?… 查看全部问答> |
|
大家好呀,最近在做一个遥控器跟wince开发板间的红外通信,遥控器使用单片机,故考虑wince开放板上的原始IR端口,现在不知道wince如何接收遥控器发送过来的数据并识别,有没有做过这方面的的朋友呀,恳请指教呀! … 查看全部问答> |
|
天啊,我Hook的ZwCreateFile的文件名到底在哪里啊。。。 我Hook了ZwCreateFile,通过 DbgPrint(\"HookZwCreateFile:%wZ\\n\",ObjectAttributes->ObjectName); 可以打印目录名称,后来发贴请问如何得到文件名: http://topic.eeworld.net/u/20080821/15/36e51142-4e57-4735-b51f-8b2fee796b63.html 得 ...… 查看全部问答> |
|
本报讯:近日,瑞海软件公司技术负责人李成坐在北大青鸟APTECH培训中心内设立的招聘现场,正根据笔试和面试结果宣读招聘的学员名单。这一次,李成在北大青鸟APTECH培训中心又招聘到3名java方向的技术开发人员。为满足像瑞海公司这样的IT人才需求, ...… 查看全部问答> |
|
编译器:CCS V5 目标IC:F28035 现象: 正在debug的,把文件修改一下又重新装入时,出现了无法装入的现象,后又重新启动电脑,再次DEBUG,还是如此,后来无意中看了下面的红字, &nbs ...… 查看全部问答> |




