找回密码
 立即注册

QQ登录

只需一步,快速开始

搜索
查看: 63150|回复: 7
打印 上一主题 下一主题
收起左侧

基于51单片机的音乐盒设计论文

  [复制链接]
跳转到指定楼层
楼主
ID:275682 发表于 2018-1-13 21:22 | 只看该作者 回帖奖励 |倒序浏览 |阅读模式
基于51单片机音乐盒

摘要
随着科学技术的不断发展带动着电子行业的地位越来越重,现在电子产品几乎在社会的各个领域都可以见到。这些技术的发展有效的带动着社会生产力的发展和信息化的提高,同时电子产品也越来越智能。
本设计采用单片机控制喇叭实现一个小型音乐盒,即电子音乐盒的设计。采用了8欧/0.5W小喇叭发声来实现歌曲的播放,能保持基本音调不变,流畅播放出歌曲并可以通过按键进行上下曲切换和开始/暂停并且使用LCD1602显示播放的歌曲序号和名称。同时进行歌曲播放计时。还添加了DS18B20对环境温度的采集,并实时显示出来。主控芯片采用STC89C51单片机。功能键盘采用微动开关,实现上下曲切换和开始/暂停播放功能;扬声器由单片机的P2.0口进行控制,实现歌曲播放。
ABSTRACT
With the continuous development of science and technology, the status of the electronics industry is becoming more and more important. Now the electronic products can be seen in almost every field of the society. The development of these technologies is effective to promote the development of social productive forces and the improvement of information technology, while the electronic products are becoming more and more intelligent.
This design uses the single chip microcomputer to realize a small music box, namely the electronic music box. The use of 8 /0.5W small speakers sound to achieve the song's play, to maintain the basic tone unchanged, smooth playback of songs and can be played on the keys to switch and start / pause and the use of LCD1602 to display the songs and the number of songs. At the same time to play a time song. Also added DS18B20 to the environmental temperature collection, and real-time display. Main control chip using STC89C51 microcontroller. Function keyboard uses micro switch, the switch of the upper and lower music and start / pause playback function; the speaker is controlled by the P2.0 port of the single chip microcomputer, and the song is played.

目录
摘  要
ABSTRACT
1  引言
1.1  选题背景
1.2   音乐盒的意义
1.3   本课题研究主要内容
2  系统硬件方案选择
2.1 硬件方案的选择
2.1.1  主控芯片的选择
2.1.2  显示器件的选择
2.1.3  温度传感器的选择
2.2  系统总体方案
3  音乐盒设计原理
3.1  播放音乐的原理
3.2  音符频率的产生
3.3  节拍频率的产生
4  系统硬件电路设计
4.1  STC89C51单片机系统设计
4.1.1  STC89C51的概述
4.1.2  STC89C51单片机的最小系统
4.2  LCD1602液晶显示的介绍
4.2.1  LCD1602的概述
4.2.2  LCD1602的工作原理
4.3  DS18B20温度传感器的介绍
4.3.1  DS18B20的概述
4.3.2  DS18B20的工作原理
4.4  扬声器部分
4.5  独立按键电路的设计
4.6  原理图绘制软件的介绍
4.7  系统硬件测试
5  系统软件部分设计
5.1  软件开发环境的介绍
5.2  系统主要函数设计
5.2.1主函数的设计
5.2.2  LCD1602显示函数的设计
5.2.3  DS18B20温度采集函数的设计
5.3  系统软件测试
6  结论
参考文献
附录A:原理图
附录B:源程序

1  引言
1.1  设计背景
音乐盒的起源,可追溯至中世纪欧洲文艺复兴时期。当时为使教会的钟塔报时,而将大小的钟表装上机械装置,被称为“可发出声音的组钟”。音乐盒有着300多年的发展历史,是人类文明发展的历史见证。
传统的音乐盒多是机械音乐盒,其工作原理是通过齿轮带动一个带有铁钉的铁桶转动,铁桶上的铁钉撞击铁片制成的琴键,从而发出声音。但是,机械式的音乐盒体积比较大,比较笨重,且发音单调。水、灰尘等外在因素,容易使内部金属发音条变形,从而造成发音跑调。另外,机械音乐盒放音时为了让音色稳定,必须放平不能动摇,而且价格昂贵,不能实现大批量生产。
现今,音乐盒的制造,延袭传统,结合现代,正日益成为人们或为了典藏一段岁月,或为了收藏一份情感,或出于对音乐的追求,或对于旧时代的怀念,或为了居室的美化,等等,而得到众多品位人士的追求。
1.2   音乐盒的意义
音乐盒的起源,可以追溯到中世纪欧洲文艺复兴时期。当时为了使教会的钟塔报时,而将大小的钟表装上了机械装置,被称之为“可发出声音的组钟”。音乐盒已有着300多年的发展历史,是人类文明发展的历史见证。
传统的音乐盒大多是机械音乐盒,其工作的原理是通过齿轮来带动一个带有铁钉的铁桶转动,铁桶上的铁钉撞击用铁片制成的琴键,从而发出声音。但是,机械式的音乐盒体积较大,比较笨重,并且发音单调。水和灰尘等外在因素,容易使得内部金属发音条变形,从而会造成发音跑调。此外,机械音乐盒放音时为了能让音色稳定,必须要放平不能动摇,而且价格昂贵,不能够实现大批量生产。
1.3   本设计研究主要内容
  利用STC89C51单片机,结合LCD显示模块、喇叭、放大电路 ,完成音乐盒的播放;具体设计实现的功能如下
