430单片机学习

2024-06-29

430单片机学习(精选8篇)

篇1:430单片机学习

微控设计网原创主贴 作者:DC---随想随打的,可能会有很多错字或语句不通,请指出---

在我建立论坛以来,也认识了不少新手,新手们对MSP430单片机都很感兴趣、很有热情。同时也通过了微控论坛与不同区的网友们进行了交流和互动;在此感谢他们对微控技术论坛的支持。

在论坛中经过和一大部分初学者接触一段时间以来,发现了一些初学者对MSP430的学习不知如何入手、如何才能有效地掌握好MSP430单片机的基础应用方面的问题。所以,以我个人认为,我大概说说我对一些初学者的建议,有兴趣的初学网友们不防参考下。希望能给你在MSP430入门路上作一个小小的指引。首先,我认为在学习MSP430单片机之前要所准备一些“硬件设施”和你自身的“软件条件”。

在这里所谓的“硬件设施”是指一些可以用于实际操作的工具,因为不管你学习什么样的单片机都要实行动手性操作的。这是必不可少的一部分。而这些常备工具有:电脑一台、一个MSP430编译环境软件、一个MSP430的JTAG仿真器或自带仿真器的开发板、一个MSP430目标板或开发板和教程书本、一个技术互动平台等。另外,需要说明的是在学习MSP430单片机是无需用到所谓的编程器的,因为单片机程序通过JTAG仿真器下载到MSP430单片机的flash后就可以保存程序的,就算掉电了下次上电时也可以运行。关于入门工具方面作一个简述:

1-电脑:带windows操作系统,带并行口。如果你是高档的笔记本电脑不带并口时,也可以用USB接口的仿真器,如微控设计网销售USB接口仿真是一个不错的选择。

2-在选用MSP430仿真器有3个方案可选。其一,你可以购买现成的MSP430JTAG仿真器如TI-MSP430JTAG,微控设计网自制MSP430-JTAG,或冰河科技的USB接口JTAG仿真器等这些都是不错的选择。其二,购买现成的开发板已带有JTAG仿真器,如本站EDB430A或随后的新出开发板。其三,你可以自行自制,如果你有条件的话不防自行制作,因为电路也较为简单且是公开的。而我建议初学者选择其一或其二的方案;因为怎么说也是首次入门,如果仿真器和目标器件都自制作的话在调试时发现有问题,此时可能存在着多个不定因素要你去确定的。如电脑和接口,你的编译软件,你的程序,你的自制仿真器还有你目标电路...这些都是需要你去排除的,花这样的时间在这里我认为是不值得的。所以建议购买带仿真器的开发板或成品的仿真器,同时也有较好的技术支持。

3-开发板或目标板是学习一个重要的工具,一个良好的开发板或目标板对给学习带来很多时间和学习效率。建议购买本站的开发板或目标板,同时也会得到很好的技术支持。如果自己制作的话也行,那就看个人水平了。

4-软件工具,这个还比较好说。因为现在都有学习版的工具软件,如IAR的EW430学习版,430GCC软件还是免费的。建议还是使用IAR软件较方便,因为使用的人群较多,有问题还可请教,容易解决。5-关于教程书本的选择,在国内MSP430的教程也有不少推出。一本教材的好坏是影响到一个初学者的学习进度的。但作为比较出色的和比较容易让初学者所使用的我个人认为一本不错的教材,可以推荐给初学者。就是 <> 清华大学出版社和一本关于430C语言编程应用的书本<>。

6-一个技术互动平台也是一个值得关注的话题。在你自学过程中,难免会有碰到一些学习上的问题。此时想找人请教,当然如果身边有同事、同学、老师是最好的啦,但他们有时未必有空;或如果你身边没有这样的人时。这时候你可以通过一个专业有效的平台来帮忙解决你的问题。

你可以通过QQ群,MSN群,网站论坛等。如较多用的就是QQ群和论坛;QQ群有好处就是实时,但实时得来未必大部分有空或在线。就算可以留言有时网友下次上线时也未必去为你再解答(因为很多网友都

认为时间过了很长了,或被其它问题刷过了此问题)。说到技术论坛,在国内大大小小的单片机技术论坛也真多的令你眼花缭乱。大部分的网站、论坛都有现行通用的单片机各专栏如

51、MSP430、AVR、PIC....。但在一些综合论坛中难以集中到一些专一应用到某一系列的用户或同类型初学者。这时你需要选择一个较为专业的技术论坛,如你选择了微控技术论坛也是一个不错的决定。因为这里有较多的初学者和有经验的前辈,有问题可以共同交流和互动。也可以看看其它同学所提出的问题,可以参考。另外,微控设计网也有较为丰富的MSP430学习资源共享,在论坛上也有不定期的DIY活动项目,有兴趣的可以一起参与。论坛的目标是一起学习、一同进步、分享经验资源。

如果你有了以上的硬件设施,这时需要讲到你的“软件条件”。这里所说到的“软件条件”很大程度是指初学者的自身条件基础。如果你是有C语言基础和其它计算机或单片机基础的话,学习起MSP430单片机来就比较容易。你可以只需了解一部分MSP430单片机的硬件资源就可以很快上手了。如果你是电子相关专业,我想只要你用功学习的话也不是件难事,况且MSP430单片机应用起来也是较为方便的一种。可能要在C语言基础和单片机原理上花点时间去学习。

在我认识的初学者中,有部分是用过通用型51单片机的。下面大概说说51单片机与MSP430单片机有什么不同之处吧,也许不完全这只供给大家一个参考。

区别如下,不完整不要见笑喔:

1-指令集不同:51是CISC,430是RISC。

2-数据位长不同:51是8位,430是16位。

3-资源灵活性不同:例如:51的串口波特率与时钟有关,而430无关。还有就是定时器实时性、资源等。

4-功耗:51一般在mA级;而430是在uA级的,这也是成为业界最低功耗的单片机。

5-同样的速度下,51的主频要比430高的多了。

6-同样C函数,代码空间不同还有很多不同.....。

