第章MSP单片机硬件设计及接口技术.ppt

上传人:sccc 文档编号:5286437 上传时间:2023-06-22 格式:PPT 页数:90 大小:4MB
返回 下载 相关 举报
第章MSP单片机硬件设计及接口技术.ppt_第1页
第1页 / 共90页
第章MSP单片机硬件设计及接口技术.ppt_第2页
第2页 / 共90页
第章MSP单片机硬件设计及接口技术.ppt_第3页
第3页 / 共90页
第章MSP单片机硬件设计及接口技术.ppt_第4页
第4页 / 共90页
第章MSP单片机硬件设计及接口技术.ppt_第5页
第5页 / 共90页
点击查看更多>>
资源描述

《第章MSP单片机硬件设计及接口技术.ppt》由会员分享,可在线阅读,更多相关《第章MSP单片机硬件设计及接口技术.ppt(90页珍藏版)》请在三一办公上搜索。

1、1,单片机与通信系统,2,内容简介,MSP430F149单片机最小系统设计MSP430F149单片机电平转换电路设计MSP430F149单片机显示器件接口设计MSP430F149单片机键盘接口设计MSP430F149单片机串行通信接口设计MSP430F149单片机功率接口技术,MSP430F149单片机最小系统设计,单片机电源电路设计复位电路设计时钟电路设计JTAG接口电路设计,单片机电源电路的设计是单片机硬件系统中首先要考虑的一个问题。单片机芯片及其外围接口电路芯片对电源的供电要求是单片机电源电路设计的基础。MSP430系列单片机在工作电压为+1.8V+3.6V之间时均可正常工作,如果要进行

2、FLASH擦写操作则电源电压应保持在2.7V以上。一般电源电压为+3.3V。,单片机电源电路设计,由于MSP430内部有AD转换模块,数字电源和模拟电源需要分别供电,并且电源连接接地点的旁路电容采用钽电容和磁片电容并联的方式,大大减少了噪声的影响,提高了供电质量及A/D转换精度。在模拟地和数字地之间接入反向并联的二极管对,以消除低于700mV的电压差。或者在模拟地和数字地之间接入一个0欧姆的电阻,以减少模拟地对数字地带来的噪声干扰,为单片机的稳定工作提供了良好的环境。,单片机电源电路设计,由于大部分数字系统都采用+5V作为主供电系统,因此+3.3V电源一般都是从主供电电源+5V经过调压电路得到

3、的。这个调压电路可以用简单的分离器件构成,例如采用3个二极管串联即可产生2.1V的压降,使电压从+5V降到+2.9V。但是单片机的供电要求,除了电压幅度的要求以外,往往对供电电流、电压稳定性等有要求,因此,一般的单片机系统都采用集成供电系统提供电源供电,这些集成电路供电系统称之为”电源管理芯片”。常用的+5V转+3.3V电源管理芯片有:TI公司的TPS7133、TPS7233、TPS7333和TPS75733;MAXIN公司的MAX604、MAX748;NS公司的LP2980等。,单片机电源电路设计,LP2980典型电路,LP2980封装形式,TPS75733典型电路,TPS75733封装图,

4、REG1117-3.3典型电路,REG1117-3.3封装电路,复位电路设计,复位电路是单片机系统中不可缺少的部分,其好坏影响整个单片机应用系统的可靠性。同时,复位电路非常容易受到外部噪声干扰。因此,复位电路的设计首先要求保证整个应用系统的可靠性,其次是具有抗干扰能力。复位电路的基本功能是:系统上电时提供复位信号,直至系统电源稳定后,撤销复位信号。为可靠起见,电源稳定后还要经一定的延时才撤销复位信号,以防电源开关或电源插头分-合过程中引起的抖动而影响复位。,RC复位电路,为提高系统设计的可靠性,也可以采用专用集成电路提供复位。这种集成电路一般除了能够提供上电复位信号,还可以提供按键手动复位和定