(1)通过按键控制多首音乐播放,并可通过按键选择一个开始,一个暂停,一个翻上首,一个翻下首;
(2)通过显示电路显示播放歌曲名和编号;
(3)通过DS18B20实时采集环境温度并显示。
(4)能够对歌曲播放时长进行计时,并显示。

2  系统硬件方案选择
本章节主要介绍系统所用到的器件的选择与对比,进行综合的对比考虑选择出最适合本设计的一组方案。
2.1 硬件方案的选择
在硬件电路的搭建之前必须明确设计的方案,通过各个模块之间进行比较选择出最适合本设计的硬件,以发挥器件的最大功效。
2.1.1  主控芯片的选择
方案一:
采用STC89C51单片机作为主控芯片。STC89C51是宏晶科技公司生产的一款低功耗、高性能的八位CMOS微处理器,片内具有8k在线编程Flash存储器。STC89C51单片机的内核采用的是MCS-51内核,指令完全兼容MCS-51,但是该单片机越做了升级使得芯片具有很多传统的51单片机不具备的功能,例如该芯片还有4K的EEPROM存储,在需要使用到掉电存储数据的时候就可以直接使用单片机内部的存储,不在需要在外接存储芯片进行存储。STC89C51单片机具有的开发简单、可在线编程下载、成本低是非常不错的选择。
方案二:
采用MSP430单片机作为主控芯片。MSP430单片机称之为混合信号处理器,它可以将多个不同功能的模拟电路、数字电路模块和微处理器集成在一个芯片上,MSP430系列单片机是美国德州仪器 (TI)1996年开始推向市场的一种16位超低功耗、具有精简指令集(RISC)的混合信号处理器(Mixed Signal Processor)。该系列单片机多应用于需要电池供电的便携式仪器仪表中。而却开发难度相对比较大、价格昂贵。所以在一些简单的设计中不宜采用。
方案三:
采用PIC16F877A单片机作为主控芯片。PIC16F877A是由Microchip公司所生产开发的新产品,属于PICmicro系统8位单片机微机,具有Flash程序内存功能,可反复擦写程序。但是开发成本高,难度相对大。
综合上述的描述,考虑到资源的合理利用和成本以及开发的难易程度最终决定采用宏晶科技的STC89C51单片机作为主控芯片。
2.1.2  显示器件的选择
方案一:
采用LED数码管动态扫描显示。LED数码管的价格适中,对于显示数字或者简单的字母会比较合适。但是采用动态扫描法与单片机连接时占用CPU的I/O口较多,并且由于单片机的IO口输出电流不够,所以需要一个驱动电路,通过驱动电路放大电流后控制数码管,还有就是采用数码管进行显示的话显示的内容多了对于电路的焊接机会增大难得容易焊接错误。
方案二:
采用LCD1602液晶显示屏。LCD1602液晶又叫LCD1602字符型液晶。液晶显示功能强大,可以同时显示出16*2即32个字符,可包括数字、字母、符号、或者自定义字符。LCD1602液晶显示器中的每一个字符都是由5*7的点阵组成。LCD1602采用并行数据传输也可以采用串行数据传输,控制简单,和市面上的大多基于HD44780液晶的控制原理完全相同。
方案三:
采用LCD12864液晶显示屏。带中文字库的128X64是一种具有4位/8位并行、2线或3线串行多种接口方式,其显示分辨率为128×64,内置8192个16*16点汉字,和128个16*8点ASCII字符集。利用该模块灵活的接口方式和简单、方便的操作指令,可构成全中文人机交互图形界面。可以显示8×4行16×16点阵的汉字,也可完成图形显示,低电压低功耗是其又一显著特点。虽然LCD12864液晶显示的功能强大,但是显示的内容偏大造成了,显示空间的浪费,再来该液晶的成本高。
综合上述的描述,最终根据本设计中的功能要求考虑采用LCD1602液晶显示器比较合理。
2.1.3  温度传感器的选择
方案一:
使用热敏电阻作为传感器,用热敏电阻与一个相应阻值电阻相串联分压,利用热敏电阻阻值随温度变化而变化的特性,采集这两个电阻变化的分压值,并进行A/D转换。此设计方案需用A/D转换电路,增加硬件成本而且热敏电阻的感温特性曲线并不是严格线性的,会产生较大的测量误差。
方案二:
采用模拟温度传感器AD590,该传感器的输出电流会随温度的变化而变化,从而需要设计电路转换成电压的变化,进而通过A/D转换后接到单片机中,这种方法固然麻烦,而却费用比较高,而却在电流电压转换和A/D转换中会产生误差。
方案三:
采用数字式温度传感器DS18B20,此类传感器为数字式传感器而且仅需要一条数据线进行数据传输,易于与单片机连接,可以去除A/D模块,降低硬件成本,简化系统电路。另外,数字式温度传感器还具有测量精度高、测量范围广等优点。
所以最终我们采用数字型DS18B20作为温度采集芯片。
2.2  系统总体方案
通过上述对各个模块介绍,我们最终选择了STC89C51作为本设计的主控芯片,采用DS18B20采集温度,通过LCD1602显示歌曲名称和序号和温度值,并可以通过按键实现歌曲的开始/暂停播放,上下曲的切换等功能。
本设计的具体的系统方案如下图2.1所示。
图2.1 系统方案



