wangguanfu 发表于 2008-5-23 20:01:08

刚学MSP430F149,秀一下焊工,哈哈(其ADC12性能没的说,洞洞板也不怎么跳)

#include <msp430x14x.h>
//********************************************
//表区

unsigned char display_par={0xbe,0x84,0x37,0x97,0x8d,0x9b,0xbb,0x8e,0xbf,0x9f};
unsigned char timp,i=0;
//变量区
unsigned char display_buffer[]={0,0,0,0};
unsigned long ADC0 ;
void ADC12setup(void)//ADC12初始化
{
//ADC12设置**************************
P6SEL |= 0x01;      //使用A/D通道 A0
ADC12CTL0 = ADC12ON ; //开ADC12内核,设SHT0=2 (N=4)
ADC12CTL1 = SHP ;   //SAMPCON信号选为采样定时器输出
ADC12MCTL0 |= SREF_0; //R+=AVCC R-=VSS //转换允许
ADC12CTL0 |= ENC ;    //转换允许(上升沿)
ADC0=0x00;
}
void data_converter(unsigned int value) //数据变换
{
display_buffer=value/1000;
display_buffer=value%1000/100;
display_buffer=value%1000%100/10;
display_buffer=value%1000%100%10;
}

void int_io(void)
{
   WDTCTL = WDTPW + WDTHOLD; // 停止WDT
   P1DIR=0x01;P1OUT=0x0f;    //LED设置
   P4DIR=0xff;P4OUT=0xff;    //LED设置
   P5DIR=0xff;P5OUT=0x00;    //LED设置
   ADC12setup();
//_EINT();                  // 全局中断使能
}
void display_led(void)
{   
      unsigned char a;
      a=0;
      P4OUT=0xff;   
      P5OUT=0x00;   
      if(i==0){P4OUT=0xbf;a=0x40;}
      if(i==1)P4OUT=0xdf;
      if(i==2)P4OUT=0xef;
      if(i==3)P4OUT=0x7f;
      
      P5OUT=display_par]|a;
      i++;if(i>3)i=0;
}