7-由于面向对象有所不同,在芯片的定位上也是有所差异。

说到学习MSP430如何入手是好?

MSP430系列中硬件源资是非常丰富的。我认为以下几部分模块硬件资源是作为初学者首当要了解学习的。

1-对MSP430 CUP、中断、复位及低功耗模式要有所了解。

2-IO口,...2-430的时钟硬件,建议以MSP430F14X系列为参考。

3-定时器Timer_A。

4-ADC12模块。

5-串行口模块。

6-基它硬件资源如比较器A,定时器B....日后再慢慢学习吧。

在430的时钟模块、Timer_A、ADC12模块是MSP430用得最多的几个模块,当你看到较多的例程时都有用到这模块。作为初学者这是学习理解的重点。针对于此,我也特为初学者做了一些基础模块的应用汇合范例,初学者不防下载来看看。另外,微控设计网和论坛上也有较多的设计应用专题,如果你想提前一步了解也不防去看看。但就是不能太过于心急,否则会影响到学习质量问题。

另外,在QQ群交流的同时,有部分网友问到我同样一个问题。“DC你为什么要建一个微控设计网和论坛?”说实话,答案只有一个:其实我也是一位电子爱好者,热爱这样的工作。这样的工作能带给我激情,有激情才有动力。我喜欢向人学习和交流和分享兴趣、成果;所以才力建了一个于MSP430单片机为核心的微控网站和技术论坛。我很希望通过一个这样的技术论坛来与大家一起来分享和交流。也很希望有兴趣、有激情的网友们能在这里进行交流和帮助到初学者的进步,更希望更多的高手们一起来互相交流和发表自已成长心得。

你知道“MSP430”是什么意思吗?

告诉你,全称是Mixed Signal Processor 中文也就是混合信号处理器。

何为混合,混合是指模拟信号与数字信号的意思,这里是指MSP430单片机有力能处理两类信号。模拟信号的处理一般是指单片机对模拟信号的采集、信号转换、处理等一系列信号链路调理过程。而“430”编号是TI公司一个产品批次号,这个数字只有TI公司才有意义。我们用户不必理会他。

[1]如何查看MSP430技术资料

[1.1] TI MSP430英文资料大概分为两大类:芯片资料、应用笔记两种。

芯片资料又分为两种,一种是“系列型号使用手册”,另一个“子系列芯片手册”。

系列型号使用手册:MSP430x1xx Family、MSP430x4xx Family、MSP430x2xx Family。

系列型号使用手册主要是用于介绍此系列产品的指令集使用、各模块的工作原理、各寄存器设置等介绍。用户如果要了解MSP430单片机某模块的工作原理可以查看这类手册。

子系列芯片手册:如MSP430x11x1、MSP430x13x、MSP430x41x、MSP430x42x....等等。子系列芯片手册分

得就比较细,主查是根据不同的芯配资源来划分。这些资料主要是介绍各子系列芯片的使用电参数、使用物理特性等介绍。用户如果要了解MSP430某子系列芯片的某一模块功能参数可以查看这类手册。

[1.2]应用笔记

MSP430应用笔记由TI公司自行编写针对某一功能需求或应用需整理的技术参考资料。同时也有相关的汇编源代码。而这些资料是全共开的。

开发软件环境上,51、STC、WINBOND都使用KEIL C;PIC单片机使用MPLAB;MSP430单片机使用IAR Embedded Workbench;ARM7使用ADS或者Linux。由于功能、性能上ARM和单片机差距较大,所以在这里最主要比较单片机的差异方面。

软件开发环境实现的功能基本都差不多,我就在界面上比较一下吧。我会的第一个就是KEIL C,个人觉得这个软件各方面都挺好,如果说有不足,就是在做LCD开发时人些字会是乱码,不过打上补丁后就很好用了。后来因工作需要也学会了MPLAB,这个软件在功能上倒没什么,就是写程序时那个界面右边空出一大块来,一编译,编译信息的一个新界面就跳出来,而且是全屏。这个软件还存在一个问题,就是如果使用C语言写程序,那么编译器还得单独安装,所以个人感觉这个没KEIL C和IAR Embedded Workbench做的人性化,它们编译的提示信息基本都在底部,而且自动向上滚动,还有都集成了汇编和C两种编译器。同样最近我也学了IAR Embedded Workbench,个人感觉这个这个界面给人的第一感觉就是自然,用起来也很快能上手。

软件名称 版本 界面友好度 缺点

KEIL C V8.08a 一般 开发LCD程序时需打补丁

MPLAB V8.00 差 不集成C语言编译器

IAR Embedded Workbench For MSP430 3.40A 好(暂未发现)

从硬件结构上比较,51单片机和MSP430单片机都采用冯•诺依曼结构,而PIC单片机则采用哈佛结构。这两种结构各有优点,很难说出谁好谁坏。

哈佛结构是一种将程序指令存储和数据存储分开的存储器结构。中央处理器首先到程序指令存储器中读取程序指令内容,解码后得到数据地址,再到相应的数据存储器中读取数据,并进行下一步的操作(通常是执行)。程序指令存储和数据存储分开,可以使指令和数据有不同的数据宽度,如Microchip公司的PIC16芯片的程序指令是14位宽度,而数据是8位宽度。冯•诺伊曼结构也称普林斯顿结构,是一种将程序指令存储器和数据存储器合并在一起的存储器结构。程序指令存储地址和数据存储地址指向同一个存储器的不同物理位置,因此程序指令和数据的宽度相同,如英特尔公司的8086中央处理器的程序指令和数据都是16位宽。

从功能上比较51单片机属于基本型,功能相对单一,虽然51内核的MCU相对比较多,但却是不同厂家的,所以使用起来局限性很大。这点很难和PIC单片机和MSP430单片机相比。PIC单片机分为低档、中档和高档单片机,而且每一系列可选型号也较多。MSP430单片机同样也有MSPX1XX、MSPX2XX、MSPX3XX、MSPX4XX等系列,且每一系列可选型号也很多。从低功耗方面比较,51的可选型号几乎没有,PIC单片机是低功耗的最低功耗也达个位数uA级,但MSP430单片机则是超低功耗的,最低功耗可达到0.6uA。需要说明一点的是,在执行了休眠指令后,PIC单片机每次唤醒都需要复位一次,所以在超低功耗方面MSP430单片机表现要好点。

