ImageVerifierCode 换一换
格式:DOCX , 页数:21 ,大小:91.47KB ,
资源ID:11425319      下载积分:3 金币
快捷下载
登录下载
邮箱/手机:
温馨提示:
快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。 如填写123,账号就是123,密码也是123。
特别说明:
请自助下载,系统不会自动发送文件的哦; 如果您已付费,想二次下载,请登录后访问:我的下载记录
支付方式: 支付宝    微信支付   
验证码:   换一换

加入VIP,免费下载
 

温馨提示:由于个人手机设置不同,如果发现不能下载,请复制以下地址【https://www.bdocx.com/down/11425319.html】到电脑端继续下载(重复下载不扣费)。

已注册用户请登录:
账号:
密码:
验证码:   换一换
  忘记密码?
三方登录: 微信登录   QQ登录  

下载须知

1: 本站所有资源如无特殊说明,都需要本地电脑安装OFFICE2007和PDF阅读器。
2: 试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。
3: 文件的所有权益归上传用户所有。
4. 未经权益所有人同意不得将文件中的内容挪作商业或盈利用途。
5. 本站仅提供交流平台,并不能对任何下载内容负责。
6. 下载文件中如有侵权或不适当内容,请与我们联系,我们立即纠正。
7. 本站不保证下载资源的准确性、安全性和完整性, 同时也不承担用户因使用这些下载资源对自己和他人造成任何形式的伤害或损失。

版权提示 | 免责声明

本文(单片机音乐倒数定时器的设计.docx)为本站会员(b****7)主动上传,冰豆网仅提供信息存储空间,仅对用户上传内容的表现方式做保护处理,对上载内容本身不做任何修改或编辑。 若此文所含内容侵犯了您的版权或隐私,请立即通知冰豆网(发送邮件至service@bdocx.com或直接QQ联系客服),我们立即给予删除!

单片机音乐倒数定时器的设计.docx

1、单片机音乐倒数定时器的设计1.基于单片机音乐倒数定时器的设计报告2.【摘要】计时器在单片机模块中是比较常见的模块,计时器是一种用数字电路技术实现的计时装置,与机械师中相比具有更高的准确性与直观性,且无机械装置,具有更长的使用寿命,因此得到了广泛的使用。本设计采用AT89C51单片机对定时器的设计来实现一个简单的多功能的音乐倒计时报警器,通过三个按键可设定任意时间的倒计时报警器来满足用户的简单要求,如烧开水,煮面等简单问题。3.【关键词】定时计数器;音乐代码;1602液晶显示4.目录12.引言12.1.随着电子技术的飞速发展,各类分立电子元件及其所构成的相关功能单元,已逐步被功能更强大、性能更稳

2、定、使用更方便的集成芯片所取代。由集成芯片和一些外围电路构成的各种自动控制、自动报警、自动显示电路遍及各种电子产品和设备。数字系统和数字设备已广泛应用于各个领域,更新换代速度可谓日新月异。12.2.计时器在单片机模块中是比较常见的模块,计时器是一种用数字电路技术实现的计时装置,与机械师中相比具有更高的准确性与直观性,且无机械装置,具有更长的使用寿命,因此得到了广泛的使用,本次设计的任意时间倒计时器,是基于单片机的基础,日常生活中相关的设备是很多的,诸如定时报警、报时自动打铃、时间程序自动控制、定时广播、自动闭路灯等都是以计时器为基础的。12.3.通过对基于单片机控制的倒数计时器的设计过程中,让

3、自己对单片机有进一步的了解,激发兴趣,做到主动探索和学习。13.设计要求13.1.利用单片机结合LCD显示器设计一个倒数计时器,可以放在家中使用,例如煮方便面、煮开水或小睡片刻等,做一小段时间计时。当倒数计时为0时,则发出一段音乐,通知倒数终了,该做重要的事情了。13.2.具体要求:13.3.文字型LCD(16*2)显示目前倒数的时间;显示格式为“COUNT DOWN时时: 分分:秒秒”;具有3个按键操作来设置现在想要倒数的时间;一旦按键后则开始倒数计时,当计时为零则发出一阵音乐声响,程序开始执行,显示器显示“0009”,按下操作键S1S3动作如下:操作键S1,可调整倒数时间 时分秒;操作键S