void main(void)
{
unsigned char n=0;
unsigned long bb,aa={0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
   int_io();
   while(1)
   {
       ADC12CTL0 |= ADC12SC;                     //sampling open,AD转换完成后(ADC12BUSY=0),ADC12SC自动复位;
       while((ADC12IFG & BIT0) == 0);            //等转换结束
       bb = ADC12MEM0; //读转换数据值,同时清ADC12IFG0标志
       if(bb<3)bb=0;
       aa=bb;
       if(n==0)ADC0=(((aa+aa+aa+aa+aa+aa+aa+aa+aa+aa
+aa+aa+aa+aa+aa+aa)>>4)*808)/1000;
      
       data_converter(ADC0) ;   
       display_led();
       n++;if(n>15)n=0;
      
   }
}

wangguanfu 发表于 2008-5-23 20:11:16

点击此处打开 ourdev_291152.JPG(文件大小:416K,只有300K以内的图片才能直接显示) (原文件名:STP61278.JPG)

wangguanfu 发表于 2008-5-23 20:33:34

http://cache.amobbs.com/bbs_upload782111/files_10/ourdev_291153.JPG
(原文件名:STP61296.JPG)

wangguanfu 发表于 2008-5-23 20:35:42

http://cache.amobbs.com/bbs_upload782111/files_10/ourdev_291154.JPG
(原文件名:STP61289.JPG)

wangguanfu 发表于 2008-5-23 20:38:56

http://cache.amobbs.com/bbs_upload782111/files_10/ourdev_291155.JPG
(原文件名:STP61303.JPG)

qanmingx 发表于 2008-5-23 20:44:24

神乎其技

jijuxie321 发表于 2008-5-23 21:44:07

楼主回答下。
那些像贴纸一类的是什么。
还有CPU下面还有个什么东西。绿色的。。

gongcsf 发表于 2008-5-23 22:50:35

还有CPU下面还有个什么东西。绿色的。。

剪下来的

huayan 发表于 2008-5-23 23:11:33

牛人~~!!

lihuyong 发表于 2008-5-23 23:32:13

楼主可以找利尔达买个DIP的,这样可以省很多精力,不过要稍微注意的就是管脚间距

12位AD最多只做得到10位精度,不晓得是不是人品问题

wangguanfu 发表于 2008-5-23 23:51:12

MSP430的12位AD最多只做得到10位精度?
不是吧!
开始我的LED数码管和MSP430共用一个AMC1117-3.3出的电源,跳的不是一般的厉害,想想这TI也不至于放这么名曰12BIT的“垃圾的ADC”于是用了两个AMC1117-3.3分别1000UF电解电容+0.1UF*2PCS NPO 电容滤波出的两个3.3V电源,一个给LED数码管供电而另一个给了MSP430,并多了
bb = ADC12MEM0; //读转换数据值,同时清ADC12IFG0标志
if(bb<3)bb=0;
aa=bb;
if(n==0)ADC0=(((aa+aa+aa+aa+aa+aa+aa+aa+aa+aa
+aa+aa+aa+aa+aa+aa)>>4)*808)/1000;
数码管基本不乱跳了

wangguanfu 发表于 2008-5-23 23:57:58

""还有CPU下面还有个什么东西。绿色的。。""
公司有N多的废PCBA,正为焊MSP430头痛,灵机一动想到了他,顺手找了一个封装一样的拿掉上面的IC割去无关线路留下了PAD,用剪刀
裁下了图中的那一小片PCB...

wangguanfu 发表于 2008-5-24 00:19:09

改了点东西,用了其XT2,找不到8MHZ左右的晶振,找了个14.745MHZ的晶振放了上去,没想到MSP430F149也疯狂的的跑了起来
哈哈,意外的发现!!!
不早了,不玩了....

http://cache.amobbs.com/bbs_upload782111/files_10/ourdev_291452.JPG
(原文件名:STP61306.JPG)




#include <msp430x14x.h>
//********************************************
//表区
unsigned char display_par={0xbe,0x84,0x37,0x97,0x8d,0x9b,0xbb,0x8e,0xbf,0x9f};
//变量区
unsigned char timp,i=0;;
unsigned char display_buffer[]={0,0,0,0};
unsigned long ADC0 ;
void ADC12setup(void)//ADC12初始化
{
//ADC12设置**************************
P6SEL |= 0x01;      //使用A/D通道 A0
ADC12CTL0 = ADC12ON ; //开ADC12内核,设SHT0=2 (N=4)
ADC12CTL1 = SHP ;   //SAMPCON信号选为采样定时器输出
//ADC12内部参考电压设置
//ADC12CTL0 |= REF2_5V; //选用内部参考电压为2.5V
//ADC12CTL0 |= REFON;   //内部参考电压打开
ADC12MCTL0 |= SREF_0; //R+=2.5V R-=VSS
//转换允许
ADC12CTL0 |= ENC ;    //转换允许(上升沿)
ADC0=0x00;
}



//数据变换
void data_converter(unsigned int value)
{
display_buffer=value/1000;
display_buffer=value%1000/100;
display_buffer=value%1000%100/10;
display_buffer=value%1000%100%10;
}

void int_io(void)
{
    unsigned char k;
    WDTCTL = WDTPW + WDTHOLD; // Stop watchdog timer
// MCLK=XT2=8M SMCLK=XT2=8M
//=========================================================
    BCSCTL1&=~XT2OFF;
   do
   {
       IFG1&=~OFIFG;
       for(k=0xff;i>0;k--);
   }
   while(IFG1&OFIFG);
   //BCSCTL2=SELM1+SELS;
    BCSCTL2= SELM_2;
///////////////////////////////////////////////
   P1DIR=0x01;P1OUT=0x0f;    //LED设置
   P4DIR=0xff;P4OUT=0xff;    //LED设置
   P5DIR=0xff;P5OUT=0x00;    //LED设置
   ADC12setup();
//_EINT();                  // 全局中断使能
}
void display_led(void)
{   
      unsigned char a;
      a=0;
      P4OUT=0xff;   
      P5OUT=0x00;   
      if(i==0){P4OUT=0xbf;a=0x40;}
      if(i==1)P4OUT=0xdf;
      if(i==2)P4OUT=0xef;
      if(i==3)P4OUT=0x7f;
      
      P5OUT=display_par]|a;
      i++;if(i>3)i=0;
}

