Ⅰ 51单片机的音乐喷泉的编码
功能实现通过ADC0832芯片对音频信号的采集,转换为数字信号给单片机,然后PWM脉冲宽度调制控制水泵水柱对的高低
//请先了解ADC0832模数转换的串行协议,再来读本函数,主要是对应时序图来理解,本函数是模拟0832的串行协议进行的
// 1 1 0 通道
// 1 1 1 通道
unsigned char ad0832read(bit SGL,bit ODD)
{undefined
unsigned char i=0,value=0,value1=0;
SCL=0;
DO=1;
CS=0;//开始
SCL=1;//第一个上升沿
SCL=0;
DO=SGL;
SCL=1; //第二个上升沿
SCL=0;
DO=ODD;
SCL=1; //第三个上升沿
SCL=0; //第三个下降沿
DO=1;
for(i=0;i<8;i++)
{undefined
SCL=1;
SCL=0; //开始从第四个下降沿接收数据
value<<=1;
if(DO)
value++;
}
for(i=0;i<8;i++)
{//接收校验数据
value1>>=1;
if(DO)
value1+=0x80;
SCL=1;
SCL=0;
}
CS=1;
DO=1;
SCL=1;
if(value==value1)//与校验数据比较,正确就返回数据,否则返回0
return value;
return 0;
}
void penquan() //PWM调压
{undefined
date=ad0832read(1,0); //读取ad值
h1=(255-date);//转换
out=0; //水泵清零
delay(h1);
if(h1>70) led1=1; else led1=0; //ad值对比 点亮相应的灯
if(h1>80) led2=1; else led2=0; //ad值对比 点亮相应的灯
if(h1>90) led3=1; else led3=0; //ad值对比 点亮相应的灯
if(h1>100) led4=1; else led4=0; //ad值对比 点亮相应的灯
if(h1>110) led5=1; else led5=0; //ad值对比 点亮相应的灯
if(h1>115) led6=1; else led6=0; //ad值对比 点亮相应的灯
if(h1>120) led7=1; else led7=0; //ad值对比 点亮相应的灯
if(h1>130) led8=1; else led8=0; //ad值对比 点亮相应的灯
out=1; //关闭水泵
delay(date); //延时时间
}
void main()//主函数
{undefined
while(1)
{undefined
penquan(); //给定个延时次数
}
}
(转载于CSDN)
Ⅱ 跪求单片机课程设计 要完全呦
题 目:单片机课程设计报告
目 录
一、设计目的
二、程设计具体要求
三、单片机发展简史
四、8051单片机系统简介
五、8051单片机内部定时器/计数器简介
六、程序电路
七、程序流程
八、程序代码
九实验总结-要求写出完整的论文以及心得体会
十参考资料及小结
原 文 : 一.目的
1. 进一步熟悉和掌握8051单片机的结构及工作原理。
2. 掌握单片机的接口技术及相关外围芯片的外特性,控制方法。
3. 通过课程设计,掌握以单片机核心的电路设计的基本方法和技术,了解表关电路参数的计算方法。
4. 通过实际程序设计和调试,逐步掌握模块化程序设计方法和调试技术。
5. 通过完成一个包括电路设计和程序开发的完整过程,使学生了解开发一单片机应用系统的全过程,为今后从事相应打下基础。
二.课程设计的体要求
a) 原理图设计。
1. 原理图设计要符合项目的工作原理,连线要正确,端了要不得有标号。
2. 图中所使用的元器件要合理选用,电阻,电容等器件的参数要正确标明。
3. 原理图要完整,CPU,外围器件,扩器接口,输入/输出装置要一应俱全。
b) 程序调计
1. 根据要求,将总体项能分解成若干个子功能模块,每个功能模块完成一个特定的功能。
2. 根据总体要求及分解的功能模块,确定各功能模块之间的关系,设直出完整的程序流程图。
c) 程序调试将设计完的程序输入,汇编,排除语法错误,生成*OBJ文件。
1. 按所设计的原理图,在实验平台上连线,检查无误。
2. 将汇编后生成的*OBJ文件传送到实验装置的,执行该程序,检查该程序、是否达到设计要求,若未达到,修改程序,直到达到要求为止,
d) 说明书
1. 原理图设计说明
简要说明设计目的,原理图中所使用的元器件功能及在图中的作用,各器件的工作过程及顺序。
2. 程序设计说明
对程序设计总体功能及结构进行说明,对各子模块的功能以及各子模块之间的关系作较详细的描述。
3. 画出工作原理图,程序流程图并给出程序清单。
目前,单片机已广泛应用到图民经济建设和日常生活的许多领域,成为测控技术现代化必不可少的重要工具。下面介绍一本单片机课程设计的好书,介绍了很多实例有兴趣者可以去买哦,价格不贵【图书目录】 - 8051单片机课程设计实训教材
第1章 绪论
1.1 课程设计所需硬件工具
1.2 专题制作所需软件使用工具
1.3 8051程序开发测试平台
1.4 使用免费汇编编译器
1.5 89CXX烧录模拟器操作实例
1.6 自制8051微电脑单板IO51
1.7 IO51操作实例
1.8 以Windows98 工作模式结合DOS模式来执行
第2章 8051单片机课程设计中的基本软硬件设计
2.1 8051各种基本的硬件设计
2.2 工作指示灯LED
2.3 8051延迟时间计算
2.4 基本按键设计
2.5 建立8051通信接口
2.6 简易8051调试界面
2.7 压电喇叭测试
2.8 键盘扫描
2.9 扫描控制七段显示器
2.10 LCD接口控制
2.11 8051定时器模式的工作
2.12 定时器模式0测试
2.13 定时器模式1测试
2.14 定时器模式2测试
2.15 以定时器产生各种频率的声音
2.16 以定时器演奏—段旋律
第3章 带单片机的LCD时钟
第4章 定时闹铃
第5章 定时闹铃LCD
第6章 音乐倒数定时器
第7章 密码锁控制
第8章 可存储式电子琴
第9章 8051八音盒
第10章 红外线遥控器研究
10.1 红外线遥控器动作原理
10.2 如何观察红外线遥控器信号
10.3 红外线遥控器译码功能说明
第11章 红外线家电遥控
第12章 8051伺服机控制
12.1 伺服机工作原理及改装
第1.3章 8051伺服车控制
13.1 功能说明
13.2 伺服车组装及实验
第14章 红外线遥控伺服车
14.1 功能说明
14.2 遥控伺服车组装及实验
14.3 控制电路
14.4 控制程序
第15章 无线电家电遥控
15.1 功能说明
15.2 遥控编码解码控制
第16章 8051声控设计
16.1 声控基本知识介绍
16.2 系统组成
16.3 声控模块介绍
16.4 基本控制电路
16.5 基本控制程序
16.6 声控课题设计
附录H 如何使用KEIL 8051开发系统汇编和编译程序及调试
附录I EPM89 890XX烧录模拟器特性
附录J 1051 8051 10控制板特性
附录K VCMM声控模块特性
附录L IO51控制板完整电路图
附录M 需要从网站下载的相关资料的使用说明
附录N 硬件接口板版权声明及如何订购
附录A 简易稳压电源制作
附录B 本书实验所需软硬件工具及零件
附录C 8051内部控制寄存器介绍
附录D 8051指令集
附录E 如何自制8051单板
附录F 课程设计报告参考内容
附录G IO51控制板窗口版驱动程序使用说明
Ⅲ 我想做一个小型的音乐喷泉,用不知道用单片机是不是可以准确的控制它,我想用c语言程序,可我在网上看到
想做一个小型的音乐喷泉,需要用到电磁阀。用单片机的ADC采样音乐信号,根据音乐信号电压高低,可以准确控制电磁阀开闭,实现音乐喷泉效果。用c语言完全可以编程实现,当然汇编语言也可以。
Ⅳ 请问用单片机做音乐喷泉的小模型需要哪些材料呢
首先需要个喷泉模型聚乙烯熟料透明的。然后准备个三原色LED灯(最好贴片的),加个蓝牙模块,准备个蓝牙音箱,根据设备数量选择合适引脚单片机。
装载,用块万能板将灯,蓝牙模块,单片机什么的都焊上去。然后将喷泉模型用塑料胶固定在灯上。
连上PC开始调试,先写灯模块,再写蓝牙模块,将音频转成2进账写入代码。
这样基本上可以循环放一首歌了。
Ⅳ 求一个8051单片机控制音乐喷泉C语言程序
把音乐数据做一个傅立叶变换,然后去控制喷泉,这个倒容易实现,难实现的就是你的喷泉控制能达到这么快的控制吗?用电磁阀来控制的吗?由于频繁的开启关闭,速度太快,容易烧坏电磁阀了。
Ⅵ 如何用单片机设计音乐喷泉电路图
单片机就想做音乐喷泉?20年前估计这么做,用PLC做控制,现在还用单片机?莫非真是毕业设计?
现在的音乐喷泉控制系统相当复杂,功能和复杂度能赶上一个电厂的整套控制系统了,大点的音乐喷泉有几千个控制点。
Ⅶ 我想要一段单片机控制音乐喷泉的C语言程序,很急!~谁能帮帮我,谢谢~
#include<reg51.h>
#include "SoundPlay.h"
uchar code table[]="sound_signal:";
uchar code table1[]="sound_pace:";
uchar code table2[]="0123456789 ";
uchar data count=0;
sbit motor=P2^1;
sbit rs=P2^2;
sbit e=P2^3;
void init_com()
{
TMOD=0x01;
TH0=0xff;
TL0=0xff;
EA=1;
ET0=1;
}
void timer0(void) interrupt 1 using 3
{
counter=counter+1;//节拍次数计数
TH0=0xd8; //定义单位节拍的延时大小 10ms定时
TL0=0xef;
}
void delay(uchar n)
{
uchar i;
while(n--)
for(i=0;i<125;i++); //延时1毫秒
}
void sound_delay(uchar n)
{
uchar i;
while(n--)
{
for(i=0;i<2;i++);
}
}
/*******LCD显示*******/
void ling(uchar zl) //写指令
{
rs=0;
e=0;
P0=zl;
delay(5);
e=1;
delay(5);
e=0;
}
void shuju(uchar sj) //写数据
{
rs=1;
e=0;
P0=sj;
delay(5);
e=1;
delay(5);
e=0;
}
void lcdinit() //初始化
{
delay(15);
ling(0x01);
ling(0x38);
delay(5);
ling(0x38);
delay(5);
ling(0x38);
delay(5);
ling(0x0c);
delay(5);
ling(0x06);
delay(5);
ling(0x01);
delay(5);
}
//*****************液晶初始化*********
void main()
{
uint i,a;
uchar sound_signal;//定义音符大小
uchar sound_pace;//定义节拍大小
init_com();
lcdinit();
ling(0x80);
for (i=0;i<13;i++)
shuju(table[i]);
ling(0x80+0x40);
for (i=0;i<11;i++)
shuju(table1[i]);
//array[i]=0x00 代表歌曲演唱完毕
//array[i]=0xff 代表是休止符
while(1)
{
i=0;
/***************************************///////////
while(array[i]!=0x00)
{
//如果是休止符,延时100ms,并终止本次循环,进入下一个循环
if(array[i]==0xff)
{
TR0=0;
i++;
delay(100);
continue;
}
//从表中取得 音符大小
sound_signal=array[i];
i=i+1;
//从表中取得 节拍大小
sound_pace=array[i];
a= sound_pace;
P1=a|(a>>4);
//彩灯的根据节拍闪烁
ling(0x80+13);
if(sound_signal/100==0)
shuju(table2[10]);
else shuju(table2[ sound_signal/100]);
shuju(table2[sound_signal%100/10]);
shuju(table2[sound_signal%10]);
ling(0x80+0x40+11);
if(sound_signal/100==0)
shuju(table2[10]);
else shuju(table2[sound_pace/100]);
shuju(table2[sound_pace%100/10]);
shuju(table2[sound_pace%10]);
motor=0;
delay(40);
TR0=1;
//当节拍数未达到时候,继续循环,产生该音调的声音
while(counter<=sound_pace)
{
motor=1;
sound=~sound;
sound_delay(sound_signal);
}
i++;
counter=0;//节拍计数器置0,进入下一个音调
}
/*************************************************/
delay(10); //歌曲演唱完毕后,延时一段时间
}
}
//*******soundplay.h**********歌曲
#ifndef __SOUNDPLAY_H_REVISION_FIRST__
#define __SOUNDPLAY_H_REVISION_FIRST__
#define uchar unsigned char
#define uint unsigned int
sbit sound=P2^0;
uint counter=0;
uchar code array[]=
{
0x18, 0x30, 0x1C, 0x10,
0x20, 0x40, 0x1C, 0x10,
0x18, 0x10, 0x20, 0x10,
0x1C, 0x10, 0x18, 0x40,
0x1C, 0x20, 0x20, 0x20,
0x1C, 0x20, 0x18, 0x20,
0x20, 0x80, 0xFF, 0x20,
0x30, 0x1C, 0x10, 0x18,
0x20, 0x15, 0x20, 0x1C,
0x20, 0x20, 0x20, 0x26,
0x40, 0x20, 0x20, 0x2B,
0x20, 0x26, 0x20, 0x20,
0x20, 0x30, 0x80, 0xFF,
0x20, 0x20, 0x1C, 0x10,
0x18, 0x10, 0x20, 0x20,
0x26, 0x20, 0x2B, 0x20,
0x30, 0x20, 0x2B, 0x40,
0x20, 0x20, 0x1C, 0x10,
0x18, 0x10, 0x20, 0x20,
0x26, 0x20, 0x2B, 0x20,
0x30, 0x20, 0x2B, 0x40,
0x20, 0x30, 0x1C, 0x10,
0x18, 0x20, 0x15, 0x20,
0x1C, 0x20, 0x20, 0x20,
0x26, 0x40, 0x20, 0x20,
0x2B, 0x20, 0x26, 0x20,
0x20, 0x20, 0x30, 0x80,
0x20, 0x30, 0x1C, 0x10,
0x20, 0x10, 0x1C, 0x10,
0x20, 0x20, 0x26, 0x20,
0x2B, 0x20, 0x30, 0x20,
0x2B, 0x40, 0x20, 0x15,
0x1F, 0x05, 0x20, 0x10,
0x1C, 0x10, 0x20, 0x20,
0x26, 0x20, 0x2B, 0x20,
0x30, 0x20, 0x2B, 0x40,
0x20, 0x30, 0x1C, 0x10,
0x18, 0x20, 0x15, 0x20,
0x1C, 0x20, 0x20, 0x20,
0x26, 0x40, 0x20, 0x20,
0x2B, 0x20, 0x26, 0x20,
0x20, 0x20, 0x30, 0x30,
0x20, 0x30, 0x1C, 0x10,
0x18, 0x40, 0x1C, 0x20,
0x20, 0x20, 0x26, 0x40,
0x13, 0x60, 0x18, 0x20,
0x15, 0x40, 0x13, 0x40,
0x18, 0x80, 0x00
};
Ⅷ 用单片机做一个课程设计用的音乐喷泉需要些什么元件
看你的意思你是要买齐元件自己做?呵呵
别的不说,一个变频器不知道你要多大功率的如果选个3KW的话松下变频器要5000左右,电机到没有必要用专用的普通三相电机就可以~但功率要和变频器配起来起码不能高于变频器额定功率那3KW电机也要近2K还是国产的比如衡水电机厂的,主要还是有个可以根据频率变化的的转换电路,F/V电路,然后用A/D转换器变为数字信号提供给单片机,但最主要的是变频器的干扰相当大,怕是普通51单片机抗不住。
Ⅸ 单片机实现音乐喷泉的过程中如何对音频进行分频处理
用AD芯片对音频采样,采样速度至少40KHZ,然后做FFT,精度你随便,估计有个256点就可以了。一来你是51,跑不快,二来音乐喷泉水柱不多,从低频到高频大概体现7、8个频点就够了。FFT程序网上找,一把一把的。
Ⅹ 如何用单片机制作音乐喷泉电路方面都需要哪些器件我要做一个微型的音乐喷泉。
我倒有个单片机蜂鸣器唱歌的程序你要不?要就给你。歌曲是刘若英的《知道不知道》