4、2,设置倒数计时时间为上升,显示“增加”;操作键S3,设置倒数计时时间为下降,显示“减少”; RESET按下后显示如下:13.3.1.COUNT DOWN 13.3.2.00:00:09 倒数时间14.操作键S2:增加倒数计时,操作键S3,减少倒数计时,操作键S1按第四下设置完成。一旦按键后则开始倒数计时,当计时为0时则发出一段音乐。 15.设计目的15.1.通过该设计能提高学生分析解决问题的能力。15.2.了解模拟电路及数字电路的相关知识。15.3.学习单片机定时器时间计时处理、按键扫描、LCD显示及音乐旋律演奏的设计方法。16.设计的具体实现16.1.1.系统概述16.2.总体方案论证16

5、.3.要实现音乐倒数定时器可以用两种方案实现。17.方案一:利用PROG-110可编程控制器17.1.PROG-110 可编程器,是一种用数字简码控制的产品,它的特点是:自带一套用于输入数码的按键和显示程序的数码管,只要我们现场输入一列2位数码,编制的程序即能完成,即编,即用。每一种数字简码控制器,它都自带一套系统软件,每一套系统软件都有一套相对应的指令表,配套的指令表表明,只要输入什么样的数,程序将去做什么事,输入一列数,它就会按次序去完成你要求它做的所有的事。17.2.但是首先PROG-110模块总共只有6个I/O端口,这就必须扩展模块端口,用两部以上模块串联,但花钱要多;其次是程序过长,

6、PROG-110模块的E2PROM存储器24C01只可输入128步程序;第三是受PROG-110模块跳转指令步数的限制。18.方案二:利用单片机、LCD显示器和压电喇叭18.1.单片机具有性能高、速度快、体积小、价格低、稳定可靠、应用广泛、通用性强等突出优点。它在硬件结构、指令系统、I/O端口、功率消耗及可靠性等方面均有其独特之处,其最显著的特点之一就是具有非常有效的控制功能。而LCD显示器具有体积小、重量轻、工作电压低、功耗极低、显示容丰富、稳定可靠、成本低、控制驱动方便、接口简单易用、模块化结构紧凑等特点。18.2.综上所述,按照设计要求我选择第二种方案,即利用单片机和LCD显示器来实现定

7、时倒数,通过压电喇叭来发出音乐。18.3.单片机选择方案18.4.采用8051单片机18.5.8051单片机部包含一个8位CPU、一个片振荡器及时钟电路、ROM程序存储器、RAM数据存储器、两个16位定时器/计数器、可分别寻址64KB的程序存储器空间和64KB的数据存储器空间、32条可编程的I/O口线(4个8位并行I/O端口)、一个可编程全双工串行口、具有5个中断源和2个优先级的中断结构。可以有效实现本次设计中要求的各项功能。18.6.具体的设计流程可见图1:19.图1设计流程图19.1.1.单元电路设计19.1.2.2.1控制电路19.2.倒数计数器的控制电路可以见附图,其中主要分为以下几部

8、分19.2.1.1.单片机805119.3.8051 基本资料如下:20.21.图2 8051引脚图21.1.8051主要使用引脚功能说明如下:22.8051的引脚40接+5V电源,引脚20接电源地线。23.传统8051工作时钟的最高为12MHz。24.EA引脚低电平动作用来存取外部程序ROM控制。25.EA接地,由外部程序ROM来执行程序。26.EA接高电平,由部ROM来执行程序。27.开机时必须加入芯片重置信号。(RESET)28.RESET信号高电平动作,高电平时产生芯片重置。29.RESET信号低电平时,由程序ROM地址0开始执行程序。29.1.在本次设计中采用的8051外接电路如图3

9、所示:29.2.29.3.图3 8051外接电路图29.4.8051系列的单片机的时钟方式分为部方式和外部方式。部方式就是在单片机的引脚18、19外接晶振,就够成了自激振荡器在单片机部产生时钟脉冲信号。外部时钟方式是把外部已经有的时钟信号引入到单片机部。时钟电路在计算机系统中起着非常重要的作用,是保证系统正常工作的基础。在一个单片机应用系统中,时钟有两方面的含义:一是指为保障系统正常工作的基准振荡定时信号,主要由晶振和外围电路组成,晶振频率的大小决定了单片机系统工作的快慢;二是指系统的标准定时时钟,即定时时间。29.5.用一个12MHz晶振和两个30Pf瓷片电容组成,为单片机提供标准时钟,其中