单片机类型 功能 系列化程序 低功耗

一般 差 差

PIC 好 好 一般

MSP430 好 好 好

当然MSP430单片机也有它的缺点,在我使用过程中,最大的不便就是位操作。下面举一例子,功能就是判断一引脚如果是高电平,那么就输入低电平为例,三种单片机代码如下:

51单片机

功能:如果P1^0为高则输出低

代码:

Sbit DR=P1^0;

If(DR)

DR=0;

PIC单片机

功能:如果RB0为高则输出低

代码:

#define DR RB0

TRISB=0X00;

If(DR)

{

TRISB|=0X0

1DR=0;

}

MSP430单片机

功能:如果P1^0为高则输出低

代码:

P1DIR=0X00;

If(P1IN&=0x01)

{

P1DIR|=0X01;

P1OUT&=0XFE;

}

从上面实现同一功能的三段代码可以看出:

单片机类型 程序可读性 位操作

好 容易

PIC 一般 一般

MSP430 差 差

下面我说下我在学习这三种单片机过程中的时间长短。学习51单片机时,当时还在上学,为了兴趣买了块学习板后就开始对着上面的例子一个又一个读它、改它。一年后我用51单片机完成了我的毕业设计。学习PIC单片机则是为了一个产品的需要,我选取了最小体积的PIC12F508单片机。也是从网上买了个ICD仿真器和开发板,一个月后我的新产品就调通了。在这个产品的升级产品中我决定选用超低功耗的MSP430单片机,在网上找了一下就找到了利尔达,联系了下没想到利尔达住西安办事处的人就来了,并帮我一块选芯片、搭环境。从拿到仿真器到调通程序就用了两天,算上加业务功能不到一周时间就完成了。现在我的产品马上就要评估了,在此我特别感谢利尔达公司驻西安办事处的工作人员,没有他们我的新产品不可能这么快出来。

经过上面从开发环境、结构、功能等方面比较了

51、PIC、MSP430三种单片机。总的来说,从学习、上手方面51是最好的选择。功能、应用方面则优先考虑MSP430单片机。

篇2:430单片机学习

学习就是迎接挑战、解决困难的过程,没有挑战,就没有人生的乐趣。

下面以MSP430系列单片机为例,解释一下学习单片机的过程。

(1)获取资料

购买有关书籍,并到杭州利尔达公司网站和TI网站获取资料,例如,在网上可以找到FET使用指导、MSP430 F1xx系列、F4xx系列的使用说明和具体单片机芯片的数据说明,可以找到仿真器FET的电路图、实验板电路图、芯片封装知识等大量的实际应用参考电路,当然有些资料是英文的,看懂英文资料是个挑战,学会4、6级英语就是为看资料的。英语难学,但是看资料容易,只要下决心,看完一本资料,就可以看懂所有的相关资料。

(2)购买仿真器FET和实验电路板

如果经济条件不错,可以直接购买。

(3)自制仿真器FET和实验电路板

自制仿真器FET,首先要到网上找到FET电路图,然后就可以使用画电路板软件画电路图和电路板图,这又是个挑战。FET电路非常简单,但要把它制作出来还是需要下一番工夫的,找一本有关书,然后练习画原理图,画完原理图后,就学习认识元件封装,再购买元件,这时就可以画电路板图了,一旦画好,将形成的PCB文件交给电路板制作公司,10天后,就可以得到电路板,焊上元件和电缆,等实验电路板做好后,就可以与实验电路板一起调试了。自制实验电路板,需要单片机芯片内部工作原理的知识、封装知识,清楚的知道每一个引脚的功能,还需要数码管、按钮、排电阻、三端稳压器、二极管、散热器、电解电容、普通电容、电阻、钮子开关等元件的知识,对于初学者,可以做一个只有3个数码管、8个按钮、8个发光二极管的简单实验板,这样的实验板,虽然简单,但足可以帮助初学者入门单片机。自制实验电路板与自制FET一样,首先画电路图,然后买元件,再画电路板。由于MSP430系列芯片是扁平封装,焊接起来有一定难度,这好象是个挑战,但实际上很简单,方法如下:首先在焊盘上涂上松香水,在松香水未干的情况下,将芯片放在焊盘上,注意芯片第一引脚的位置,并使引脚与焊盘对齐,将擦干净的电烙铁(不能有任何焊锡)接触引脚,引脚只要一热,焊盘上的焊锡就自动将引脚焊住了,千万注意电烙铁上不能有焊锡,焊接时最好配备一个放大镜。焊接电路板时,每一个元件都要核对参数,可以用万用表测量的元件一定要测量。

(4)从网上获得IAR软件

到利尔达公司或TI公司的网站下载IAR软件,并安装到计算机上。

(5)调试FET和实验板

将FET的一端与PC机的并行口相连,另一端连接实验板的JTAG接口,上电后,检查FET芯片、实验板上的单片机芯片是否发热(用手模),PC机是否工作正常后,运行IAR软件,找个C语言或汇编语言的例子,编译成功后下载到单片机中,如果能够下载,说明一切成功。否则还需要仔细研究,一般情况下,只要电路板上的电路正确,元件参数准确,没有不成功的。

(6)分步骤学习单片机

学习使用单片机就是理解单片机硬件结构,在汇编或C语言中学会各种功能的初始化设置,以及实现各种功能的程序编制。

第一步:数字I/O的使用

篇3:430单片机学习

(1)输入时钟可以有多种选择,可以是慢时钟、快时钟以及外部时钟。虽然没有自动重载时间常数功能,但产生的定时脉冲或PWM信号没有软件带来的误差。