void main(void)
{
unsigned char n=0;
unsigned long bb,aa={0,0,0,0,0,0,0,0,0,0,0,0,0,0,0,0};
   int_io();
   while(1)
   {
       ADC12CTL0 |= ADC12SC;                     //sampling open,AD转换完成后(ADC12BUSY=0),ADC12SC自动复位;
       while((ADC12IFG & BIT0) == 0);            //等转换结束
       bb = ADC12MEM0; //读转换数据值,同时清ADC12IFG0标志
       if(bb<3)bb=0;
       aa=bb;
       if(n==0)ADC0=(((aa+aa+aa+aa+aa+aa+aa+aa+aa+aa+aa+aa+aa+aa+aa+aa)>>4)*807)/1000;
      
       data_converter(ADC0) ;   
       display_led();
       n++;if(n>15)n=0;
      
   }
}

mimipbr 发表于 2008-5-25 23:41:45

MSP430内部的AD很不错,我常用147

dz-0532 发表于 2008-5-26 08:05:53

有比较过 MSP430 和 STM32 的AD性能差异的吗?

我正在选型请指教,谢谢!

lihuyong 发表于 2008-5-26 09:34:00

http://cache.amobbs.com/bbs_upload782111/files_10/ourdev_292997.GIF
(原文件名:12-bit ADC.GIF)


if(n==0)
ADC0=(((aa+aa+aa+aa+aa+aa+aa+aa+aa+aa+aa+aa+aa+aa+aa+aa)>>4)*807)/1000;

你使用了16次软件滤波,所以显示确实 基本不乱跳了

你的代码中,if(bb<3)bb=0;这一句请教是什么用?不是太明了。难道是 限幅均值滤波法?

其实,在软件中,我也经常采用均值滤波,只不过一般用不到16个,430的RAM太TMD金贵了。

lihuyong 发表于 2008-5-26 09:39:14

楼主的这个子函数,从运算量来说,可以这样优化
void data_converter(unsigned int value)
{
display_buffer=value/1000;            ----------> 不变
display_buffer=value%1000/100;          ----------> 不变
display_buffer=value%1000%100/10;       ----------> display_buffer=value%100/10;
display_buffer=value%1000%100%10;       ----------> display_buffer=value%10;
}

MSP430在没有硬件乘法器的情况下,计算乘法太费时间了.
不论有没有硬件乘法器,计算除法都特别费时间.

ahfong2006 发表于 2008-5-26 10:37:37

MSP430如果不是这么贵,肯定普及程度比AVR高多了

wangguanfu 发表于 2008-5-27 20:45:59

MSP430的价格就是有点~~(图里的是TI给的样片),不过就是看上他的ADC了,看了万利的STM32 报价,嘿嘿有想马上弄两颗STM32来玩玩 (不晓得其ADC怎样?),说实话我真希望avr里有个14BIT的ADC(>10Kbps)

Forever.c 发表于 2008-6-6 17:25:34

你真牛!!楼主

sharehej 发表于 2008-7-23 22:00:32

强人一个啊!
我是没这心思如此DIY的,不过,我的玩意也多的,都是制板的。呵呵!

flyan.oo 发表于 2008-7-31 20:50:28

万用板给你用绝了。。。。

smallsnail 发表于 2008-7-31 21:09:55

牛人!

lovefei 发表于 2008-7-31 22:39:41

焊工确实不错!

ddcour 发表于 2008-7-31 23:04:19

比绣花技术还要高啊

thomasdu 发表于 2008-8-1 00:23:02

这个焊接功夫,不摆老!

xiejun 发表于 2008-8-1 01:05:15

哈哈,有空我也要秀秀...

ybdesire 发表于 2008-8-8 13:02:46

请问楼主用的什么线,那么细..........
那线绝缘吗?

ybdesire 发表于 2008-8-8 13:03:56

还有,有没有发生过两根线短在一起的情况???

hailing 发表于 2008-8-21 20:40:41

用漆包线的吧?

lcw_swust 发表于 2008-9-8 18:44:40

向高手致敬!

wangguanfu 发表于 2008-9-16 18:23:00

穷人的DIY,没有办法

lgc-sdu 发表于 2009-3-12 20:38:57

happi 发表于 2009-3-25 16:20:18

强人就是这种人

powerSTM 发表于 2009-4-10 14:25:26

Mark。。。。

ozo 发表于 2009-7-4 10:52:53

mark

botom 发表于 2009-8-13 14:36:27

典型的64马分尸

joyko 发表于 2009-8-13 16:16:07

