毕业设计 msp430摇摇棒
摘要
本设计以MSP430单片机为中央控制器,显示棒摇动时显示的字符或者图形由LED灯显示。LED灯成线状排列,每个瞬间线阵只能显示数字编码后的文字或者图形的一列,利用人眼的视觉暂留原理,将需要显示的字符或者图形分成64列,因此,通过单片机控制LED线阵以一较低频率扫描显示字符或者图形的每一刻,摆动显示棒时即可因视觉暂留看出显示的字符或者图形;左右摆动一次通过端口电平变化,调用相应的显示子程序,字符切换通过外部中断实现,该系统设计对程序设计的要求硬件电路要高。整套系统由中央控制模块,LED显示模块,供电模块等部分构成。
关键词: MSP430单片机; LED灯;摇摇棒
Abstract
The design for the central controller www.bsmz.netSP430MCU时钟系统能启用和禁用各种不同的时钟和振荡器,从而使器件能够进入不同的低功耗模式(LPM)。这种高度灵活的时钟系统可确保仅在适当的时候启用所需时钟,从而能够显著优化总体能耗。
子系统时钟(SMCLK)—用于各个较快速外设模块的源,可由内部DCO驱动(频率最高达25MHZ),也可采用外部晶体驱动。
即时唤醒—MSP430MCU可通过LPM即时唤醒。这种超高速唤醒功能得益于MSP430MCU的内部数控振荡器(DCO),其可实现高达25MHZ的源频率,而且能在1US的时间内激活并实现稳定工作。即时唤醒功能对超低功耗应用来说非常重要,因为其使微处理器能在极高效的突发任务中充分发挥CPU的作用,并能较长时间处于LPM模式。
零功耗掉电复位(BOR)—MSP430MCU BOR能够在所有操作模式下始终保持启用于工作状态,这不仅能确保实现最可靠的性能,同时还可保持超低功耗运行。BOR电路可对欠压情况进行检测,并在提供或者断开电源时对器件进行复位。该功能对电池供电的应用而言尤其重要。
高集成度
MSP430MCU拥有卓越的高集成度,能够提供各种高性能模拟及数字外设。
智能外设
MSP430MCU的外设旨在确保时间最强大的功能性,并以业界最低功耗提供系统中断,复位和总线判优。许多外设都能自动工作,因为最大限度减少了CPU处于工作模式的时间。
高性能集成
超过200种MSP430器件都具备高性能集成优势,完美结合了USB,RF,LCD控制器以及16位△-∑ACD等。这种可扩展的产品系列使设计人员能够为众多低功耗应用选择适当的MSP430器件。此外,MSP430MCU的高集成度还能支持物理尺寸较小的解决方案,进而最大限度降低整体物料成本。
轻松开展设计工作
MSP430MCU采用现代16位RISC架构以及简单的开发生态系统,因为拥有极佳的易用性。16位正交架构 ,MSP430MCU采用的16位架构可提供16个高度灵活的,可完全寻址的单周期操作16位CPU寄存器,以及RISC性能。该CPU的现代设计不仅简洁,而且功能十分丰富,仅采用了27条简单易懂的指令与7种统一寻址模式。
图3——2
本实验所采用的单片机是MSP430F2131,MSP430F2131是超低功耗的混合信号控制器,集成了一个16位的定时器和14只I/O管脚。
低供电电压 2.5 V - 5.5 V 超低功耗
<!--[if !supportLists]-->·<!--[endif]-->低工作电流,1 MHz,3 V电压下只有330 uA
<!--[if !supportLists]-->·<!--[endif]-->两种节电模式:
<!--[if !supportLists]-->o<!--[endif]-->备用模式:1.5 uA
<!--[if !supportLists]-->o<!--[endif]-->RAM 保持关断模式:0.1 uA
<!--[if !supportLists]-->·<!--[endif]-->从备用模式到正常工作最多需要 6 us
<!--[if !supportLists]-->·<!--[endif]-->16位 RISC 体系结构,200 ns 指令循环周期
<!--[if !supportLists]-->·<!--[endif]-->基本时钟模式配置
<!--[if !supportLists]-->o<!--[endif]-->不同的内部电阻器
<!--[if !supportLists]-->o<!--[endif]-->单一外部电阻器
<!--[if !supportLists]-->o<!--[endif]-->32 kHz 晶振
<!--[if !supportLists]-->o<!--[endif]-->高频晶振
<!--[if !supportLists]-->o<!--[endif]-->谐振器
<!--[if !supportLists]-->o<!--[endif]-->外部时钟源
<!--[if !supportLists]-->·<!--[endif]-->可与外部组件构成单斜率模数转换器
<!--[if !supportLists]-->·<!--[endif]-->16位定时器,带有三个捕获/比较寄存器
<!--[if !supportLists]-->·<!--[endif]-->串行的在线编程
<!--[if !supportLists]-->·<!--[endif]-->安全熔丝程序保护(Program Code Protection by Security Fuse)
3.6 关于创新部分的讨论本设计的最大特色就是可以使单列的LED组合灯通过一定频率的播动在摆动的扇形区域内呈现出特定的字符或图形。在题日要求的基础上,我们决定从硬件和软件两部分对此摇动棒进行特别改造,比如美化外形,实现画而的动态显示等。
3.7按键模块 使用一个按键对显示的所有内容进行切换,通过按钮按下的次数确定显示的内容。(见图3——3)
图3——3
3.8 LED显示模块首先,我们根据LED点阵屏的显示原理:点阵屏的显示分为行扫描和列列扫描两种,列扫描是将我们的字模数组通过点阵屏的行驱动进行输入,然后通过列对每一行进行扫描,当列为低(高)电平、行为高(低)电平时则表示该点为图案的一部分,将其读出、显示。它的顺序可以总结为:行不断的送数据,每送完设置的信息后列进行读取,然后行再次送数据,列再次读取……依次循环下去,一幅完整的图案就显示在了显示屏上。
而本次设计的LED显示棒数据传输原理与LED点阵屏相似。可以把LED显示棒看成是LED点阵屏中的一列。为了使显示的图案清晰,我们使用了16个LED管将它们排成一列,整个屏在静止时也就相当于16行×1列。数据传输时我们同样使用行送数据、列扫描。在摆动过程中,应用视觉暂留原理,我们点亮的列不会很快的消失,而是随着摆动的方向继续向前移动,只要移动的速度高于视觉暂留的最短时问.显示内容就不会熄火,至此,一幅图案也就可以这样被“摆动”出来了。
3.9惯性开关模块惯性开关装置,它由摆杆、触点和导轨组成。当LED显示棒向左摆动到极点时,摆杆,与左边的触点2接触,此时与2相连的P1.0口变为低电平,按照软件的设定:从此刻起禁止对行进行数据传输:同理,当显示棒摆到右边极点时,与3接触,,与此相连的P1.1口变为低电平,软件设定从此刻起数据开始传输。整个摆动过程就是这样:摆子摆到左边,禁止数据传输:摆到右边,开始数据传输……。使用这种方法就可以让数据单程传输,解决了双程均传输时产生的重影,使得画而更加清晰、明了。
3.10总体设计图3——4
第四章 系统软件设计
4.1软件设计思路在摇动LED棒的时候单片机必须单程送数据否则显示的图形会产生重影,影响视觉效果。因此当系统开始工作后通过惯性开关的位置来使单片机实现单程送数据给LED。如果惯性开关位于右边,则进入外部中断Tl并将变量置l。在变量为1期间让单片机以一定的频率将数据送给LED。如果惯性开关位于左边,则进入外部中断TO并将变量置0,在这期间单片机不会送数据给LED。在送数据时,数据送完后应延时一段时间来使摇动时显示的每个字不会太拥挤。之后再立刻熄火LED并开始重新判断惯性开关的位置。
4.2软件系统流程图LED灯熄灭
<!--[if !mso]--><!--[endif]--><!--[if !mso & !vml]--><!--[endif]--><!--[if !vml]--><!--[endif]-->图4——1
4.3动态图片的实现设计中实现单个图形或者一个词组的显示方法是将要显示的内容一次性送出,延时一段时问后再进行第二次传送数据。而要显示一个动态图片,仿照动画制作方法,先要将一个连贯的动作分为几幅独立的动作,分别提取字模,输出数据是一幅接一幅的连续送,当动作结束后延时一会,再进行第二次连贯动作的传输。同样利用视觉暂留原理,当摇动显示棒时,几幅图接连出现覆盖前面的画面,相同的部分将一直显示,不同的部分就形成了动态的动作,以此一幅动态画面就出现了。
4.4软件实现功能的完善本次设计的一个难点是去除重影,我们的解决方法是使用外部中断让数据单程传输。
第二个难点是当显示如“www.bsmz.netagedata><!--[if !vml]--><!--[endif]-->
图5——1
图5——2
图5——3
5.2 系统硬件调试
图5——4 (载入程序)
第六章 总结
经过了一个多月的学习和努力,我终于完成了《摇摇棒的设计与制作》的毕业设计。从开始选题到设计的成功,再到论文文章的完成,每走一步对我来说都是一个挑战,毕业设计不仅是对前面所学知识的一种检验,也是对自己能力的一种提高。在这段时间里,我学到了很多知识也有很多感受,为了更好的利用Keil、proteus、Protel及硬件电路等相关知识,我开始查阅相关的资料和书籍,丰富自己的相关知识,让自己头脑中模糊的概念逐渐清晰,能够更熟练的去运用课本
上的知识。
在制作硬件电路时,我们遇到了很多问题,比如:在软件编程的时候字符的取模比较困难,刚开始没有取模软件就手工取模特别麻烦!再比如说怎样使字能够尽量在摇晃的中间显示,显示的时间长短也是特别困难的。后来经过不断的模拟与调试终于找到了最为适合的时间。总之,自己动手做了就是一种收获,会对电路了解的更多,学到了很多以前没有接触过的知识,也使我了解到知识必须通过应用才能实现其价值!有些东西以为学会了,当到自己运用的时候却并非如此,所以我认为只有到真正会用的时候才能算真的学会了。
此次的毕业设计我曾有过灰心,感觉底气的不足,但收获更大的是我学到了很多的东西,不光是学习上带来的快乐,更多的是在人与人的相处上我学到了团结带给人的欢乐,所有的这些都为我的将来奠定了很大的基础。现在的我就要离开学校,走上工作的岗位了,这也是我人生历程的又一个起点,我会继续学习,走实人生的每一步。
来源:网络整理 免责声明:本文仅限学习分享,如产生版权问题,请联系我们及时删除。