10、两个瓷片电容可以增加电路的稳定性,可以抗噪声增加稳定性,不容易死机。29.6.在8051中之所以采用高性能的振荡电路,因为:29.6.1.1.1.单片机电子钟的计时脉冲基准是由外部晶振的频率经过12分频后提供,采用部的定时/计数器来实现计时功能。所以,外接晶振频率精确度直接影响电子钟计时的准确性。 29.6.1.1.2.单片机电子钟利用部定时/计数器溢出产生中断(12M晶振一般为50ms)再乘以相应的倍率来实现秒、分、时的转换。大家都知道从定时/计数器产生中断请求到响 应中断需要3-8个机器周期,定时中断子程序中的数据入栈和重装定时/计数器的初值还需要占用数个机器周期,还有从中断入口转到中断子

11、程序也要占用一定的机器周期。29.6.1.2.复位电路29.7.29.8.图4 单片机复位电路29.9.本次设计使用的倒数计时LCD控制,使用的是16字*2行设计。图4中为4位控制电路,以8051 P0的6调输出控制线来实现控制,P0还有提升电阻以增强其驱动能力,控制信号如下:R/W=0,LCD执行写入的动作,RS寄存器选择控制线。EN启用控制线。VO亮度调整控制引脚。D0D7双向的数据总线。必须在有亮度照明的地方,才能看见时间,若使用LCD,选择有背光显示的模块,则在夜晚或黑暗的场合也可以使用,有背光显示的LCD模块在引脚上,与无背光显示的模块兼容,指示价格较贵,一般显示的背光颜色为黄光,与

12、手机的背光颜色相似。29.9.1.1.按键控制29.10.按键控制室控制程序执行时数据的输入或是特殊功能的设置及操作,使用8051端口2的4条输入口,由程序来控制,平时输入端为高电平,当有按键按下则相对位会呈现低电平,进过轮流扫描判断输入端是否为低电平,便可知道按下的是哪一个按钮。29.10.1.1.音乐喇叭29.11.8051端口1的第3位是压电喇叭的驱动位,持续送出工作脉冲可以推动喇叭发出哔的声响,当工作频率越高时,声音越清脆,工作频率低时,声音则较低沉。29.11.1.1.电源输入29.12.J1为+5V电源输入,当电源加入时电源指示灯LED将亮起,用哪个以指示电源供给正常,定时器在倒数

13、时间到后压电喇叭会发出音乐旋律,并启动继电器使其状态为ON,控制继电器的ON/OFF状态,可以直接控制家电开关。29.12.1.2.2控制程序29.13.本课程设计中,可以学习利用单片机定时器设计时间计时处理,其时分秒控制,定时器0计时中断程序每个5ms中断一次当做一个计数,每中断一次则计数加1,当计数200次时,表示1s到了,秒变量加1,同理再判断是否1min钟到了,再判断是否1h到了,若计数到了则将相关变量清除为0。单片机定时器负责定时的技术,不会因为案件处理而中断时间描述的增加,时,分,秒数据是存在变量并写入LCD而显示相关时间的。29.14.在主控程序循环中主要工作为扫描是否有按键,若

14、有按键则做相应的功能处理,同时也检查所倒数的时间是否为0,若为0表示倒数的时间终了,应该执行想对应的工作了,图为主程序控制工作流程。时间计时处理程序时等过了1s 后,则更新时间数据,将最新剩余倒数的分秒的时间数据转换为数字数据,并显示在LCD上。程序中如何判断是否已过了1s?可以设一旧秒数变量,当新旧秒数变量不一样时,则表示已过了1s,要做相关程序处理了。倒数计时闹铃的动作利用时间计时处理来做秒数倒数,当所设置的时间为0,压电喇叭则不断发出音乐声,LED持续闪动,启动继电器,有继电器可以控制家电开启或关闭。29.15.音乐声的产生也是有定时器来产生固定频率的方波信号推动压电喇叭,发出旋律。而定

15、时器原先已利用设计时间计时处理了,怎么能在设计来做音乐旋律的控制?在此设计定义一个音乐演奏标志,若音乐演奏标志为0则执行中断程序中计时程序的部分程序,若音乐演奏标志为1则执行音乐发生控制程序。因此只要适当的运用程序设计技巧,计时中断程序中可以做许多种不同的工作,而这些工作是需要特定一段时间久必须要被触发而被执行的程序。29.16.倒数计数器控制程序文件名为DSDS.ASM。注意:在程序中128行有以下的指令:29.17.SINCLUDE (DSDS1.ASM); 加载程序一起来汇编及编译29.18.表示在主程序DSDS.ASM中还会自动加载另一程序DSDS1.ASM程序一起进来汇编及编译,只是

