网站大量收购闲置独家精品文档,联系QQ:2885784924

基于CPLD与51单片机的定时器与音乐播放器.docxVIP

基于CPLD与51单片机的定时器与音乐播放器.docx

  1. 1、本文档共8页,可阅读全部内容。
  2. 2、原创力文档(book118)网站文档一经付费(服务费),不意味着购买了该文档的版权,仅供个人/单位学习、研究之用,不得用于商业用途,未经授权,严禁复制、发行、汇编、翻译或者网络传播等,侵权必究。
  3. 3、本站所有内容均由合作方或网友上传,本站不对文档的完整性、权威性及其观点立场正确性做任何保证或承诺!文档内容仅供研究参考,付费前请自行鉴别。如您付费,意味着您自己接受本站规则且自行承担风险,本站不退款、不进行额外附加服务;查看《如何避免下载的几个坑》。如果您已付费下载过本站文档,您可以点击 这里二次下载
  4. 4、如文档侵犯商业秘密、侵犯著作权、侵犯人身权等,请点击“版权申诉”(推荐),也可以打举报电话:400-050-0827(电话支持时间:9:00-18:30)。
  5. 5、该文档为VIP文档,如果想要下载,成为VIP会员后,下载免费。
  6. 6、成为VIP后,下载本文档将扣除1次下载权益。下载后,不支持退款、换文档。如有疑问请联系我们
  7. 7、成为VIP后,您将拥有八大权益,权益包括:VIP文档下载权益、阅读免打扰、文档格式转换、高级专利检索、专属身份标志、高级客服、多端互通、版权登记。
  8. 8、VIP文档为合作方或网友上传,每下载1次, 网站将根据用户上传文档的质量评分、类型等,对文档贡献者给予高额补贴、流量扶持。如果你也想贡献VIP文档。上传文档
查看更多
基于CPLD与51单片机的定时器与音乐播放器马大康 朋060071102009.12一、系统简介本系统利用CPLD和51单片机联合实现了倒计时器和音乐播放器的功能。作为《电子系统设计》的课程设计,本系统充分利用了两块开发板上的资源,并实现了可编程器件与单片机之间的串口异步通信,器件连接方便,并有良好的人机交互界面。二、系统结构框图与思路图1系统结构框图图2 CPLD内部功能模块划分及连接经过对两块开发板板上资源的对比,我们发现,CPLD板上的资源较为丰富,尤其是其8个独立按键和1602液晶屏,十分适合人机交互,因此我们选择用CPLD开发板作为主控板。单片机板上拥有4个七段数码管,显示变化的数字十分方便,可以构成1~60分钟可变初值的倒计时器。由于之前的实验中已经实现了在CPLD中嵌入简易的UART,因此可以利用CPLD上的8个拨码开关设定倒计时器的初值,并通过异步串行通信传输给单片机。单片机上的拨码可以实现对倒计时器进行暂停、清零。除此之外,由于CPLD板上已有蜂鸣器,可以播放预先存入的歌曲,并通过板上的其他按键控制音乐的暂停与继续播放。介于上述分析,设计的系统结构框图如图1所示,CPLD中功能模块的划分如图2所示。操作流程:CPLD板上:Key1—进入倒计时器模式,设定倒计时器初值(通过8个拨码),液晶屏上显示“D-counterSet time needed”。Key2—发送倒计时器初值到单片机,单片机开始倒计时,液晶屏上显示“D-counterD-countering”Key3—进入音乐盒模式,播放音乐《喀秋莎》。Key4—暂停音乐播放单片机板上:在倒计时过程中,将拨码开关1向上拨,倒计时暂停,向下拨后继续倒计时。在倒计时过程中,按下CPLD板上的Key1后(此时为设定初值模式),将拨码开关2向上拨,倒计时器清零,此时可对其重新置初值。三、功能模块的实现1、异步串行发送模块想要在CPLD中嵌入异步串行通信模块,就必须对异步串行通信协议有深入的理解,由于系统中只用到了发送模块,这里仅对发送模块的设计做介绍。在空闲时,发送1。当发送使能WR为高电平且发送缓冲寄存器为高电平时,向发送缓冲寄存器中写入待发送的数据。当发送移位寄存器为空时,将发送缓冲寄存器中的值置入发送移位寄存器,并将TxDone变为低电平,表示发送一个字节的周期开始,此时不能向发送寄存器中置数。发送周期开始首先发送一个低电平作为起始位,接着从数据的低位开始发送数据,发送结束后发送高电平作为结束位,并将TxDone变为高电平,表示发送一个字节结束。整个模块的状态图如图3所示。图3图4标准的UART设计是将系统时钟分频成16×Baudrate的频率,然后每个16个这样的时钟周期发送一位数据。我们这里的设计与标准设计有些不同,我们直接把系统时钟分频成波特率时钟,然后每个周期发送一位数据,这样的效果与原先相同,但在编程上轻松了许多。2、按键检测模块图5通过在每个时钟的上升沿检测引脚的值,经过延时再判断达到消抖的作用,再将其转化为键值输出。3、液晶显示模块图6LCD_Top模块内部由时钟分频模块与LCD驱动模块构成,其中时钟分频模块负责将50M的系统时钟分频成500Hz的LCD驱动时钟。LCD驱动模块主要负责产生控制信号并发送显示数据。LCD驱动模块的状态流程图如下图所示。图74、蜂鸣器模块图8蜂鸣器演奏音乐模块较为简单,我们参考实验指导书中的代码,将《梁祝》的谱换成了《喀秋莎》。5、定时器模块定时器模块在单片机中,其程序流程图如下:图10在这块单片机板上做倒计时器有两个缺陷:第一,我们采用的是软件定时的方式,精确度不如硬件电路高;第二,此开发板的按键和拨码没有直接接到单片机的I/O口上,而是通过锁存器挂在总线上,这就决定了使用按键只有采取查询的方法,而不能采用中断的方法。因此在倒计时的过程中,每延时1秒前需要查询按键的值来实现暂停或停止的功能,指令也是需要执行时间的,这样会使延时时间超过1s,而且数码管略微有些闪烁。不过,经过缩短延时1s程序的时间,我们将每秒钟的误差控制在了1/30秒。四、系统调试过程本系统由三人共同合力完成,具体分工如下:马大康负责完成了串口通信模块、液晶显示模块和按键控制模块,并撰写了最终的设计文档。万树负责完成了单片机上倒计时模块以及乐谱的输入,覃朋负责完成了蜂鸣器模块。系统的调试是按照先单独模块测试,再组合拼接整体调试的步骤进行的,整个过程有条不紊,系统的总体设计也根据单独模块测试的情况与原先计划做出了相应调整。比如原先是计划利用USB接口实现PC与CPLD板的通信,在PC上自行开发小软件以控制CPLD板上的资源。但由于USB模块(FT245)没有在计划的 时间内调试成功,我们就放弃了此方案,改用CPLD

您可能关注的文档

文档评论(0)

精品天地 + 关注
实名认证
文档贡献者

该用户很懒,什么也没介绍

1亿VIP精品文档

相关文档