5、时自动复位信号。由于MSP430系列单片机都有片内看门狗定时器能够实现看门狗功能,因此MSP430系列单片机只需要提供上电复位和按键手动复位即可。常用的主要有maxin公司的MAX809、MAX810、MAX811、MAX812等。,专用集成电路,MAX809/MAX810典型电路,MAX809/MAX810封装,时钟电路设计,晶体振荡器是非常容易受干扰的部分,在PCB布局时也要特别注意,晶体应该尽量靠近单片机本身,时钟信号走线长度应尽可能短,线宽尽可能大,紧靠器件布局布线,必要时可以走内层,并用地线包围。,JTAG接口电路设计,JTAG,JTAG(JOINT TEST ACTION GROU

6、P)联合测试行动小组,是一种国际标准测试协议,主要用于芯片内部的测试。JATG基本原理是在芯片内部定义一个测试访问接口,通过专用的JATG测试工具进行内部节点的测试。,JTAG接口引脚排列图,JTAG接口引脚说明,JTAG接口电路设计,6.2 电平转换电路设计,加到输入和输出引脚上允许的最大电压限制问题。器件对加到输入或者输出脚上的电压通常是有限制的。这些引脚有二极管或者分离元件接到 Vcc。如果接入的电压过高,则电流将会通过二极管或者分离元件流向电源。例如在3.3V器件的输入端上加上5V的信号,则5V电源会向3.3V电源充电。持续的电流将会损坏二极管和其它电路元件。两个电源间电流的互串问题。

7、在等待或者掉电方式时,3.3V电源降落到0V,大电流将流通到地,这使得总线上的高电压被下拉到地,这些情况将引起数据丢失和元件损坏。必须注意的是:不管在3.3V的工作状态还是在0V的等待状态都不允许电流流向Vcc。接口输入转换门限问题。用5V的器件来驱动3.3V的器件有很多不同的情况,同样TTL和CMOS间的转换电平也存在着不同情况。驱动器必须满足接收器的输入转换电平,并且要有足够的容限以保证不损坏电路元件。,MSP430与5V电平接口的4种情形,(1)5V CMOS器件驱动MSP430。由于5VCMOS和3.3V的电平转换标准是一样的。5V CMOS器件输出的典型值为3.6V。因此,如果3.3

8、V器件能够承受5V的电压,则从电平上来说是完全可以直接相连的。但是,因为驱动器结构会有所不同,因此必须要对加到MSP430输入端的电压进行控制,使其不超过3.6V,以防万一;,MSP430与5V电平接口的4种情形,(2)MSP430驱动5V CMOS器件。由于3.3V 和5V CMOS电平转换标准是一样的,因此不需要额外的器件就可以将二者直接相连。不需要额外的电路直接从MSP430驱动5V的器件,看起来是不可思议的,但是3.3V器件的VOH和VOL电平分别是2.4V和0.4V,5V CMOS器件的VIH 和VIL 电平分别是2V和0.8V。而MSP430 实际上能输出3V摆幅的电压,显然5V

9、CMOS器件能够正确识别MSP430的输入电平;,MSP430与5V电平接口的4种情形,(3)5V TTL器件驱动MSP430。显然,5V TTL与3.3V的转换电平是不一样的。进一步分析5V TTL的VOH 和VOL以及3.3V的VIH 和VIL 的转换电平可以看出,虽然两者存在一定的差别,但是能够承受5V电压的3.3V器件能够正确识别5V器件送来的电平值。所以能够承受5V电压的3.3V 器件的输入端可以直接与5V器件的输出端接口。但是MSP430没有5V容限,不能直接与5V器件的输出端接口;,MSP430与5V电平接口的4种情形,(4)MSP430驱动5V TTL。3.3V与5V TTL的

10、电平转换标准是不一样的,从表2中可以看出,3.3V输出的高电压的最低电压值VOH=2.4V(输出的最高电压可以达到3.3V),而5V CMOS器件要求的高电平最低电压VIH=3.5V,因此MSP430的输出不能直接与5V CMOS器件的输入相连接。,由以上分析可知,在5V CMOS器件驱动MSP430或者MSP430与5V TTL器件接口时,二者是不能直接相连的。在这种情况下,必须要经过3.3V与5V电平的相互转换。可以采用双电压(一边是3.3V,另一边是5V)供电的双向驱动器来实现电平转换。如TI的SN74ALVC164245、SN74ALVC4245等芯片,可以较好地解决3.3V与5V电平

