欢迎来到冰豆网! | 帮助中心 分享价值,成长自我!
冰豆网
全部分类
  • IT计算机>
  • 经管营销>
  • 医药卫生>
  • 自然科学>
  • 农林牧渔>
  • 人文社科>
  • 工程科技>
  • PPT模板>
  • 求职职场>
  • 解决方案>
  • 总结汇报>
  • 党团工作>
  • ImageVerifierCode 换一换
    首页 冰豆网 > 资源分类 > DOCX文档下载
    分享到微信 分享到微博 分享到QQ空间

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

    • 资源ID:16914550       资源大小:95.35KB        全文页数:22页
    • 资源格式: DOCX        下载积分:10金币
    快捷下载 游客一键下载
    账号登录下载
    微信登录下载
    三方登录下载: 微信开放平台登录 QQ登录
    二维码
    微信扫一扫登录
    下载资源需要10金币
    邮箱/手机:
    温馨提示:
    快捷下载时,用户名和密码都是您填写的邮箱或者手机号,方便查询和重复下载(系统自动生成)。
    如填写123,账号就是123,密码也是123。
    支付方式: 支付宝    微信支付   
    验证码:   换一换

    加入VIP,免费下载
     
    账号:
    密码:
    验证码:   换一换
      忘记密码?
        
    友情提示
    2、PDF文件下载后,可能会被浏览器默认打开,此种情况可以点击浏览器菜单,保存网页到桌面,就可以正常下载了。
    3、本站不支持迅雷下载,请使用电脑自带的IE浏览器,或者360浏览器、谷歌浏览器下载即可。
    4、本站资源下载后的文档和图纸-无水印,预览文档经过压缩,下载后原文更清晰。
    5、试题试卷类文档,如果标题没有明确说明有答案则都视为没有答案,请知晓。

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

    1、单片机音乐倒数定时器的设计汇编1. 基于单片机音乐倒数定时器的设计报告2. 【摘要】计时器在单片机模块中是比较常见的模块,计时器是一种用数字电路技术实现的计时装置,与机械师中相比具有更高的准确性与直观性,且无机械装置,具有更长的使用寿命,因此得到了广泛的使用。本设计采用AT89C51单片机对定时器的设计来实现一个简单的多功能的音乐倒计时报警器,通过三个按键可设定任意时间的倒计时报警器来满足用户的简单要求,如烧开水,煮面等简单问题。3. 【关键词】定时计数器;音乐代码;1602液晶显示4. 目录5. 引言 16. 一、设计要求 27. 二、设计目的 28. 三、设计的具体实现 28.1. 1系统

    2、概述 28.1.1. 1.1 总体方案论证 28.1.2. 1.2 单片机选择方案 38.2. 2单元电路设计 48.2.1. 2.1控制电路 68.2.2. 2.2控制程序 88.3. 3软件程设计和调试 78.3.1. 3.1延时时间的计算 78.3.2. 3.2工作方式设计 88.3.3. 3.3有定时器产生各种频率的声音 88.3.4. 3.4程序说明 89. 四、结论和展望 1410. 五、心得和体会 1411. 六、参考文献 1512. 引言12.1. 随着电子技术的飞速发展,各类分立电子元件及其所构成的相关功能单元,已逐步被功能更强大、性能更稳定、使用更方便的集成芯片所取代。由集

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

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

    5、升,显示“增加”;操作键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.3.

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

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

    8、器来实现定时倒数,通过压电喇叭来发出音乐。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. 倒数计数器的控制电路

    9、可以见附图,其中主要分为以下几部分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开始

    10、执行程序。29.1. 在本次设计中采用的8051外接电路如图3所示:29.2. 29.3. 图3 8051外接电路图29.4. 8051系列的单片机的时钟方式分为内部方式和外部方式。内部方式就是在单片机的引脚18、19外接晶振,就够成了自激振荡器在单片机内部产生时钟脉冲信号。外部时钟方式是把外部已经有的时钟信号引入到单片机内部。时钟电路在计算机系统中起着非常重要的作用,是保证系统正常工作的基础。在一个单片机应用系统中,时钟有两方面的含义:一是指为保障系统正常工作的基准振荡定时信号,主要由晶振和外围电路组成,晶振频率的大小决定了单片机系统工作的快慢;二是指系统的标准定时时钟,即定时时间。29.5

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

    12、程序中的数据入栈和重装定时/计数器的初值还需要占用数个机器周期,还有从中断入口转到中断子程序也要占用一定的机器周期。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,选择有背光显示的模块,则在夜晚或黑暗的场合也可以使用,有

    13、背光显示的LCD模块在引脚上,与无背光显示的模块兼容,指示价格较贵,一般显示的背光颜色为黄光,与手机的背光颜色相似。29.9.1.1. 按键控制29.10. 按键控制室控制程序执行时数据的输入或是特殊功能的设置及操作,使用8051端口2的4条输入口,由程序来控制,平时输入端为高电平,当有按键按下则相对位会呈现低电平,进过轮流扫描判断输入端是否为低电平,便可知道按下的是哪一个按钮。29.10.1.1. 音乐喇叭29.11. 8051端口1的第3位是压电喇叭的驱动位,持续送出工作脉冲可以推动喇叭发出哔的声响,当工作频率越高时,声音越清脆,工作频率低时,声音则较低沉。29.11.1.1. 电源输入2

    14、9.12. J1为+5V电源输入,当电源加入时电源指示灯LED将亮起,用哪个以指示电源供给正常,定时器在倒数时间到后压电喇叭会发出音乐旋律,并启动继电器使其状态为ON,控制继电器的ON/OFF状态,可以直接控制家电开关。29.12.1. 2.2控制程序29.13. 本课程设计中,可以学习利用单片机定时器设计时间计时处理,其时分秒控制,定时器0计时中断程序每个5ms中断一次当做一个计数,每中断一次则计数加1,当计数200次时,表示1s到了,秒变量加1,同理再判断是否1min钟到了,再判断是否1h到了,若计数到了则将相关变量清除为0。单片机定时器负责定时的技术,不会因为案件处理而中断时间描述的增加

    15、,时,分,秒数据是存在变量内并写入LCD而显示相关时间的。29.14. 在主控程序循环中主要工作为扫描是否有按键,若有按键则做相应的功能处理,同时也检查所倒数的时间是否为0,若为0表示倒数的时间终了,应该执行想对应的工作了,图为主程序控制工作流程。时间计时处理程序时等过了1s 后,则更新时间数据,将最新剩余倒数的分秒的时间数据转换为数字数据,并显示在LCD上。程序中如何判断是否已过了1s?可以设一旧秒数变量,当新旧秒数变量不一样时,则表示已过了1s,要做相关程序处理了。倒数计时闹铃的动作利用时间计时处理来做秒数倒数,当所设置的时间为0,压电喇叭则不断发出音乐声,LED持续闪动,启动继电器,有继

    16、电器可以控制家电开启或关闭。29.15. 音乐声的产生也是有定时器来产生固定频率的方波信号推动压电喇叭,发出旋律。而定时器原先已利用设计时间计时处理了,怎么能在设计来做音乐旋律的控制?在此设计定义一个音乐演奏标志,若音乐演奏标志为0则执行中断程序中计时程序的部分程序,若音乐演奏标志为1则执行音乐发生控制程序。因此只要适当的运用程序设计技巧,计时中断程序中可以做许多种不同的工作,而这些工作是需要特定一段时间久必须要被触发而被执行的程序。29.16. 倒数计数器控制程序文件名为DSDS.ASM。注意:在程序中128行有以下的指令:29.17. SINCLUDE (DSDS1.ASM); 加载程序一

    17、起来汇编及编译29.18. 表示在主程序DSDS.ASM中还会自动加载另一程序DSDS1.ASM程序一起进来汇编及编译,只是为了方便程序编译用,一些测试正确的程序代码可以分别存档好方便管理,此外整个程序源代码长度也不至于太长,不方便编辑。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;x

    18、0;x-)29.22.2.1. for(y=110;y0;y-);29.23. 29.24. 如果执行18次此子程序,则延时时间约为1s29.24.1. 3.2工作方式设计29.25. 本次设计中采用的定时器模式0来设计,在此方式中T0、T0可以进行13位的计时,其值保存在两个8位的定时寄存器中。29.26. 对于其中任一定时器,工作时钟可以由内部或是外部来提供,由C/T位来决定做定时器还是计数器。定时器的时钟为系统工作时钟除以12.此次试验中采用12MHz石英震荡器则产生55ms的计数时间脉冲宽度。本次实验的定时器计时时间为1s,因此定时器0需计数5000次,其定时器初值的加载可以计算如下:

    19、29.27. TH0=(65536-5000)/25629.28. TL1=(65536-5000)%25629.29. 执行后的结果为,产生的脉冲宽度为29.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;计数

    20、初值高字节29.36. 软件的编译和调试使用的是KEIL软件,文件格式是C。29.36.1. 3.4程序说明30. #include31. #define uchar unsigned 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 !

    21、;42. uchar code table1= 00:00:09;43. uchar count,s1num;44. static char miao=9,shi=0,fen=0;44.1.1.1. /生日快乐歌的音符频率表,不同频率由不同的延时来决定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

    22、,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,47.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.

    23、 53. void write_com(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 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

    24、. uchar shi,ge;61.2. shi=date/10;61.3. ge=date%10;61.4. write_com(0x80+0x40+add);61.5. write_date(0x30+shi);61.6. write_date(0x30+ge);62. 63. /播放函数64. void 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

    25、. 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. 67. void init()68. 68.1. uchar num;68.2. write_com(0x38);68.3. write_com(0x0c);68.4. write_com(0x06);68.5. write_com(0x01);68.6. write

    26、_com(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_com(0x80+0x40);68.9. for(num=0;num12;num+)68.9.1. 68.9.1.1. write_date(table1num);68.9.1.2. delay(5);68.9.2. 68.10. TMOD=0x01;68.11. TH0=(65536-50000)/256;68.12. TL0=(65536-50000)%256;

    27、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.3.2. write_com(0x80+0x40+10);72.2.3.3.3. write_com(0x0f);72.2.3.4. 72.3. 72.3.1

    28、.1. if(s1num=2)72.3.1.2. 72.3.1.2.1. write_com(0x80+0x40+7);72.3.1.3. 72.3.1.4. if(s1num=3)72.3.1.5. 72.3.1.5.1. write_com(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_com(0x0c);72.3.1.8.3. TR0=1;72.3.1.9. 72.3.2. 72.3.3. if(s1num!=0)72.3.4. 72.3.4.1. i

    29、f(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_com(0x80+0x40+10);72.3.4.2.3.4. 72.

    30、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_com(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.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_com(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(s1n


    注意事项

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

    温馨提示:如果因为网速或其他原因下载失败请重新下载,重复下载不扣分。




    关于我们 - 网站声明 - 网站地图 - 资源地图 - 友情链接 - 网站客服 - 联系我们

    copyright@ 2008-2022 冰点文档网站版权所有

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

    收起
    展开