哪天不小心被小强咬断一根线,嘿嘿,查起来可痛苦咯~~

wangguanfu 发表于 2009-8-23 20:02:08

呵呵,这个板放了N久,找出来小试了下,貌似小强咬不断还是不咬我的漆包线,除了灰有一蹭,功能完好

zishi 发表于 2009-8-23 21:05:02

到嘉立创花50元可以做10块小板。省事多了。

xuelang1984 发表于 2009-8-23 21:09:18

wangguanfu 发表于 2009-8-23 21:10:18

【41楼】 zishi

呵呵 ,2008-05-23,20:01:08 哦,50RMB?呵呵

billowtust 发表于 2009-8-23 21:15:10

现在430的价格也下来了,不过相比起来还是要比AVR要高的

不过话说回来,430是16位的芯片,而且破解难度也比AVR要高很多,优势还是有很多的

LiAsO 发表于 2009-8-23 21:16:53

请问楼主,剪废pcb用什么样的剪刀好? 偏口不行吧,我也想把废板子上的主控部分剪下来。。就愁用啥工具呢。。

wangguanfu 发表于 2009-8-23 23:06:02

Deli的尖刀,6RMB把,呵呵

zylaputa 发表于 2009-8-25 17:31:26

向高手致敬 这焊工好厉害

pontiff 发表于 2009-8-27 22:35:38

问下楼主具体怎么焊的,什么烙铁?大概什么温度?
我想焊几个MSP430还有9850,就是不敢焊啊。

wangguanfu 发表于 2009-8-28 10:37:05

烙铁 110RMB 冒牌 白光936型
烙铁头4.2RMB 刀头
温度 设定340度

lin135 发表于 2009-8-29 10:33:24

其焊接功夫---------神乎其技

liangong 发表于 2009-9-6 20:18:19

还行吧

caozhu 发表于 2009-10-21 09:00:03

焊工厉害!

zhg_wx 发表于 2009-12-11 03:11:41

MSP430 AD12内部基准电压漂移很大的。

caep1986 发表于 2009-12-11 09:41:35

莫非楼主是绵阳西科大的,我认识好多西科大都很喜欢这么焊。

kakarotto 发表于 2010-1-25 16:08:13

咋都喜欢这么焊呢……牛人啊

ymz000 发表于 2010-1-26 14:39:53

mark

xiaole01 发表于 2010-1-28 11:25:47

最近喜欢上了430

wangguanfu 发表于 2010-2-21 18:47:47

最近喜欢上了stm32啦,,,,

cq_bmy 发表于 2010-3-5 15:19:58

厉害

qjy_chess 发表于 2010-3-6 11:38:25

就焊工来说,的确是神乎其技!做这个太需要耐心了。。。

lningbd 发表于 2010-3-7 11:37:21

真是太有耐心了。我焊了10几个管脚就放弃了。

god-father 发表于 2010-3-8 17:37:14

回复【9楼】lihuyong 如风似雾
楼主可以找利尔达买个DIP的,这样可以省很多精力,不过要稍微注意的就是管脚间距
12位AD最多只做得到10位精度,不晓得是不是人品问题

-----------------------------------------------------------------------

12怎么只能做到10?

amity 发表于 2010-3-27 15:44:50

焊工来说,真的没话说,一个字-------高

jizzll 发表于 2010-3-28 20:04:41

牛ccc啊

voidx 发表于 2010-3-29 20:53:44

回复【16楼】lihuyong 如风似雾
楼主的这个子函数,从运算量来说,可以这样优化
void data_converter(unsigned int value)   
{
display_buffer=value/1000;            ----------&gt; 不变
display_buffer=value%1000/100;          ----------&gt; 不变
display_buffer=value%1000%100/10;       ----------&gt; display_buffer=value%100/10;
display_buffer=value%1000%100%10;       ----------&gt; display_buffer=value%10;
}
MSP430在没有硬件乘法器的情况下,......
-----------------------------------------------------------------------

不用除法,用减法更快。

Mingrui 发表于 2010-3-31 23:48:40

还真很用心!

sunnydragon 发表于 2010-4-8 22:36:41

惊叹~~~敢问楼主焊了多长时间?

ADO1234 发表于 2010-4-13 00:36:14

你也忒牛了!

yanxinboy 发表于 2010-4-19 14:56:17

惊叹~~~敢问楼主焊了多长时间?

