资源简介
基于51单片机的电子琴,已经试验过,程序没有问题
代码片段和文件信息
#include“reg52.h“
#define uchar unsigned char
#define uint unsigned int
sbit k1=P1^0;
sbit k2=P1^1;
sbit k3=P1^2;
sbit k4=P1^3;
sbit k5=P1^4;
sbit k6=P1^5;
sbit k7=P1^6;
sbit k8=P1^7;
sbit k9=P0^1;
sbit k10=P0^2;
sbit beep=P2^0;
uchar th0_f;
uchar tl0_f;
uchar code freq[36*2]={
0x8C0xF8//00262HZ 1 //00
0xF30xF8//00277HZ 1# //01
0x560xF9//00293HZ 2 //02
0xB80xF9//00311HZ 2# //03
0x100xFA//00329HZ 3 //04
0x670xFA//00349HZ 4 //05
0xB90xFA//00370HZ 4# //06
0x040xFB//00392HZ 5 //07
0x4B0xFB//00415HZ 5# //08
0x090xFB//00440HZ 6 //09
0xCF0xFB//00466HZ 6# //10
0x0C0xFC//00494HZ 7 //11
0x440xFC//00523HZ 1 //12
0x780xFC//00553HZ 1# //13
0xAB0xFC//00586HZ 2 //14
0xDB0xFC//00621HZ 2# //15
0x080xFD//00658HZ 3 //16
0x330xFD//00697HZ 4 //17
0x5B0xFD//00739HZ 4# //18
0x810xFD//00783HZ 5 //19
0xA60xFD//00830HZ 5# //20
0xC70xFD//00879HZ 6 //21
0xE70xFD//00931HZ 6# //22
0x050xFE//00987HZ 7 //23
0x220xFE//01045HZ ‘1 //24
0x3C0xFE//01106HZ ‘1# //25
0x550xFE//01171HZ ‘2 //26
0x6D0xFE//01241HZ ‘2# //27
0x840xFE//01316HZ ‘3 //28
0x990xFE//01393HZ ‘4 //29
0xAD0xFE//01476HZ ‘4# //30
0xC00xFE//01563HZ ‘5 //31
0xD20xFE//01658HZ ‘5# //32
0xE30xFE//01755HZ ‘6 //33
0xF30xFE//01860HZ ‘6# //34
0x020xFF//01971HZ ‘7 //35
};
uchar code jie[8]={1214161719212324};
//定时中断 0用于产生唱歌频率
timer0() interrupt 1
{
TL0=tl0_f;
TH0=th0_f; //调入预定时值
beep=~beep; //取反音乐输出 IO
}
//******************************
//音乐符号串解释函数
//入口:要解释的音乐符号串输出的音调串输出的时长串
changedata(uchar *songuchar *diaouchar *jie)
{
uchar ii1j;
char gaodi; //高低+/-12 音阶
uchar banyin;//有没有半个升音阶
uchar yinchang;//音长
uchar code jie7[8]={012141617192123}; //C 调的 7 个值
*diao=*song;
for(i=0i1=0;;)
{
gaodi=0; //高低=0
banyin=0;//半音=0
yinchang=4;//音长 1 拍
if((*(song+i)==‘|‘) || (*(song+i)==‘ ‘)) i++;
//拍子间隔和一个空格过滤
switch(*(song+i))
{
case ‘‘: gaodi=-12;i++;//低音
break;
case ‘‘‘: gaodi=12;i++; //高音
break;
}
if(*(song+i)==0) //遇到 0 结束
{
*(diao+i1)=0; //加入结束标志 0
*(jie+i1)=0;
return;
}
j=*(song+i)-0x30; i++; //取出基准音
j=jie7[j]+gaodi; //加上高低音
yinc: switch(*(song+i))
{
case ‘#‘: //有半音 j 加一个音阶
i++;j++;
goto yinc;
case ‘-‘: //有一个音节加长
属性 大小 日期 时间 名称
----------- --------- ---------- ----- ----
目录 0 2013-01-25 22:09 电子琴\
目录 0 2013-01-25 22:09 电子琴\C版\
文件 5115 2002-04-16 14:32 电子琴\C版\STARTUP.A51
文件 11665 2012-12-24 15:59 电子琴\C版\STARTUP.LST
文件 749 2012-12-24 15:59 电子琴\C版\STARTUP.OBJ
文件 5027 2012-12-24 15:59 电子琴\C版\TemMain.LST
文件 4163 2012-12-24 15:59 电子琴\C版\TemMain.OBJ
文件 2350 2010-10-10 11:50 电子琴\C版\TemMain.c
文件 12097 2012-12-24 15:59 电子琴\C版\Temp
文件 12141 2012-12-24 15:59 电子琴\C版\Temp.LST
文件 17805 2012-12-24 15:59 电子琴\C版\Temp.M51
文件 9574 2012-12-24 15:59 电子琴\C版\Temp.OBJ
文件 2130 2011-05-11 16:33 电子琴\C版\Temp.Uv2.bak
文件 6698 2011-02-10 12:10 电子琴\C版\Temp.c
文件 3592 2012-12-24 15:59 电子琴\C版\Temp.hex
文件 72 2012-12-24 15:59 电子琴\C版\Temp.lnp
文件 1473 2011-05-11 16:33 电子琴\C版\Temp.opt.bak
文件 417 2012-12-24 15:59 电子琴\C版\Temp.plg
文件 60597 2012-12-24 16:00 电子琴\C版\Temp.uvopt
文件 13507 2012-02-04 13:18 电子琴\C版\Temp.uvproj
文件 1308 2011-02-13 23:02 电子琴\C版\Temp_Opt.Bak
文件 1712 2011-01-31 10:52 电子琴\C版\Temp_Uv2.Bak
文件 78536 2012-12-24 15:58 电子琴\C版\Temp_uvopt.bak
文件 2691 2009-05-01 21:32 电子琴\C版\hc595.LST
文件 2108 2009-05-01 21:32 电子琴\C版\hc595.OBJ
文件 1110 2008-10-20 22:27 电子琴\C版\hc595.c
文件 6376 2009-05-07 14:37 电子琴\STARTUP.A51
文件 14048 2012-07-13 20:39 电子琴\STARTUP.LST
文件 758 2012-07-13 20:39 电子琴\STARTUP.OBJ
文件 13175 2012-07-13 20:39 电子琴\zc1.LST
文件 10913 2012-07-13 20:39 电子琴\zc1.OBJ
............此处省略11个文件信息
- 上一篇:串口抓包工具 非常好的!
- 下一篇:D3 地图可视化数据美国地图
相关资源
- 基于51单片机的烟雾报警器
- 基于51单片机实现的电子琴
- 基于51单片机的m序列产生及应用研究
- 基于51单片机的全自动洗衣机设计带
- 基于51单片机的智能充电器
- hx711压力传感器51单片机代码
- EDA电子琴设计课程设计完整代码
- 51单片机蜂鸣器播放歌曲实验报告
- 微机原理与接口技术 电子琴课程设计
- 用51编写青花瓷
- 课程设计题十:简易电子琴设计.zip
- 基于51单片机的全自动洗衣机控制系统
- 烟雾报警器源码
- 基于51单片机的温度采集系统
- 51单片机不同按键控制音乐
- 基于51单片机的天然气报警器的设计
- MLX90615无线测温51单片机程序
- 毕业设计(论文)-基于AT89C51单片机的
- PWM控制LED灯渐亮渐灭实验.zip
- 基于51单片机实时采集温度,可设置阈
- 基于51单片机空气质量检测
- 基于51单片机酒精浓度检测仪设计-源
- 基于51单片机的智能火灾报警系统-完
- 51单片机温度报警程序
- 基于AT89S51单片机的PID温度控制系统设
- 温湿度、火灾气体检测,LCD1602串口双
- 51单片机多功能电梯模拟控制系统-接
- 超声波测距仪1602显示.zip
- 基于51单片机水量检测c代码+proteus仿真
- 51单片机密码锁PROTEUS仿真
评论
共有 条评论