基于单片机的声控彩灯设计.docx
- 文档编号:24765371
- 上传时间:2023-06-01
- 格式:DOCX
- 页数:31
- 大小:284.83KB
基于单片机的声控彩灯设计.docx
《基于单片机的声控彩灯设计.docx》由会员分享,可在线阅读,更多相关《基于单片机的声控彩灯设计.docx(31页珍藏版)》请在冰豆网上搜索。
基于单片机的声控彩灯设计
摘要
本次课程设计主题是基于ATMEL公司生产的AT89S52单片机为核心设计一个声控彩灯系统。
系统由模拟电路部分与数字电路部分组成,模拟电路由驻极体麦克风、运算放大器、二极管峰值包络检波器,实现对音频信号进行转换、滤波、放大等处理。
数字电路由A/D转换器、AT89S52单片机及发光二级管组成,单片机将A/D转换后的信号对LED的亮灭进行控制,LED的亮灭情况由音频信号的强度进行控制,点亮的LED的数目随音频音量的增大而增加,随音频音量的减小而减少,实现了一个简单的音乐彩灯控制系统。
关键词:
AT89S52单片机;发光二极管;A/D转换器;运算放大器;驻极体麦克风;
目录
引言4
1.设计任务及要求4
2.方案选择4
2.1方案一:
采用数字芯片构成的声控彩灯系统4
2.2方案二:
基于AT89S52为核心的单片机声控彩灯系统5
2.3方案比较和选择5
2.4声控彩灯系统框图6
3.硬件设计原理7
3.1模拟电路部分7
3.1.1模拟电路原理说明7
3.1.2电路仿真过程8
3.1.3模拟电路原理图11
3.2数字电路部分14
3.2.1数字电路部分原理图14
3.2.2A/D转换器15
3.2.3单片机AT89S52介绍18
3.2.4时钟电路与复位电路21
3.2.5LED发光显示电路23
3.2.6下载端口23
4.软件设计原理24
5.硬件电路制作和组装调试24
6.软件调试过程及遇到的问题和解决方法25
7.课设总结26
谢辞27
附录一29
附录二30
附录三31
附录四32
引言
随着科学技术发展,彩灯艺术更是花样翻新,奇招频出,传统的制灯工艺和现代科学技术紧密结合,将电子、建筑、机械、遥控、声学等新技术、新工艺用于彩灯的设计制作,把形、色、光、声、动相结合,思想性、知识性、趣味性、艺术性相统一,音乐彩灯的出现使人们既得到了视觉与听觉上得享受,同时也给人们紧张的现代生活带来新鲜的色彩与活力。
1.设计任务及要求
(1)选择合适传感器;
(2)选择合适放大器及A/D转换器件;
(3)单片机根据音频信号大小驱动LED亮灭;
(4)可调拾音灵敏度;
(5)LED的个数、造型自定;
2.方案选择
2.1方案一:
采用数字芯片构成的声控彩灯电路
音频在电信号中表现为多个正弦波叠加而成。
音乐的大小就表现为声音的强弱起伏,它在音频信号中表现为正弦波的波峰和波谷,所以在它到达波峰时就说明它的音量大,在波谷时音量就小,根据这个原理,可以采用一个触发电路控制彩灯在音量大的时候发光,音量小的时候就熄灭。
综合考虑,可以选择一个NE555时基电路中的单稳态电路,触发后驱动LED发光,由于音频电压过小,还需要设一个放大电路。
设计框图如下图所示:
图2.1-1方案一设计框图
2.2方案二:
以AT89S52为核心的单片机声控彩灯系统
此控制系统以AT89S52为控制器,通过单片机的I/O口进行读操作,将外部经过音频信号转换而成的电压信号读取进来,再进行分析计算,对外部的发光二级管进行控制,编程控制灵活。
能灵活根据音频信号的强弱范围来控制发光二级管亮灭的数目,达到声音控制灯亮灭的效果。
2.3方案比较和选择
方案一中,虽然电路比较简单,但是最终的硬件电路功能单一,不方便进行功能的修改与升级,控制不够人性化。
方案二中,以AT89S52为控制核心,AT89S52是一种低功耗、高性能CMOS8位微控制器,具有8K在系统可编程Flash存储器,在单芯片上,拥有灵巧的8位CPU和在系统可编程Flash,控制灵活方便,使得AT89S52在众多控制应用系统中得到广泛应用。
因此本次课题选用方案二。
2.4声控彩灯系统框图
图2.4-1系统结构框图
3.硬件设计原理
3.1模拟电路部分:
3.1.1模拟电路原理说明:
首先,采用电容式麦克风对音频信号进行拾取。
其次,通过两个电容分别对音频中得高频成分进行滤波以及对直流成分进行隔直。
然后,经过一级放大器放大。
因为从电容式麦克风输出的信号幅度很小,大概几毫伏至几十毫伏左右,因此要对该信号进行放大,放大倍数选择在1000倍左右,才能满足A/D转换器的需要,由此选择两级放大电路,第一级放大倍数设置在1~454倍之间,第二级放大倍数设置在1~10倍之间。
两级放大就可以达到1000倍左右。
最后,由于音频信号在电信号中表现为多个正弦波叠加而成,而A/D转换器转换的电压范围在0~5v,所以选择采用二极管包络检波器对这些正弦波进行整流后再进行A/D转换。
通过以上分析,运用Multisim进行电路绘制及仿真,仿真过程如下所述。
3.1.2电路仿真过程:
图3.1.2-1仿真原理图
图3.1.2-2一级放大电路仿真波形图
图3.1.2-3一级放大电路仿真波形图
图3.1.2-4两级放大电路仿真波形图
仿真数据处理:
表3.1.2-1
一级放大
两级放大
放大倍数
输入信号VPP
输出信号VPP
放大倍数
输入信号VPP
输出信号VPP
理论
454
10mv
4.54v
2270
10mv
22.70v
227
10mv
2.27v
1135
10mv
11.35
实际
445.3
10mv
4.453v
1218
10mv
12.18v
224.5
10mv
2.245v
423.5
10mv
4.235v
仿真步骤小结:
经过本次仿真测试,可以看出电路的实际放大倍数并非一级放大倍数与二级放大倍数相乘,因为两级放大电路之间需要进行峰值检波,检波电路起到一定的分压作用,导致两级放大电路的理论值与实验值有所偏差。
综合分析仿真电路的效果,可以确定出模拟电路部分的原理图,如下所述。
3.1.3模拟电路原理图
(1)一级放大电路原理图:
图3.1.3-1一级放大电路原理图
元件说明:
1)电容式麦克风:
电容式麦克风有两块金属极板,其中一块表面涂有驻极体薄膜(多数为聚全氟乙丙烯)并将其接地,另一极板接在场效应晶体管的栅极上,栅极与源极之间接有一个二极管。
当驻极体膜片本身带有电荷,表面电荷地电量为Q,板极间地电容量为C,则在极头上产生地电压U=Q/C,当受到振动或受到气流地摩擦时,由于振动使两极板间的距离改变,即电容C改变,而电量Q不变,就会引起电压的变化,电压变化的大小,反映了外界声压的强弱,这种电压变化频率反映了外界声音的频率,这就是驻极体传声器地工作原理。
电容式麦克风的膜片多采用聚全氟乙丙烯,其湿度性能好,产生的表面电荷多,受湿度影响小。
由于这种传声器也是电容式结构,信号内阻很大,为了将声音产生的电压信号引出来并加以放大,其输出端也必须使用场效应晶体管。
具有极为宽广的频率响应:
振动膜是麦克风感应声音及转换为电能讯号的主要组件。
振动膜的材质及机构设计,是决定麦克风音质的各项特性。
由于电容式麦克风的振动膜可以采用极轻薄的材料制成,而且感应的音压,直接转换成音频讯号,所以频率响应低音可以延伸到10Hz以下的超低频,高音可以轻易的达到数十KHz的超音波,展现非常宽广的频率响应特性!
具有超高灵敏度的特性:
在振动膜上面因为没有音圈的负载,可以采用极为轻薄的设计,所以不但频率响应极为优越,而且具有绝佳的灵敏度,可以感应极微弱的声波,输出最清晰、细腻及精准的原音!
2)NE5532:
NE5532是高性能低噪声双运算放大器(双运放)集成电路。
与很多标准运放相似,但它具有更好的噪声性能,优良的输出驱动能力及相当高的小信号带宽,电源电压范围大等特点。
因此很适合应用在高品质和专业音响设备、仪器、控制电路及电话通道放大器。
用作音频放大时音色温暖,保真度高,在上世纪九十年代初的音响界被发烧友们誉为“运放之皇”,至今仍是很多音响发烧友手中必备的运放之一。
(2)二极管包络检波电路
图3.1.3-2二极管包络检波电路
检波电路工作原理分析:
检波电路主要由检波二极管构成,在检波电路中,输入信号加到检波二极管的正极,这时二极管工作原理与整流电路中的整流二极管工作原理基本一样,利用信号的幅度使二极管导通,如下图所示,从展开后的调幅信号波形中可以看出,它是一个交流信号,只是信号的幅度在变化,这一信号加到检波二极管正极,正半周信号是二极管导通,负半周信号是二极管截止,这样相当于整流电路工作一样,在检波二极管负载电阻上得到正半周信号的包络,及信号的虚线部分,见图中检波电路输出信号波形(不加高频滤波电容时的输出信号波形)。
检波电路输出信号由音频信号、直流成分和高频信号三种信号成分组成,这三种信号中最重要的是音频信号。
图3.1.3-3检波电路波形分析
(3)二级放大电路
图3.1.3-4二级放大电路
3.2数字电路部分
3.2.1数字电路部分原理图:
原理说明:
如图3.2.1-1所示,模拟信号通过A/D转换器转换,再由单片机AT89S52进行分析处理,根据音频信号大小驱动8个LED亮灭。
图3.2.1-1数字电路部分原理图
3.2.2A/D转换器
图3.2.2-1AD0809引脚图
本次设计所用的数模转换器为AD0809,其工作原理如下:
IN0-IN7:
8条模拟量输入通道
ADC0809对输入模拟量要求:
信号单极性,电压范围是0-5V,若信号太小,必须进行放
大;输入的模拟量在转换过程中应该保持不变,如若模拟量变化太快,则需在输入前增加采
样保持电路。
地址输入和控制线:
4条
ALE为地址锁存允许输入线,高电平有效。
当ALE
线为高电平时,地址锁存与译码器将A,B,C三
条地址线的地址信号进行锁存,经译码后被选中的
通道的模拟量进转换器进行转换。
A,B和C为地
址输入线,用于选通IN0-IN7上的一路模拟量输
入。
通道选择表如下表所示。
CBA选择的通道
000IN0
001IN1
010IN2
011IN3
100IN4
101IN5
110IN6
111IN7
数字量输出及控制线:
11条
ST为转换启动信号。
当ST上跳沿时,所有内部寄存器清零;下跳沿时,开始进行A/D转换;在转换期间,ST应保持低电平。
EOC为转换结束信号。
当EOC为高电平时,表明转换结束;否则,表明正在进行A/D转换。
OE为输出允许信号,用于控制三条输出锁存器向单片机输出转换得到的数据。
OE=1,输出转换得到的数据;OE=0,输出数据线呈高阻状态。
D7-D0为数字量输出线。
CLK为时钟输入信号线。
因ADC0809的内部没有时钟电路,所需时钟信号必须由外界提供,通常使用频率为500KHZ,VREF(+),VREF(-)为参考电压输入。
2、ADC0809应用说明
(1).ADC0809内部带有输出锁存器,可以与AT89S51单片机直接相连。
(2).初始化时,使ST和OE信号全为低电平。
(3).送要转换的哪一通道的地址到A,B,C端口上。
(4).在ST端给出一个至少有100ns宽的正脉冲信号。
(5).是否转换完毕,我们根据EOC信号来判断。
(6).当EOC变为高电平时,这时给OE为高电平,转换的数据就输出给单片机了。
3、ADC0809保护电路及检验电路
图3.2.2-2ADC0809保护电路及检验电路
如上图所示,放大、整流后的信号可以直接输入ADC0809进行转换,但是考虑到ADC0809的参考电压范围是0~5V之间,所以采用以上电路,当信号幅度大于5V时D4导通,ADC0809与+5V电源相连,当信号幅度小于0V时D3导通,ADC0809于地相连,这样就能保证输入ADC0809的信号在0~5V之间,对其起到保护作用。
图中滑动变阻器可对音频信号进行模拟,验证ADC0809运行情况。
3.2.3单片机AT89S52介绍
图3.2.3-1AT89S52引脚图
AT89S52的主要性能为:
1、与MCS-51单片机产品兼容;
2、字节在系统可编程Flash存储器;
3、000次擦写周期;
4、态操作:
0Hz-33MHz;
5、加密程序存储器;
6、可编程I/O口线;
7、16位定时器/计数器;
8、中断源;
9、UART串行通道;
10、空闲和掉电模式;
11、中断可唤醒;
12、定时器
13、指针;
AT89S52的管脚说明
VCC:
电源电压输入端
GND:
电源地。
P0口:
P0口为一个8位漏级开路双向I/O口,每脚可吸收8TTL门电流。
当P1口的管脚第一次写1时,被定义为高阻输入。
P0能够用于外部程序数据存储器,它可以被定义为数据/地址的第八位。
在FIASH编程时,P0口作为原码输入口,当FIASH进行校验时,P0输出原码,此时P0外部必须被拉P1口是一个内部提供上拉电阻的8位双向I/O口,P1口缓冲器能接收输出4TTL门电流。
P1口管脚写入1后,被内部上拉为高,可用作输入,P1口被外部下拉为低电平时,将输出电流,这是由于内部上拉的缘故。
在FLASH编程和校验时,P1口作为第八位地址接收。
P2口:
P2口为一个内部上拉电阻的8位双向I/O口,P2口缓冲器可接收,输出4个TTL门电流,当P2口被写“1”时,其管脚被内部上拉电阻拉高,且作为输入。
并因此作为输入时,P2口的管脚被外部拉低,将输出电流。
这是由于内部上拉的缘故。
P2口当用于外部程序存储器或16位地址外部数据存储器进行存取时,P2口输出地址的高八位。
在给出地址“1”时,它利用内部上拉优势,当对外部八位地址数据存储器进行读写时,P2口输出其特殊功能寄存器的内容。
P2口在FLASH编程和校验时接收高八位地址信号和控制信号。
P3口:
P3口管脚是8个带内部上拉电阻的双向I/O口,可接收输出4个TTL门电流。
当P3口写入“1”后,它们被内部上拉为高电平,并用作输入。
作为输入,由于外部下拉为低电平,P3口将输出电流(ILL)这是由于上拉的缘故。
P3口除了作为普通I/O口,还有第二功能:
P3.0RXD(串行输入口)
P3.1TXD(串行输出口)
P3.2/INT0(外部中断0)
P3.3/INT1(外部中断1)
P3.4T0(T0定时器的外部计数输入)
P3.5T1(T1定时器的外部计数输入)
P3.6/WR(外部数据存储器的写选通)
P3.7/RD(外部数据存储器的读选通)
I/O口作为输入口时有两种工作方式,即所谓的读端口与读引脚。
读端口时实际上并不从外部读入数据,而是把端口锁存器的内容读入到内部总线,经过某种运算或变换后再写回到端口锁存器。
只有读端口时才真正地把外部的数据读入到内部总线。
89C51的P0、P1、P2、P3口作为输入时都是准双向口。
除了P1口外P0、P2、P3口都还有其他的功能。
RST:
复位输入端,高电平有效。
当振荡器复位器件时,要保持RST脚两个机器周期的高电平时间。
ALE/PROG:
地址锁存允许/编程脉冲信号端。
当访问外部存储器时,地址锁存允许的输出电平用于锁存地址的低位字节。
在FLASH编程期间,此引脚用于输入编程脉冲。
在平时,ALE端以不变的频率周期输出正脉冲信号,此频率为振荡器频率的1/6。
因此它可用作对外部输出的脉冲或用于定时目的。
然而要注意的是:
每当用作外部数据存储器时,将跳过一个ALE脉冲。
如想禁止ALE的输出可在SFR8EH地址上置0。
此时,ALE只有在执行MOVX,MOVC指令是ALE才起作用。
另外,该引脚被略微拉高。
如果微处理器在外部执行状态ALE禁止,置位无效。
PSEN:
外部程序存储器的选通信号,低电平有效。
在由外部程序存储器取指期间,每个机器周期两次/PSEN有效。
但在访问外部数据存储器时,这两次有效的/PSEN信号将不出现。
EA/VPP:
外部程序存储器访问允许。
当/EA保持低电平时,则在此期间外部程序存储器(0000H-FFFFH),不管是否有内部程序存储器。
注意加密方式1时,/EA将内部锁定为RESET;当/EA端保持高电平时,此间内部程序存储器。
在FLASH编程期间,此引脚也用于施加12V编程电源。
XTAL1、XTAL2:
片内振荡器反相放大器和时钟发生器的输入、输出端。
3.2.4时钟电路与复位电路
1.时钟电路
图3.2.4-1时钟电路
采用单片机内部晶振。
如图5.2所示。
在MCS-51系列单片机内部有一个高增益反向放大器,其输入端为芯片引脚XTAL1,输出端为引脚XTAL2。
而在芯片外部XTAL1和XTAL2之间跨接晶体振荡器和微调电容,形成反馈电路,就构成了一个稳定的自激振荡器。
外接晶体(石英或陶瓷,陶瓷的精度不高,但价格便宜)振荡器以及电容C
和C2构成并联谐振电路,接在放大器的反馈回路中,C
和C2的大小会对振荡器频率的高低、振荡器的稳定性、起振的快速性和温度特性有一定的影响。
因此建议在采用石英晶体振荡器时C=30+/-10pF,陶瓷振荡器时,C=40+/-10pF,典型值为40pF。
在设计电路板时,振荡器和电容应尽量安装得与单片机靠近,以减小寄生电容的存在更好的保障振荡器稳定、可靠的工作。
2.复位电路
图3.2.4-2复位电路
上电复位电路如图4所示,是利用外部复位电路实现。
振荡器启动时间不超过10ms。
在加电情况下,这个电可以使单片机复位。
按键手动复位又分按键脉冲电平复位和按键电平复位,如图4.7,4.8。
电平复位将复位端通过电阻与Vcc相连,按键脉冲复位是利用RC分电路产生正脉冲来达到复位的。
在按键电平复位和按键脉冲复位两种简单的复位电路中,干扰易串入复位端,在大多数情况下,不会造成单片机的错误复位,但会引起内部寄存器错误复位,这里可在复位端引脚上接一个去藕电容。
需说明的是,如复位电路中R、C的值选择不当,使复位时间过长,单片机将处于循环复位状态。
3.2.5LED发光显示电路
图3.2.5-1LED发光显示电路
3.2.6下载端口
图3.2.6-1下载端口
AT89S52单片机可以通过串口下载,也可以采用USBASP下载口进行程序烧写,可以随时在线编程,具有热拔插特性。
USBASP是一种基于ATMEL公司的AVR系列RISC单片机的高速性质和一个由纯软件的USB通信协议栈而USBASP构成的一个可以向51系列,AVR系列单片机下载(烧写)程序的下载器。
其软件内核为:
AVRUSB.些软件USB协议为一开源项目.由其产生了很多优秀的应用,USBASP就是其中之一。
这种下载器工作稳定,速度很快,而且成本相当的低,是一种适合初学者的下载器,其稳定性的高低和其内部的固件有很大关系。
还有就是有的USBASP不支持64K以上的大程序,而有的则支持。
还有些USBASP甚至有时钟输出的功能。
所以用户在选择USBASP的时候一定要询问清楚.其中时钟输出功能是很有用的,可以帮助用户解决某些难以解决的问题。
4.软件设计原理
首先,通过AT89S52对ADC0809进行编程控制,使其不断对音频信号进行转换;其次,AT89S52通过将AD每次转换后的信号进行分析、计算,因为LED显示电路部分有8个灯共9种状态,因此单片机将AD转换结果(转换范围0--255)除以8,便得到9种音量状态;最后,单片机根据计算后确定一种状态,通过P0口输出控制LED的亮灭。
5.硬件电路制作和组装调试
将画好的PCB打印出来,用熨斗或者过塑加热机将PCB印制在铜板上,然后检查一下是否有些布线脱落,如果有,则用油性笔将其补画完全,检查无误后开始去腐蚀铜板。
将浓盐酸、双氧水、水按1:
3:
1的比例进行混合搭配,配置出来的溶液刚好可以用来腐蚀铜板。
将铜板放在溶液中让其反应,腐蚀结束后取出来,用清水将其表面的腐蚀液清洗干净,然后就可以进行钻孔了。
吸取了上一次课程设计的教训,这一次的钻孔就很好注意许多要点,比如说插针的孔径要用1mm的钻针等。
钻孔结束后就可以进行焊接元器件了。
由于制作的是单面板,在板的顶层有几根跳线,首先进行的就是对跳线的焊接,这样接下来的元器件就比较方便焊接了。
用万用表来识别二极管和LED的正负极,电阻的阻值,将对应的元器件焊接好。
焊接的过程,发现有些元器件的封装和元器件对应不上,以后要注意画PCB时要找对应的封装进行匹配,以免发生焊接不上的错误。
所有元器件都焊接完成后,用万用表来检查是否有断路或者短路的,有的话就可以进行相应的处理。
接下来就可以对电源模块进行检测了,在所有芯片都不安装的情况下,给系统5V电压的供电,看电源指示灯是否工作,然后用万用表来测每个芯片是否有短路的现象,再用万用表来测量每个芯片的电源两端是否是对应的电压,如果检查正确无误,则可以将芯片安装上去进行初步的检测,检查元器件和芯片的引脚是否连接,每个元器件对应的引脚是否有正确的电压。
检查无误后,就可以进行下一步的软件编程和调试了。
6.软件调试过程及遇到的问题和解决方法
由于本次课程设计采用的是C语言编程,所用采用KEILC编程软件工具。
在安装好KEILC软件之后就可以通过建立工程来进行C语言编程了。
建立的工程要选择相应的芯片,由于此次我们普遍采用AT89S52,所以工程也选择ATMEL公司的AT89S52芯片。
刚开始编程的时候,为了测试系统板能不能工作,先对PO口的LED灯进行流水灯控制,发现无法对P0口位操作,以为是芯片坏了,后来查了一下资料,原来要对P0口(P1、P2、P3)进行位操作,必须先对它们的每一位进行位定义,例如sbitp10=P1^0,检查问题并修改后,终于可以进行位操作了,但发现P0口的LED灯不能按逻辑控制,亮灭不稳定,后来检查了一下,发现,原来是P0口要接对上拉电阻,而且要将排阻的VCC端焊接正确,发现排阻的VCC端反接了,改正后P0口就可以正常工作了。
最后就是将每个模块程序结合在一起调试,由于电机转动也需要时间,这样就和汽车尾灯的亮灭时间产生了冲突,所以,要调用合适的转速时间。
调试的过程遇到的问题:
1、P0、P1、P2、P3口的使用时,P字母应为大写。
最好在程序开始时对这三个口进行自定义,例如:
#defineledP0,这样可以简单明了、直观,知道P0口的作用是什么,而且修改起来可以全局改变,不用一个一个接口去修改;
2、赋值符号“=”和逻辑运算符“==”使用的错误。
有时候用条件判断语句ifelse的时候,常常错误地将if(key1=1)当成if(key1==1)来使用,导致条件一直都满足,程序调试起来很难检查出这个错误。
3、有些变量没有定义或者重复定义,导致编译的时候经常出现错误。
7.课设总结
本次课程设计是基于51单片机的声控彩灯系统。
通过老师的指导和自己的检索资料,设计了一个普通的小系统,实现了基于单片机的声控彩灯系统的基本功能。
虽然这个学期的课程设计与考研有一定冲突,但是我学会了在这个特殊的时间段内比较合理的把握时间,兼顾了学业和考研,在这个过程中自己得到了一定的锻炼。
在电路的原理设计方面,自己到图书馆和网上查找资料,并且积极和同
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 单片机 声控 彩灯 设计
![提示](https://static.bdocx.com/images/bang_tan.gif)