(2)不仅能捕获外部事件发生的时间,还可锁定外部事件发生时的高低电平,给使用带来了很大的方便。

(3)有适用于串行通讯的功能特征。

1 在控制系统中的开发与设计

TIMER_A有4种工作方式:停止、上升、连续、上升下降方式,其中上升和上升下降方式需要和比较/捕获通道0(CCR0)共同使用,可以根据实际的需要,灵活选用。如果多个捕获/比较通道都以16位的定时时间作为时标,TI-MER_A定时器采用连续方式的比较多。这里以MS-P430F1121单片机为例阐述几个应用的实例。

1.1 在温度控制系统中的设计

采用廉价的单片机进行产品设计时,用RC充放电原理测量已是很平常的事,然而,由于单片机的廉价,往往分辨率很低。MSP430的FLASH型单片机中,采用16位的TIMER_A定时器,再加上内部的比较器,至少能达到10位的AD测量精度。

传统的办法采用充电的办法测量。为增加分辨率,文中取内部的0.25Vcc作为阈值电压,采用放电的办法可分别测出参考电阻Rref的放电时间Tref,传感器电阻Rsensor的放电时间Tsensor,并有下面的公式:

下面的程序,定时器A的输入频率采用约1MHz左右的DCO。由于电阻大小和放电时间成正比,对测得的时间进行比较,就可以确定温度传感器的范围。如图1所示,如果温度电阻大于参考电阻时,P1.0输出低电平;反之,P1.0输出高电平。如果温度传感器采用负温度系数的103AT,参考电阻取10K,当温度高于25度时,LED亮;低于25度时,LED灭。如果要测量具体的温度数值,在下面的程序基础上增加温度传感器电阻值计算和查表程序就可以了。

程序如下:

1.2 在PWM控制系统中实现

利用TIMER_A做成的PWM,能用软件任意改变占空比和周期。若不需要修改占空比和时间,则不需要利用中断维持PWM输出,TIMER_A能自动输出PWM。

这里,TIMER_A工作在上升方式;捕获/比较通道CCR0控制PWM周期;捕获/比较通道CCR1控制PWM的占空比。CCR0和CCR1均工作在比较模式。P2.0接占空比寄存减按键,P2.1接占空比寄存加按键(具体见图2)。

程序如下:

1.3 在串行通讯系统中应用

如图3所示,晶振采用32768Hz,用TIMER_A产生2400波特率,并收发数据,支持232通讯。P2.1作为接收数据口,P1.1为发送数据口。数据格式采用1个起始位,8个数据位,1个停止位,没有奇偶校验位。利用定时器A,在达到比较时间后可对端口置位(输出方式1)和复位(输出方式5)。

具体程序如下:

2 结束语

MSP430单片机的TIMER_A结构复杂,功能强大,给开发人员提供了较多的灵活的选择余地。上面仅是控制系统开发的经验探索,以供读者在控制系统开发与设计中参考。开发人员只要深入理解了TIMER_A的原理,就可以根据自己的产品的实际情况,实现更多的开发方案。

参考文献

[1]胡大可.MSP430系列单片机C语言程序设计与开发.北京:航空航天大学出版社,2005.

[2]魏小龙.MSP430系列单片机接口技术及系统设计实例.北京:北京航空航天大学出版社,2006.

[3]余永权,黄英.单片机在控制系统中的应用.北京:电子工业出版社,2007.

篇4:430单片机学习

MSP430系列器件包含CPU、程序存储器(ROM、 OTP和Flash ROM)、数据存储器(RAM)、运行控制、外围模块、振荡器和倍频器等主要功能模块。其基本结构如图1所示。可以看出,MSP430内部包含了计算机的所有部件,是一个真正的单片机(微控制器MCU)。

CPU CPU 由一个16位的ALU、16个寄存器和一套指令控制逻辑组成,其逻辑简图如图2所示。在16个寄存器中,程序计数器PC、堆栈指针SP、状态寄存器SR和常数发生器CGl、CG2这4个寄存器有特殊用途。除了R3和R2外,所有寄存器都可作为通用寄存器来用于所有指令操作。常数发生器是为指令执行时提供常数的,而不是用于存储数据的。对CGl、CG2访问的寻址模式可以区分常数的数据。

在CPU内部有一组16位数据总线和16位的地址总线;CPU运行正交设计、对模块高度透明的精简指令集;PC、SR和SP配合精简指令组所实现的控制,使应用开发可实现复杂的寻址模式和软件算法。

存储器 MSP430系列采用 “冯-纽曼结构”。因此,RAM、ROM和全部外围模块都位于同一个地址空间内,即用一个公共的空间对全部功能模块进行寻址。支持外部扩展存储器是将来性能增强的目标。特殊功能寄存器及外围模块安排在000H~1FFH区域;RAM和ROM共享0200H~FFFFH区域,数据存储器(RAM)的起始地址是0200H。

存储器与CPU及存储器数据总线(MDB)、存储器地址总线(MAB)的连接关系如图3所示。

(1)程序存储器 MSP430系列程序存储器的类型有ROM、OTP和Flash ROM三种,存储器的类型和容量示于本刊网站的表1中。

ROM的容量在1~60KB之间;对于Flash型的芯片,内部还集成有两段128B(共256B)的信息存储器以及1KB存放自举程序的自举存储器(BOOT ROM);对代码存储器的访问总是以字形式取得代码,而对数据可以用字或字节方式访问。每次访问需要16条数据总线(MDB)和访问当前存储器模块所需的地址总线(MAB);存储器模块由模块允许信号自动选中。最低的64KB空间的顶部16个字,即0FFFFH~0FFE0H,保留存放复位和中断的向量;在程序存储器中还可以存放表格数据,以实现查表处理等应用;程序对程序存储器可以任意读取,但不能写入。

(2)数据存储器 数据存储器(RAM)经两条总线与CPU相连,即存储器地址总线MAB和存储器数据总线MDB(见图3)。