11、的转换问题。对于5V TTL驱动MSP430时的情况,也可以采用一个简单的办法就是电阻分压。,MSP430与串口接口问题,MSP430系列微控制器都自带串行通信口,有几款还有两个串口。这样就方便了与PC机接口,增强了与外界通信的能力。不过串口的电平和逻辑关系与MSP430存在很大的差别。以广泛应用的EIA-RS-232C标准为例,对于数据(信息码):逻辑“1”(传号)的电平为-3V-15V,逻辑“0”(空号)的电平为+3V+15V;对于控制信号:接通状态(ON),即信号有效的电平为+3V+15V,断开状态(OFF),即信号无效的电平为-3V-15V。也就是说当传输电平的绝对值介于3V 15V时

12、,认为是有效信号,其它电平均认为是无效的。而MSP430输出的电平却在0 3V左右,因此要想与PC串口接口或者其它带有串口的终端接口,必须要进行EIA-RS-232C与MSP430电平和逻辑关系的转换。实现这种变换的方法很多,可用分离元件,也可用集成电路。目前较为广泛地使用集成电路转换器件,MAX232/MAX232A、MAX3221/MAX3223 等芯片可完成多路3V 5V电平与串口电平的双向转换。在MSP430与PC串口接口时,用MAX232A电路比较简单(只需外接几个电容),而且这款芯片可以实现两路变换,价格也较便宜。,MSP430F149单片机显示器件接口设计,1.1 MSP430驱

13、动发光二极管1.2 MSP430驱动七段数码管1.3 MSP430驱动8*8 LED点阵1.4 MSP430 驱动液晶显示,32,1.1 MSP430驱动发光二极管,33,1、发光二极管阴极接地MSP430 点亮发光二极管的程序:P3DIR|=BIT1;P3OUT|=BIT1;MSP430 熄灭发光二极管的程序:P3DIR|=BIT1;P3OUT&=BIT1;,2、发光二极管阳极接VCCMSP430 点亮发光二极管的程序:P3DIR|=BIT1P3OUT&=BIT1;MSP430 熄灭发光二极管的程序:P3DIR|=BIT1;P3OUT|=BIT1;,1.1 MSP430驱动发光二极管,1.发

14、光二极管的两根引线中较长的一根为正极,应接电源正极。有的发光二极管的两根引线一样长,但管壳上有一凸起的小舌,靠近小舌的引线是正极。2.用万用表测量发光二极管的正负极3.红色和黄色的发光二极管的工作电压是2伏的,其他颜色的工作电压都是3伏的一般的发光二极管的工作电流是20毫安,如果接在五伏的电源上,电源电压减二极管的工作电压就是分压电阻要分掉的电压,再用这个电压除以二极管工作的电流就能计算出这个电阻的阻值。比如说3伏的二极管(5-3)/0.02=100欧,2伏的二极管(5-2)/0.02=150欧,但是不是所有的发光二极管的工作电流都是20毫安,有的大一点有的小一点,实际使用的时候也可以用整流二

15、极管来分压,一只二极管的压降是0.7伏,用3只串联分掉的电压就是2.1伏,剩下的正好是3.1伏或者用四个串联剩下2.2伏,35,用三极管驱动发光二极管,36,37,PNP型 9012,38,NPN型 9013,39,用数字万用表的二极管档位测量二极管,测二极管时,使用万用表的二极管的档位。若将红表笔接二极管阳(正)极,黑表笔接二极管阴(负)极,则二极管处于正偏,万用表有一定数值显示。若将红表笔接二极管阴极,黑表笔接二极管阳极,二极管处于反偏,万用表高位显示为“1”或很大的数值,此时说明二极管是好的。在测量时若两次的数值均很小,则二极管内部短路;若两次测得的数值均很大或高位为“1”,则二极管内部