3  音乐盒设计原理3.1  播放音乐的原理
发音原理:播放一段音乐需要的是两个元素,一个是音调,另一个是音符。首先要了解对应的音调,音调主要由声音的频率决定,同时也与声音强度有关。对一定强度的纯音,音调随频率的升降而升降;对一定频率的纯音、低频纯音的音调随声强增加而下降,高频纯音的音调却随强度增加而上升。另外,音符的频率有所不同。基于上面的内容,这样就对发音的原理有了一些初步的了解。  
音符的发音主要靠不同的音频脉冲。利用单片机的内部定时器/计数器0,使其工作在模式1,定时中断,然后控制P2.0引脚的输出音乐。只要算出某一音频的周期(1/频率),然后将此周期除以2,即为半周期的时间,利用定时器计时这个半周期时间,每当计时到后就将输出脉冲的I/O反相,然后重复计时此半周期时间再对I/O反相,就可在I/O脚上得到此频率的脉冲。
3.2  音符频率的产生
音符及定时器初始值:
例如:中音1(do)的音频=523HZ,周期T=1/523s=1912us
定时器/计数器0的定时时间为:T/2=1912/2us=956s
定时器956us的计数值=定时时间/机器周期=956us/1s=956(时钟频率=12MHZ)
装入T0计数器初值为65536-956=64580
将64580装入T0寄存器中,启动T0工作后,每计数956次时将产生溢出中断,进入中断服务时,每次对P2.0引脚的输出值进行取反,就可得到中音DO(523HZ)的音符音频。将51单片机内部定时器工作在计数器模式1下,改变计数初值TH0,TL0以产生不同的频率。下表,3-1是C调各音符频率与计数初值T的对照表。   
表3-1   C调各音符频率与计数初值T的对照表
音符
频率(Hz/初值(us
音符
频率(Hz/初值(us
低1 DO
262/63627
中1 DO
523/64580
高1 DO
1024/65056
低2 DO
294/63835
中2 DO
589/64687
高2 DO
1245/65134
低3 DO
330/64021
中3 DO
661/64780
高3 DO
1318/65157
低4 DO
350/64107
中4 DO
700/64264
高4 DO
1397/65178
低5 DO
393/64264
中5 DO
786/67900
高5 DO
1568/65217
低6 DO
441/64402
中6 DO
882/64969
高6 DO
1760/65252
低7 DO
495/64526
中7 DO
990/65031
高7 DO
1967/65282


音符、音符编码及定时器初始值:
为了产生音符,必须求出音符低音5-高音5的计数初值。例如C调的低1DO的THTL=65536-50000/262=63627,中音DO的THTL=65536-500000/523=64580,高音DO的THTL=65536-500000/1042=65056。为了方便写谱,对其进行简单的编码,在编程时,根据音符编码查找对应的计数初值。比如说音乐是C调的,那么出现低音的5SO,直接将代码写为4;出现低音6LA,直接写一个5的代码;出现低音7SI,直接写一个6代码。具体编码表如表3-2所示。
表3-2  音符编码表
音符
1
2
3
4
5
6
7
代码
0
1
2
3
4
5
6
音符
1
2
3
4
5
6
7
代码
7
8
9
10
11
12
13
音符
̇1
̇2
̇3
̇4
̇5
̇6
̇7
代码
14
15
16
17
18
19
20
3.3  节拍频率的产生
节拍的产生与编码:
音乐中的节拍用延时时间产生。例如1拍=0.4s,1/4拍=0.1s,以此类推。假设1/4拍执行一次延时程序,则1/2拍就执行两次延时程序,所以只要求出1/4拍的延时时间,其余节拍就是它的倍数。为了方便,将节拍数也进行了编码,并且计算了乐谱节拍编程时的延时时间。
4  系统硬件电路设计
本章节主要介绍本设计中各个部分电路的设计原理。通过各个模块的功能描述了解其工作原理以及在设计的中作用。
4.1  STC89C51单片机系统设计4.1.1  STC89C51的概述
STC89C51是STC公司生产的一种低功耗、高性能CMOS8位微控制器,具有 8K 在系统可编程Flash存储器。STC89C51使用经典的MCS-51内核,但做了很多的改进使得芯片具有传统51单片机不具备的功能。在单芯片上,拥有灵巧的8 位CPU和在系统可编程Flash,使得STC89C51为众多嵌入式控制应用系统提供高灵活、非常有效的解决方案。具有以下标准功能:8k字节Flash,512字节RAM,32位I/O口线,看门狗定时器,内置4KB EEPROM,MAX810复位电路,3个16位定时器/计数器,4个外部中断,一个7向量4级中断结构(兼容传统51的5向量2级中断结构),全双工串行口。另外STC89X52 可降至0Hz 静态逻辑操作,支持2种软件可选择节电模式。空闲模式下,CPU停止工作,允许RAM、定时器/计数器、串口、中断继续工作。掉电保护方式下,RAM内容被保存,振荡器被冻结,单片机一切工作停止,直到下一个中断或硬件复位为止。最高运作频率35MHz,6T/12T可选。
4.1.2  STC89C51单片机的最小系统
单片机最小系统说的通熟易懂的话就是以最少的元器件组成能让单片机工作起来的系统,接下来开始介绍51单片机最小系统必备的器件及其作用。
首先电源这对于一个电子产品的话是必不可少,它提供能源给系统运作,在本设计中由于51单片机的工作电压在4.5~5.5V之间都可以正常工作所以我们采用了USB电源线连接手机充电器插头或者5V的移动电源给系统进行供电。
其次晶振电路,XTAL1和XTAL2 是独立的输入和输出反相放大器,它们可以被配置为使用石英晶振的片内振荡器,或者是器件直接由外部时钟驱动。图4.1中采用的是内时钟模式,即采用利用芯片内部的振荡电路,在XTAL1、XTAL2 的引脚上外接定时元件(一个石英晶体和两个电容),内部振荡器便能产生自激振荡。一般来说晶振可以在1.2~12MHz 之间任选,甚至可以达到24MHz 或者更高,但是频率越高功耗也就越大。在本实验套件中采用的12M 的石英晶振。和晶振并联的两个电容的大小对振荡频率有微小影响,可以起到频率微调作用。当采用石英晶振时,电容可以在20 ~40pF 之间选择(本设计使用30pF);当采用陶瓷谐振器件时,电容要适当地增大一些,在30~50pF 之间。通常选取30pF 的陶瓷电容就可以了。
图4.1 晶振电路
再来就是复位电路,复位电路分为:上电自动复位和开关复位。图4.2 中所示的复位电路就包括了这两种复位方式。上电瞬间,电容两端电压不能突变,此时电容的负极和RESET 相连,电压全部加在了电阻上,RESET 的输入为高,芯片被复位。随之+5V电源给电容充电,电阻上的电压逐渐减小,最后约等于0,芯片正常工作。并联在电容的两端为复位按键,当复位按键没有被按下的时候电路实现上电复位,在芯片正常工作后,通过按下按键使RST管脚出现高电平达到手动复位的效果。一般来说,只要RST 管脚上保持10ms 以上的高电平,就能使单片机有效的复位。图中所示的复位电阻和电容为经典值,实际制作是可以用同一数量级的电阻和电容代替,读者也可自行计算RC 充电时间或在工作环境实际测量,以确保单片机的复位电路可靠。
图4.2 复位电路
完整的STC89C51单片机最小系统电路图如图4.3所示。
图4.3 STC89C51单片机最小系统
4.2  LCD1602液晶显示的介绍4.2.1  LCD1602的概述
LCD1602液晶也叫LCD1602字符型液晶,它是一种专门用来显示字母、数字、符号等的点阵型液晶模块。它由若干个5X7或者5X11等点阵字符位组成,每个点阵字符位都可以显示一个字符,每位之间有一个点距的间隔,每行之间也有间隔,起到了字符间距和行间距的作用,正因为如此所以它不能很好地显示图形。LCD1602液晶模块采用HD44780控制器,HD44780具有简单而功能较强的指令集,可以实现字符移动,闪烁等功能,LCD1602与单片机MCU通讯可采用8位或4位并行传输两种方式,HD44780控制器由两个8位寄存器,指令寄存器(IR)和数据寄存器(DR)忙标志(BF),显示数RAM(DDRAM),字符发生器ROMA(CGOROM)字符发生器RAM(CGRAM),地址计数器RAM(AC)。IR用于寄存指令码,只能写入不能读出,DR用于寄存数据,数据由内部操作自动写入DDRAM和CGRAM,或者暂存从DDRAM和CGRAM读出的数据,BF为1时,液晶模块处于内部模式,不响应外部操作指令和接受数据,DDTAM用来存储显示的字符,能存储80个字符码,CGROM由8位字符码生成5*7点阵字符160中和5*10点阵字符32种.8位字符编码和字符的对应关系, CGRAM是为用户编写特殊字符留用的,它的容量仅64字节,可以自定义8个5*7点阵字符或者4个5*10点阵字符,AC可以存储DDRAM和CGRAM的地址,如果地址码随指令写入IR,则IR自动把地址码装入AC,同时选择DDRAM或CGRAM,LCD1602液晶实物图如图4.4所示。
图4.4 LCD1602液晶实物图
4.2.2  LCD1602的工作原理
LCD1602一共具有11条指令,单片机发送这些指令到LCD1602上就可以完成一些特定的功能,比如清屏,开关显示等等。LCD1602自己带有字库在显示的时候可以直接调用字库进行显示,当然如果字库中没有的字符也可以根据需要自己自定义字符写入CGROM中,自定义字符的分辨率为5*8而却自定义字符数量有限需要合理的安排使用,最多可以自定义8个字符,将自定义字符字模写入LCD的CGROM中后就可以随意的调用,调用的方式和正常显示字符是一样的。
控制LCD1602液晶显示器只要会对LCD1602进行读状态操作、写指令操作、读数据操作、写数据操作即可具体的操作对应的引脚电平如表4-1所示。
表4-1 LCD1602操作指令对应的引脚电平

读状态
写指令
读数据
写数据
输入
RS=L,R/W=H,E=H
RS=L,R/W=L,D0-D7=指令码,E=高脉冲
RS=H,R/W=H,E=H
RS=H,R/W=L,D0-D7=数据,E=高脉冲
输出
D0-D7=状态
D0-D7=数据
上表中E为使能端;RS为寄存器选择,当RS=H时表示选择数据寄存器,RS=L时选择指令寄存器;R/W为信号线,R/W=H时执行读操作,R/W=L时执行写操作。LCD1602具体的读操作时序如图4.5,写操作时序如图4.6所示。
图4.5 LCD1602读操作时序图
图4.6 LCD1602写操作时序图
在使用时候将D0-D7连接到51单片机的P0上方便进行数据的传输,而V0口接一个可调电位器,当调节电位器位置改变时接入V0的电压也随之变化进行显示的清晰度也随之变化,所以在实际时采用电位器而不采用固定阻值的电阻就是为了能够方便的调节以使用在电压不同的场合。具体LCD1602电路图如图4.7所示。
图4.7  LCD1602电路图
4.3  DS18B20温度传感器的介绍4.3.1  DS18B20的概述
DS18B20温度传感器是美国DALLAS半导体公司最新推出的一种改进型智能温度传感器,与传统的热敏电阻等测温元件相比,它能直接读出被测温度,并且可根据实际要求通过简单的编程实现9~12位的数字值读数方式。DS18B20的性能特点如下:独特的单线接口仅需要一个端口引脚进行通信;多个DS18B20可以并联在惟一的三线上,实现多点组网功能;无须外部器件;可通过数据线供电,电压范围为3.0~5.5v;零待机功耗;温度以9或12位二进制数字表示;用户可定义报警设置;报警搜索命令识别并标志超过程序限定温度(温度报警条件)的器件;负电压特性,电源极性接反时,温度计不会因发热而烧毁,但不能正常工作;DS18B20温度传感器引脚图如图4.8所示。
图4.8 DS18B20温度传感器引脚图
4.3.2  DS18B20的工作原理
根据DS18B20的通讯协议,主机(单片机)控制DS18B20完成温度转换必须经过三个步骤:每一次读写之前都要对DS18B20进行 复位操作,复位成功后发送一条ROM指令,最后发送RAM指令,这样才能对DS18B20进行预定的操作。复位要求主CPU将数据线下拉500微秒,然后 释放,当DS18B20收到信号后等待16~60微秒左右,后发出60~240微秒的存在低脉冲,主CPU收到此信号表示复位成功。下面表4-2为ROM指令表,表4-3位RAM指令表。
表3-2 DS18B20 ROM指令表
指令
约定代码
功能
读ROM
33H
读DS1820温度传感器ROM中的编码(即64位地址)
符合ROM
55H
发出此命令之后,接着发出 64 位 ROM 编码,访问单总线上与该编码相对应的 DS1820 使之作出响应,为下一步对该DS1820 的读写作准备。
搜索ROM
0FOH
用于确定挂接在同一总线上 DS1820 的个数和识别 64 位 ROM地址。为操作各器件作好准备。
跳过ROM
0CCH
忽略 64 位 ROM 地址,直接向 DS1820 发温度变换命令。适用于单片工作。
告警搜索命令
0ECH
执行后只有温度超过设定值上限或下限的片子才做出响应。
表4-3 DS18B20 RAM指令表
约定代码
温度变换
44H
启动DS1820进行温度转换,12位转换时最长为750ms(9位为93.75ms)。结果存入内部9字节RAM中。
读暂存器
0BEH
读内部RAM中9字节的内容
写暂存器
4EH
发出向内部RAM的3、4字节写上、下限温度数据命令,紧跟该命令之后,是传送两字节的数据。
复制暂存器
48H
将RAM中第3、4字节的内容复制到EEPROM中。
重调 EEPROM
0B8H
将EEPROM中内容恢复到RAM中的第2、3字节。
读供电方式
0B4H
读DS1820的供电模式。寄生供电时DS1820发送“0”,外接电源供电 DS1820发送“1”。
DS18B20单总线控制时序图如图4.9所示。
图4.9 DS18B20单总线操作时序图
当DS18B20接收到温度转换命令后,开始启动转换。转换完成后的温度值就以16位带符号扩展的二进制补码形式存储在高速暂存存储器的第1、2字节。单片机可以通过单线接口读出该数据,读数据时低位在先,高位在后,数据格式以0.0625℃/LSB形式表示。
当符号位s=0时,表示测得的温度值为正值,可以直接将二进制位转换为十进制;当符号位s=1时,表示测得的温度值为负值,要先将补码变成原码,再计算十进制数值。输出的二进制数的高5位是符号位,最后4位是温度小数点位,中间7位是温度整数位。表4-4是一部分温度值对应的二进制温度数据。

表4-4  DS18B20输出的温度值

温度值
二进制输出
十六进制输出
+125℃
0000 0111 1101 0000
07D0h
+85℃
0000 0101 0101 0000
0550h
+25.0625℃
0000 0001 1001 0001
0191h
+10.125℃
0000 0000 1010 0010
00A2h
+0.5℃
0000 0000 0000 1000
0008h
0℃
0000 0000 0000 0000
0000h
-0.5℃
1111 1111 1111 1000
FFF8h
-10.125℃
1111 1111 0101 1110
FF5Eh
-25.0625℃
1111 1110 0110 1111
FF6Fh
-55℃
1111 1100 1001 0000
FC90h
在使用时候DS18B20的I/O引脚接一个10K的上拉电阻。具体的电路图如图4.10所示。
图4.10  DS18B20电路图
4.4  扬声器部分
扬声器采用的是直径4CM,8欧,0.5W的小喇叭,播放声音准确清楚。通过一端接地,一端接PNP三极管的集电极,三极管的基级接一个可调电阻,进行调节扬声器发出的声音,具体电路如下4.11。

图4.11  扬声器驱动电路

4.5  独立按键电路的设计
本设计中设置有按键电路,通过几个独立按键进行人机交互。按键通过一点连接单片机的I/O口一端连接电源地。这样设计是因为单片机的I/O在悬空没有作为输出的情况下是默认高电平的,在按键没有按下则相当于该I/O处于悬空状态。当按下后I/O口的电平就会被拉低,这样单片机只需要进行循环的检测I/O口是否有出现低电平就可以判断是否有按键按下,当然这种按键是金属解除的方式所以会有抖动纹波的情况,所以在程序中需要适当的加上短暂的延时消抖。具体电路如图4.12所示。

图4.12 独立按键电路
三个按键的功能分别为:
第一个按键:实现上一曲播放。
第二个按键:实现开始/暂停播放切换。
第三个按键:实现下一曲播放。
4.6  原理图绘制软件的介绍
Altium Designer是Altium公司于2004年推出的电路设计软件版本,该软件能实现从概念设计,顶层设计直到输出生产数据以及这之间的所有分析验证和设计数据的管理。当前比较流行的Protel 98、Protel 99 SE和Protel DXP,就是它的前期版本。
Altium Designer2004已不是单纯的PCB(印制电路板)设计工具,而是由多个模块组成的系统工具,分别是SCH(原理图)设计、SCH(原理图)仿真、PCB(印制电路板)设计、Auto Router(自动布线器)和FPGA设计及嵌入式软件开发等,覆盖了以PCB为核心的整个物理设计。该软件将项目管理方式、原理图和PCB图的双向同步技术、多通道设计、拓朴自动布线以及电路仿真等技术结合在一起,为电路设计提供了强大的支持。
与较早的版本Protel99相比,Altium Designer 2004不仅在外观上显得更加豪华、人性化,而且极大地强化了电路设计的同步化,同时整合了VHDL和FPGA设计系统,其功能大大加强了。
4.7  系统硬件测试
系统硬件电路的测试主要是检测电路是否出现漏焊、短路、断路、虚焊、一些具有方向的元件是否方向弄错、电路设计错误等情况。
对于漏焊、元件方向弄错的检测方法是将实物电路板对照着PCB图的线路,检查每一个元件和导线在实物上是否有出现。如果发现没有或者对不上的情况下需及时的重新对照确定漏焊时及时的补焊。
对于短路、断路、虚焊这些情况采用数字万用表。将数字万用表打到二极管档位,然后通过红表笔和黑表笔碰一起,万用表会发出鸣叫警示。根据这个原理就可以用来检测短路、断路、虚焊。在需要检测的元件或导线的两端用两根表笔检测,如果导通蜂鸣器会鸣叫,如果断开蜂鸣器不叫。这样根据我们所需要检测的情况,在结合检测的现象就可以测出线路是否有问题。



5  系统软件部分设计5.1  软件开发环境的介绍
本设计采用 Keil  μVision4进行编程实现。Keil C51是美国Keil Software公司出品的51系列兼容单片机C语言软件开发系统,与汇编相比,C语言在功能上、结构性、可读性、可维护性上有明显的优势,因而易学易用。Keil提供了包括C编译器、宏汇编、连接器、库管理和一个功能强大的仿真调试器等在内的完整开发方案,通过一个集成开发环境(uVision)将这些部分组合在一起。运行Keil软件需要WIN98、NT、WIN2000、WINXP等操作系统。如果你使用C语言编程,那么Keil几乎就是你的不二之选,即使不使用C语言而仅用汇编语言编程,其方便易用的集成环境、强大的软件仿真调试工具也会令你事半功倍。
5.2  系统主要函数设计5.2.1主函数的设计
主函数void main()是程序的入口函数,一个完整的程序必须要包含该函数。在该函数的开头一般都是先对单片机和一些外围器件需要进行初始化才能正常使用的器件进行初始化和重新赋值一些变量,初始化完后进去死循环,如果不进入死循环程序运行一次就会退出,如果加入死循环程序就会不断地进行循环达到实时检测执行的目的。在主程序的设计中需要注意的是主函数中不宜放过多的代码,具体的代码一般都是采用函数进行封装然后在主函数进行调用,这样也可以方便阅读修改。具体流程图如下4.1所示。
图4.1  主函数流程图
5.2.2  LCD1602显示函数的设计
LCD1602的显示只需要严格的按照厂家的时序要求进行编程就可以完成显示。LCD602的液晶显示首先需要将需要显示地方的地址通过命令写入,然后将数据按顺序的进行写入即可。在写入地址后显示第一个内容后地址会自动加一。函数名lcd1602_write_character(uchar x,uchar y,uchar *p),参数为x,y,*s,其中的x,y表示在液晶显示屏上的位置坐标,*s是需要显示的字符数组。软件根据输入需要显示的位置坐标计算出地址。显示函数流程图如5.2所示。
图5.2 显示子函数流程图
5.2.3  DS18B20温度采集函数的设计
首先需要对温度传感器DS18B20进行采集温度需要在主函数开始的时候先对DS18B20进行初始化,初始化的目的是配置传感器的寄存器使DS18B20的转换精度为12位。初始化完成后就可以对DS18B20进行操作读取温度。对DS18B20读取温度先需要让DS18B20复位然后如果总线上只有一个传感器的话可以跳过读系列号直接进行启动温度转换,然后在进行一次复位同样跳过系列号的匹配,然后发送读取温度指令,最后读取温度寄存器。读取完后将数据进行转换成实际温度即可。具体流程图如图5.4所示。
图5.4 DS18B20温度采集流程图
5.3  系统软件测试
测试所需的工具:KEIL软件、系统硬件、PL2303下载器等。
系统的软件方面通过KEIL软件进行编写,将编写好的程序生成.HEX文件后通过PL2303下载器下载到单片机中。通过观察整个系统运行的状态,然后进行反复的修改调试程序,最终得到一个完善的程序。
(1)在向LCD1602液晶发送清屏指令的时候,LCD1602并未成功的清楚屏幕。
解决方法:通过查阅LCD1602的使用手册,得到清屏的指令的确是0x01和程序上写的完全相同,而却显示屏可以显示出内容这表明程序发送指令是没有错误的,但是显示并未清屏。于是怀疑是否发送了清屏指令后里面进去下一个内容的显示,而LCD1602的处理速度不够,所以并未正真的执行清屏指令。通过添加40ms的延时后,重新下载进程序后发现清屏指令被执行了。通过仔细的阅读手册发现,LCD1602清屏的确需要1.64ms的执行时间,最终程序采用了4ms的延时。



6  结论
经过制作设计的这段时间的努力终于将本设计方案要求基本实现。由于时间、水平和经验有限,设计的作品还存在着一些的不足之处。
对于这次设计来说既是一次机遇,又是一次挑战。在这次的设计过程中,本人学到了很多东西,通过自己的实践,增强了动手能力。通过实际工程的设计也使我了解到书本知识和实际应用的差别。在实际应用中遇到很多的问题,这都需要我对问题进行具体的分析,并一步一步地去解决它。



参考文献
[1]              苏铁力,传感器及其接口技术[M],北京:中国石化出版社.1998
[2]              中国电子学会,传感器与执行器大全[M],北京:电子工业出版社.1998
[3]              白雪冰,张延林,等,单片机原理及应用[M],哈尔滨:东北林业大学出版社.2006
[4]              谢运祥,欧阳森等,电力电子单片机控制技术[M],北京:机械工业出版.2007
[5]              王洪业,传感器技术[M],长沙:湖南科学技术出版社.1995
[5]              李光飞,单片机课程设计实例指导,北京:北京航空航天大学出版社.2004
[6]              王法能,单片机原理及应用,科学出版社.2004
[7]              楼然苗,李光飞,51系列单片机设计实例[M],北京:北京航空航天大学出版社.2003
[8]              胡汗才,单片机原理与接口技术[M],清华大学出版社.2004
[9]              王萍,电子技术实验教程,机械工业出版社.2009
[10]              朱定华,戴淑萍,单片机微机原理与应用[M],清华大学出版社.2003
[11]              刘勇 编 数字电路 电子工业出版社 2004
[12]              陈正振 编 电子电路设计与制作 广西交通职业技术学院信息工程系 2007
[13]              杨子文 编 单片机原理及应用 西安电子科技大学出版社 2006
[14]  陈汝全.电子技术常用器件应用手册.北京:机械工业出版社,2004.10.
[15]  郝晓剑,杨述平,张连红.仪器电路设计与应用.北京:电子工业出版社,2007.6.
[16]  毕满清,王黎明,高文华.模拟电子技术基础.北京:电子工业出版社,2008.6.
[17]  韩焱,张艳花,王康谊.电子技术基础.北京:电子工业出版社,2009.6.
[18]  童长飞.CSO5lF系列单片机开发与C语言编程.北京:北京航空航天大学出版社,2005.

完整的Word格式文档51黑下载地址:

评分

参与人数 1黑币 +50 收起 理由
admin + 50 共享资料的黑币奖励!

查看全部评分

分享到:  QQ好友和群QQ好友和群 QQ空间QQ空间 腾讯微博腾讯微博 腾讯朋友腾讯朋友
收藏收藏4 分享淘帖 顶 踩
回复

使用道具 举报

沙发
ID:318150 发表于 2018-5-2 12:12 | 只看该作者
楼主,有源代码吗?
回复

使用道具 举报

板凳
ID:341783 发表于 2018-5-30 22:00 | 只看该作者
有原代码吗楼主大大
回复

使用道具 举报

地板
ID:87877 发表于 2018-9-24 22:34 | 只看该作者
不错,谢分享
回复

使用道具 举报

5#
ID:402944 发表于 2018-10-8 10:53 | 只看该作者
感谢分享
回复

使用道具 举报

6#
ID:436817 发表于 2018-11-30 21:39 | 只看该作者
没有代码?
回复

使用道具 举报

7#
ID:753515 发表于 2020-5-16 18:51 | 只看该作者
楼主连接没了吗
回复

使用道具 举报

8#
ID:279980 发表于 2020-6-5 20:37 | 只看该作者
好,支持论坛
回复

使用道具 举报

您需要登录后才可以回帖 登录 | 立即注册

本版积分规则

手机版|小黑屋|51黑电子论坛 |51黑电子论坛6群 QQ 管理员QQ:125739409;技术交流QQ群281945664

Powered by 单片机教程网

快速回复 返回顶部 返回列表