数据存储器可以以字或字节宽度集成在片内,其容量在128B~10KB之间;所有指令可以对字节或字进行操作。但是对堆栈和PC的操作是按字宽度进行的,寻址时必须对准偶地址。

运行控制 MSP430系列微控制器的运行主要受控于存储在特殊寄存器(SFR)中的信息。不同SFR中的位可以允许中断,以支持取决于中断标志状态的软件以及定义外围模块的工作模式。

禁止外围模块,停止它的功能,可以减少电流消耗,而所有存储在模块寄存器中的数据仍被保留。外围模块的工作模式可以用SFR的特定位置来标明。

外围模块 外围模块包括基本定时器(Basic Timer)、16位定时器(Timer_A及Timer_B)、ADC转换器、I/O端口、异步及同步串行通讯口(USART)以及液晶显示驱动模块等。

外围模块经MAB、MDB与CPU相连。图4所示为外围模块的连接总线示意图。从图中可以看出,外围模块可分为字(16位)模块和字节(8位)模块两种。对大多数外围模块,MAB通常是5位,MDB是8位或16位。

字节(8位)模块的数据总线是8位的,需经总线转换电路与16位的CPU相连。这些模块的数据交换毫无例外地要用字节指令处理;对字(16位)模块,其数据总线是16位的,无需经过转换而直接与CPU的16位数据总线相连。模块的操作指令就没有任何限制。MSP430系列所包含的字节(8位)模块和字(16位)模块,请参看本刊网站上的表2和表3。

振荡器和时钟发生器 振荡器LFXT1(LF)是专门为通用的低功耗32768 Hz时钟晶振设计的。除了晶体外接外,所有的模拟元件都集成在片内。但是也可以用一个高速的晶振工作,这时需要外接负载电容。

对于F13X、F14X、F15X和F16X以及F4XX系列,片内还有一个可接入高速晶振的XT2振荡器。除了晶体振荡器之外,F13X、F14X、F15X和F16X系列都有一个数字控制RC振荡器(DCO),用它实现对振荡器的数字控制和频率调节;对于F4XX系列,将晶振频率用一个锁频环电路(FLL或FLL+)进行倍频。FLL或FLL+在上电后以最低频率开始工作,并通过控制一个数控振荡器(DCO)来调整到适当的频率。供处理器工作的时钟发生器的频率固定在晶振的倍频上,并提供时钟信号MCLK。

篇5:430单片机学习

摘要:用MSP430P315单片机的A/D转换器,实现阻性温度传感器的电阻检测;用查表和线性插值结合的方法,简化标度变换的算法结构。对电池电压的降低进行补偿的同时分析补偿电阻的精度对温度检测的影响。

关键词:单片机 线性插值 补偿 温度检测

引言

长期以来,人们在测量温度时,大部分使用常规的测量方法测量。检测精度要求较高时,调理电路复杂、A/D的位数高,使设计的系统成本居高不,很难普及。随着电子技术的发展,出现了很多功能完备的低功耗、低电压大规模集成电路,为设计便携式高精度测温系统提供了硬件基础。本文介绍的高精度便携式测温仪,使用了非常适合作低功耗便携式测试设备美国TI公司的MSP430P325为控制器,用Pt500铂电阻完成温度检测,检测的温度通过液晶显示器显示。本测试仪的测温精度达到0.03℃。

硬件电路设计

MSP430P325单片机内部集成了可切换的精密恒流源。精密恒流源的电流大小由外部精密电阻确定,同时内部又集成了6个14位的A/D转换器和液晶控制器。这样的内部结构,适合驱动性传感器。因此,可减少信号调理环节和显示环节的扩展,大大地简化了系统结构,效降低了系统功耗。

1.温度传感器数学模型

温度敏感元件采用铂电阻Pt500,在~630.75℃温度范围内铂电阻阻值与温度关系为

(本网网收集整理)

b=-5.847×10-7/(℃) 2

根据上式进行温度计算,需要求解二阶方程的解,计算程序复杂,精度也难以保证。为此本文使用表格法和线形插值法进行温度标度变换。方法如下:首先,以温度增加1℃对应的绝对电阻值建立120个表格,A/D转换结果与表格内的电阻值进行比较,直到Rn≤RM

2.MSP430P325单片机的A/D转换原理

MSP430系列单片机具有低功耗、高抗干扰、高集成度等优点。其中MSP430P325单片机具6有个通道14位A/D转换器,如图1所示。6个通道中A0~A3可编程为恒流源工作、适合于外妆电阻性、无源传感元件的应用场合。SVCC端是A/D转换的参考电压端,它可连接于片内的AVCC,也可由外部稳压源提供。A/D转换采用逐次逼近原理,由内部一个电阻网络生个开关电容网络配合D/A及比较器等电路来实现,由时钟ADCLK控制转换的进程。转换过程经过两卡,首先通过电阻阵列分压值与输入信号的比较来确定输入信号电压的范围,这个电压范围是将参考电压分成4等分,由低到高分别称范围A、B、C、D;然后由开关电容阵列逐位改变电容量,来搜索与输入信号最接近的电压值,由于电容量是以二进制幂排列的,完成搜索后开关的接通状态即为输入信号的A/D转换值。实际上的由电阻网络确定转换值的高2位,由开关电容网络确定了转换值的低12位。