16、为了方便程序编译用,一些测试正确的程序代码可以分别存档好方便管理,此外整个程序源代码长度也不至于太长,不方便编辑。DSDS1.ASM主要的程序代码功能为以定时器演奏歌曲旋律的控制。29.18.1.软件程设计和调试29.18.2.3.1延时时间的计算29.19.若我们想设计程序执行55ms时间延时,程序可以设计如下29.20./延时29.21.void delay(uint z)29.22.29.22.1.uint x,y;29.22.2.for(x=z;x0;x-)29.22.2.1.for(y=110;y0;y-);29.23.29.24.如果执行18次此子程序,则延时时间约为1s29.24

17、.1.3.2工作方式设计29.25.本次设计中采用的定时器模式0来设计,在此方式中T0、T0可以进行13位的计时,其值保存在两个8位的定时寄存器中。29.26.对于其中任一定时器,工作时钟可以由部或是外部来提供,由C/T位来决定做定时器还是计数器。定时器的时钟为系统工作时钟除以12.此次试验中采用12MHz石英震荡器则产生55ms的计数时间脉冲宽度。本次实验的定时器计时时间为1s,因此定时器0需计数5000次,其定时器初值的加载可以计算如下:29.27.TH0=(65536-5000)/25629.28.TL1=(65536-5000)%25629.29.执行后的结果为,产生的脉冲宽度为29.

18、30.T=55ms29.30.1.3.3有定时器产生各种频率的声音29.31.我们可以设定发音的频率来改变声音产生音乐,计时时间长短也是按照发音的频率而定的。由频率值推得定时器计数初值由下关系式得到:29.32.T=1/f(us) ;方波宽度29.33.Co=(int)t/2 ;定时器所得计数的次数29.34.TH0=(65536-5000)/256;计数初值底字节29.35.TL1=(65536-5000)%256;计数初值高字节29.36.软件的编译和调试使用的是KEIL软件,文件格式是C。29.36.1.3.4程序说明30.#include31.#define uchar unsigne

19、d char32.#define uint unsigned int33.sbit lcde=P10;34.sbit lcdrs=P11;35.sbit lcdw=P12;36.sbit speaker=P13;37.sbit s1=P30;38.sbit s2=P31;39.sbit s3=P32;40.sbit rd=P37;41.uchar code table= count down !;42.uchar code table1= 00:00:09;43.uchar count,s1num;44.static char miao=9,shi=0,fen=0;44.1.1.1./生日快乐

20、歌的音符频率表,不同频率由不同的延时来决定45.uchar code SONG_TONE=212,212,190,212,159,169,212,212,190,212,142,159,45.1.1.1.1.1.212,212,106,126,159,169,190,119,119,126,159,142,159,0;46./uchar code SONG_TONE=212,212,190,212,159,169,0;46.1.1.1./生日快乐歌节拍表,节拍决定每个音符的演奏长短47.uchar code SONG_LONG=9,3,12,12,12,24,9,3,12,12,12,24,4

21、7.1.1.1.1.1.9,3,12,12,12,12,12,9,3,12,12,12,24,0;48./uchar code SONG_LONG=9,3,12,12,12,24,0;49./延时50.void delay(uint z)51.51.1.uint x,y;51.2.for(x=z;x0;x-)51.2.1.for(y=110;y0;y-);52.53.void write_(uchar x)54. P2=x;54.1.lcdrs=0;54.2.lcdw=0;54.3.lcde=1;54.4.delay(2);54.5.lcde=0;54.6.lcdw=0;55.56.void

22、write_date(uchar x)57.57.1.lcdrs=1;57.2.lcdw=0;57.3.P2=x;58./ delay(5);58.1.lcde=1;58.2.delay(2);58.3.lcde=0;59.60.void write_sfm(uchar add,uchar date)61.61.1.uchar shi,ge;61.2.shi=date/10;61.3.ge=date%10;61.4.write_(0x80+0x40+add);61.5.write_date(0x30+shi);61.6.write_date(0x30+ge);62.63./播放函数64.voi

23、d PlayMusic()65. uint i=0,j,k;65.1.while(SONG_LONGi!=0|SONG_TONEi!=0)65.1.1. /播放各个音符,SONG_LONG为拍子长度65.1.1.1.for(j=0;jSONG_LONGi*20;j+)65.1.1.1.1.65.1.1.1.1.1.speaker=speaker;65.1.1.1.1.2./SONG_TONE延时表决定了每个音符的频率65.1.1.1.1.3.for(k=0;kSONG_TONEi/3;k+);65.1.1.1.2.65.1.1.2.delay(10);65.1.1.3.i+;65.1.2.66

