我的思路是这样的,给随便一个IO口接电路,电路时高低电平变化的,设k初值为0.每变换一次额高低电平,k加1.最后输出K的值.我的电路设计的高低电平变换最多只有6次. 这只是我的想法,最总怎么实现,想问问各位大神的意见,请教教我程序应该怎么写?,
应用场景:使用MSP430G2553的信息存储区保存参数。系统上电运行时,先检查信息存储区里面的参数是否有效,如果有效则直接跳到正常程序执行;如果无效,则擦除信息存储区并将默认参数值写入,然后再跳到正常程序执行(通过一有效标志判断)。 现在出现的问题是:通过外部工具改变参数后,系统正常运行,此时断开系统电源,再上电,则参数又变回默认的参数值,初步分析是系统上电执行后判断参数无效,将默认参数写进去了。然而,通过外部工具设置参数后,该标志已变为有效了。。。 再深入分析,觉得是某种原因导致信息存储区的内容丢失或被改变,导致判断失误。然而是什么原因导致的呢?各位坛友有遇到这个问题的吗?紧急求助啊,马上量产了,来了这个问题。。。。。
P1DIR = 0XFF;P1OUT = 0XFF; P2DIR = 0XFF;P2OUT = 0XFF; P3DIR = 0XFF;P3OUT = 0XFF; P4DIR = 0XFF;P4OUT = 0XFF; P5DIR = 0XFF;P5OUT = 0XFF; P6DIR = 0XFF;P6OUT = 0XFF; 我看到很多程序开头都这样写,我不知道为什么430的程序开头要关闭所有的IO口?请大神指教。
我买了一块msp430f149的卡发版,但是下载不了程序,总是限制这个问题,请大神指教,我没有仿真器是不是就下载不了程序啊?
MSP430F249MPMEP和MSP430F249TPMR的区别是什么?我要买元件。但是又两种,我不敢乱买,请大神指教。谢谢。
我的输入最大电压在3.3V时,LCD显示最大值4095,保持电压不变,在程序上处理,将AD转换的数据设为float型,随意除以4096,结果显示的竟然不是1.为什么呢?我哪里出错了吗? W=W/4095;得到哪里错了呢?
我用满量程为5KG的压力传感器,灵敏度为1mV/V.。我用3.3V的电压,那么这个传感器在3.3V电压时,变化输出为0.66mV的时候,受到的载荷为1KG。但是AD转换不了mV级的电压,必须转换到V级,也就是说,我要经过放大器将0.66mV放大到6.6V,那么,输入430芯片的电压就必须是6,6V的整数倍吗?那我至少要有33V的输入电压啊。这可能吗?我总觉得我哪里错了。但是又不知道哪里错了。??请大声指教。
我用msp430f249程序写的是ADC12CTL0=ADC12ON+SHT0_8+MSC; ADC12MCTL0=INCH_0; //内部参考电源ref+=AVcc=3.3V,通道A0. 仿真时的芯片也是用的msp430f249。 所以VREF=AVcc=3.3V。但是仿真时为什么电压变成这样?变成低电平了?
这是我自己写的AD转换程序,没有错误,没有警告。但是就是无法显示AD转换的数据。弄了很久了。不知道问题在哪儿。请大家帮帮我,刚开始学430,完全0基础。感激大家。 #include #include"ADC12.h" #include "lcd_1602.h" #define Num_of_Results 8 static unsigned int index=0; //ADC多通道转换初始化 uint table[]={0x30,0x31,0x32,0x33,0x34,0x35,0x36,0x37,0x38,0x39}; static unsigned int A0results[Num_of_Results]; static unsigned int A1results[Num_of_Results]; void Delay_1ms(void) //延时程序 { uchar i,j; for(i=0;i
本人最近在做msp430f249的AD转换电路,并i将转换数据在1602上显示。我的程序已经弄好了,可是不知道电路图有什么问题,所以,我想问问,我用430内部的AD转换模块,P6口都是AD转换的外部接口。我转换电路接的P6.4口。我想问,在P6.4的电压范围应该是多少?我接的电压变换范围居然在-14~+14V。求大声指点。感激不尽。
MSP430F249的电压,模拟电压到底该怎么接啊?AVcc、VREF+、VEREF+、AVss、AREF/VEREF应该怎么接啊? 外部参考电源正极,负极,改接多大???求大神指导帮忙。感激不尽。
#include #define uint unsigned int #define uchar unsigned char uint i,j,k,n; uchar md; const uchar sin[]= { 0x80,0x82,0x84,0x86,0x88,0x8a,0x8c,0x8e, 0x90,0x92,0x94,0x96,0x98,0x9a,0x9c,0x9e, 0xa0,0xa2,0xa4,0xa6,0xa8,0xaa,0xab,0xad, 0xaf,0xb1,0xb2,0xb4,0xb6,0xb7,0xb9,0xba, 0xbc,0xbd,0xbf,0xc0,0xc1,0xc3,0xc4,0xc5, 0xc6,0xc8,0xc9,0xca,0xcb,0xcc,0xcd,0xce, 0xce,0xcf,0xd0,0xd1,0xd1,0xd2,0xd2,0xd3, 0xd3,0xd3,0xd2,0xd2,0xd1,0xd1,0xd0,0xcf, 0xce,0xce,0xcd,0xcc,0xcb,0xca,0xc9,0xc8, 0xc6,0xc5,0xc4,0xc3,0xc1,0xc0,0xbf,0xbd, 0xbc,0xba,0xb9,0xb7,0xb6,0xb4,0xb2,0xb1, 0xaf,0xad,0xab,0xaa,0xa8,0xa6,0xa4,0xa2, 0xa0,0x9e,0x9c,0x9a,0x98,0x96,0x94,0x92, 0x90,0x8e,0x8c,0x8a,0x88,0x86,0x84,0x82, 0x80,0x7d,0x7b,0x79,0x77,0x75,0x73,0x71, 0x6f,0x6d,0x6b,0x69,0x67,0x65,0x63,0x61, 0x5f,0x5d,0x5b,0x59,0x57,0x55,0x54,0x52, 0x50,0x4e,0x4d,0x4b,0x49,0x48,0x46,0x45, 0x43,0x42,0x40,0x3f,0x3e,0x3c,0x3b,0x3a, 0x39,0x37,0x36,0x35,0x34,0x33,0x32,0x31, 0x31,0x30,0x2f,0x2e,0x2e,0x2d,0x2d,0x2c, 0x2c,0x2b,0x2b,0x2b,0x2b,0x2a,0x2a,0x2a, 0x2a,0x2a,0x2a,0x2a,0x2b,0x2b,0x2b,0x2b, 0x2c,0x2c,0x2d,0x2d,0x2e,0x2e,0x2f,0x30, 0x31,0x31,0x32,0x33,0x34,0x35,0x36,0x37, 0x39,0x3a,0x3b,0x3c,0x3e,0x3f,0x40,0x42, 0x43,0x45,0x46,0x48,0x49,0x4b,0x4d,0x4e, 0x50,0x52,0x54,0x55,0x57,0x59,0x5b,0x5d, 0x5f,0x61,0x63,0x65,0x67,0x69,0x6b,0x6d, 0x6f,0x71,0x73,0x75,0x77,0x79,0x7b,0x7d, }; const uchar jc[]= { 0x00,0x02,0x04,0x06,0x08,0x0a,0x0c,0x0e, 0x10,0x12,0x14,0x16,0x18,0x1a,0x1c,0x1e, 0x20,0x22,0x24,0x26,0x28,0x2a,0x2c,0x2e, 0x30,0x32,0x34,0x36,0x38,0x3a,0x3c,0x3e, 0x40,0x42,0x44,0x46,0x48,0x4a,0x4c,0x4e, 0x50,0x52,0x54,0x56,0x58,0x5a,0x5c,0x5e, 0x60,0x62,0x64,0x66,0x68,0x6a,0x6c,0x6e, 0x70,0x72,0x74,0x76,0x78,0x7a,0x7c,0x7e, 0x80,0x82,0x84,0x86,0x88,0x8a,0x8c,0x8e, 0x90,0x92,0x94,0x96,0x98,0x9a,0x9c,0x9e, 0xa0,0xa2,0xa4,0xa6,0xa8,0xaa,0xac,0xae, 0xb0,0xb2,0xb4,0xb6,0xb8,0xba,0xbc,0xbe, 0xc0,0xc2,0xc4,0xc6,0xc8,0xca,0xcc,0xce, 0xd0,0xd2,0xd4,0xd6,0xd8,0xda,0xdc,0xde, 0xe0,0xe2,0xe4,0xe6,0xe8,0xea,0xec,0xee, 0xf0,0xf2,0xf4,0xf6,0xf8,0xfa,0xfc,0xfe }; const uchar sj[]= { 0x00,0x02,0x04,0x06,0x08,0x0a,0x0c,0x0e, 0x10,0x12,0x14,0x16,0x18,0x1a,0x1c,0x1e, 0x20,0x22,0x24,0x26,0x28,0x2a,0x2c,0x2e, 0x30,0x32,0x34,0x36,0x38,0x3a,0x3c,0x3e, 0x40,0x42,0x44,0x46,0x48,0x4a,0x4c,0x4e, 0x50,0x52,0x54,0x56,0x58,0x5a,0x5c,0x5e, 0x60,0x62,0x64,0x66,0x68,0x6a,0x6c,0x6e, 0x70,0x72,0x74,0x76,0x78,0x7a,0x7c,0x7e, 0x80,0x82,0x84,0x86,0x88,0x8a,0x8c,0x8e, 0x90,0x92,0x94,0x96,0x98,0x9a,0x9c,0x9e, 0xa0,0xa2,0xa4,0xa6,0xa8,0xaa,0xac,0xae, 0xb0,0xb2,0xb4,0xb6,0xb8,0xba,0xbc,0xbe, 0xc0,0xc2,0xc4,0xc6,0xc8,0xca,0xcc,0xce, 0xd0,0xd2,0xd4,0xd6,0xd8,0xda,0xdc,0xde, 0xe0,0xe2,0xe4,0xe6,0xe8,0xea,0xec,0xee, 0xf0,0xf2,0xf4,0xf6,0xf8,0xfa,0xfc,0xfe, 0xfe,0xfc,0xfa,0xf8,0xf6,0xf4,0xf2,0xf0, 0xee,0xec,0xea,0xe8,0xe6,0xe4,0xe2,0xe0, 0xde,0xdc,0xda,0xd8,0xd6,0xd4,0xd2,0xd0, 0xce,0xcc,0xca,0xc8,0xc6,0xc4,0xc2,0xc0, 0xbe,0xbc,0xba,0xb8,0xb6,0xb4,0xb2,0xb0, 0xae,0xac,0xaa,0xa8,0xa6,0xa4,0xa2,0xa0, 0x9e,0x9c,0x9a,0x98,0x96,0x94,0x92,0x90, 0x8e,0x8c,0x8a,0x88,0x86,0x84,0x82,0x80, 0x7e,0x7c,0x7a,0x78,0x76,0x74,0x72,0x70, 0x6e,0x6c,0x6a,0x68,0x66,0x64,0x62,0x60, 0x5e,0x5c,0x5a,0x58,0x56,0x54,0x52,0x50, 0x4e,0x4c,0x4a,0x48,0x46,0x44,0x42,0x40, 0x3e,0x3c,0x3a,0x38,0x36,0x34,0x32,0x30, 0x2e,0x2c,0x2a,0x28,0x26,0x24,0x22,0x20, 0x1e,0x1c,0x1a,0x18,0x16,0x14,0x12,0x10, 0x0e,0x0c,0x0a,0x08,0x06,0x04,0x02,0x00 }; const uchar fb[]= { 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff,0xff, 0xff,0xff, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00,0x00, 0x00,0x00 }; void delay(void) { uint tmp; for(tmp = 10000;tmp > 0;tmp--); } #pragma vector=PORT1_VECTOR __interrupt void P1_IRQ(void) { if(P1IFG&BIT4) //第1个按键被按下 { delay(); if(P1IFG&BIT4) { while((P1IN&BIT4)==0 ); //等待按键放开 md=0X10; P1IFG =0x00; } } if(P1IFG&BIT5) //第2个按键被按下 { delay(); if(P1IFG&BIT5) { while((P1IN&BIT5)==0 ); //等待按键放开 md=0x20; P1IFG =0x00; } } if(P1IFG&BIT6) //第3个按键被按下 { delay(); if(P1IFG&BIT6) { while((P1IN&BIT6)==0 ); //等待按键放开 md=0X40; P1IFG =0x00; } } if(P1IFG&BIT7) //第4个按键被按下 { delay(); if(P1IN&BIT7) { while((P1IN&BIT7)==0 ); //等待按键放开 md=0X80; P1IFG =0x00; } } } void key_init( void ) { P1DIR=0x00; //输入 P1OUT=0X0F; P1IES=0xf0; // 选择下降沿中断 P1IE=0xf0; // 打开中断使能 P1IFG=0x00; //中断标志位清零 } int main() { WDTCTL=WDTPW+WDTHOLD; P2DIR=0XFF; P6DIR=0XFF; P6OUT=0XFF; key_init(); while(1) { _EINT(); switch(md) { case 0x10:P6OUT=0XFE;for(i=0;i
#include #define uchar unsigned char #define SCLK1 P5OUT |=BIT7 //时钟拉高 #define SCLK0 P5OUT &=~BIT7 //时钟拉低 #define SID1 P5OUT |=BIT6 //数据端置1 #define SID0 P5OUT &=~BIT6 //数据端清零 #define CS1 P5OUT |=BIT5 //片选高电平 #define CS0 P5OUT &=~BIT5 //片选低电平 #define PSB P5OUT &=~BIT0 //串口端拉低 设置串行模式 #define CPU_F ((double)8000000) //外部高频晶振8MHZ #define delay_ms(x) __delay_cycles((long)(CPU_F*(double)x/1000.0)) void portinit() { P5SEL=0; //P5口为普通I/O口 P5DIR |=BIT0+BIT1+BIT5+BIT6+BIT7; //设置P5口操作液晶串口的位为输出 } void wr_lcd(uchar com,uchar data) { uchar i,j; CS1; //CS片选高电平有效,选中12864 for(i=0;i
MSP430单片机为主控的GSM模块的防盗监控器设计 0 引言 随着移动通信技术的快速发展,计算机远程控制技术的应用领域愈加广泛,理论和实践方面的研究价值也日益增长。GSM 公众网络因其覆盖率极高,在远程控制技术中被广泛使用。本文设计的防盗监控器,充分利用了GSM 公众网络的短消息增值业务和无线通信业务,实现远程监控、报警信息收发和现场报警等功能,采用主动防盗模式,使用户脱离看不到、听不见的被动式防盗,不受 地域限制,具有网络化、智能化的特点。 本文重点研究了基于GSM公众网络的远程防盗报警器的设计,采用MSP430 单片机系统作为主控模块,依托于GSM 公众网络无线通信,通过发送短消息实现了用户与系统之间的通信,从而对贵重物品进行实时的远程监控。 1 系统组成及工作原理 系统主要由存储单元、GSM 单元、执行机构、防盗传感器、单片机控制机构组成。系统中的移动通信模块采用美国SIMCOM 公司的SIM508,单片机采用MSP430系列单片机,将移动通信模块经由单片机的RS 232 串口连接,采用欧洲电信标准协会ETSI的GSM07.05作为短信息编码标准。本文采用MSP430F系列单片机进行系统设计,充分利用其超低功耗并通 过其标准的全双工串口与移动通信模块进行通信。 MSP430单片机是防盗报警器的控制中心,集成了移动通信模块、警情采集模块和报警模块。防盗传感器在前端采集报警信号并发送至MSP430单片机,经 单片机判断处理后将控制指令发送到移动通信模块,移动通信模块根据指令内容将匹配的报警短信息通过GSM网络发送至用户手机终端,实现报警。当用户收到报 警短信即可将相应的防盗指令通过短信息回复至报警系统,报警系统根据短信息内容,开启控制系统的执行机构实施相应的防盗措施。完成移动报警系统设计的核心 部分是基于GSM 公众网络系统的AT 指令开发及移动通信模块和单片机控制模块的通信。报警系统整体的设计框图如图1所示。 该防盗报警器系统的设计,弥补了传统报警器系统的报警铃声噪音扰民、报警范围小、受地域限制、报警的有效性低等缺点和不足,为移动通信系统增值业务和无线通信业务的开发利用提供了有效手段。 2 硬件设计 系统选用MSP430单片机作为核心控制模块,美国德州仪器公司推出的16位高性能MSP430系列单片机,性价比高,有突出的低电源电 压、运行速度快,而且具有丰富的片内外设模块,能够满足系统设计的功能需求。 系统的硬件电路主要由MSP43 单片机控制模块、报警模块、警情采集模块、通信模块、信息存储模块以及控制执行机构组成。报警采集模块由热释电红外传感器和菲涅洱透镜组成,通信模块采用 美国SIMCOM公司的SIM508,单片机采用MSP430 系列单片机,通过RS 232 串口与通信模块连接,系统主控模块原理框图如图2所示。 3 软件设计 系统初始化后,控制系统将通过发送确认短信对手机用户进行身份认定。若设防信号无效,则控制系统不检测其状态。控制系统一旦检测到警情信号,将立即发送报 警短信息至用户手机,且同时发送持续10 s的本地报警信号。当用户手机将预先设定的反馈短信息发送给系统时,控制系统将根据判断结果给予相应的回复,以实现报警系统与手机用户之间的互动操作,软 件流程图如图3所示。 4 结语 随着科学技术的飞速发展和国民生活水平的不断提高,移动通信技术在远程工业控制系统、远程机器人系统、仓库、汽车、家庭等环境的防盗报警系统等中的应用日 益频繁,理论和实践价值也逐渐凸显。基于GSM公众网络控制的防盗报警器,不仅可以实现远程防盗报警的功能,更能保证通信效果,通信距离不受地域限制,提 高报警系统的可靠性,使用户实现对贵重物品的远距离实时监控。
求指点MSP430F149驱动超声波模块程序,不能正常工作 #include #define RISE 1 #define FALL 0 #define CPU_F ((double)8000000) #define delay_us(x) __delay_cycles((long)(CPU_F*(double)x/1000000.0)) #define delay_ms(x) __delay_cycles((long)(CPU_F*(double)x/1000.0)) #define uint unsigned int #define uchar unsigned char #define Trig_H P1OUT|=BIT0 #define Trig_L P1OUT&=~BIT0 uint TA_Over_Cnt;//TA溢出次数存放变量 unsigned long int Period;//脉宽存放结果变量 unsigned long int S; uint distance; uint RiseCapVal;//上升沿时刻捕获值存放变量 uchar Edge=1;//当前触发沿 uchar disbuff[4]="0.00"; void Init_clock() { uint i; BCSCTL1=0X00;//将寄存器的内容清零 //XT2振荡器开启 //LFTX1工作在低频模式 //ACLK的分频因子为一 do { IFG1&=~OFIFG; BCSCTL2|=SELM_2+SELS;//设置MCLK 和SMCLK为8M for (i=0x20;i>0;i--); } while((IFG1&OFIFG)==OFIFG);//如果OSCFault=1 BCSCTL2=0X00;//将寄存器的内容清空 BCSCTL2+=SELM1; //MCLK 的时钟源为TX2CLK,分频因子为1 BCSCTL2+SELS;//SMCLK TX2CLK的时钟源为TX2CLK,分频因子为1 } void Init_IO()//I/O口初始化函数 { P1DIR|=BIT0;//P1,0 口作为Trig输出口 P1DIR&=~BIT1;//P1,1 口作为Echor输入口 P1SEL|=BIT1;//P1,1 口为 Echor第二功能开启 Trig_H; delay_ms(1000); } void Init_TimerA() { TACTL|=TASSEL_2+MC_2+ID_3;//,连续计数SMCLK TACCTL0 |=CAP+CM_1+CCIS_0+SCS+CCIE;//捕获模式开启,CCI1 } void main () { WDTCTL=WDTPW+WDTHOLD;//关闭看门狗 Init_clock(); Init_TimerA(); Init_IO(); TACCTL0 |=CAP+CM_1+CCIS_0+SCS+CCIE;//CCI1A _EINT(); while(1) { P1OUT|=BIT0; delay_ms(10); P1OUT&=~BIT0; } } #pragma vector=TIMERA0_VECTOR __interrupt void Timer_A(void) { switch(TAIV) { case 0: if(Edge==RISE) { RiseCapVal = TACCR0; TACCTL0 |= CAP+CM_2+CCIS_1+SCS+CCIE;//改为下降沿捕获 Edge = FALL;//下降沿捕获标志 } else { _DINT(); Period = TACCR0-RiseCapVal; S=(Period*17)/100; TACCR0 = 0; TACCTL0|= CAP+CM_1+CCIS_1+SCS+CCIE;//改为上升沿捕获 Edge = RISE;//上升沿捕获标志 _EINT(); } break; case 10: TA_Over_Cnt++;_EINT(); break; } }
#include "msp430g2553.h" void delay(int i) { unsigned int a,b; for(a=i;a>0;a--) for(b=1111;b>0;b--); } void busy() { unsigned char BF; P2OUT |=BIT1; P2OUT &=~BIT2; P2OUT &=~BIT0; BF=(P1IN&BIT7); P2OUT |=BIT0; delay(5); P2OUT &=~BIT0; if(BF==1) { delay(100); } delay(100); } void write_com (unsigned char com) { P2OUT &=~BIT1; P2OUT &= ~BIT2; P2OUT &=~BIT0; P1OUT =com; delay(100); P2OUT |=BIT0; P2OUT &=~BIT0; } void write_date(unsigned char date) { P2OUT &=~BIT1; P2OUT |=BIT2; P2OUT &=~BIT0; P1OUT =date; delay(100); P2OUT |=BIT0; P2OUT &=~BIT0; } void inti() { write_com(0x38); write_com(0x0c); write_com(0x06); write_com(0x01); write_com(0x80); delay(5); } void main(void) { P1DIR |=0xff; P2DIR |=0xff; P1SEL =0; P2SEL =0; inti(); busy(); write_date(0x41); busy(); write_com(0xc0); busy(); write_date(0x42); while(1); } 求大神指教 显示一直闪烁
请问MSP430F2618是否支持Spy Bi-Wire的连接方式呢??? 在datasheet跟users guide中没有看到相关介绍。 如果可以,SBWTCK跟SBWTDO该接到那两个管脚呢???