当启动转换时在ACTL中设定了信号电压范围,实际已确定了转换数据的高2位,经过电阻网络的高2位判别就不必进行了,因此转换速度较快,它的转换速度为96个ADCLK周期。而如果启动转换时在ACTL中设定为自动搜索输入电压范围,ADAT中的将出现全部14位转换数据,这时转换时间增加到132个ADCLK周期。输入端输入信号是经过电阻型传感元件实现的,A/D输入端中的A0~A3,可以编程为恒流源输出端对传感元件供电。要实现这一功能,除了要对ACTL定义外,还要在引脚SVCC和REXT之间连接一个外接电阻,以构成恒流源,恒流由A/D输入端输出。这时检测的信号是传感元件上的电压值。关系 为VIN=0.25×Vsvcc×RSEN/REXT。其中,Vsvcc是参考电压,RSEN是传感元件电阻,REXT是构成恒流源的外接电阻,VIN即为在传感元件上检测到的电压值。A/D转换的精度较高时,数据低位受干扰的可能性也增大了。因此,MSP430P325单片机的模拟数字的供电是分开的,包括AVCC、AGND、DVCC、DGND等引脚。为保证A/D转换精度,在电路中不应将它们的简单地连接在一起。分成两组电源供电比较理想,但是在实际电路中往往难以做到。可采用在AVCC与DVCC之间加LC滤波去耦电路来隔离。在AGND与DGND间串入反向并联的二极管可使两点在电压低于0.7V时处于断开状态。空闲的输入端用作数字通道时,要防止对相邻模拟通道的干扰。这种干扰是经通道间的电容引入的。避免的方法是A/D转换期间避免数字通道出现信号跳变。由于A/D转换过程利用了开关电容网络,当信号源的内阻过大时会因RC常数过大而影响转换精度。A/D输入端的等待输入阻抗大约相当于2kΩ电阻与42pF电容的串联电路。ADCLK为1MHz时,信号源内阻低于27KΩ才能保证转换精度。

3.外加电阻与测试精度的关系

使用铂电阻进行测温时,外加电阻与恒流源电流之间的关系式为

ISET=0.25×VSVCC/RSET    (2)

式中:ISET为恒流源电流,VSVCC为电源电压,RSET为外加电阻。

铂电阻到地的电压VIN为

VIN=Rt(t) ×ISET    (3)