16、开路,40,2用数字万用表测量三极管,1)用数字万用表的二极管档位测量三极管的类型和基极b 判断时可将三极管看成是一个背靠背的PN结,按照判断二极管的方法,可以判断出其中一极为公共正极或公共负极,此极即为基极b。对NPN型管,基极是公共正极;对PNP型管则是公共负极。因此,判断出基极是公共正极还是公共负极,即可知道被测三极管是NPN或PNP型三极管。,41,(2)发射极e和集电极c的判断 利用万用表测量(HFE)值的档位,判断发射极e和集电极c。将档位旋至MFE基极插入所对应类型的孔中,把其于管脚分别插入c、e孔观察数据,再将c、e孔中的管脚对调再看数据,数值大的说明管脚插对了。,42,3)判

17、别三极管的好坏 测试时用万用表测二极管的档位分别测试三极管发射结、集电结的正、反偏是否正常,正常的三极管是好的,否则三极管已损坏。如果在测量中找不到公共b极、该三极管也为坏管子。,43,1.2 MSP430驱动数码管,数码管有7段数码管和8段数码管之分。7段数码管由7个发光二极管组成,而8段数码管则是在7段发光二极管的基础上再加一个圆点型发光二极管(在图中以dp表示),用于显示小数点。8段数码管中发光二极管的排列形状如下图(a)所示。,44,45,LED显示器显示原理,1.段码所谓段码就是为数码管显示提供的各段状态组合,即字形代码。7段数码管的段码为7位,8段数码管的段码为8位,用一个字节即可

18、表示。在段码字节中代码位与各段发光二极管的对应关系如下:,段码的值与数码管公共引脚的接法(共阳极和共阴极)有关。以8段数码管为例,显示十六进制数的段码值在下表中。,LED的使用方法可以分为静态显示和动态扫描显示两种。(1)静态显示就是使用8个口线控制LED的8个段,这种方式简单易用,但是占用口线较多,48,49,如果显示字符“1”,则程序如下:P4DIR=0 xFF;P4OUT=0 x06;如果同时点亮小数点,则程序为P4OUT=BIT7+0 x06;,50,如果选用共阳极数码管,字形码应为共阴极的补数,表示方式:P4DIR=0 xFF;P4OUT=0 xF9;或者P4DIR=0 xFF;P4

19、OUT=0 x060 xFF;,软件怎么编写?,Const char tab_seg=0 x3f,0 x06,0 x5b,0 x4f,0 x66,0 x6d,0 x7d,0 x07,0 x7f,0 x6f,0 x77,0 x7c,0 x39,0 x5e,0 x79,0 x71/从0到9循环显示P4DIR=0 xFF;For(int j=0;j=9;j+)for(int I=0;I=0 x0FFF;I+);P4OUT=tab_segj+;/共阴极/如果共阳极怎么办?,52,(2)动态显示在实际使用中一般采用动态扫描的方法,扫描显示是基于人眼的“视觉暂留”来实现的,通过不断地显示不同LED使人感觉

20、几个不同的LED在显示。,53,54,例:在8个数码管上分别显示0,1,27,(共阴极接法),const char tab_seg=0 x3f,0 x06,0 x5b,0 x4f,0 x66,0 x6d,0 x7d,0 x07,0 x7f,0 x6f,0 x77,0 x7c,0 x39,0 x5e,0 x79,0 x71P2DIR=0 xFF;P4DIR=0 xFF;for(int i=0;i=7;i+)P2OUT=i,55,1.3 MSP430驱动8*8LED点阵,60,61,点阵LED一般采用扫描式显示,实际运用分为三种方式:(1)点扫描;(2)行扫描;(3)列扫描。若使用第一种方式,其扫

