毕业论文:单片机的音乐喷泉制作-DIY分享 全部设计资料 源代码
因为最近忙着考试,所以都没时间更新博客了,在后台有个小姐姐给我留言说自己对单片机很感兴趣,但是又不知道从哪里开始学起,是先学硬件好还是先学软件好,其实在我们复杂的电子学里,硬件和软件是分不开的,硬件就像是我们的心脏和四肢,软件就像我们的大脑,如果只有软件没有硬件,那我们的系统就是一个没用的程序,不能执行任何操作,而如果只有硬件没有软件那么整个系统就是一个行尸走肉,是一个没有“大脑”的躯壳,我说到现在大家也应该明白了,硬不离软,软不离硬,只有软硬兼修,方能大成!好了,回到刚才的问题,我建议先从硬件开始学起,先理解了硬件的架构和各部分的工作原理,然后再去看软件,这样能更好的理解原理,就像我推荐大家先用汇编后用C一样 好了,写了这么多,如果你有不同意见或者想法欢迎留言和私信。
今天送给大家一个比较简单的小项目吧,如果你有兴趣的话可以试着做一下呦!
好了老规矩先上实物图
正面图:
焊接好的成品背面图:
电路原理图:
PCB图:
音乐喷泉的项目元器件清单:
音乐喷泉单片机C语言参考源代码如下:
#include<reg51.h>
#define uchar unsigned char
#define uint unsigned int
sbit out=P3^7;
sbit led1=P0^7;
sbit led2=P0^6;
sbit led3=P0^5;
sbit led4=P0^4;
sbit led5=P0^3;
sbit led6=P0^2;
sbit led7=P0^1;
sbit led8=P0^0;
sbit SCL=P1^2; //SCL定义为P1口的第3位脚,连接ADC0832SCL脚
sbit DO=P1^3; //DO定义为P1口的第4位脚,连接ADC0832DO脚
sbit CS=P1^0; //CS定义为P1口的第4位脚,连接ADC0832CS脚
uchar h1,date;
unsigned char adval;
void delay(uint z)
{
uchar y;
for(;z>0;z--)
for(y=120;y>0;y--);
}
以下是模数转换部分
/***********读数模转换数据********************************/
//请先了解ADC0832模数转换的串行协议,再来读本函数,主要是对应时序图来理解,本函数是模拟0832的串行协议进行的
// 1 1 0 通道
// 1 1 1 通道
unsigned char ad0832read(bit SGL,bit ODD)
{
unsigned char i=0,value=0,value1=0;
SCL=0;
DO=1;
CS=0; //开始
SCL=1; //第一个上升沿
SCL=0;
DO=ODD;
SCL=1; //第二个上升沿
SCL=0;
DO=SGL;
SCL=1; //第三个上升沿
DO=1;
for(i=0;i<8;i++)
{
SCL=1;
SCL=0; //开始从第四个下降沿接收数据
value<<=1;
if(DO)
value++;
}
for(i=0;i<8;i++)
{ //接收校验数据
value1<<=1;
if(DO)
value1+=0x01;
SCL=1;
SCL=0;
}
if(value==value1) //与校验数据比较,正确就返回数据,否则返回0
return value;
return 0;
}
void penquan() //PWM调压
{
date=ad0832read(1,0);
h1=(255-date);
out=0;
delay(h1);
if(h1>30) led1=1; else led1=0;
if(h1>70) led2=1; else led2=0;
if(h1>100) led3=1; else led3=0;
if(h1>130) led4=1; else led4=0;
if(h1>160) led5=1; else led5=0;
if(h1>180) led6=1; else led6=0;
if(h1>200) led7=1; else led7=0;
if(h1>220) led8=1; else led8=0;
out=1;
delay(date);
}
……………………
鉴于篇幅所限代码只能写到这里,由于平台不能上传附件,如果需要设计文件请留言或者私信,如果你有什么意见和建议欢迎大家交流,让我们共同学习,一起进步!
喜欢请转发留言加关注,谢谢!
单片机六首歌曲的音乐门铃程序
;音乐门铃程序
buzzer equ p2.4
KEY EQU P3.7
org 00h ;主程序起始地址
jmp start ;跳动主程序
org 0bh ;timer0中断起始地址
jmp tim0 ;跳至timer0在mode1
start: MOV tmod,#00000001b ;设timer0在mode1
MOV ie,#10000010b ;中断使能
jb KEY,$ ;第一次按to?
call delay1 ;消除抖动
jnb KEY,$ ;to放开?
MOV 31h,#00 ;按to次数计数指针初值为00h
start0:
MOV 30h,#low song ;取简谱码指针(第1首)
next: MOV a,30h
MOV dptr,#table
MOVc a,@a+dptr ;至相关页码,高4位为音符的高低
MOV r2,a ;低4位为音符的节拍
jz end0 ;检查简谱码是否已结束(有无00?)
anl a,#0fh ;取节拍(低4位)
MOV r5,a ;存入r5,节拍的时间
MOV a,r2
swap a
anl a,#0fh ;取音频值(高4位)
jnz sing ;是否为0,是0则不发音
clr tr0
jmp d1
sing: dec a ;因0不列入
MOV 22h,a ;存入(22h)
rl a ;乘2
MOV dptr,#table
MOVc a,@a+dptr ;至table取码,取t的值
MOV th0,a ;取到的高位字节存入th0
MOV 21h,a ;取到的高位字节存入(21h)
MOV a,22h ;再载入取到的音符码
rl a ;乘2
inc a ;加1
MOVc a,@a+dptr ;至table取相对的低位字节计数值
MOV tl0,a ;取到的低位字节存入tl0
MOV 20h,a ;取到的低位字节存入(20h)
setb tr0 ;启动timer0
d1: call delay
inc 30h ;取简谱码指针加1
jmp next
end0: clr tr0 ;停止计数器
MOV a,31h ;载入计次指针
xrl a,#00h ;是否按第1次?
jnz end1 ;不是则跳至end1
jb KEY,$ ;按第2次?
call delay1 ;消除抖动
jnb KEY,$ ;放开否?
inc 31h ;计次地址(31h)加1
MOV 30h,#low song1 ;第2首歌指针
jmp next
end1:
MOV a,31h ;载入计次指针
xrl a,#01h ;是否按第2次?
jnz end2 ;不是则跳至end2
jb KEY,$ ;按第3次?
call delay1 ;消除抖动
jnb KEY,$ ;放开否?
inc 31h ;计次地址(31h)加1
MOV 30h,#low song2 ;第3首歌指针
jmp next
end2:
MOV a,31h ;载入计次指针
xrl a,#02h ;是否按第3次?
jnz end3 ;不是则跳至end3
jb KEY,$ ;按第4次?
call delay1 ;消除抖动
jnb KEY,$ ;放开否?
inc 31h ;计次地址(31h)加1
MOV 30h,#low song3 ;第4首歌指针
jmp next
end3:
MOV a,31h ;载入计次指针
xrl a,#03h ;是否按第4次?
jnz end4 ;不是则跳至end4
jb KEY,$ ;按第5次?
call delay1 ;消除抖动
jnb KEY,$ ;放开否?
inc 31h ;计次地址(31h)加1
MOV 30h,#low song4 ;第5首歌指针
jmp next
end4:
MOV a,31h ;载入计次指针
xrl a,#01h ;是否按第5次?
jnz end5 ;不是则跳至end2
jb KEY,$ ;按第6次?
call delay1 ;消除抖动
jnb KEY,$ ;放开否?
inc 31h ;计次地址(31h)加1
MOV 30h,#low song5 ;第6首歌指针
jmp next
end5:
jmp start ;回到第1次位置
tim0: push acc ;将a的值暂存于堆栈
push psw ;将psw的值暂存于堆栈
setb rs0 ;设工作寄存器库1,rs0=1,rs1=0
clr rs1
MOV tl0,20h ;重设计数值
MOV th0,21h
cpl buzzer ;将p10位反相
clr rs0
pop psw ;至堆栈取回psw的值
pop acc ;至堆栈取回a的值
reti ;返回主程序
delay: MOV r7,#02 ;125秒
d2: MOV r4,#125
d3: MOV r3,#248
djnz r3,$
djnz r4,d3
djnz r7,d2
djnz r5,delay ;决定节拍
ret
delay1: MOV r4,#20
d4: MOV r3,#248
djnz r3,$
djnz r4,d4
ret
org 300h
table:
dw 64260,64400,64524,64580
dw 64684,64777,64820,64898
dw 64968,65030,65058,65110
dw 65157,65178,65217
song: ;第一首歌 哈 巴 狗
;1
db 42h,42h,42h,52h,62h,04h
db 62h,62h,62h,72h,84h,04h
db 92h,92h,82h,72h,64h,04h
db 82h,82h,52h,62h,44h,04h
;2
db 42h,42h,42h,52h,62h,04h
db 62h,62h,62h,72h,84h,04h
db 92h,92h,82h,72h,64h,04h
db 82h,82h,52h,62h,44h,04h
db 00h
song1: ;第2首歌 生 日 快 乐
;1
db 82h,01h,81h,94h,84h
db 0b4h,0a4h,04h
db 82h,01h,81h,94h,84h
db 0c4h,0b4h,04h
;2
db 82h,01h,81h,0f4h,0d4h
db 0b4h,0a4h,94h
db 0e2h,01h,0e1h,0d4h,0b4h
db 0c4h,0b4h,04h
db 00h
song2: ;第3首歌 不 倒 翁
;1
db 84h,94h,88h
db 64h,54h,68h
db 84h,64h,54h,44h
db 52h,42h,52h,62h,48h
;2
db 84h,94h,88h
db 64h,54h,68h
db 84h,64h,54h,44h
db 52h,42h,52h,62h,48h
db 00h
song3: ;第4首歌 妹妹背着洋娃娃
;1
db 84h,02h,82h,64h,54h
db 64h,54h,48h
db 64h,02h,52h,44h,24h
db 14h,24h,18h
;2
db 24h,02h,22h,42h,24h
db 44h,54h,68h
db 54h,02h,52h,84h,84h
db 54h,64h,48h
db 00h
song4: ;第5首歌 两只老虎
;1
db 44h,54h,64h,44h
db 44h,54h,64h,44h
db 64h,74h,88h
db 64h,74h,88h
;2
db 82h,92h,82h,72h,64h,44h
db 82h,92h,82h,72h,64h,44h
db 44h,84h,48h
db 44h,14h,48h,00H
song5: ;第6首歌 三只小猫
;1
db 62h,82h,82h,62h,98h
db 92h,0b2h,0b2h,82h,98h
db 62h,82h,82h,52h,68h
db 92h,0b2h,0b2h,82h,98h
;2
db 62h,82h,82h,62h,92h,92h,94h
db 92h,0b2h,0b2h,92h,84h,94h
db 0b8h,0b4h,04h
db 00h
end
相关问答
向 单片机 高手求助,怎样用 C 语言编写歌曲 程序 和歌曲代码?需要用那些工具怎么样编写的要求详细解答。谢谢?//绝对调试通过,AVR-GCC,mega16,带数码显示,单键开关多功能控制#include{key_state=7;key_return=3;}elsekey_state=5; ...
求51 单片机 的 音乐 播放 程序 实验仪器必须是DP-51proc-ZOL问答Count;sbitbuzzer=P1^4;//讯响器控制脚unsignedcharcodeSONG[]={//祝你平安0x26,0x20,0x20,0x20,0x20,0x20...
怎么让计算机发出 音乐 声?1、将计算器调节成音乐键,首先需要调节音量键,确保计算器的声音打开。然后按下两次“时间、日期”键,待屏幕显示为“年月日模式”即为设置完成,这时按下按键...
怎么实现手机APP与 单片机 之间的数据传递?从提问中你得有如下知识:1.单片机编程能力;2.手机APP编程能力3.一种网络协议要想用手机APP接收到单片机的数据,简单一点的办法就是让单片机连入局域...从...
怎么将计算机调成 音乐 模式?首先需要调节音量键,确保计算器的声音打开。然后按下两次“时间/日期”键,待屏幕显示为“年月日模式”即为设置完成,这时按下按键就可以弹音乐了。不过需要注...
什么模块可以让 单片机 的数字信号转换成音频信号?你好!关于这个问题:什么模块可以让单片机的数字信号转换成音频信号?1、单片机本身可以模拟输出音频信号2、输出音频信号其实就是AD采样的逆向工程。即DA3、...
水 音乐 原理?改变频率就改变了电机的转速,也就改变了水泵的压力,音乐的不同频率经单片机处理送到变频电机的控制端,使电机转速随音乐的音调,节奏,和强弱变化,水泵的压力...
音乐 喷泉原理及安装方法?首先,音乐喷泉需要的设备主要包括:喷泉喷头、LED水下灯、喷泉专用泵、阀门、漂浮平台(湖面水上喷泉用)、管道、电缆、控制系统、音响系统等设备,带有激光水...首...
计算器怎么设置弹 音乐 ?普通计算器是没办法的,我不知道你说的是哪一种计算器。如果是普通计算器的话,里面有一个单片机,可以理解为性能比较一本的cpu处理器,通过蜂鸣器器,编程控制...
怎么调节计算机的背景 音乐 ?1、将计算器调节成音乐键,首先需要调节音量键,确保计算器的声音打开。然后按下两次“时间、日期”键,待屏幕显示为“年月日模式”即为设置完成,这时按下按键...