从式(2)中可以看出,影响铂电阻两端电压检测精度的因素有两种:一个是电源电压的波动,另一个是外加电阻的`精度和温度稳定性。从仪表使用情况来看,仪表的供电电池的电压随时间推移逐渐减小,如果没有相应的补偿方法,铂电阻的温度检测精度是无法保证的,因此本文提出如下补偿方法。

MSP430P325有4个恒流源输出A/D转换通道(可以切换的),在另一个通道接一个与外加电阻RSET相同阻值的电阻,每次A/D转换时进行电阻电压降低补偿。补偿方法如下:

恒流源给铂电阻供电时铂电阻两端电压为

VIN=0.25×VSVCC×Rt(t)/RSET    (4)

V=0.25×VSVCC×R/RSET    (5)

A/D转换以后铂电阻两端电压的数字量为Nx,固定电阻的两端电压的数字量N,因为A/D的转换精度和位数是一致的,因此得出如下结果:

Nx/N=Rt(t)/R    (6)

从式(6)可以看出,铂电阻两端电压的A/D转换结果与电源电压没有关系,这种方法也可以补偿芯片的基准电压离散性。要保证检测精度,外加的固定电阻R的精度是关键因素。如果温度检测范围为0~100℃,外加的固定电阻R的精度大小应如何选择?下面进行定量分析。

Nx/(N±ΔN)=Rt(t)/(R±ΔR)    (7)

式(6)和式(7)相除得出如下结果:

(N±ΔN)/N=(R±ΔR)/R    (8)

如果外加电阻RSET和R的阻值均为500Ω时,要求电阻精度影响数字量的大小为1LSB(温度检测精度0.03℃),那么电阻R的精度为0.02%。

结束语

篇6:430定时器学习心得

看门狗定时器(WDT)、基本定时器(Basic Timer1)、8位定时器/计数器(8-bit

Timer/Counter)、定时器A(Timer_A)和定时器B(Timer_B)。但是这些模块不是所有msp430型号都具有的功能。

1、看门狗定时器(WDT)

学过电子的人可能都知道,看门狗的主要功能就是当程序发生故障时能使受控系统重新启动。

msp430中它是一个16位的定时器,有看门狗和定时器两种模式。

2、基本定时器(Basic Timer1)

基本定时器是msp430x3xx和msp430F4xx系列器件中的模块,通常向其他外围提供低频控制信号。它可以只两个8位定时器,也可以是一个16位定时器。

3、8位定时器/计数器(8-bit Timer/Counter)

如其名字所示,它是8位的定时器,主要应用在支持串行通信或数据交换,脉冲计数或累加以及定时器使用。

4、16位定时器A和B

定时器A在所有msp430系列单片机中都有,而定时器B在msp430f13x/14x和

msp430f43x/44x等器件中出现,基本的结构和定时器A是相同的,由于本人最先熟悉并应用的是定时器A所以在这里就主要谈一下自己对定时器A的了解和应用。

定时器A是16位定时器,有4种工作模式,时钟源可选,一般都会有3个可配置输入端的比较/捕获寄存器,并且有8种输出模式。通过8种输出模式很容易实现PWM波。定时器A的硬件电路大致可分为2类功能模块:

一:计数器TAR

计数器TAR是主体,它是一个开启和关闭的定时器,如果开启它就是一直在循环计数,只会有一个溢出中断,也就是当计数由0xffff到0时会产生一个中断TAIFG。

二:比较/捕获寄存器CCRX

如何实现定时功能呢?这就要靠三个比较/捕获寄存器了(以后用CCRx表示)。

当计数器TAR的计数值等于CCRx时(这就是捕获/比较中的比较的意思:比较TAR是否等于CCRx),CCRx单元会产生一个中断。依据中断即可得到相应的定时时间了。

这样我们可以通过定时器A得到三个定时时间了。

一:程序示例

我先给出我的一个应用程序,然后通过程序来书名定时器A的基本用法。程序如下: /****************************************************

*定时器初始化

****************************************************/

void init_TimerA(void)

{

CCTL0 = CCIE;//1:开启比较器0中断

CCR0 = 32768;// 2:定时时间的选取

其为1S秒定时:因为选择的是ACLK,UpMode,所以TAR每增加1次的时间为1/32768s,一共增加32768次,所以为1s

CCTL1 = CCIE;// 开启比较器1中断

CCR1 = 100;// 3.66mS显示延迟

TACTL = TASSEL_1 + MC_1;// 3:选择时钟源和计数模式

时钟源为ACLK并且为增计数模式

LPM3;//进入低功耗3

}

/****************************************************

*定时器0中断

****************************************************/

#pragma vector = TIMERA0_VECTOR

__interrupt void Timer_A0(void)

{

//用户代码 TACCR0

}

/****************************************************

二:程序分析

1):看程序中的定时器初始化模块。

1:CCTL0 = CCIE;

CCTLx是相应比较/捕获寄存器的控制寄存器,它可对比较/捕获寄存器进行设置。

这语句的意思是:开启了CCR0的中断使能,当计数器TAR计数到CCR0时产生中断。2:CCR0 = 32768;

CCRx就是相应比较器的值。

其为1S秒定时:因为选择的是ACLK,UpMode,所以TAR每增加1次的时间为1/32768s,一共增加32768次,所以为1s定时。

3:TACTL = TASSEL_1 + MC_1;

TACTL是计数器的控制寄存器。

TASSEL_x是时钟源的选择。

0——TACLK,使用外部引脚信号作为输入

1——ACLK,辅助时钟

2——MCLK,系统主时钟

3——INCLK,外部输入时钟

#pragma vector = TIMERA1_VECTOR

__interrupt void Timer_A1(void)

{

switch(TAIV)

{

case2: //用户代码 break;// TACCR1

case4://用户代码 break;// TACCR2

case 10://用户代码 break;//TAIFG

}

//根据需要是否要退出低功耗模式

LPM3_EXIT;// 退出低功耗

}

二:程序分析

1):看程序中的定时器初始化模块。

1:CCTL0 = CCIE;

CCTLx是相应比较/捕获寄存器的控制寄存器,它可对比较/捕获寄存器进行设置。这语句的意思是:开启了CCR0的中断使能,当计数器TAR计数到CCR0时产生中断。2:CCR0 = 32768;

CCRx就是相应比较器的值。

其为1S秒定时:因为选择的是ACLK,UpMode,所以TAR每增加1次的时间为1/32768s,一共增加32768次,所以为1s定时。

3:TACTL = TASSEL_1 + MC_1;

TACTL是计数器的控制寄存器。

TASSEL_x是时钟源的选择。

0——TACLK,使用外部引脚信号作为输入

篇7:单片机学习心得

我是刚毕业不久的工科学生,记得刚入大学的时候,有个比我大几届的师兄告诉我,让我利用课余时间好好学学单片机,只有那样才不愧为一名学电子的学生.坦白的说,那时侯我对单片机可以说是只闻其名,未见其物,这也得怪现在的教育体制,在学校课堂真的是学不到什么东西.记得当时上单片机课程时,每天对着书而不知所措,老师讲课也完全停留在理论层面上,大家都知道学习工科,只学理论不联系实际那就是纸上谈兵,毫无意义.于是单片机课程结束时,我对单片机还是一窍不通。说实话,那种想学还学不到什么的滋味是痛苦的.不过,上苍还是照顾我的,一次偶然的机会,有个要毕业的师哥在离校前给了我一块小电路板(上面扣了一个单片机,周围围了几个数码管和LED灯),他告诉我利用这个学单片机可以很快就有收获,后来才知道这就是所谓的单片机开发板,你可别小看这东西,利用它就可以将在课本上学到的理论知识转到实际中来了,例如我们学习编写流水灯可以练习利用单片机定时器控制IO口的输出状态,可能还是有人费解,学这么简单的东西有什么用啊?那我可以严肃的很负责任的告诉你,学习是个日积月累的东西,那些在电子大赛上显陋锋芒获大奖的同学以及那些月薪几万开发大项目的工程人员其实都是从在单片机开发板上一点一滴的学起的。不积跬步,难以至千里,这个道理大家应该都明白吧!鉴于此,利用课余时间我和我的同学(他可比我牛哦,人家获过国家电子大奖呢)开发了这款单片机开发板.在此郑重声明:写以上内容决不是为了推销而胡言乱语夸大其辞,只是希望阅读这篇文章的人对单片机开发板有个初步了解,它的更多神奇之处是只可意会不可言传的,只有实际使用过它的人才能体会到什么叫如获至宝的感觉,当然前提是你首先要有强烈的学习欲望.我已经将这款单片机开发板的详细说明贴在了下面,敢兴趣的可以详细看一下,和市面上同类产品相比,应该算是性价比极高,现在的产品有个普遍规律:便宜没好货,好货不便宜;因此说我感保证我设计的这款单片机开发板在价格和性能还是有很大的优势的.只有180元,也就相当于和朋友出去吃顿饭的花销,可是饭吃完了随着人体的新陈代谢结果可能什么也剩不下,而省下一顿饭,收获自己想学的知识,要知道知识才是人一生的财富.该说的都说了,最后祝愿所有爱好学习的朋友都能有一个美好的未来

篇8:430单片机学习

密封防水线圈靶在水下射弹测速时, 线圈缠绕的均匀一致性, 弹丸过靶姿态, 线圈厚度及由之引起的线圈靶的实际半径和等效半径的不一致等, 都将影响测量结果的确定度, 安装使用和环境要求使其水下测试可靠性差、精度低。

水下光幕靶测速此方法最适合在室内或水下靶道内使用, 并且该仪器主要是为了测试水下枪械所设计的, 对于从陆上射入水里的超空泡射弹试验由于射弹会在水里产生空泡对光幕靶有很大的影响, 从而产生很大的误差。

根据水下高速航行体试验测速需求, 综合考虑高速航行体水下速度测量的各项影响因素, 基于定距测时法, 采用接触性区截装置锡箔靶和嵌入式微处理器硬件系统的测速方案。

1 测速系统工作原理

水下高速航行体测速装置是由两部分组成, 一部分是测速靶被置于水下;另一部分是测速装置的硬件设备。当航行体穿过置于水下的测速靶时, 将断路的测速靶导通, 能够在瞬间形成一个脉冲信号, 测速靶上的信号线接入测速装置的主机板信号接口, 通过主机板上的信号捕捉电路能够将水下的三个测速靶信号触发时刻记录下来, 前后时间之差就是航行体穿过每两个靶所用的实际时间, 靶距是固定的, 从而可以求得航行体穿越每两个测速靶之间距离的平均速度, 并且通过求得的两个速度可以估计出高速航行体在水里的速度降;同时也将信号线接入主机板的A/D采集接口, 采集整个射弹实验过程的电压信号, 然后将所有数据存储下来, 再利用上位机软件将信号变化的曲线显示出来, 直观地获得时间间隔和弹丸速度。

2 测速装置硬件设计

水下测速系统主机板集测量、控制、显示、通讯等功能于一体, 为此其硬件电路需要具备对电压信号的采样、捕获、存储功能和报警, 提供友好的人机界面与上位机进行通信功能。

2.1 信号调理电路

信号调理就是把来自传感器的模拟信号变换为用于数据采集、控制过程、执行计算、显示读出和其他目的的数字信号。调理就是放大, 缓冲或定标模拟信号, 使其适合于模、数转换器 (ADC) 的输入, 考虑到MSP430F149单片机的ADC12模块只能接受0~2.5V的电压信号, 本文设计的调理电路就是把来自区截装置0~12V的电压信号转换为适合MSP430F149单片机的ADC12模块输入的0.55~2.55V电压信号, 信号调好电路主要由两级运放构成。如图1所示:

2.2 信号捕捉电路设计

本设计对信号的捕捉是通过将三路测速靶信号引入信号捕捉电路, 捕捉电路将输出一连续的方波信号, 在利用MSP430F149单片机的定时器A的捕获功能, 检测并记录三个信号的第一次发生上升沿的时刻, 即可算出航行体穿越每两个测速靶所用的时间, 测量靶距后, 进而求出航行体的水下航行速度。信号捕捉电路如图2所示。

2.3 实时时钟和存储电路设计

在记录电压变化的整个过程中, 需要将事件发生的时间实时记录, 就要求测速装置系统提供实时时钟功能。本设计选用DS1302实时时钟芯片。图3给出了DS1320时钟芯片与单片机的接口电路。

存储芯片选用K9S5608V0M-SSB0, 系统设计主要针对大数据量存储, 需要将电压信号变化的整个过程记录下来。利用MSP340F149的一般I/O口来模拟总线, 同时通过端口的方向寄存器来设置端口的输入输出方向。图4给出MSP430F149单片机与SmartMedia卡的接口电路。

3 测速系统的软件设计

3.1 主程序设计

根据测速系统预期要实现的功能, 主程序将按自上而下顺序执行, 当有中断发生时 (如检测到脉冲信号或有键按下) , 系统将根据软件排定的中断优先级来响应中断, 中断完成后再返回主程序继续执行。下面主要介绍主程序设计。

在主程序中, 主要完成初始化、报警、数据发送等功能, 其中初始化包括系统时钟初始化、ADC12模块初始化、Timer_A、Timer_B初始化、单片机I/O口的初始化和LCD初始化等。中断程序包括:定时器中断、键盘中断、通信中断等, 主程序设计流程图如图5所示。

3.2 上位机软件设计

本设计采用M S C o m m控件编写上位机软件的通信程序。M S C o m m为应用程序提供了通过串行接口收发数据的简便方法。本设计M S C o m m控件采用事件驱动的通信工作方式。

上位机端口的数据传输格式必须和单片机串口通信的数据传输格式相同。Visual Basic环境下串口的属性和通信工作方式可通过M S C o m m控件的属性来设置, 其中重要的属性包括CommPort属性、Settings属性和RThreshold属性等。CommPort属性可设置并返回通信的端口号, 本设计中采用串口1来进行通信, 设置数据传输格式通过Settings属性完成, 此处数据通信格式的设置分别是波特率为9600bps, 1位起始位, 8位数据位, 1位偶校验和1位停止位。上位机软件如图6所示。

4 试验结果

装置软硬件设计完成后, 进行了实际实弹速度的测试实验, 获得了速度参数和信号变化数据, 获取的部分速度数据如表1所示。对实验数据的分析表明, 测量结果误差<6.755‰, 满足设计的精度要求。前四发航行体测速水下只放置两个测速靶, 所以在下表中没有后两靶平均速度。

5 结语

本设计以1 6位5低功耗单片机MSP430F149作为核心控制器, 利用该芯片丰富的片上资源, 简化了整体电路结构, 实时性好, 经试验验证能满足设计要求, 各模块工作正常, 对电压信号进行了很好的调理和转换, 达到了预期的精度, 为水下高速航行体的研究提供了真实的靶试速度。

摘要:针对以往线圈靶测速方案、光幕靶测速方案等存在测速精度低、可靠性差, 且难于野外水池使用等问题, 综合考虑高速航行体水下运动存在干扰因素多、环境压力变化大、测速靶难于完全密封等因素, 基于定距测时法, 采用接触性区截装置锡箔靶和嵌入式微处理器硬件系统的测速方案。对常用低成本锡箔靶, 增加调理电路, 通过阻抗匹配使其适应不同水质和非完全密封条件, 解决了难于野外环境使用和密封问题。基于MSP430F149单片机, 进行了电源电路、复位电路、时钟电路、信号调理电路、人机接口电路、通信接口电路等设计, 开发了嵌入式系统软件和上位机软件, 并采取了相应的硬、软件抗干扰措施, 研制了具有信号采集、存储、处理、显示、通信等功能的测速系统。

关键词:高速航行体,水下测速系统,速度,MSP430F149,锡箔靶

参考文献

[1]刘世平.弹丸速度测量与数据处理[M].北京:兵器工业出版社.1994

[2]胡大可.MSP430系列超低功耗16位单片机原理与应用[M].北京:北京航空航天大学出版社.2001

[3]沈兰荪.高速数据采集系统的原理与应用[M].人民邮电出版社.1995

上一篇:基层党建政务服务下一篇:医院建设健康城市工作汇报