21、描频率必须大于1664=1024Hz,周期小于1ms即可。若使用第二和第三种方式,则频率必须大于168=128Hz,周期小于7.8ms即可符合视觉暂留要求。此外一次驱动一列或一行(8颗LED)时需外加驱动电路提高电流,否则LED亮度会不足。,62,令P1.01.7分别与LED点阵的行线07相连,P2.02.7分别与LED点阵的列线AH相连。显示第一列:P2OUT=BIT0,P1OUT=0 x7C,delay()显示第二列:P2OUT=BIT1,P1OUT=0 x48,delay()显示第三列:P2OUT=BIT2,P1OUT=0 x48,delay()显示第四列:P2OUT=BIT3,P1OU

22、T=0 xFF,delay()显示第五列:P2OUT=BIT4,P1OUT=0 x48,delay()显示第六列:P2OUT=BIT5,P1OUT=0 x48,delay()显示第七列:P2OUT=BIT6,P1OUT=0 x7C,delay()显示第八列:P2OUT=BIT7,P1OUT=0 x00,delay()注意中间要加限流电阻。,#includeunsigned char seg68=0 x7C,0 x48,0 x48,0 xFF,0 x48,0 x48,0 x7C,0 x00,/中0 xFF,0 x85,0XD5,0 xFD,0 xDD,0 xDD,0 x81,0 xFF,/国0

23、x8C,0 x98,0 xFF,0 x92,0 x92,0 x92,0 x9F,0 x80,/石0XB3,0XD4,0 x7F,0 x4A,0 xFE,0 x4A,0 x4A,0 x3F,/油0 x21,0 x22,0 x24,0XF8,0 x2C,0 x22,0 x23,0 x20,/大0 x64,0XD4,0 x55,0 xDF,0 x5C,0XD4,0 x44,0 x24/学,void disp(unsigned char n)unsigned char column=BIT0;for(int i=0;i8;i+)P2OUT=(column1);P1OUT=segni;delay(500

24、);void main(void)WDTCTL=WDTPW+WDTHOLD;P1DIR=0 xFF;P2DIR=0 xFF;for(;)for(int k=0;k6;k+)for(int j=0;j0 xFF;j+)disp(k);,问题:1、I/O端口驱动能力有限,要加驱动电路才能保证字符亮度,驱动电路可使用三极管放大,也可以使用驱动能力强的锁存芯片,比如74HC373等。2、占用单片机端口太多,实际使用74HC138大功率三极管进行列线选择,占用3根口线;使用74HC595进行行驱动,占3根口线(包括串行数据输出、移位寄存器时钟输出、存储寄存器时钟输出);共占6根线。3、改进的程序可以在以

25、上程序基础上修改。,66,2.做为输入接口,2.1 独立按键式键盘2.2 行列扫描式键盘2.3 N型N(N-1)键盘,67,2.1 独立式按键,这种键盘使用单片机的I/O口线直接连接,每个按键对应一根口线,如图1所示,键盘的工作原理:设置各个口线为输入模式,通过中断方式或者软件查询方式获取各个口线是否有键按下,在图1中所示的键盘中,有键按下则口线端电平为高,否则为低电平,独立按键式键盘使用简单,但是每根口线只对应一个按键,如果系统需要较多按键,往往不能满足需求,因此这种方式适用于需要按键较少的应用。,68,69,键输入的软件问题,1.中断与查询2.去抖动问题,70,1.中断与查询,什么时候用中

26、断?什么时候用查询?中断程序怎么写?#pragma vector=PORT1_VECTOR/P1中断服务子程序 _interrupt void P1_Interrupt(void)if(P1IFG/非p1.7中断处理,71,查询程序怎么写?,查询程序怎么写?,P1DIR=0 x00;Now=0 x00;Last=0 x00;Result=0 x00;For(;)for(int I=0;I=0 xFF;i+);now=P1IN;result=(now last)If(result&0 x01)端口P1.0出现按键处理程序。,73,2.去抖动问题,在实际使用过程中,由于在按键的前后会有抖动,因此在