24、.67.void init()68.68.1.uchar num;68.2.write_(0x38);68.3.write_(0x0c);68.4.write_(0x06);68.5.write_(0x01);68.6.write_(0x80);68.7.for(num=0;num15;num+)68.7.1.68.7.1.1.write_date(tablenum);68.7.1.2.delay(5);68.7.2.68.8.write_(0x80+0x40);68.9.for(num=0;num12;num+)68.9.1.68.9.1.1.write_date(table1num);68

25、.9.1.2.delay(5);68.9.2.68.10.TMOD=0x01;68.11.TH0=(65536-50000)/256;68.12.TL0=(65536-50000)%256;68.13.EA=1;68.14.ET0=1;68.15.TR0=1;69.70.void keyscan()71.72./ rd=0;72.1.if(s1=0) 72.2.72.2.1.delay(5);72.2.2.if(s1=0)72.2.3. s1num+;72.2.3.1.while(!s1);72.2.3.2.if(s1num=1)72.2.3.3.72.2.3.3.1.TR0=0;72.2.3

26、.3.2.write_(0x80+0x40+10);72.2.3.3.3.write_(0x0f);72.2.3.4.72.3.72.3.1.1.if(s1num=2)72.3.1.2.72.3.1.2.1.write_(0x80+0x40+7);72.3.1.3.72.3.1.4.if(s1num=3)72.3.1.5.72.3.1.5.1.write_(0x80+0x40+4);72.3.1.6.72.3.1.7.if(s1num=4)72.3.1.8.72.3.1.8.1.s1num=0;72.3.1.8.2.write_(0x0c);72.3.1.8.3.TR0=1;72.3.1.9.

27、72.3.2.72.3.3.if(s1num!=0)72.3.4.72.3.4.1.if(s2=0)72.3.4.2.72.3.4.2.1.delay(5);72.3.4.2.2.if(s2=0)72.3.4.2.3.72.3.4.2.3.1.while(!s2);72.3.4.2.3.2.if(s1num=1)72.3.4.2.3.3.72.3.4.2.3.3.1.miao+;72.3.4.2.3.3.2.if(miao=60)72.3.4.2.3.3.2.1.miao=0;72.3.4.2.3.3.3.write_sfm(10,miao);72.3.4.2.3.3.4.write_(0x8

28、0+0x40+10);72.3.4.2.3.4.72.3.4.2.3.5.if(s1num=2)72.3.4.2.3.6.72.3.4.2.3.6.1.fen+;72.3.4.2.3.6.2.if(fen=60)72.3.4.2.3.6.2.1.fen=0;72.3.4.2.3.6.3.write_sfm(7,fen);72.3.4.2.3.6.4.write_(0x80+0x40+7);72.3.4.2.3.7.72.3.4.2.3.8.if(s1num=3)72.3.4.2.3.9.72.3.4.2.3.9.1.shi+;72.3.4.2.3.9.2.if(shi=24)72.3.4.2.

29、3.9.2.1.shi=0;72.3.4.2.3.9.3.write_sfm(4,shi);72.3.4.2.3.9.4.write_(0x80+0x40+4);72.3.4.2.3.10.72.3.4.2.4.72.3.4.3.72.3.4.4.if(s3=0)72.3.4.5.72.3.4.5.1.delay(5);72.3.4.5.2.if(s3=0)72.3.4.5.3.72.3.4.5.3.1.while(!s3);72.3.4.5.3.2.if(s1num=1)72.3.4.5.3.3.72.3.4.5.3.4./* if(miao=0)72.3.4.5.3.4.1.72.3.4.

30、5.3.4.1.1.miao=59;72.3.4.5.3.4.1.2.write_sfm(10,miao);72.3.4.5.3.4.1.3.write_(0x80+0x40+10);72.3.4.5.3.4.2.*/72.3.4.5.3.4.3.miao-;72.3.4.5.3.4.4.if(miao=-1)72.3.4.5.3.4.4.1.miao=59;72.3.4.5.3.4.5.write_sfm(10,miao);72.3.4.5.3.4.6.write_(0x80+0x40+10);72.3.4.5.3.5.72.3.4.5.3.6.if(s1num=2)72.3.4.5.3.7.72.3.4.5.3.7.1.fen-;72.3.4.5.3.7.2.if(fen=-1)72.3.4.5.3.7.2.1.fen=59;72.3.4.5.3.7.3.write_sfm(7,fen);72.3.4.5.3.7.4.write_(0x80+0x40+7);72.3.4.5.3.8.72.3.4.5.3.9.if(s1num=3)72.3.4.5.3.10.72.3.4.5.3.10.1.shi-;72.3

copyright@ 2008-2022 冰豆网网站版权所有

经营许可证编号:鄂ICP备2022015515号-1