ctl3432 发表于 2010-4-20 09:36:05

看了功夫还是不错的,

Nuist_Gwgj 发表于 2010-4-22 11:21:04

MARK

dxhuo 发表于 2010-4-23 22:15:48

佩服啊!

logic.pn 发表于 2010-5-7 21:33:37

牛人

zxlw1083 发表于 2010-5-22 21:13:24

楼主 发点msp430的资料上来吧 才接触这个 资料好难找哦!

ytiger 发表于 2010-5-25 21:19:46

149的片子我自己倒是焊过,不过像楼主这么耐心在面包上搞,FLU.

chenhuwyl 发表于 2010-6-21 19:30:41

功夫还是很深的,望尘莫及

hunter0773 发表于 2010-6-21 21:48:58

回复【62楼】lningbd
-----------------------------------------------------------------------

其实用刀头焊149到PCB上是比较容易的,焊一片快的话1分钟不要,主要是技巧,先把CPU按对脚方式固定在PCB上,然后用烙铁进行拖焊,焊完后,对个别连在一起的引脚清理一下就OK了。楼主焊接有点麻烦的是把PCB上的引脚用线焊出来

moen 发表于 2010-6-24 09:10:25

功夫还是很深的,望尘莫及

liuhongyu 发表于 2010-6-28 22:54:14

MARK

zqd311107 发表于 2010-9-28 00:01:49

mark

my2009 发表于 2010-9-28 18:12:15

牛人, 焊工一流

HYLG 发表于 2010-9-29 09:49:54

不是一般的牛呀.我当年也是这样焊M16的.图找不到了.线是用的修手机用的那种漆包线.

htqxinni999 发表于 2010-10-7 23:16:32

给大家介绍一个430仿真器:
http://www.radio.com.cn/news/200902.htm

byin 发表于 2011-2-10 02:06:40

lz牛人

wangguanfu 发表于 2011-2-17 08:46:58

./emotion/em035.gif./emotion/em035.gif./emotion/em035.gif

marklee 发表于 2011-2-17 09:11:02

不要对自己太残忍,该花的钱还是要花的,焊接水平练一练就可以了。

hbchf 发表于 2011-2-22 15:53:13

mark

RealityYuan 发表于 2011-2-22 22:09:52

其实我还是挺冲动的啊!!我也来焊个???

youfa 发表于 2011-7-5 16:32:51

真疯狂。那么高频率还能跑。

易冰 发表于 2012-9-4 11:43:51

绝啊,楼主精神我欣赏

Felix.feng 发表于 2012-9-4 14:19:52

神气。。。{:victory:}{:victory:}{:victory:}

yyd1123CC 发表于 2012-9-6 14:40:04

81楼是不是何炅小时候????

Fulai 发表于 2012-9-7 15:46:35

手工版绑定,虽然线有点粗,赞一个~!

568581185 发表于 2012-9-9 19:19:11

{:biggrin:}楼主高人啊。。。

marshallemon 发表于 2012-9-9 19:48:35

本帖最后由 marshallemon 于 2012-9-9 19:50 编辑

wangguanfu 发表于 2008-5-23 23:51 static/image/common/back.gif
MSP430的12位AD最多只做得到10位精度?
不是吧!
开始我的LED数码管和MSP430共用一个AMC1117-3.3出的电源, ...

精度是精度,跳码是无噪声分辨率

不知道在无滤波情况下输出的12bit的数据能跳动多大?

marshallemon 发表于 2012-9-9 19:52:46

mimipbr 发表于 2008-5-25 23:41 static/image/common/back.gif
MSP430内部的AD很不错,我常用147

F147的 单片价格能做到多少?

eryueniao 发表于 2012-9-9 20:09:42

哈哈      不错                                                            

lishunfu 发表于 2012-9-9 22:22:25

这个焊工确实牛,赞一个,呵呵

xiaoxei 发表于 2012-9-11 15:12:05

很强大,很牛逼。

yyd1123CC 发表于 2012-9-13 17:26:12

LZ 你的精度能达到多少 我用内部基准2.5V 测出来跟 电压表测的差50mv 太多了吧????

liubinkui 发表于 2012-9-20 22:20:33

楼主太牛了!
页: [1] 2
查看完整版本: 刚学MSP430F149,秀一下焊工,哈哈(其ADC12性能没的说,洞洞板也不怎么跳)