27、判断键值前要消除抖动,一般消除抖动的方法有延时法和硬件消抖动两种。,74,延时的方法就是通过延时来等候信号稳定,在信号稳定以后再去识别键码。其过程是在检查到有键按下以后延时一段时间(5ms20ms),再检查一次看是否有按键按下。若这一次检查不到,则说明前一次结果为干扰或者抖动。若这一次检查到有按键按下,则说明信号已经稳定,然后判断闭合按键的键码。当闭合按键的键码确定以后,再去检查按键是否释放,待按键释放以后再进行处理,这样就可能消除释放抖动的干扰。延时的方法可以采用软件延时法和定时中断法两种。,75,另一种是硬件消抖动:即在键开关与计算机接口之间加一个消抖动电路,如双稳电路、单稳电路(输出脉宽

28、要大于抖动时间)、RC滤波电路等。由于硬件去抖动增加了电路的复杂性,每个按键都要一个去抖动电路,所以这种方法只适用于键数目较少的场合。在键数目较多时,大多采用软件延时法去抖动。,76,例:独立按键识别。硬件电路如上图所示。三个按键通过P1.1P1.3输入,键值分别为1、2、3;当某个按键被按下时获取对应的键值,并根据键值让相应的P3.1P3.3口线上的发光二极管发光。,unsigned char keyvalue;/键值unsigned char checkkey(void)/判断是否有键按下 return(P1IN/延时函数,略。,void main(void)WDTCTL=WDTPW+WD

29、THOLD;P1DIR=0 x00;P3DIR=BIT1+BIT2+BIT3;while(1)delayXms(20);if(checkkey)delayXms(20);if(checkkey)keyvalue=getkeyvalue();switch(keyvalue)case1:P3OUT=BIT1;break;case2:P3OUT=BIT3;break;case3:P3OUT=BIT3;break;default:break;,上例为行列式键盘扫描程序,工作在查询方式,单片机一直在查询有没有键被按下,效率很低。为了提高单片机效率,也可以采用定时器中断的方式实现键盘输入。思路:设定定时器

30、定时时间为扫描周期,也就是消除抖动的时间,如10ms。设置两个标志位:FF1消除抖动标志,FF2按键识别完成标志。初始值都是0,表示没有消除抖动和完成按键识别。,当定时器计时到10ms时,进入中断,如果FF1=0,则没有消除抖动,读取端口值,判断是否有键被按下;如有,设置FF1=1,并退出中断,等待下一次中断。如果再次中断,则继续判断是否有键被按下,如有,说明是真正的按键被按下,而且已是键盘的稳定期;调用键码识别子程序得到键值,设置FF2=1,表示完成了按键的识别。如果没有按键被按下,则说明是抖动,设置FF1=0,退出。如果下次中断还是检查到有键被按下,显然都是同一次按键,FF2=1,表明没有

31、松开按键。直到按键被松开时,设置FF1=0和FF2=0,为再次按键做准备。,行列扫描式键盘,图2所示键盘使用P1.0P1.6共7根口线接12个按键。键盘为34格局,P1.0、P1.1、P1.2为行线,P1.3、P1.4、P1.5、P1.6为列线。列线分别由上拉电阻上拉到VCC,在行线与列线的每一个交界处有个按键,按键的两端分别接在行线和列线上。,81,82,键值判别原理,P1DIR=0 x07;P1OUT=0 x00;Iskeydown=0 x00;Keyvalue=0;For(;)P1OUT=0 x00;for(int I=0;I=0 xFF;I+);if(P1IN/第一行if(P1IN&BIT3)keyvalue=“0”/第一列if(P1IN&BIT 4)keyvalue=“1”/第二列 if(P1IN&BIT 5)keyvalue=“2”/第三列 if(P1IN&BIT 6)keyvalue=“3”/第四列/第二行/第三行,83,N型N(N-1)键盘,84,3.功率驱动,1.继电器2.可控硅3.固态继电器,85,3.1 MSP430单片机控制继电器,86,87,88,MSP430驱动可控硅,89,固态继电器,90,

展开阅读全文
相关资源
猜你喜欢
相关搜索

当前位置:首页 > 建筑/施工/环境 > 农业报告


备案号:宁ICP备20000045号-2

经营许可证:宁B2-20210002

宁公网安备 64010402000987号