基于msp430g2553单片机跑马灯设计DOC.docx
- 文档编号:23351185
- 上传时间:2023-05-16
- 格式:DOCX
- 页数:20
- 大小:176.22KB
基于msp430g2553单片机跑马灯设计DOC.docx
《基于msp430g2553单片机跑马灯设计DOC.docx》由会员分享,可在线阅读,更多相关《基于msp430g2553单片机跑马灯设计DOC.docx(20页珍藏版)》请在冰豆网上搜索。
基于msp430g2553单片机跑马灯设计DOC
摘要
单片机的出现时计算机发展史上的一个重要里程碑,它开辟了计算机技术的另一个领域——嵌入式(Embedded)计算机领域。
所谓单片机就是把中央处理器、存储器、定时器、I/0接口电路等一些计算机的主要功能部件集成在一块集成电路芯片上的微型计算机。
单片机把微型计算机的各主要部分集成在一块芯片上,大大缩短了系统内信号传送距离,从而提高了系统的可靠性及运行速度。
所以单片机是典型的嵌入式系统,是嵌入式系统低端应用的最佳选择。
自20世纪70年代以来,单片机在工业测控、仪器仪表、航空航天、军事武器、家用电器等领域的应用越来越广泛,功能也越来越完善。
由单片机及各种微处理器、DSP所构成的嵌入式系统设计已成为电子技术产业发展的一项重要内容。
单片机技术也成为电子技术及自动化专业必须掌握的技术之一。
近年来随着计算机在社会领域的渗透,单片机的应用正在不断地走向深入,同时带动传统控制检测日新月益更新。
在实时检测和自动控制的单片机应用系统中,单片机往往是作为一个核心部件来使用,仅单片机方面知识是不够的,还应根据具体硬件结构,以及针对具体应用对象特点的软件结合,以作完善。
本设计主要以msp430g2553单片机为基础应用I/O口,复位电路,晶振电路并写好底层程序,做出能应用于跑马灯的最小系统。
关键词:
最小系统,嵌入式,msp430g2553,跑马灯
1.绪论
由于单片机技术在各个领域正得到越来越广泛的应用,世界上许多集成电路生产厂家相继推出了各种类型的单片机,在单片机家族的众多成员中MSP430系列单片机是一个16位的单片机,采用了精简指令集(RISC)结构,具有丰富的寻址方式(7种源操作数寻址、4种目的操作数寻址)、简洁的27条内核指令以及大量的模拟指令;大量的寄存器以及片内数据存储器都可参加多种运算;还有高效的查表处理指令。
这些特点保证了可编制出高效率的源程序。
MSP430单片机之所以有超低的功耗,是因为其在降低芯片的电源电压和灵活而可控的运行时钟方面都有其独到之处。
首先,MSP430系列单片机的电源电压采用的是1.8-3.6V电压。
因而可使其在1MHz的时钟条件下运行时,芯片的电流最低会在165μA左右,RAM保持模式下的最低功耗只有0.1μA。
其次,独特的时钟系统设计。
在MSP430系列中有两个不同的时钟系统:
基本时钟系统、锁频环(FLL和FLL+)时钟系统和DCO数字振荡器时钟系统。
可以只使用一个晶体振荡器(32.768kHz)DT-26ORDT-38[1],也可以使用两个晶体振荡器。
由系统时钟系统产生CPU和各功能所需的时钟。
并且这些时钟可以在指令的控制下,打开和关闭,从而实现对总体功耗的控制。
MSP430系列单片机的各系列都集成了较丰富的片内外设。
它们分别是看门狗(WDT)、模拟比较器A、定时器A0(Timer_A0)、定时器A1(Timer_A1)、定时器B0(Timer_B0)、UART、SPI、I2C、硬件乘法器、液晶驱动器、10位/12位ADC、16位Σ-ΔADC、DMA、I/O端口、基本定时器(BasicTimer)、实时时钟(RTC)和USB控制器等若干外围模块的不同组合。
其中,看门狗可以使程序失控时迅速复位;模拟比较器进行模拟电压的比较,配合定时器,可设计出A/D转换器;16位定时器(Timer_A和Timer_B)具有捕获/比较功能,大量的捕获/比较寄存器,可用于事件计数、时序发生、PWM等;有的器件更具有可实现异步、同步及多址访问串行通信接口可方便的实现多机通信等应用;具有较多的I/O端口,P0、P1、P2端口能够接收外部上升沿或下降沿的中断输入;10/12位硬件A/D转换器有较高的转换速率,最高可达200kbps,能够满足大多数数据采集应用;能直接驱动液晶多达160段;实现两路的12位D/A转换;硬件I2C串行总线接口实现存储器串行扩展;以及为了增加数据传输速度,而采用的DMA模块。
MSP430系列单片机的这些片内外设为系统的单片解决方案提供了极大的方便。
另外,MSP430系列单片机的中断源较多,并且可以任意嵌套,使用时灵活方便。
当系统处于省电的低功耗状态时,中断唤醒只需5μs。
MSP430系列有OTP型、FLASH型和ROM型三种类型的器件,这些器件的开发手段不同。
对于OTP型和ROM型的器件是使用仿真器开发成功之后烧写或掩膜芯片;对于FLASH型则有十分方便的开发调试环境,因为器件片内有JTAG调试接口,还有可电擦写的FLASH存储器,因此采用先下载程序到FLASH内,再在器件内通过软件控制程序的运行,由JTAG接口读取片内信息供设计者调试使用的方法进行开发。
这种方式只需要一台PC机和一个JTAG调试器,而不需要仿真器和编程器。
开发语言有汇编语言和C语言。
2.设计方案及分析
2.1设计目的
学生在教师指导下运用所学课程的知识来研究、解决一些具有一定综合性问题的专业课题。
学习单片机课程以后,为了加深对理论知识的理解,加强理论知识在实际当中的运用,强化自己的动手能力,通过期末设计(论文),提高学生综合运用所学知识来解决实际问题、使用文献资料、及进行科学实验或技术设计的初步能力,为毕业设计(论文)打基础。
2.2设计要求
(1)采用单片机msp430g2553做成最小系统来控制。
(2)利用最小系统做出跑马灯,其LED灯的模式间隔时间采用延时程序控制,每种模式可采用不同的延时,灵活多变。
(3)10个LED灯采用共阴极接法。
2.3LED灯管
.3.1LED灯简介
LED具有功耗少、寿命长、光谱宽(眼睛看得舒适度好)、使用广泛,能灵活拼装各种需要的形状等优点。
一般来说LED的工作电压是2V-3.6V。
工作电流是0.02-0.03A。
这就是说:
它消耗的电能不超过0.1W。
在恰当的电流和电压下,LED的使用寿命可达10万小时。
此外,LED基本上是一块很小的晶片被封装在环氧树脂里面,所以它非常的小,非常的轻,硬件电路实现起来比较方便。
因此本设计采用10个白色发光二极管,排成两列(每列5个),从而控制其灵活变化,设计出展示的方案。
图2-1LED灯
2.3.2LED原理
图2-2LED结构及PN结原理
LED(LightEmittingDiode),发光二极管,是一种固态的半导体器件,它可以直接把电转化为光。
LED的心脏是一个半导体的晶片。
晶片的一端附在一个支架上,一端是负极负极,另一端连接电源的正极,使整个晶片被环氧树脂封装起来。
半导体晶片由两部分组成,一部分是P型半导体,在它里面空穴占主导地位,另一端是N型半导体,在这边主要是电子。
但这两种半导体连接起来的时候,它们之间就形成一个P-N结。
当电流通过导线作用于这个晶片的时候,电子就会被推向P区,在P区里电子跟空穴复合,然后就会以光子的形式发出能量,这就是LED发光的原理。
而光的波长也就是光的颜色,是由形成P-N结的材料决定的。
根据不同材料发光二极管的发光颜色有:
红色光、黄色光、绿色光、红外光等。
LED有共阴极和共阳极两种。
在此设计中我们采用共阳极,共阳极将发光二极管的阳极连接在一起,接入+5V的电压。
2.4系统框图
图2-3系统框图
图2-4管脚
2.5系统的软件设计
2.5.1程序编写部分
此设计主要是采用控制系统的延时来完成的,此设计中流水灯包含8种模式,每次对P1、P2口赋予相应的值,即可达到预期的效果,再和不同的延时相配合,就能达到不同的流水效果了。
在程序编写方面,本设计采用IAR软件进行编程。
程序编写过程当中采用数组、取余、循环移位、移位运算、延时等方式来达成想要的效果。
编程内容以8种模式为核心,控制LED跑马灯和数码管进行8种变化方式,从而达到设计方案最终预期的效果。
2.5.2延时的计算
在本次设计中采用的延时程序为while(count--),即延时时间为count*指令周期,所以可采用将count值在范围内改变,或采用多层嵌套,来更改延时时间,从而灵活应用,如改变速度等。
由于方案中采用12MHZ的晶振,一个机器周期=12个振荡周期=1us,也就是说,一个基本操作占用时间为1us。
那么当delay(50000)时,延时时间为0.5秒。
2.5.3程序流程图
开始
2.5.4跑马灯的效果描述
此次设计中的LED采用共阴极设计,10个灯排列方式:
P2.1P2.2P2.3P2.4P2.5
P1.1P1.2P1.3P1.4P1.5
共8种变化模式,如下:
(1)P1.1……P1.5依次亮一下
P2.5……P2.1依次亮一下
即P1.1到P2.1一周依次亮一下
(2)P1.1P2.1为一组,P1.2P2.2为一组……P1.5P2.5为一组依次亮起
P1.1P2.1为一组,P1.2P2.2为一组……P1.5P2.5为一组依次灭掉
即5列从左向右依次亮起,再从左向右依次灭掉
(3)P1.1P2.5为一组,P1.2P2.4为一组……P1.5P2.1为一组依次亮起
P1.5P2.1为一组,P1.4P2.2为一组……P1.1P2.5为一组依次亮起
即两排分别为从左向右,从右向左交错亮起,再分别从右向左从左向右交错亮起,循环两次
(4)P1.3P2.3亮起
P1.2P2.2P1.4P2.4亮起
P1.1P2.1P1.5P2.5亮起
P1.1P2.1P1.5P2.5灭掉
P1.2P2.2P1.4P2.4灭掉
P1.3P2.3灭掉
即从中间向两边展开亮起,再从两边向中间收起灭掉。
(5)按P1.1P2.2P1.3P2.4P1.5P2.5P1.4P2.3P1.2P2.1顺序依次亮起
即从P1.1到P2.1交叉依次亮起
(6)P1.2P2.2P1.4P2.4亮起
P1.1P2.1P1.3P2.3P1.5P2.5亮起
即24两列和135三列交互亮起,循环五次
(7)P1.1P2.5亮起
P1.1P1.2P2.5P2.4亮起
P1.2P1.3P2.4P2.3亮起
P1.3P1.4P2.3P2.2亮起
P1.4P1.5P2.2P2.1亮起
P1.5P2.1亮起
再反向逆行一次
即两排分别从左向右,从右向左两两交错逆行亮起
(8)P1.1亮起
P1.2P2.1亮起
P1.3P2.2亮起
P1.4P2.3亮起
P1.5P2.4亮起
P2.5亮起
即从P1.1起两两斜排亮起,循环三次
2.6系统调试及结果分析
本设计整体采用线路少,谨慎按照电路图焊好元件后,检测电路全部正常,不存在虚焊或漏焊,焊错。
应用IAR软件根据设计要求编写出程序后,调试中出现符号错误及无用编码,根据提示改进后最终成功编写出所要求的程序,并用仿真程序调用后得到预期效果,下载软件到单片机。
运行结果:
成功下载软件,接通外部电源,LED灯亮起,但是有部分并未按照预期完成,经调试程序后,与预期相同,总体效果较好。
3.总结和体会及遇到的问题
经过努力,我终于完成这次最小系统的的课程设计任务。
在这次的单片机课程设计中我感觉受益匪浅,不用说我在其中学到的新知识是多么有价值,也不用说它拓宽了我多少的眼界,只是说它让我的能力得到了提高就已足以成为我努力付出的回报。
通过课程设计,我增强了对单片机的理解,学会查寻资料﹑比较方案,学会单片机的设计﹑计算;进一步提高分析解决实际问题的能力,创造一个动脑动手﹑独立开展电路实验的机会,锻炼分析﹑解决程序编写问题的实际本领,真正实现由课本知识向实际能力的转化;通过典型程序的设计与制作,加深对基本原理的了解,增强了实践能力。
做程序设计时,有些指令读不懂,不会用,要翻书上网查看,所亮的灯不是所预想的,经过仔细检查发现程序赋值问题并解决
4.致谢
本论文是在刘丹丹老师的悉心指导之下完成的。
三年来,老师渊博的专业知识,严谨的治学态度,精益求精的工作作风,诲人不倦的高尚师德,朴实无华、平易近人的人格魅力对我影响深远。
导师不仅授我以文,而且教我做人,赋予我终生受益无穷之道。
本论文从选题到完成,几易其稿,每一步都是在导师的指导下完成的,倾注了导师大量的心血,在此我向我的刘丹丹老师表示深切的谢意与祝福!
本论文的完成也离不开其他各位老师、同学和朋友的关心与帮助。
在此也要感谢王鑫等各位老师在论文开题、初稿、预答辩期间所提出的宝贵意见,感谢机电学院能源课题组为本论文提供的数据和建议,还要感谢同组的其他成员,在科研过程中给我以许多鼓励和帮助。
回想整个论文的写作过程,虽有不易,却让我除却浮躁,经历了思考和启示,也更加深切地体会了法学的精髓和意义,因此倍感珍惜。
附录
#include"msp430g2553.h"
voidvariety001();
voidvariety002();
voidvariety003();
voidvariety004();
voidvariety005();
voidvariety006();
voidvariety007();
voidvariety008();
intmain()
{
WDTCTL=WDTPW+WDTHOLD;
while
(1)
{
variety001();
variety002();
variety003();
variety004();
variety005();
variety006();
variety007();
variety008();
}
}
voidvariety001()
{
unsignedcharled;
unsignedcharP1variety001[5]={BIT1,BIT2,BIT3,BIT4,BIT5};
unsignedcharP2variety001[5]={BIT5,BIT4,BIT3,BIT2,BIT1};
led=0x00;
P1DIR=0xff;
P2DIR=0xff;
P1OUT=led;
P2OUT=led;
unsignedinti1,j1,i2,j2,j3;
for(i1=0;i1<=4;i1++)
{
led=led^P1variety001[i1];
P1OUT=led;
led=0x00;
j1=50000;
while(j1--);
}
P1OUT=0x00;
for(i2=0;i2<=4;i2++)
{
led=led^P2variety001[i2];
P2OUT=led;
led=0x00;
j2=50000;
while(j2--);
}
P1OUT=0x00;
P2OUT=0x00;
j3=50000;
while(j3--);
}
voidvariety002()
{
unsignedcharP12variety002[]={0x03,0x07,0x0f,0x1f,0x3f};
unsignedcharP13variety002[]={0xfc,0xf8,0xf0,0xe0,0xc0};
P1DIR=0xff;
P2DIR=0xff;
P1OUT=0x00;
P2OUT=0x00;
unsignedinti1,j1,i2,j2,j3;
for(i1=0;i1<5;i1++)
{
P1OUT=P12variety002[i1];
P2OUT=P12variety002[i1];
j1=50000;
while(j1--);
}
for(i2=0;i2<5;i2++)
{
P1OUT=P13variety002[i2];
P2OUT=P13variety002[i2];
j2=50000;
while(j2--);
}
P1OUT=0x00;
P2OUT=0x00;
j3=50000;
while(j3--);
}
voidvariety003()
{
unsignedcharP1variety003[]={0x03,0x07,0x0f,0x1f,0x3f};
unsignedcharP2variety003[]={0x20,0x30,0x38,0x3c,0x3e};
P1DIR=0xff;
P2DIR=0xff;
P1OUT=0x00;
P2OUT=0x00;
unsignedi1,j1,i2,j2,j3,j4,j5=0;
while(j5<=1)
{
for(i1=0;i1<5;i1++)
{
P1OUT=P1variety003[i1];
P2OUT=P2variety003[i1];
j1=20000;
while(j1--);
}
P1OUT=0x00;
P2OUT=0x00;
j4=50000;
while(j4--);
for(i2=0;i2<5;i2++)
{
P1OUT=P2variety003[i2];
P2OUT=P1variety003[i2];
j2=20000;
while(j2--);
}
P1OUT=0x00;
P2OUT=0x00;
j3=20000;
while(j3--);
j5=j5+1;
}
}
voidvariety004()
{
unsignedcharP1variety004[]={0x08,0x1c,0x3e};
unsignedcharP2variety004[]={0x3e,0x1c,0x08};
P1DIR=0xff;
P2DIR=0xff;
P1OUT=0x00;
P2OUT=0x00;
unsignedinti1,j1,i2,j2,j3;
for(i1=0;i1<3;i1++)
{
P1OUT=P1variety004[i1];
P2OUT=P1variety004[i1];
j1=30000;
while(j1--);
}
P1OUT=0x00;
P2OUT=0x00;
for(i2=0;i2<3;i2++)
{
P1OUT=P2variety004[i2];
P2OUT=P2variety004[i2];
j2=60000;
while(j2--);
}
P1OUT=0x00;
P2OUT=0x00;
j3=50000;
while(j3--);
}
voidvariety005()
{
unsignedcharP1variety005[]={0x02,0x02,0x0a,0x0a,0x2a,0x2a,0x3a,0x3a,0x3e,0x3e};
unsignedcharP2variety005[]={0x00,0x04,0x04,0x14,0x14,0x34,0x34,0x3c,0x3c,0x3e};
P1DIR=0xff;
P2DIR=0xff;
P1OUT=0x00;
P2OUT=0x00;
unsignedinti1,j1,j3;
for(i1=0;i1<10;i1++)
{
P1OUT=P1variety005[i1];
P2OUT=P2variety005[i1];
j1=50000;
while(j1--);
}
P1OUT=0x00;
P2OUT=0x00;
j3=50000;
while(j3--);
}
voidvariety006()
{
unsignedcharP1variety005[]={0x14,0x2a};
unsignedinti1=0,i2,j2,j3;
while(i1<=4)
{
for(i2=0;i2<2;i2++)
{
P1OUT=P1variety005[i2];
P2OUT=P1variety005[i2];
j2=50000;
while(j2--);
}
i1=i1+1;
}
P1OUT=0x00;
P2OUT=0x00;
j3=50000;
while(j3--);
}
voidvariety007()
{
unsignedcharP1variety007[]={0x01,0x06,0x0c,0x18,0x30,0x20};
unsignedcharP2variety007[]={0x20,0x30,0x18,0x0c,0x06,0x01};
P1DIR=0xff;
P2DIR=0xff;
P1OUT=0x00;
P2OUT=0x00;
unsignedinti1,j1,i2,j2,j3,j4;
for(i1=0;i1<=5;i1++)
{
P1OUT=P1variety007[i1];
P2OUT=P2variety007[i1];
j1=50000;
while(j1--);
}
P1OUT=0x00;
j4=50000;
while(j4--);
for(i2=0;i2<=5;i2++)
{
P1OUT=P2variety007[i2];
P2OUT=P1variety007[i2];
j2=50000;
while(j2--);
}
P1OUT=0x00;
P2OUT=0x00;
j3=50000;
while(j3--);
}
voidvariety008()
{
unsignedcharP1variety008[]={0x02,0x04,0x08,0x10,0x20,0x00};
unsignedcharP2variety008[]={0x00,0x02,0x04,0x08,0x10,0x20};
P1DIR=0xff;
P2DIR=0xff;
P1OUT=0x00;
P2OUT=0x00;
unsignedinti1,j1,j2=0,j3;
while(j2<=2)
{
for(i1=0;i1<=5;i1++)
{
P1OUT=P1variety008[i1];
P2OUT=P2variety008[i1];
j1=50000;
while(j1--);
}
P1OUT=0x00;
P2OUT=0x00;
j3=50000;
while(j3--);
j2=j2+1;
}
}
参考文献
【1】模拟电子技术基础(第4版)(作者:
华成英,童诗白)出版社:
高等教育出版社
【2】数字电子技术基础(第5版)(作者:
阎石)出版社:
高等教育出版社
【3】单片机原理与接口技术(修订版)(作者:
赵嘉蔚,张家栋,霍凯)出版社:
清华大学出版社
【4】谭浩强.C程序设计.出版社:
清华大学出版社(第三版),2005年7月
【5】余孟尝.数字电子技术基础简明教程(第三版).出版社:
高等教育出版社,2006年7月
【6】潘明莲.为计算机原理(第二版).出版社:
电子工业出版社,2003年9月
【7】谭博学.集成电路原理及应用(第三版).出版社:
电子工业出版社,2001年6月
【8】单片
- 配套讲稿:
如PPT文件的首页显示word图标,表示该PPT已包含配套word讲稿。双击word图标可打开word文档。
- 特殊限制:
部分文档作品中含有的国旗、国徽等图片,仅作为作品整体效果示例展示,禁止商用。设计者仅对作品中独创性部分享有著作权。
- 关 键 词:
- 基于 msp430g2553 单片机 跑马 设计 DOC
![提示](https://static.bdocx.com/images/bang_tan.gif)